From 0d7318bdc97738929802587f5a8fd601c49dfa38 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:05:15 +0100 Subject: [PATCH 01/70] fix rm command (#4890) Co-authored-by: Henrique Joaquim --- openbb_terminal/cryptocurrency/due_diligence/messari_view.py | 3 +-- openbb_terminal/helper_funcs.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/openbb_terminal/cryptocurrency/due_diligence/messari_view.py b/openbb_terminal/cryptocurrency/due_diligence/messari_view.py index 6977d467cb28..12eea754f1c4 100644 --- a/openbb_terminal/cryptocurrency/due_diligence/messari_view.py +++ b/openbb_terminal/cryptocurrency/due_diligence/messari_view.py @@ -340,7 +340,6 @@ def display_roadmap( ) df_copy = df_copy[df_copy["Date"].notnull()] - titles = list(df_copy[df_copy["Date"] > df_prices.index[0]]["Title"]) max_price = df_prices["Close"].max() for counter, x in enumerate(roadmap_dates): @@ -348,7 +347,7 @@ def display_roadmap( fig.add_annotation( x=x, y=max_price * 0.7, - text=titles[counter], + text=df.iloc[counter]["Title"], textangle=90, font=dict(size=15), xshift=10, diff --git a/openbb_terminal/helper_funcs.py b/openbb_terminal/helper_funcs.py index cd845ad0b200..a4eee4f0ab00 100644 --- a/openbb_terminal/helper_funcs.py +++ b/openbb_terminal/helper_funcs.py @@ -307,7 +307,7 @@ def print_rich_table( try: if not isinstance(df[col].iloc[0], pd.Timestamp): df[col] = pd.to_numeric(df[col]) - except ValueError: + except (ValueError, TypeError): pass def _get_headers(_headers: Union[List[str], pd.Index]) -> List[str]: From 45a06098a9b019c2c9a124c9fee85027073d5462 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:14:54 +0100 Subject: [PATCH 02/70] Fix `crypto/defi/anchor` (#4892) * handle defi anchor exceptions * reason * mypy --------- Co-authored-by: Henrique Joaquim --- .../cryptocurrency/defi/cryptosaurio_model.py | 7 +++-- .../cryptocurrency/defi/cryptosaurio_view.py | 31 ++++++++++--------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py b/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py index 1d921181ab90..177a7ced5a53 100644 --- a/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py +++ b/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py @@ -8,6 +8,7 @@ from openbb_terminal.decorators import log_start_end from openbb_terminal.helper_funcs import request +from openbb_terminal.rich_config import console logger = logging.getLogger(__name__) @@ -33,13 +34,15 @@ def get_anchor_data(address: str = "") -> Tuple[pd.DataFrame, pd.DataFrame, str] """ if not address.startswith("terra"): - raise Exception( + console.print( "Select a valid address. Valid terra addresses start with 'terra'" ) + return pd.DataFrame(), pd.DataFrame(), "" response = request(f"{api_url}/get-anchor-protocol-data-v2/{address}") if response.status_code != 200: - raise Exception(f"Status code: {response.status_code}. Reason: {response.text}") + console.print(f"Status code: {response.status_code}. Reason: {response.reason}") + return pd.DataFrame(), pd.DataFrame(), "" data = response.json() df = pd.DataFrame(reversed(data["historicalData"])) diff --git a/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py b/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py index 5a74ac63538a..c903ee1fea5d 100644 --- a/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py +++ b/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py @@ -41,9 +41,10 @@ def display_anchor_data( df, df_deposits, stats_str = cryptosaurio_model.get_anchor_data(address=address) - console.print(f"\n{stats_str}\n") + if stats_str: + console.print(f"\n{stats_str}\n") - if show_transactions: + if not df_deposits.empty and show_transactions: print_rich_table( df_deposits, headers=list(df_deposits.columns), @@ -52,18 +53,20 @@ def display_anchor_data( export=bool(export), ) - fig = OpenBBFigure(yaxis_title="Earnings Value [UST]") - fig.set_title("Earnings in Anchor Earn") + if not df.empty: + fig = OpenBBFigure(yaxis_title="Earnings Value [UST]") + fig.set_title("Earnings in Anchor Earn") - fig.add_scatter(x=df["time"], y=df["yield"], name="Earnings") + fig.add_scatter(x=df["time"], y=df["yield"], name="Earnings") - export_data( - export, - os.path.dirname(os.path.abspath(__file__)), - "anchor", - df, - sheet_name, - fig, - ) + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "anchor", + df, + sheet_name, + fig, + ) - return fig.show(external=external_axes) + return fig.show(external=external_axes) + return None From 839638bf05d8c49c86fc83e64eccca586c85cef5 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:05:15 +0100 Subject: [PATCH 03/70] fix rm command (#4890) Co-authored-by: Henrique Joaquim --- openbb_terminal/cryptocurrency/due_diligence/messari_view.py | 3 +-- openbb_terminal/helper_funcs.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/openbb_terminal/cryptocurrency/due_diligence/messari_view.py b/openbb_terminal/cryptocurrency/due_diligence/messari_view.py index 6977d467cb28..12eea754f1c4 100644 --- a/openbb_terminal/cryptocurrency/due_diligence/messari_view.py +++ b/openbb_terminal/cryptocurrency/due_diligence/messari_view.py @@ -340,7 +340,6 @@ def display_roadmap( ) df_copy = df_copy[df_copy["Date"].notnull()] - titles = list(df_copy[df_copy["Date"] > df_prices.index[0]]["Title"]) max_price = df_prices["Close"].max() for counter, x in enumerate(roadmap_dates): @@ -348,7 +347,7 @@ def display_roadmap( fig.add_annotation( x=x, y=max_price * 0.7, - text=titles[counter], + text=df.iloc[counter]["Title"], textangle=90, font=dict(size=15), xshift=10, diff --git a/openbb_terminal/helper_funcs.py b/openbb_terminal/helper_funcs.py index cd845ad0b200..a4eee4f0ab00 100644 --- a/openbb_terminal/helper_funcs.py +++ b/openbb_terminal/helper_funcs.py @@ -307,7 +307,7 @@ def print_rich_table( try: if not isinstance(df[col].iloc[0], pd.Timestamp): df[col] = pd.to_numeric(df[col]) - except ValueError: + except (ValueError, TypeError): pass def _get_headers(_headers: Union[List[str], pd.Index]) -> List[str]: From e7b8b381cafc967b8432402982151aad9cf2e81b Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:14:54 +0100 Subject: [PATCH 04/70] Fix `crypto/defi/anchor` (#4892) * handle defi anchor exceptions * reason * mypy --------- Co-authored-by: Henrique Joaquim --- .../cryptocurrency/defi/cryptosaurio_model.py | 7 +++-- .../cryptocurrency/defi/cryptosaurio_view.py | 31 ++++++++++--------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py b/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py index 1d921181ab90..177a7ced5a53 100644 --- a/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py +++ b/openbb_terminal/cryptocurrency/defi/cryptosaurio_model.py @@ -8,6 +8,7 @@ from openbb_terminal.decorators import log_start_end from openbb_terminal.helper_funcs import request +from openbb_terminal.rich_config import console logger = logging.getLogger(__name__) @@ -33,13 +34,15 @@ def get_anchor_data(address: str = "") -> Tuple[pd.DataFrame, pd.DataFrame, str] """ if not address.startswith("terra"): - raise Exception( + console.print( "Select a valid address. Valid terra addresses start with 'terra'" ) + return pd.DataFrame(), pd.DataFrame(), "" response = request(f"{api_url}/get-anchor-protocol-data-v2/{address}") if response.status_code != 200: - raise Exception(f"Status code: {response.status_code}. Reason: {response.text}") + console.print(f"Status code: {response.status_code}. Reason: {response.reason}") + return pd.DataFrame(), pd.DataFrame(), "" data = response.json() df = pd.DataFrame(reversed(data["historicalData"])) diff --git a/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py b/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py index 5a74ac63538a..c903ee1fea5d 100644 --- a/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py +++ b/openbb_terminal/cryptocurrency/defi/cryptosaurio_view.py @@ -41,9 +41,10 @@ def display_anchor_data( df, df_deposits, stats_str = cryptosaurio_model.get_anchor_data(address=address) - console.print(f"\n{stats_str}\n") + if stats_str: + console.print(f"\n{stats_str}\n") - if show_transactions: + if not df_deposits.empty and show_transactions: print_rich_table( df_deposits, headers=list(df_deposits.columns), @@ -52,18 +53,20 @@ def display_anchor_data( export=bool(export), ) - fig = OpenBBFigure(yaxis_title="Earnings Value [UST]") - fig.set_title("Earnings in Anchor Earn") + if not df.empty: + fig = OpenBBFigure(yaxis_title="Earnings Value [UST]") + fig.set_title("Earnings in Anchor Earn") - fig.add_scatter(x=df["time"], y=df["yield"], name="Earnings") + fig.add_scatter(x=df["time"], y=df["yield"], name="Earnings") - export_data( - export, - os.path.dirname(os.path.abspath(__file__)), - "anchor", - df, - sheet_name, - fig, - ) + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "anchor", + df, + sheet_name, + fig, + ) - return fig.show(external=external_axes) + return fig.show(external=external_axes) + return None From 19c52bec6af3aa8f694c16be3f8bcaeed5238973 Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Wed, 26 Apr 2023 16:19:31 +0200 Subject: [PATCH 05/70] Increase integration test coverage (#4902) * Create and update tests * Create and update tests --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> --- .../alternative/test_alt.openbb | 11 ++++++ .../cryptocurrency/test_crypto_defi.openbb | 4 +- .../cryptocurrency/test_crypto_onchain.openbb | 4 ++ .../economy/test_economoy_qa.openbb | 38 +++++++++++++++++++ .../etf/test_etf.openbb | 7 ++++ .../forex/test_forex_base.openbb | 11 ++++++ .../forex/test_forex_ta.openbb | 3 ++ .../futures/test_futures.openbb | 2 + .../mutual_funds/test_mutual_fund.openbb | 13 +++++++ .../stocks/test_stocks.openbb | 32 ++++++++++++++++ .../stocks/test_stocks_dps.openbb | 3 ++ .../stocks/test_stocks_res.openbb | 6 +++ .../stocks/test_stocks_ta.openbb | 5 +++ 13 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 openbb_terminal/miscellaneous/integration_tests_scripts/alternative/test_alt.openbb create mode 100644 openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economoy_qa.openbb create mode 100644 openbb_terminal/miscellaneous/integration_tests_scripts/mutual_funds/test_mutual_fund.openbb create mode 100644 openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_res.openbb diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/alternative/test_alt.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/alternative/test_alt.openbb new file mode 100644 index 000000000000..19b61c2b9d2f --- /dev/null +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/alternative/test_alt.openbb @@ -0,0 +1,11 @@ +alternative +hn -l 5 +covid +.. +oss +.. +realestate +.. +help +reset +exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_defi.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_defi.openbb index d52a15356304..7cc8708d9171 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_defi.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_defi.openbb @@ -13,7 +13,7 @@ vaults --chain ${crypto_full=ethereum} --protocol aave --kind stable --top 3 --l vaults --chain ${crypto_full=ethereum} -s apy -r # tokens -tokens +tokens # this is running into a timeout issue tokens --skip 3 --limit 3 --sort totalLiquidity tokens --sort txCount --reverse @@ -68,6 +68,8 @@ sreturn --limit 200 anchor --address terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz anchor --address terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz --transactions +help +reset exit # TERRA ADDRESSES FOR EXAMPLES diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_onchain.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_onchain.openbb index d0c18819d7e6..75280448c621 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_onchain.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_onchain.openbb @@ -73,6 +73,10 @@ prices --sort volumeConverted --reverse # loads transaction hash address 0x9dc7b43ad4288c624fdd236b2ecb9f2b81c93e706b2ffd1d19b112c1df7849e6 -tx +hr -i 1w + # tx +help +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economoy_qa.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economoy_qa.openbb new file mode 100644 index 000000000000..860336c4f013 --- /dev/null +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/economy/test_economoy_qa.openbb @@ -0,0 +1,38 @@ +economy +macro +treasury +qa + +# Statistics +summary +normality +unitroot + +# Plots +line +line --log +hist +hist -b 10 +cdf +bw +bw -y +acf +qqplot + +# Rolling Metrics +rolling +spread +quantile +skew +kurtosis + +# Other +raw -r +decompose +decompose -m +cusum + +pick united_states_CPI +help +reset +exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/etf/test_etf.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/etf/test_etf.openbb index 62c0fb3e1b9c..a92574196371 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/etf/test_etf.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/etf/test_etf.openbb @@ -10,4 +10,11 @@ candle --sort adjclose --reverse --raw candle -t --ma 4 news compare spy,ivv +disc +.. +help +search -n vol +ta +.. +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_base.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_base.openbb index bde2ad1ba06c..cd55e6af7a9d 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_base.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_base.openbb @@ -6,4 +6,15 @@ fwd quote quote --source YahooFinance quote --source AlphaVantage +candle --sort open -r --raw --limit 10 +candle -t +help +oanda +qa +.. +ta +.. +forecast +.. +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_ta.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_ta.openbb index 9e8ffc1b647f..0ff92521e81d 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_ta.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/forex/test_forex_ta.openbb @@ -45,4 +45,7 @@ aroon bbands donchian fib +ad -l 15 -d 2 +help +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/futures/test_futures.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/futures/test_futures.openbb index 0d9f9cd38b6c..7a57faaaae75 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/futures/test_futures.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/futures/test_futures.openbb @@ -6,4 +6,6 @@ historical OJ -s 2022-01-01 -e 2022-01-20 historical M6B,MSF,M6E curve OJ curve CL --raw +help +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/mutual_funds/test_mutual_fund.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/mutual_funds/test_mutual_fund.openbb new file mode 100644 index 000000000000..0ce36eb01775 --- /dev/null +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/mutual_funds/test_mutual_fund.openbb @@ -0,0 +1,13 @@ +funds +country --name united_states +search --fund morning +load --fund Vanguard +plot -c both +sector -t equity +sector -t fixed_income +holdings -t all +carbon +exclusion +help +reset +exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb index a9a76c738304..714286bbfdf3 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb @@ -11,4 +11,36 @@ candle --raw candle --sort AdjClose -r --raw codes news -l 3 +th +.. +options +.. +disc +.. +dps +.. +scr +.. +ins +.. +gov +.. +ba +.. +ca +.. +fa +.. +bt +.. +ta +.. +qa +.. +forecast +.. +res +.. +help +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_dps.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_dps.openbb index d956145da9eb..e1a5242d8d85 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_dps.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_dps.openbb @@ -13,4 +13,7 @@ ftd load ${ticker=aapl} -i 5 ftd -n 5 --raw dpotc +# prom -t T1 +help +reset exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_res.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_res.openbb new file mode 100644 index 000000000000..3e9ce7a9c44b --- /dev/null +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_res.openbb @@ -0,0 +1,6 @@ +stocks +load ${ticker=aapl} +res +help +reset +exit diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_ta.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_ta.openbb index caab488a07b2..e4adb76f63fb 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_ta.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks_ta.openbb @@ -77,4 +77,9 @@ ad adosc obv fib +atr +cones +multi -i macd[12,26,9],rsi,sma[20] +help +reset exit From df9a15497de3c8d93d9d79150cf794dd290ed7d6 Mon Sep 17 00:00:00 2001 From: teh_coderer Date: Wed, 26 Apr 2023 10:41:58 -0400 Subject: [PATCH 06/70] post main merge --- .../miscellaneous/models/hub_credentials.json | 2 -- poetry.lock | 34 +++++++++---------- pyproject.toml | 2 +- requirements-full.txt | 2 +- requirements.txt | 2 +- tests/openbb_terminal/test_keys_controller.py | 2 -- 6 files changed, 20 insertions(+), 24 deletions(-) diff --git a/openbb_terminal/miscellaneous/models/hub_credentials.json b/openbb_terminal/miscellaneous/models/hub_credentials.json index 633f70884c23..47891a407abe 100644 --- a/openbb_terminal/miscellaneous/models/hub_credentials.json +++ b/openbb_terminal/miscellaneous/models/hub_credentials.json @@ -9,8 +9,6 @@ "API_NEWS_TOKEN": "", "API_CMC_KEY": "", "API_FINNHUB_KEY": "", - "API_IEX_TOKEN": "", - "API_SENTIMENTINVESTOR_TOKEN": "", "API_WHALE_ALERT_KEY": "", "API_GLASSNODE_KEY": "", "API_COINGLASS_KEY": "", diff --git a/poetry.lock b/poetry.lock index 56c094997328..557d23fba1ed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "absl-py" @@ -6461,31 +6461,31 @@ files = [ [[package]] name = "pywry" -version = "0.4.8" +version = "0.5.0" description = "" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pywry-0.4.8-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:ed25402bb742d24d5ec0531b14b37fc1321f9f7387743e74bbd7c60383361895"}, - {file = "pywry-0.4.8-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:9375400d8db85e885459b723ab7261f2f8a84daeda12ff0e9cb00f51ab540c75"}, - {file = "pywry-0.4.8-cp310-none-win_amd64.whl", hash = "sha256:081ddc8b6bd1656d94c23c79aab11c18ba2f30fae5d05764409ddf933f7e1398"}, - {file = "pywry-0.4.8-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:98260336dc01c638546b7360a9219bb21c0563e58b0cd8093dc59e8e9032ffaa"}, - {file = "pywry-0.4.8-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:304509551ad797b738105037e0ce881502f4b272aa93a0c1dc6afcd4b67d25f9"}, - {file = "pywry-0.4.8-cp311-none-win_amd64.whl", hash = "sha256:b7c41369997071be16bebde755e34dacce05a3420bbec3c116a5403e50a0ee0f"}, - {file = "pywry-0.4.8-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:26d5902e26ac48f9996169d9bb1cbd86930fb8d5cf2941d2d329d5f36088d476"}, - {file = "pywry-0.4.8-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:5aa3b62a6c0b95ee3c842f594f2bb0c4090a63b3573e2515fcb7c06b02bc5ba1"}, - {file = "pywry-0.4.8-cp38-none-win_amd64.whl", hash = "sha256:3df9986f8ad7b8bb4c4fd8644bd785f3b23a01c2f9a377df7875974beab25c00"}, - {file = "pywry-0.4.8-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:0c57fee1746a84d19fa46142db7f394236a7e6fad78f10be44fd23c1310b990c"}, - {file = "pywry-0.4.8-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:18b0be063650dfcc46b03f61ed97a4a32dbd2956feee1b9a8e94a7a2a82da960"}, - {file = "pywry-0.4.8-cp39-none-win_amd64.whl", hash = "sha256:dc1367aa1eb435743a7105cd7352189201662a7cdbc22415c08cab68e0fad931"}, - {file = "pywry-0.4.8.tar.gz", hash = "sha256:5ca24922bd406cd9054b11d019a81f5769a5cacfc6de9fc3ce1b091981c99f7e"}, + {file = "pywry-0.5.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:bba57144a054027084c9b8829fc92a98742b6eeaef895670d0301be103292a18"}, + {file = "pywry-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:dd5b1806075682dd6a7b9715dad044bf625ac09ea04447a95c2c3af356b68d05"}, + {file = "pywry-0.5.0-cp310-none-win_amd64.whl", hash = "sha256:7dba52d39c156214a04b9f4003b02805c9c3c5ae63cf121dd2174e0f35c4f5a2"}, + {file = "pywry-0.5.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:169c3732f1fa7066d250b9603d3d6dc4aa67d0b62433f254b596a0fe97afe52f"}, + {file = "pywry-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f04cd9d0cebadbaf8fbbec851f24c3d8b0468408514069b8421e4db497fbaffa"}, + {file = "pywry-0.5.0-cp311-none-win_amd64.whl", hash = "sha256:9920a1a4acc8058655075fb52c31f53b1f8438462c8b9947c4f7cd302ced1ae9"}, + {file = "pywry-0.5.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:dd40af058a2731037fb53f81d3fa12b014eb5b6110bbc2ab1792a005c5f9bd8c"}, + {file = "pywry-0.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4f39c990feb98be4e4f1d30d4fd750fe7c74f288698ebfff484d3ae0451ffe74"}, + {file = "pywry-0.5.0-cp38-none-win_amd64.whl", hash = "sha256:2959b2ff68b1548958ed4eec6fe0f2ffe4d20120385c8300a5da5e48aef71022"}, + {file = "pywry-0.5.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:93a375cb67e7c954460a5025de17bab0a22f3e396e87532ab68dec7a36a2200d"}, + {file = "pywry-0.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:0f89efec669a0445b758894bb6b26fdbad82140b0912da45b64d8e7aab0d4d68"}, + {file = "pywry-0.5.0-cp39-none-win_amd64.whl", hash = "sha256:0a54b8435f754c7f2e03e2a04c67bfc2c4da2931488fdd22cf5ae7b78c6f2c2b"}, + {file = "pywry-0.5.0.tar.gz", hash = "sha256:29b594ace5dde2047f0cb167df2cfa7ae76b8adc8c27947f03300cb64517c11e"}, ] [package.dependencies] psutil = ">=5.8.0,<5.9.4" setproctitle = "*" -websockets = ">=11.0.1" +websockets = "*" [package.extras] dev = ["auditwheel", "wheel"] @@ -9656,4 +9656,4 @@ optimization = ["Riskfolio-Lib"] [metadata] lock-version = "2.0" python-versions = "^3.8,<3.11, !=3.9.7" -content-hash = "f750f2d47909d1f88e2b0fae74dd6c812f30f5a9923d46f528f22dc6034d0036" +content-hash = "d2bc3a75f2aff5123a842c656d6e8a9d51fa829433dc0cb1a02deb1d5c6967d9" diff --git a/pyproject.toml b/pyproject.toml index 4501104e3c33..889c48327604 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -101,7 +101,7 @@ jupyterlab-widgets = "^3.0.3" mstarpy = "^0.0.4" packaging = ">=22.0" streamlit = "^1.21.0" -pywry = "^0.4.8" +pywry = "^0.5.0" svglib = "^1.5.0" sparqlwrapper = "^2.0.0" y-py = "!=0.5.5" # Untraceable third level dependency that requires cargo to be built diff --git a/requirements-full.txt b/requirements-full.txt index 8b921a453dc8..b4e35ccb566c 100644 --- a/requirements-full.txt +++ b/requirements-full.txt @@ -265,7 +265,7 @@ pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and pywin32-ctypes==0.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32" pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt" -pywry==0.4.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +pywry==0.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyzmq==25.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" qdldl==0.1.5.post3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/requirements.txt b/requirements.txt index 8c2521e3d1bb..9490ac55b3f6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -182,7 +182,7 @@ pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_full_ver pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt" -pywry==0.4.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +pywry==0.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyzmq==25.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" quandl==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/tests/openbb_terminal/test_keys_controller.py b/tests/openbb_terminal/test_keys_controller.py index 451ba653371e..10c2de4d5cf4 100644 --- a/tests/openbb_terminal/test_keys_controller.py +++ b/tests/openbb_terminal/test_keys_controller.py @@ -48,7 +48,6 @@ def __init__(self, **kwargs): self.API_TRADIER_TOKEN = kwargs.get("TRADIER", None) self.API_CMC_KEY = kwargs.get("CMC", None) self.API_FINNHUB_KEY = kwargs.get("FINNHUB", None) - self.API_IEX_TOKEN = kwargs.get("IEX", None) self.API_REDDIT_CLIENT_ID = kwargs.get("REDDIT_CLIENT", None) self.API_REDDIT_CLIENT_SECRET = kwargs.get("REDDIT_SECRET", None) self.API_REDDIT_USERNAME = kwargs.get("REDDIT_USERNAME", None) @@ -65,7 +64,6 @@ def __init__(self, **kwargs): self.API_BINANCE_KEY = kwargs.get("BINANCE", None) self.API_BINANCE_SECRET = kwargs.get("BINANCE", None) self.API_BITQUERY_KEY = kwargs.get("BITQUERY", None) - self.API_SENTIMENTINVESTOR_TOKEN = kwargs.get("SI", None) self.API_COINBASE_KEY = kwargs.get("COINBASE", None) self.API_COINBASE_SECRET = kwargs.get("COINBASE", None) self.API_COINBASE_PASS_PHRASE = kwargs.get("COINBASE", None) From 18204202ac6e6f2f298541ae3d6938afa3c4b5f5 Mon Sep 17 00:00:00 2001 From: Theodore Aptekarev Date: Thu, 27 Apr 2023 18:24:13 +0200 Subject: [PATCH 07/70] Remove stocks/disc/cnews command (#4920) * Remove stocks/disc/cnews command from terminal and sdk * Remove disc/cnews tests and test data * Remove cnews from default sources, translations and intros * Remove old test data files that are not used anymore * Add pydocstyle ignore statement to pyproject toml * Fix print help in stocks/disc controller test --- .../sdk/controllers/stocks_sdk_controller.py | 1 - .../core/sdk/models/stocks_sdk_model.py | 2 - openbb_terminal/core/sdk/trail_map.csv | 1 - openbb_terminal/miscellaneous/i18n/en.yml | 1 - .../miscellaneous/sources/openbb_default.json | 18 ----- .../stocks/discovery/disc_controller.py | 74 +------------------ .../stocks/discovery/seeking_alpha_model.py | 38 ---------- .../stocks/discovery/seeking_alpha_view.py | 48 +----------- pyproject.toml | 1 + .../stocks/discovery/test_disc_controller.py | 20 +---- .../discovery/test_seeking_alpha_model.py | 5 -- .../discovery/test_seeking_alpha_view.py | 10 --- .../test_menu_quick_exit.txt | 37 ---------- .../test_menu_system_exit.txt | 41 ---------- .../test_disc_controller/test_print_help.txt | 1 - .../test_disc_controller/test_switch_help.txt | 37 ---------- .../test_display_news.txt | 3 - .../sdk/usage/intros/stocks/discovery.md | 2 +- 18 files changed, 6 insertions(+), 334 deletions(-) delete mode 100644 tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_quick_exit.txt delete mode 100644 tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_system_exit.txt delete mode 100644 tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_switch_help.txt delete mode 100644 tests/openbb_terminal/stocks/discovery/txt/test_seeking_alpha_view/test_display_news.txt diff --git a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py index 450f9a1b8f88..6153e6da712f 100644 --- a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py +++ b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py @@ -108,7 +108,6 @@ def disc(self): `ipo`: Get IPO calendar\n `losers`: Get top losers. [Source: Yahoo Finance]\n `lowfloat`: Returns low float DataFrame\n - `news`: Gets news. [Source: SeekingAlpha]\n `pipo`: Past IPOs dates. [Source: Finnhub]\n `rtat`: Gets the top 10 retail stocks per day\n `trending`: Returns a list of trending articles\n diff --git a/openbb_terminal/core/sdk/models/stocks_sdk_model.py b/openbb_terminal/core/sdk/models/stocks_sdk_model.py index 093557b4a1eb..e1fe2fee3767 100644 --- a/openbb_terminal/core/sdk/models/stocks_sdk_model.py +++ b/openbb_terminal/core/sdk/models/stocks_sdk_model.py @@ -156,7 +156,6 @@ class StocksDiscovery(Category): `ipo`: Get IPO calendar\n `losers`: Get top losers. [Source: Yahoo Finance]\n `lowfloat`: Returns low float DataFrame\n - `news`: Gets news. [Source: SeekingAlpha]\n `pipo`: Past IPOs dates. [Source: Finnhub]\n `rtat`: Gets the top 10 retail stocks per day\n `trending`: Returns a list of trending articles\n @@ -182,7 +181,6 @@ def __init__(self): self.ipo = lib.stocks_disc_finnhub_model.get_ipo_calendar self.losers = lib.stocks_disc_yahoofinance_model.get_losers self.lowfloat = lib.stocks_disc_shortinterest_model.get_low_float - self.news = lib.stocks_disc_seeking_alpha_model.get_news self.pipo = lib.stocks_disc_finnhub_model.get_past_ipo self.rtat = lib.stocks_disc_nasdaq_model.get_retail_tickers self.trending = lib.stocks_disc_seeking_alpha_model.get_trending_list diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index 6b5e91d3cf67..3f36f6facc10 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -418,7 +418,6 @@ stocks.disc.hotpenny,stocks_disc_shortinterest_model.get_today_hot_penny_stocks, stocks.disc.ipo,stocks_disc_finnhub_model.get_ipo_calendar, stocks.disc.losers,stocks_disc_yahoofinance_model.get_losers, stocks.disc.lowfloat,stocks_disc_shortinterest_model.get_low_float, -stocks.disc.news,stocks_disc_seeking_alpha_model.get_news, stocks.disc.pipo,stocks_disc_finnhub_model.get_past_ipo, stocks.disc.rtat,stocks_disc_nasdaq_model.get_retail_tickers, stocks.disc.trending,stocks_disc_seeking_alpha_model.get_trending_list, diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index eb46cce409be..45bd62fb070b 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -202,7 +202,6 @@ en: stocks/disc/arkord: orders by ARK Investment Management LLC stocks/disc/upcoming: upcoming earnings release dates stocks/disc/trending: trending news - stocks/disc/cnews: customized news (buybacks, ipos, spacs, healthcare, politics) stocks/disc/lowfloat: low float stocks under 10M shares float stocks/disc/hotpenny: today's hot penny stocks stocks/disc/rtat: top 10 retail traded stocks per day diff --git a/openbb_terminal/miscellaneous/sources/openbb_default.json b/openbb_terminal/miscellaneous/sources/openbb_default.json index c29f05801162..131d9e15894f 100644 --- a/openbb_terminal/miscellaneous/sources/openbb_default.json +++ b/openbb_terminal/miscellaneous/sources/openbb_default.json @@ -158,9 +158,6 @@ "trending": [ "SeekingAlpha" ], - "cnews": [ - "SeekingAlpha" - ], "lowfloat": [ "Fidelity" ], @@ -542,12 +539,6 @@ "FinancialModelingPrep", "YahooFinance" ], - "overview": [ - "YahooFinance", - "Finviz", - "FinancialModelingPrep", - "AlphaVantage" - ], "divs": [ "YahooFinance" ], @@ -561,15 +552,9 @@ "rot": [ "Finnhub" ], - "score": [ - "FinancialModelingPrep" - ], "warnings": [ "MarketWatch" ], - "mgmt": [ - "BusinessInsider" - ], "shrs": [ "YahooFinance" ], @@ -641,9 +626,6 @@ "sec": [ "Nasdaq" ], - "analysis": [ - "Elect" - ], "earnings": [ "AlphaVantage", "YahooFinance" diff --git a/openbb_terminal/stocks/discovery/disc_controller.py b/openbb_terminal/stocks/discovery/disc_controller.py index e87ecfb99c23..3a1770de8d92 100644 --- a/openbb_terminal/stocks/discovery/disc_controller.py +++ b/openbb_terminal/stocks/discovery/disc_controller.py @@ -1,4 +1,4 @@ -""" Discovery Controller Module """ +"""Discovery Controller Module.""" __docformat__ = "numpy" import argparse @@ -57,7 +57,6 @@ class DiscoveryController(BaseController): "trending", "lowfloat", "hotpenny", - "cnews", "rtat", "divcal", "heatmap", @@ -75,32 +74,7 @@ class DiscoveryController(BaseController): "shares", ] arkord_fund_choices = ["ARKK", "ARKF", "ARKW", "ARKQ", "ARKG", "ARKX", ""] - cnews_type_choices = [ - nt.lower() - for nt in [ - "Top-News", - "On-The-Move", - "Market-Pulse", - "Notable-Calls", - "Buybacks", - "Commodities", - "Crypto", - "Issuance", - "Global", - "Guidance", - "IPOs", - "SPACs", - "Politics", - "M-A", - "Consumer", - "Energy", - "Financials", - "Healthcare", - "MLPs", - "REITs", - "Technology", - ] - ] + PATH = "/stocks/disc/" dividend_columns = [ "Name", @@ -140,7 +114,6 @@ def print_help(self): mt.add_cmd("arkord", "Cathies Ark") mt.add_cmd("upcoming", "Seeking Alpha") mt.add_cmd("trending", "Seeking Alpha") - mt.add_cmd("cnews", "Seeking Alpha") mt.add_cmd("lowfloat", "Fidelity") mt.add_cmd("hotpenny", "Shortinterest") mt.add_cmd("rtat", "NASDAQ Data Link") @@ -774,49 +747,6 @@ def call_lowfloat(self, other_args: List[str]): else None, ) - @log_start_end(log=logger) - def call_cnews(self, other_args: List[str]): - """Process cnews command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="cnews", - description="""Customized news. [Source: Seeking Alpha]""", - ) - parser.add_argument( - "-t", - "--type", - action="store", - dest="s_type", - choices=self.cnews_type_choices, - default="top-news", - help="number of news to display", - ) - parser.add_argument( - "-l", - "--limit", - action="store", - dest="limit", - type=check_positive, - default=5, - help="limit of news to display", - ) - if other_args and "-" not in other_args[0][0]: - other_args.insert(0, "-t") - - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - if ns_parser: - seeking_alpha_view.display_news( - news_type=ns_parser.s_type, - limit=ns_parser.limit, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - @log_start_end(log=logger) def call_hotpenny(self, other_args: List[str]): """Process hotpenny command""" diff --git a/openbb_terminal/stocks/discovery/seeking_alpha_model.py b/openbb_terminal/stocks/discovery/seeking_alpha_model.py index b633ec9cae5b..15aee1f96b78 100644 --- a/openbb_terminal/stocks/discovery/seeking_alpha_model.py +++ b/openbb_terminal/stocks/discovery/seeking_alpha_model.py @@ -3,7 +3,6 @@ import logging from datetime import date, timedelta -from typing import Dict, List import pandas as pd from bs4 import BeautifulSoup @@ -213,40 +212,3 @@ def get_news_html(news_type: str = "Top-News") -> dict: articles_html = request(sa_url, headers={"User-Agent": get_user_agent()}).json() return articles_html - - -@log_start_end(log=logger) -def get_news(news_type: str = "Top-News", limit: int = 5) -> List: - """Gets news. [Source: SeekingAlpha] - - Parameters - ---------- - news_type : str - From: Top-News, On-The-Move, Market-Pulse, Notable-Calls, Buybacks, Commodities, Crypto, Issuance, Global, - Guidance, IPOs, SPACs, Politics, M-A, Consumer, Energy, Financials, Healthcare, MLPs, REITs, Technology - limit : int - Number of news to display - - Returns - ------- - List[dict] - List of dict news - """ - news_articles: Dict = get_news_html(news_type) - news_to_display = list() - - if "data" in news_articles: - for idx, news in enumerate(news_articles["data"]): - if idx > limit: - break - - news_to_display.append( - { - "publishOn": news["attributes"]["publishOn"].replace("T", " ")[:-6], - "id": news["id"], - "title": news["attributes"]["title"], - "url": news["links"]["canonical"], - } - ) - - return news_to_display diff --git a/openbb_terminal/stocks/discovery/seeking_alpha_view.py b/openbb_terminal/stocks/discovery/seeking_alpha_view.py index 7265448bd6ee..fcc7df06b955 100644 --- a/openbb_terminal/stocks/discovery/seeking_alpha_view.py +++ b/openbb_terminal/stocks/discovery/seeking_alpha_view.py @@ -4,7 +4,7 @@ import logging import os from datetime import date -from typing import List, Optional +from typing import Optional import pandas as pd @@ -128,49 +128,3 @@ def news( df_articles, sheet_name, ) - - -@log_start_end(log=logger) -def display_news( - news_type: str = "top-news", - limit: int = 5, - export: str = "", - sheet_name: Optional[str] = None, -): - """Display news. [Source: SeekingAlpha] - - Parameters - ---------- - news_type : str - From: Top-News, On-The-Move, Market-Pulse, Notable-Calls, Buybacks, Commodities, Crypto, Issuance, Global, - Guidance, IPOs, SPACs, Politics, M-A, Consumer, Energy, Financials, Healthcare, MLPs, REITs, Technology - limit : int - Number of news to display - export : str - Export dataframe data to csv,json,xlsx file - """ - news_to_display: List = seeking_alpha_model.get_news(news_type, limit) - - if not news: - console.print("No news found.", "\n") - - else: - df_news = pd.DataFrame( - news_to_display, columns=["publishOn", "id", "title", "url"] - ) - df_news = df_news.drop("id", axis=1) - print_rich_table( - df_news, - show_index=False, - title=f"{news_type}", - export=bool(export), - limit=limit, - ) - - export_data( - export, - os.path.dirname(os.path.abspath(__file__)), - "cnews : " + news_type, - pd.DataFrame(news_to_display), - sheet_name, - ) diff --git a/pyproject.toml b/pyproject.toml index 889c48327604..a3a301f2765f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -161,6 +161,7 @@ build-backend = "poetry.core.masonry.api" [tool.pydocstyle] convention = "numpy" match = '((?!test_).)*\.py' +ignore = "D401" [tool.ruff] diff --git a/tests/openbb_terminal/stocks/discovery/test_disc_controller.py b/tests/openbb_terminal/stocks/discovery/test_disc_controller.py index 709d58d32bbb..24ce8f952171 100644 --- a/tests/openbb_terminal/stocks/discovery/test_disc_controller.py +++ b/tests/openbb_terminal/stocks/discovery/test_disc_controller.py @@ -11,9 +11,7 @@ from openbb_terminal.stocks.discovery import disc_controller -# pylint: disable=E1101 -# pylint: disable=W0603 -# pylint: disable=E1111 +# pylint: disable=E1101,W0603,E1111 @pytest.mark.vcr(record_mode="none") @@ -232,21 +230,6 @@ def test_call_func_expect_queue(expected_queue, queue, func): ], {"limit": 5, "export": "csv", "sheet_name": None}, ), - ( - "call_cnews", - "seeking_alpha_view.display_news", - [ - "--type=technology", - "--limit=5", - "--export=csv", - ], - { - "news_type": "technology", - "limit": 5, - "export": "csv", - "sheet_name": None, - }, - ), ( "call_fipo", "finnhub_view.future_ipo", @@ -376,7 +359,6 @@ def test_call_func(tested_func, mocked_func, other_args, called_with, mocker): "call_active", "call_arkord", "call_asc", - "call_cnews", "call_fipo", "call_gainers", "call_gtech", diff --git a/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_model.py b/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_model.py index bd3cac88d2db..dbf425662b58 100644 --- a/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_model.py +++ b/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_model.py @@ -30,8 +30,3 @@ def test_get_trending_list(recorder): @pytest.mark.vcr def test_get_news_html(): seeking_alpha_model.get_news_html() - - -@pytest.mark.vcr -def test_get_news(): - seeking_alpha_model.get_news() diff --git a/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_view.py b/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_view.py index 412c8602e44e..c573c5ace9a0 100644 --- a/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_view.py +++ b/tests/openbb_terminal/stocks/discovery/test_seeking_alpha_view.py @@ -33,13 +33,3 @@ def test_news(): limit=2, export="", ) - - -@pytest.mark.vcr -@pytest.mark.record_stdout -def test_display_news(): - seeking_alpha_view.display_news( - news_type="Crypto", - limit=2, - export="", - ) diff --git a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_quick_exit.txt b/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_quick_exit.txt deleted file mode 100644 index 515ede3df065..000000000000 --- a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_quick_exit.txt +++ /dev/null @@ -1,37 +0,0 @@ - -Discovery: - cls clear screen - ?/help show this menu again - q quit this menu, and shows back to main menu - quit quit to abandon program - -Geek of Wall St: - rtearn realtime earnings from and expected moves -Finnhub: - pipo past IPOs dates - fipo future IPOs dates -Yahoo Finance: - gainers show latest top gainers - losers show latest top losers - ugs undervalued stocks with revenue and earnings growth in excess of 25% - gtech tech stocks with revenue and earnings growth more than 25% - active most active stocks by intraday trade volume - ulc potentially undervalued large cap stocks - asc small cap stocks with earnings growth rates better than 25% -Fidelity: - ford orders by Fidelity Customers -cathiesark.com: - arkord orders by ARK Investment Management LLC -Seeking Alpha: - upcoming upcoming earnings release dates - trending trending news - cnews customized news (buybacks, ipos, spacs, healthcare, politics) -shortinterest.com - lowfloat low float stocks under 10M shares float -pennystockflow.com - hotpenny today's hot penny stocks -Finance Database: - fds advanced Equities search based on country, sector, industry, name and/or description -NASDAQ Data Link (Formerly Quandl): - rtat top 10 retail traded stocks per day - diff --git a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_system_exit.txt b/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_system_exit.txt deleted file mode 100644 index d59edc6492eb..000000000000 --- a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_menu_system_exit.txt +++ /dev/null @@ -1,41 +0,0 @@ - -Discovery: - cls clear screen - ?/help show this menu again - q quit this menu, and shows back to main menu - quit quit to abandon program - -Geek of Wall St: - rtearn realtime earnings from and expected moves -Finnhub: - pipo past IPOs dates - fipo future IPOs dates -Yahoo Finance: - gainers show latest top gainers - losers show latest top losers - ugs undervalued stocks with revenue and earnings growth in excess of 25% - gtech tech stocks with revenue and earnings growth more than 25% - active most active stocks by intraday trade volume - ulc potentially undervalued large cap stocks - asc small cap stocks with earnings growth rates better than 25% -Fidelity: - ford orders by Fidelity Customers -cathiesark.com: - arkord orders by ARK Investment Management LLC -Seeking Alpha: - upcoming upcoming earnings release dates - trending trending news - cnews customized news (buybacks, ipos, spacs, healthcare, politics) -shortinterest.com - lowfloat low float stocks under 10M shares float -pennystockflow.com - hotpenny today's hot penny stocks -Finance Database: - fds advanced Equities search based on country, sector, industry, name and/or description -NASDAQ Data Link (Formerly Quandl): - rtat top 10 retail traded stocks per day - -The command selected doesn't exist - -Did you mean 'quit'? - diff --git a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_print_help.txt b/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_print_help.txt index a641cc677f32..7e489878457f 100644 --- a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_print_help.txt +++ b/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_print_help.txt @@ -11,7 +11,6 @@ arkord orders by ARK Investment Management LLC [CathiesArk] upcoming upcoming earnings release dates [SeekingAlpha] trending trending news [SeekingAlpha] - cnews customized news (buybacks, ipos, spacs, healthcare, politics) [SeekingAlpha] lowfloat low float stocks under 10M shares float [Fidelity] hotpenny today's hot penny stocks [YahooFinance, Shortinterest] rtat top 10 retail traded stocks per day [Nasdaq] diff --git a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_switch_help.txt b/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_switch_help.txt deleted file mode 100644 index 515ede3df065..000000000000 --- a/tests/openbb_terminal/stocks/discovery/txt/test_disc_controller/test_switch_help.txt +++ /dev/null @@ -1,37 +0,0 @@ - -Discovery: - cls clear screen - ?/help show this menu again - q quit this menu, and shows back to main menu - quit quit to abandon program - -Geek of Wall St: - rtearn realtime earnings from and expected moves -Finnhub: - pipo past IPOs dates - fipo future IPOs dates -Yahoo Finance: - gainers show latest top gainers - losers show latest top losers - ugs undervalued stocks with revenue and earnings growth in excess of 25% - gtech tech stocks with revenue and earnings growth more than 25% - active most active stocks by intraday trade volume - ulc potentially undervalued large cap stocks - asc small cap stocks with earnings growth rates better than 25% -Fidelity: - ford orders by Fidelity Customers -cathiesark.com: - arkord orders by ARK Investment Management LLC -Seeking Alpha: - upcoming upcoming earnings release dates - trending trending news - cnews customized news (buybacks, ipos, spacs, healthcare, politics) -shortinterest.com - lowfloat low float stocks under 10M shares float -pennystockflow.com - hotpenny today's hot penny stocks -Finance Database: - fds advanced Equities search based on country, sector, industry, name and/or description -NASDAQ Data Link (Formerly Quandl): - rtat top 10 retail traded stocks per day - diff --git a/tests/openbb_terminal/stocks/discovery/txt/test_seeking_alpha_view/test_display_news.txt b/tests/openbb_terminal/stocks/discovery/txt/test_seeking_alpha_view/test_display_news.txt deleted file mode 100644 index cc1de6bb0108..000000000000 --- a/tests/openbb_terminal/stocks/discovery/txt/test_seeking_alpha_view/test_display_news.txt +++ /dev/null @@ -1,3 +0,0 @@ -Empty DataFrame -Columns: [publishOn, title, url] -Index: [] diff --git a/website/content/sdk/usage/intros/stocks/discovery.md b/website/content/sdk/usage/intros/stocks/discovery.md index f3001dc0f0dc..ccb3e01970ce 100644 --- a/website/content/sdk/usage/intros/stocks/discovery.md +++ b/website/content/sdk/usage/intros/stocks/discovery.md @@ -1,6 +1,6 @@ --- title: Discovery -keywords: [stocks, discovery, disc, menu, submenu, pipo, fipo, gainers, losers, ugs, gtech, active, ulc, asc, ford, arkord, upcoming, trending, cnews, lowfloat, hotpenny, rtat, divcal, dividends, short, trending, news, how to, usage, examples, filings, screener, overview] +keywords: [stocks, discovery, disc, menu, submenu, pipo, fipo, gainers, losers, ugs, gtech, active, ulc, asc, ford, arkord, upcoming, trending, lowfloat, hotpenny, rtat, divcal, dividends, short, trending, news, how to, usage, examples, filings, screener, overview] description: Introducing the Discovery menu, within the Stocks menu. This guide will empower the user to get the most out of this set of features. --- From 64e37bf0a2abf9239b295ea8ed1cdde6b9638f98 Mon Sep 17 00:00:00 2001 From: teh_coderer Date: Thu, 27 Apr 2023 11:24:22 -0500 Subject: [PATCH 08/70] Hotfix/ Improve setting/loading Streamlit session state variables (#4905) * improve setting/loading streamlit session state variables * Update streamlit_helpers.py * fix margins * fix hex color markdown showing on forecast tables --------- Co-authored-by: James Maslek --- .../dashboards/stream/Forecasting.py | 15 ++++++--- .../dashboards/stream/pages/Chains.py | 1 + .../dashboards/stream/pages/Correlation.py | 2 ++ .../dashboards/stream/pages/Futures.py | 15 +++++---- .../dashboards/stream/pages/Indicators.py | 2 ++ .../dashboards/stream/pages/Short_Data.py | 5 +-- .../dashboards/stream/pages/Stocks.py | 1 + .../dashboards/stream/streamlit_helpers.py | 32 +++++++++++++++++-- openbb_terminal/forecast/autoselect_model.py | 20 +++++++++--- openbb_terminal/forecast/helpers.py | 7 +--- 10 files changed, 73 insertions(+), 27 deletions(-) diff --git a/openbb_terminal/dashboards/stream/Forecasting.py b/openbb_terminal/dashboards/stream/Forecasting.py index bebafc92b175..b05fd29a3783 100644 --- a/openbb_terminal/dashboards/stream/Forecasting.py +++ b/openbb_terminal/dashboards/stream/Forecasting.py @@ -27,6 +27,7 @@ initial_sidebar_state="expanded", ) st_helpers.set_css() +st_helpers.set_current_page("Forecasting") EXPLAINABILITY_FIGURE: Union[OpenBBFigure, None] = None @@ -89,10 +90,10 @@ def __init__(self): st_helpers.load_state("last_tickers", "") st_helpers.load_state("last_intervals", "1d") st_helpers.load_state("df", pd.DataFrame()) - default_opts = { + self.default_opts = { key: [] for key in ["target_widget", "column_widget", "past_covs_widget"] } - st_helpers.load_widget_options(default_opts, "Forecasting") + st_helpers.load_widget_options(self.default_opts) self.feature_model = None self.feature_target = None @@ -177,7 +178,7 @@ def handle_changes( fig.update_layout( title=dict(x=0.5, xanchor="center", yanchor="top", y=0.99), showlegend=True, - margin=dict(t=40), + margin=dict(t=40, l=30), height=500, legend=dict( bgcolor="rgba(0,0,0,0.5)", @@ -313,7 +314,9 @@ def run(self): with col_order[1]: target_widget = st.selectbox( "Target", - options=st.session_state["widget_options"]["target_widget"], + options=st_helpers.get_widget_options( + self.default_opts, "target_widget" + ), ) with col_order[2]: @@ -328,7 +331,9 @@ def run(self): with col_order[0]: past_covs_widget = st.multiselect( "Past Covariates", - options=st.session_state["widget_options"]["past_covs_widget"], + options=st_helpers.get_widget_options( + self.default_opts, "past_covs_widget" + ), disabled=not enable_past_covs, label_visibility="hidden" if not enable_past_covs else "visible", ) diff --git a/openbb_terminal/dashboards/stream/pages/Chains.py b/openbb_terminal/dashboards/stream/pages/Chains.py index d702d2234c96..c65087152093 100644 --- a/openbb_terminal/dashboards/stream/pages/Chains.py +++ b/openbb_terminal/dashboards/stream/pages/Chains.py @@ -15,6 +15,7 @@ page_title="Chains", initial_sidebar_state="expanded", ) +st_helpers.set_current_page("Chains") st_helpers.set_css() st.sidebar.markdown( diff --git a/openbb_terminal/dashboards/stream/pages/Correlation.py b/openbb_terminal/dashboards/stream/pages/Correlation.py index 2e3adeb0acdb..3b875dcf05ad 100644 --- a/openbb_terminal/dashboards/stream/pages/Correlation.py +++ b/openbb_terminal/dashboards/stream/pages/Correlation.py @@ -16,6 +16,8 @@ page_title="Correlation", initial_sidebar_state="expanded", ) + +st_helpers.set_current_page("Correlation") st_helpers.set_css() st.sidebar.markdown( "

Correlation Analysis

", diff --git a/openbb_terminal/dashboards/stream/pages/Futures.py b/openbb_terminal/dashboards/stream/pages/Futures.py index 03af7b7daab1..6f982bcd64b5 100644 --- a/openbb_terminal/dashboards/stream/pages/Futures.py +++ b/openbb_terminal/dashboards/stream/pages/Futures.py @@ -21,6 +21,7 @@ page_title="Futures", initial_sidebar_state="expanded", ) +st_helpers.set_current_page("Futures") st_helpers.set_css() df = pd.read_csv(MISCELLANEOUS_DIRECTORY / "futures" / "futures.csv") @@ -130,12 +131,12 @@ def __init__(self): self.tickers = st_helpers.load_state("tickers", {}) self.last_ticker = st_helpers.load_state("last_ticker", TICKERS[0]) self.last_exchange = st_helpers.load_state("last_exchange", EXCHANGES[0]) - default_opts = { + self.default_opts = { "exch_widget": EXCHANGES, "tickers_widget": TICKERS, "cat_widget": CATEGORIES, } - st_helpers.load_widget_options(default_opts, "Futures") + st_helpers.load_widget_options(self.default_opts) def create_stock(self, chart_type, contracts, ticker): if not ticker: @@ -216,25 +217,25 @@ def run(self): st.sidebar.multiselect( "Category", - st.session_state["widget_options"]["cat_widget"], + st_helpers.get_widget_options(self.default_opts, "cat_widget"), on_change=self.on_change, key="cat_widget", ) st.sidebar.multiselect( "Exchange", - st.session_state["widget_options"]["exch_widget"], + st_helpers.get_widget_options(self.default_opts, "exch_widget"), key="exch_widget", on_change=self.on_change, ) ticker_widget = st.sidebar.selectbox( "Ticker", - st.session_state["widget_options"]["tickers_widget"], + st_helpers.get_widget_options(self.default_opts, "tickers_widget"), key="tickers_widget", index=0, ) - chart_widget = st.sidebar.multiselect( - "Chart Type", chart_type, key="chart_widget", default=chart_type[0] + chart_widget = st.sidebar.selectbox( + "Chart Type", chart_type, key="chart_widget", index=0 ) contracts_widget = st.sidebar.slider( "Contracts", 1, 24, 6, key="contracts_widget" diff --git a/openbb_terminal/dashboards/stream/pages/Indicators.py b/openbb_terminal/dashboards/stream/pages/Indicators.py index 6b650f7f7499..6a63aeb8dc6d 100644 --- a/openbb_terminal/dashboards/stream/pages/Indicators.py +++ b/openbb_terminal/dashboards/stream/pages/Indicators.py @@ -25,11 +25,13 @@ pd.options.plotting.backend = "plotly" + st.set_page_config( layout="wide", page_title="Indicators", initial_sidebar_state="expanded", ) +st_helpers.set_current_page("Indicators") st_helpers.set_css() logger = st.empty() diff --git a/openbb_terminal/dashboards/stream/pages/Short_Data.py b/openbb_terminal/dashboards/stream/pages/Short_Data.py index 73ff3aa0a5fe..215b7e3168ef 100644 --- a/openbb_terminal/dashboards/stream/pages/Short_Data.py +++ b/openbb_terminal/dashboards/stream/pages/Short_Data.py @@ -49,6 +49,7 @@ MAIN_LOOP: asyncio.AbstractEventLoop = None # type: ignore +st_helpers.set_current_page("Short Data") st_helpers.set_css() @@ -133,7 +134,7 @@ def update(self): ) fig.update_layout( title=f"Top {self.count_slider} Short Volume in Last {self.days_slider} Days", - margin=dict(l=5), + margin=dict(l=30), xaxis_title="Volume", yaxis_title="Ticker", barmode="stack", @@ -171,7 +172,7 @@ def ticker_plot(self): ) fig2.update_layout( title=f"Stock Volume and Short Volume for {self.stock_input.upper()}", - margin=dict(l=5), + margin=dict(l=30), xaxis_title="Date", yaxis_title="Volume", ) diff --git a/openbb_terminal/dashboards/stream/pages/Stocks.py b/openbb_terminal/dashboards/stream/pages/Stocks.py index 3c7e6553f9ce..c53a0448aa95 100644 --- a/openbb_terminal/dashboards/stream/pages/Stocks.py +++ b/openbb_terminal/dashboards/stream/pages/Stocks.py @@ -24,6 +24,7 @@ page_title="Stocks", initial_sidebar_state="expanded", ) +st_helpers.set_current_page("Stocks") logger = st.empty() page_title = st.empty() diff --git a/openbb_terminal/dashboards/stream/streamlit_helpers.py b/openbb_terminal/dashboards/stream/streamlit_helpers.py index 5f0028d51c6a..a52a4f232a0f 100644 --- a/openbb_terminal/dashboards/stream/streamlit_helpers.py +++ b/openbb_terminal/dashboards/stream/streamlit_helpers.py @@ -25,6 +25,16 @@ } +def update_current_page() -> None: + """Updates the current page to the set page""" + st.session_state["set_page"] = st.session_state["current_page"] + + +def set_current_page(page: str) -> None: + """Sets the current page to the given page""" + st.session_state["current_page"] = page + + def get_calc(item, df, rolling) -> pd.DataFrame: return STOCKS_VIEWS[item](df, rolling) @@ -67,20 +77,36 @@ def has_parameter(func: Callable[..., Any], parameter: str) -> bool: def load_state(name: str, default: Any) -> Any: if name not in st.session_state: st.session_state[name] = default + elif st.session_state.get("current_page", None) != st.session_state.get( + "set_page", None + ): + update_current_page() + st.session_state[name] = default + return st.session_state[name] -def load_widget_options(default: Any, page: str) -> Any: +def load_widget_options(default: Any) -> Any: name = "widget_options" if name not in st.session_state: st.session_state[name] = default - elif st.session_state[name].get("page", "") != page: + elif st.session_state.get("current_page", None) != st.session_state.get( + "set_page", None + ): + update_current_page() st.session_state[name] = default - st.session_state[name]["page"] = page return st.session_state[name] +def get_widget_options(default: dict, key: str) -> Any: + options = load_widget_options(default) + if key not in options: + options[key] = default.get(key, None) + + return options[key] + + def save_state(name: str, value: Any): st.session_state[name] = value diff --git a/openbb_terminal/forecast/autoselect_model.py b/openbb_terminal/forecast/autoselect_model.py index b31a8b745360..53282e354038 100644 --- a/openbb_terminal/forecast/autoselect_model.py +++ b/openbb_terminal/forecast/autoselect_model.py @@ -10,6 +10,7 @@ from darts import TimeSeries from statsforecast.core import StatsForecast +from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.decorators import log_start_end from openbb_terminal.forecast import helpers from openbb_terminal.rich_config import USE_COLOR, console @@ -21,10 +22,14 @@ # pylint: disable=E1123,E1137 -def precision_format(best_model: str, index: str, val: float) -> str: - if index == best_model and USE_COLOR: +def precision_format(best_model: str, index: str, val: float) -> Union[str, float]: + if ( + index == best_model + and USE_COLOR + and not get_current_user().preferences.USE_INTERACTIVE_DF + ): return f"[#00AAFF]{val:.2f}% [/#00AAFF]" - return f"{val:.2f}%" + return val @log_start_end(log=logger) @@ -167,6 +172,7 @@ def get_autoselect_data( helpers.mean_absolute_percentage_error(y_true, historical_fcast[model].values) for model in model_names ] + precision: pd.DataFrame = pd.DataFrame( {"precision": precision_per_model}, index=model_names ) @@ -181,12 +187,18 @@ def get_autoselect_data( for index, val in precision["precision"].iteritems() ] console.print("\n") + + title = ( + f"[#00AAFF]{best_model}[/#00AAFF]" + if not get_current_user().preferences.USE_INTERACTIVE_DF + else best_model + ) helpers.print_rich_table( precision, show_index=True, index_name="Model", headers=["MAPE"], - title=f"Performance per model.\nBest model: [#00AAFF]{best_model}[/#00AAFF]", + title=f"Performance per model.\nBest model: {title}", ) # transform outputs to make them compatible with diff --git a/openbb_terminal/forecast/helpers.py b/openbb_terminal/forecast/helpers.py index c91ce3bb54be..238b6b33f1a7 100644 --- a/openbb_terminal/forecast/helpers.py +++ b/openbb_terminal/forecast/helpers.py @@ -335,11 +335,6 @@ def prepare_scale_train_valid_test( ) -def lambda_price_prediction_color(val: float) -> str: - """Set prediction to be a colored string. This was changed to always shows blue""" - return f"[#00AAFF]{val:.2f} [/#00AAFF]" - - def print_pretty_prediction(df_pred: pd.DataFrame, last_price: float): """Print predictions""" @@ -348,7 +343,7 @@ def print_pretty_prediction(df_pred: pd.DataFrame, last_price: float): df_pred.columns = ["pred"] if not get_current_user().preferences.USE_INTERACTIVE_DF: df_pred["pred"] = df_pred["pred"].apply( - lambda x: lambda_price_prediction_color(x) + lambda x: f"[#00AAFF]{x:.2f} [/#00AAFF]" ) if check_dates(df_pred.index.to_series()): df_pred.index = df_pred.index.date From b951e4406fb38444f359d9b9796a6f0770d0a556 Mon Sep 17 00:00:00 2001 From: Sameer Khan <57355784+skhan59bbk@users.noreply.github.com> Date: Thu, 27 Apr 2023 20:02:07 +0100 Subject: [PATCH 09/70] Futures Curve: minor cosmetic improvements (#4901) * futures curve: prettifies contract names in raw table and in excel export. change column header to Last Price. set x axis of curve chart to correspond to contract months * fixed linting and updated tests --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: James Maslek --- openbb_terminal/futures/yfinance_model.py | 6 ++---- openbb_terminal/futures/yfinance_view.py | 2 +- .../test_yfinance_view/test_display_curve[ES].txt | 12 ++++++------ .../test_yfinance_view/test_display_curve[YI].txt | 4 ++-- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/openbb_terminal/futures/yfinance_model.py b/openbb_terminal/futures/yfinance_model.py index d8989b99f8b6..aadbc102455f 100644 --- a/openbb_terminal/futures/yfinance_model.py +++ b/openbb_terminal/futures/yfinance_model.py @@ -184,12 +184,10 @@ def get_curve_futures( data = yf.download(future_symbol, progress=False, ignore_tz=True) if not data.empty: - futures_index.append(future.strftime("%Y-%b")) + futures_index.append(future.strftime("%b-%Y")) futures_curve.append(data["Adj Close"].values[-1]) if not futures_index: return pd.DataFrame() - futures_index = pd.to_datetime(futures_index) - - return pd.DataFrame(index=futures_index, data=futures_curve, columns=["Futures"]) + return pd.DataFrame(index=futures_index, data=futures_curve, columns=["Last Price"]) diff --git a/openbb_terminal/futures/yfinance_view.py b/openbb_terminal/futures/yfinance_view.py index 16385d225a86..c788d496ee6f 100644 --- a/openbb_terminal/futures/yfinance_view.py +++ b/openbb_terminal/futures/yfinance_view.py @@ -227,7 +227,7 @@ def display_curve( fig.add_scatter( x=df.index, - y=df["Futures"], + y=df.iloc[:, 0], mode="lines+markers", name=name, line=dict(dash="dash", width=4), diff --git a/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[ES].txt b/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[ES].txt index 3c375cc1f17e..1c60fb81cff0 100644 --- a/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[ES].txt +++ b/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[ES].txt @@ -1,7 +1,7 @@ - Futures -2023-06-01 4137.75 -2023-09-01 4173.50 -2023-12-01 4207.50 -2024-03-01 4242.00 -2024-06-01 4273.00 + Last Price +Jun-2023 4137.75 +Sep-2023 4173.50 +Dec-2023 4207.50 +Mar-2024 4242.00 +Jun-2024 4273.00 diff --git a/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[YI].txt b/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[YI].txt index f433c2008259..0113985068f1 100644 --- a/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[YI].txt +++ b/tests/openbb_terminal/futures/txt/test_yfinance_view/test_display_curve[YI].txt @@ -1,3 +1,3 @@ - Futures -2023-07-01 22.577999 + Last Price +Jul-2023 22.577999 From 9026a41ff267a969f02b9526aa19955c3ca290fc Mon Sep 17 00:00:00 2001 From: teh_coderer Date: Fri, 28 Apr 2023 07:43:57 -0500 Subject: [PATCH 10/70] Feature / Logging (#4923) * init * updates * Update loggers.py * Update loggers.py * sdk handling * feature flag * fix MOCKING_USER_PATH for windows * Update loggers.py * Update plotly.html * updates * Update parent_classes.py * Update plotly.html * add posthog to deps * Update loggers.py --- frontend-components/tables/index.html | 11 +- openbb_terminal/base_helpers.py | 6 + .../generation/formatter_with_exceptions.py | 6 +- openbb_terminal/core/models/profile_model.py | 2 + openbb_terminal/core/plots/plotly.html | 25 ++-- openbb_terminal/core/plots/table.html | 11 +- openbb_terminal/loggers.py | 116 +++++++++++++++++- openbb_terminal/parent_classes.py | 5 +- poetry.lock | 38 +++++- pyproject.toml | 1 + requirements-full.txt | 2 + requirements.txt | 2 + 12 files changed, 185 insertions(+), 40 deletions(-) diff --git a/frontend-components/tables/index.html b/frontend-components/tables/index.html index 980c760bb066..0649b65fc0bf 100644 --- a/frontend-components/tables/index.html +++ b/frontend-components/tables/index.html @@ -18,17 +18,8 @@ const data = JSON.parse(window.json_data); const log_id = data?.log_id || ""; - const posthog_obj = data?.posthog || {}; - if (log_id != "" && log_id != "REPLACE_ME") { - if (posthog_obj?.user_id) { - posthog.identify(posthog_obj.user_id, { - email: posthog_obj.email, - }); - posthog.alias(posthog_obj.user_id, log_id); - } else { - posthog.identify(log_id); - } + posthog.identify(log_id); } posthog.capture("table", { diff --git a/openbb_terminal/base_helpers.py b/openbb_terminal/base_helpers.py index eb8317a2c69d..2b74460f4644 100644 --- a/openbb_terminal/base_helpers.py +++ b/openbb_terminal/base_helpers.py @@ -4,6 +4,7 @@ from typing import Any, List, Literal, Optional from dotenv import load_dotenv +from posthog import Posthog from rich.console import Console from openbb_terminal.core.config.paths import ( @@ -16,6 +17,11 @@ menus = Literal["", "featflags", "settings"] +openbb_posthog = Posthog( + "phc_vhssDAMod5qIplznQ75Kdgz4aB1qPFmeVmfEOZ4hkRw", + host="https://app.posthog.com", +) + def handle_error(name: str, default: Any, menu: menus = ""): """Handles the error by returning the default value and printing an diff --git a/openbb_terminal/core/log/generation/formatter_with_exceptions.py b/openbb_terminal/core/log/generation/formatter_with_exceptions.py index 752737a23518..24ac648ac388 100644 --- a/openbb_terminal/core/log/generation/formatter_with_exceptions.py +++ b/openbb_terminal/core/log/generation/formatter_with_exceptions.py @@ -75,8 +75,10 @@ def mock_flair(text: str) -> str: @staticmethod def mock_home_directory(text: str) -> str: - user_home_directory = str(HOME_DIRECTORY) - text_mocked = text.replace(user_home_directory, "MOCKING_USER_PATH") + user_home_directory = str(HOME_DIRECTORY.as_posix()) + text_mocked = text.replace("\\\\", "/").replace( + user_home_directory, "MOCKING_USER_PATH" + ) return text_mocked diff --git a/openbb_terminal/core/models/profile_model.py b/openbb_terminal/core/models/profile_model.py index 9cbe215ddd2b..4db43c45ded0 100644 --- a/openbb_terminal/core/models/profile_model.py +++ b/openbb_terminal/core/models/profile_model.py @@ -2,6 +2,7 @@ from pydantic.dataclasses import dataclass +from openbb_terminal.base_helpers import openbb_posthog from openbb_terminal.core.models import BaseModel @@ -34,6 +35,7 @@ def load_user_info(self, session: dict, email: str, remember: bool): self.email = email self.username = self.email[: self.email.find("@")] self.remember = remember + openbb_posthog.identify(self.uuid, {"email": self.email}) def get_uuid(self) -> str: """Get uuid. diff --git a/openbb_terminal/core/plots/plotly.html b/openbb_terminal/core/plots/plotly.html index a503e4aaece8..e3f4b6b616c4 100644 --- a/openbb_terminal/core/plots/plotly.html +++ b/openbb_terminal/core/plots/plotly.html @@ -29,24 +29,22 @@ capture_pageview: false, loaded: function (posthog) { const log_id = window.plotly_figure?.log_id || ""; - const posthog_obj = window.plotly_figure?.posthog || {}; if (log_id != "" && log_id != "REPLACE_ME") { - if (posthog_obj?.user_id) { - console.log("aliasing", posthog_obj.user_id, log_id); - posthog.identify(posthog_obj.user_id, { email: posthog_obj.email }); - posthog.alias(posthog_obj.user_id, log_id); - } else { - posthog.identify(log_id); - } - console.log("identified", log_id); + posthog.identify(log_id); } posthog.onFeatureFlags(function () { - if (!posthog.isFeatureEnabled("record-pywry", {send_event: false})) { + if ( + !posthog.isFeatureEnabled("record-pywry", { send_event: false }) + ) { posthog.stopSessionRecording(); } - if (!posthog.isFeatureEnabled("collect-logs-pywry", {send_event: false})) { + if ( + !posthog.isFeatureEnabled("collect-logs-pywry", { + send_event: false, + }) + ) { posthog.opt_out_capturing(); } else if (posthog.has_opted_out_capturing()) { posthog.opt_in_capturing(); @@ -288,7 +286,10 @@ } }); } - if (globals.cmd_src != "" && window.plotly_figure?.posthog?.collect_logs) { + if ( + globals.cmd_src != "" && + window.plotly_figure?.posthog?.collect_logs + ) { posthog.capture("chart", { INFO: { command: globals.cmd_src, diff --git a/openbb_terminal/core/plots/table.html b/openbb_terminal/core/plots/table.html index 01792886174f..6dd72e9950d6 100644 --- a/openbb_terminal/core/plots/table.html +++ b/openbb_terminal/core/plots/table.html @@ -18,17 +18,8 @@ const data = JSON.parse(window.json_data); const log_id = data?.log_id || ""; - const posthog_obj = data?.posthog || {}; - if (log_id != "" && log_id != "REPLACE_ME") { - if (posthog_obj?.user_id) { - posthog.identify(posthog_obj.user_id, { - email: posthog_obj.email, - }); - posthog.alias(posthog_obj.user_id, log_id); - } else { - posthog.identify(log_id); - } + posthog.identify(log_id); } posthog.capture("table", { diff --git a/openbb_terminal/loggers.py b/openbb_terminal/loggers.py index 4265ad537aec..0f66070c20c3 100644 --- a/openbb_terminal/loggers.py +++ b/openbb_terminal/loggers.py @@ -2,12 +2,16 @@ __docformat__ = "numpy" # IMPORTATION STANDARD +import atexit +import json import logging +import re import sys import time import uuid from pathlib import Path -from typing import Optional +from platform import platform, python_version +from typing import Any, Dict, Optional # IMPORTATION THIRDPARTY try: @@ -18,6 +22,7 @@ WITH_GIT = True # IMPORTATION INTERNAL +from openbb_terminal.base_helpers import openbb_posthog from openbb_terminal.core.log.generation.directories import get_log_dir from openbb_terminal.core.log.generation.formatter_with_exceptions import ( FormatterWithExceptions, @@ -31,7 +36,10 @@ LogSettings, Settings, ) -from openbb_terminal.core.log.generation.user_logger import get_user_uuid +from openbb_terminal.core.log.generation.user_logger import ( + NO_USER_PLACEHOLDER, + get_user_uuid, +) from openbb_terminal.core.session.current_system import ( get_current_system, set_current_system, @@ -88,6 +96,104 @@ def get_commit_hash(use_env=True) -> str: return commit_hash +class PosthogHandler(logging.Handler): + """Posthog Handler""" + + def __init__(self, settings: Settings): + super().__init__() + self.settings = settings + self.app_settings = settings.app_settings + self.logged_in = False + atexit.register(openbb_posthog.shutdown) + + def emit(self, record: logging.LogRecord): + try: + self.send(record=record) + except Exception: + self.handleError(record) + + def log_to_dict(self, log_info: str) -> dict: + """Log to dict""" + log_regex = r"(KEYS|PREFERENCES|SYSTEM|CMD|QUEUE): (.*)" + log_dict: Dict[str, Any] = {} + + for log in re.findall(log_regex, log_info): + log_dict[log[0]] = json.loads(log[1]) + + sdk_regex = r"({\"INPUT\":.*})" + if sdk_dict := re.findall(sdk_regex, log_info): + log_dict["SDK"] = json.loads(sdk_dict[0]) + + return log_dict + + def send(self, record: logging.LogRecord): + """Send log record to Posthog""" + + app_settings = self.app_settings + + level_name = logging.getLevelName(record.levelno) + log_line = FormatterWithExceptions.filter_log_line(text=record.getMessage()) + + log_extra = self.extract_log_extra(record=record) + log_extra.update(dict(level=level_name, message=log_line)) + event_name = f"log_{level_name.lower()}" + + if log_dict := self.log_to_dict(log_info=log_line): + event_name = f"log_{list(log_dict.keys())[0].lower()}" + + log_extra = {**log_extra, **log_dict} + log_extra.pop("message", None) + + if re.match(r"^(START|END|INPUT:)", log_line): + return + + if not self.logged_in and get_user_uuid() != NO_USER_PLACEHOLDER: + self.logged_in = True + openbb_posthog.alias(get_user_uuid(), app_settings.identifier) + + openbb_posthog.capture( + app_settings.identifier, + event_name, + properties=log_extra, + ) + + def extract_log_extra(self, record: logging.LogRecord) -> Dict[str, Any]: + """Extract log extra from record""" + + log_extra: Dict[str, Any] = { + "appName": self.app_settings.name, + "appId": self.app_settings.identifier, + "sessionId": self.app_settings.session_id, + "commitHash": self.app_settings.commit_hash, + "platform": platform(), + "pythonVersion": python_version(), + "terminalVersion": current_system.VERSION, + } + + if get_user_uuid() != NO_USER_PLACEHOLDER: + log_extra["userId"] = get_user_uuid() + + if hasattr(record, "extra"): + log_extra = {**log_extra, **record.extra} + + if record.exc_info: + log_extra["exception"] = { + "type": str(record.exc_info[0]), + "value": str(record.exc_info[1]), + "traceback": self.format(record), + } + + return log_extra + + +def add_posthog_handler(settings: Settings): + app_settings = settings.app_settings + handler = PosthogHandler(settings=settings) + formatter = FormatterWithExceptions(app_settings=app_settings) + handler.setFormatter(formatter) + logging.getLogger().addHandler(handler) + + def add_stdout_handler(settings: Settings): app_settings = settings.app_settings handler = logging.StreamHandler(sys.stdout) @@ -153,6 +259,12 @@ def setup_handlers(settings: Settings): FormatterWithExceptions.LOGFORMAT.replace("|", "-"), ) + if ( + not any([current_system.TEST_MODE, current_system.LOGGING_SUPPRESS]) + and current_system.LOG_COLLECT + ): + add_posthog_handler(settings=settings) + def setup_logging( app_name: Optional[str] = None, diff --git a/openbb_terminal/parent_classes.py b/openbb_terminal/parent_classes.py index 95187fbae89f..de1c1e7c3962 100644 --- a/openbb_terminal/parent_classes.py +++ b/openbb_terminal/parent_classes.py @@ -300,10 +300,9 @@ def log_queue(self) -> None: if self.queue: joined_queue = self.COMMAND_SEPARATOR.join(self.queue) if not self.contains_keys(joined_queue): + queue = {"path": self.PATH, "queue": joined_queue} logger.info( - "QUEUE: {'path': '%s', 'queue': '%s'}", - self.PATH, - joined_queue, + "QUEUE: %s", json.dumps(queue, default=str, ensure_ascii=False) ) def log_cmd_and_queue( diff --git a/poetry.lock b/poetry.lock index 557d23fba1ed..207b8b957917 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3948,6 +3948,18 @@ build = ["blurb", "twine", "wheel"] docs = ["sphinx"] test = ["pytest (<5.4)", "pytest-cov"] +[[package]] +name = "monotonic" +version = "1.6" +description = "An implementation of time.monotonic() for Python 2 & < 3.3" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, + {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"}, +] + [[package]] name = "more-itertools" version = "9.1.0" @@ -5111,6 +5123,30 @@ setuptools = ">=38.6.0,<50.0.0 || >50.0.0" statsmodels = ">=0.13.2" urllib3 = "*" +[[package]] +name = "posthog" +version = "3.0.1" +description = "Integrate PostHog into any python application." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "posthog-3.0.1-py2.py3-none-any.whl", hash = "sha256:9c7f92fecc713257d4b2710d05b456569c9156fbdd3e85655ba7ba5ba6c7b3ae"}, + {file = "posthog-3.0.1.tar.gz", hash = "sha256:57d2791ff5752ce56ba0f9bb8876faf3ca9208f1c2c6ceaeb5a2504c34493767"}, +] + +[package.dependencies] +backoff = ">=1.10.0" +monotonic = ">=1.5" +python-dateutil = ">2.1" +requests = ">=2.7,<3.0" +six = ">=1.5" + +[package.extras] +dev = ["black", "flake8", "flake8-print", "isort", "pre-commit"] +sentry = ["django", "sentry-sdk"] +test = ["coverage", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint", "pytest"] + [[package]] name = "praw" version = "7.7.0" @@ -9656,4 +9692,4 @@ optimization = ["Riskfolio-Lib"] [metadata] lock-version = "2.0" python-versions = "^3.8,<3.11, !=3.9.7" -content-hash = "d2bc3a75f2aff5123a842c656d6e8a9d51fa829433dc0cb1a02deb1d5c6967d9" +content-hash = "29f4161609dbefbe373d25a2f561b1a3d37072236e805195150c802e4eb4108f" diff --git a/pyproject.toml b/pyproject.toml index a3a301f2765f..89f9e3c92be8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -114,6 +114,7 @@ setuptools-rust = {version = "^1.5.2", optional = true} transformers = {version = "^4.26.1", optional = true} yt-dlp = {version = "^2023.2.17", optional = true} pydantic = "^1.10.5" +posthog = "^3.0.1" diff --git a/requirements-full.txt b/requirements-full.txt index b4e35ccb566c..509b2522798b 100644 --- a/requirements-full.txt +++ b/requirements-full.txt @@ -154,6 +154,7 @@ mccabe==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and p mdit-py-plugins==0.2.8 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" mistune==2.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mock==4.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +monotonic==1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" more-itertools==9.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mplfinance==0.12.9b7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mstarpy==0.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -203,6 +204,7 @@ plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and pluggy==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pmaw==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pmdarima==2.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +posthog==3.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" prawcore==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" pre-commit==2.21.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/requirements.txt b/requirements.txt index 9490ac55b3f6..51d46cd9938c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -109,6 +109,7 @@ matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_full_version != "3 matplotlib==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mccabe==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mistune==2.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +monotonic==1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" more-itertools==9.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mplfinance==0.12.9b7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" mstarpy==0.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -142,6 +143,7 @@ pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9 platformdirs==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pmaw==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +posthog==3.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" prawcore==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" prometheus-client==0.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" From 5f04749eb1e9f0d3e5e9ff91ede807c9d86eb8cd Mon Sep 17 00:00:00 2001 From: teh_coderer Date: Fri, 28 Apr 2023 07:44:23 -0500 Subject: [PATCH 11/70] init (#4924) --- frontend-components/tables/src/App.tsx | 1 + frontend-components/tables/src/utils/utils.ts | 93 +++++++++++-------- frontend-components/tables/tsconfig.json | 1 + openbb_terminal/core/plots/table.html | 12 +-- 4 files changed, 60 insertions(+), 47 deletions(-) diff --git a/frontend-components/tables/src/App.tsx b/frontend-components/tables/src/App.tsx index c120958775f3..9db314f2ec1f 100644 --- a/frontend-components/tables/src/App.tsx +++ b/frontend-components/tables/src/App.tsx @@ -11,6 +11,7 @@ import { } from "./data/mockup"; declare global { + [Exposed=Window, SecureContext] interface Window { json_data: any; title: string; diff --git a/frontend-components/tables/src/utils/utils.ts b/frontend-components/tables/src/utils/utils.ts index db5f6b4ac08c..d05c86c62f92 100644 --- a/frontend-components/tables/src/utils/utils.ts +++ b/frontend-components/tables/src/utils/utils.ts @@ -49,7 +49,7 @@ export const fuzzyFilter = ( return itemRank; }; -const writeFileHandler = async ({ +const exportNativeFileSystem = async ({ fileHandle, blob, }: { @@ -59,6 +59,17 @@ const writeFileHandler = async ({ if (!fileHandle) { throw new Error("Cannot access filesystem"); } + + await writeFileHandler({ fileHandle, blob }); +}; + +const writeFileHandler = async ({ + fileHandle, + blob, +}: { + fileHandle: FileSystemFileHandle; + blob: Blob; +}) => { const writer = await fileHandle.createWritable(); await writer.write(blob); await writer.close(); @@ -77,12 +88,6 @@ const IMAGE_TYPE: FilePickerAcceptType[] = [ "image/jpeg": [".jpeg"], }, }, - { - description: "SVG Image", - accept: { - "image/svg+xml": [".svg"], - }, - }, ]; const getNewFileHandle = ({ @@ -92,47 +97,48 @@ const getNewFileHandle = ({ filename: string; is_image?: boolean; }): Promise => { - if ("showSaveFilePicker"! in window) { - return new Promise((resolve) => { - resolve(null); - }); - } - - const opts: SaveFilePickerOptions = { - suggestedName: filename, - types: is_image - ? IMAGE_TYPE - : [ - { - description: "CSV File", - accept: { - "image/csv": [".csv"], + if ("showSaveFilePicker" in window) { + const opts: SaveFilePickerOptions = { + suggestedName: filename, + types: is_image + ? IMAGE_TYPE + : [ + { + description: "CSV File", + accept: { + "image/csv": [".csv"], + }, }, - }, - ], - excludeAcceptAllOption: true, - }; + ], + excludeAcceptAllOption: true, + }; - return showSaveFilePicker(opts); + return showSaveFilePicker(opts); + } + + return new Promise((resolve) => { + resolve(null); + }); }; export const saveToFile = ( blob: Blob, fileName: string, - fileHandle?: FileSystemFileHandle | null + fileHandle?: FileSystemFileHandle ) => { - if ("showSaveFilePicker" in window) { - return writeFileHandler({ fileHandle, blob }); + try { + exportNativeFileSystem({ fileHandle, blob }); + } catch (error) { + console.error("oops, something went wrong!", error); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.setAttribute("href", url); + link.setAttribute("download", fileName); + link.style.visibility = "hidden"; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); } - - const url = URL.createObjectURL(blob); - const link = document.createElement("a"); - link.setAttribute("href", url); - link.setAttribute("download", fileName); - link.style.visibility = "hidden"; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); }; export const downloadData = (type: "csv" | "xlsx", columns: any, data: any) => { @@ -146,11 +152,14 @@ export const downloadData = (type: "csv" | "xlsx", columns: any, data: any) => { const csvContent = csvData.map((e) => e.join(",")).join("\n"); const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }); const filename = `${window.title}.csv`; - return getNewFileHandle({ + + getNewFileHandle({ filename: filename, }).then((fileHandle) => { + // @ts-ignore saveToFile(blob, filename, fileHandle); }); + return; } const wb = utils.book_new(); @@ -166,7 +175,9 @@ export const downloadImage = (id: string) => { filename: filename, is_image: true, }).then((fileHandle) => { - domtoimage.toBlob(table).then(function (blob: Blob) { + // @ts-ignore + domtoimage.toBlob(table).then(function (blob) { + // @ts-ignore saveToFile(blob, filename, fileHandle); }); }); diff --git a/frontend-components/tables/tsconfig.json b/frontend-components/tables/tsconfig.json index 3d0a51a86e20..6f563e9a0e49 100644 --- a/frontend-components/tables/tsconfig.json +++ b/frontend-components/tables/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "target": "ESNext", + "typeRoots": ["node_modules/@types"], "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": false, diff --git a/openbb_terminal/core/plots/table.html b/openbb_terminal/core/plots/table.html index 6dd72e9950d6..ded258af9241 100644 --- a/openbb_terminal/core/plots/table.html +++ b/openbb_terminal/core/plots/table.html @@ -140,7 +140,7 @@ * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function If(e,t){return e?aS(e)?v.createElement(e,t):e:null}function aS(e){return sS(e)||typeof e=="function"||lS(e)}function sS(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function lS(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function uS(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[r]=v.useState(()=>({current:q_(t)})),[n,i]=v.useState(()=>r.current.initialState);return r.current.setOptions(o=>({...o,...e,state:{...n,...e.state},onStateChange:a=>{i(a),e.onStateChange==null||e.onStateChange(a)}})),r.current}function yv(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;tm,Object.values(m));return v.createElement(p.Provider,{value:g},h)}function c(f,d){const h=(d==null?void 0:d[e][l])||s,m=v.useContext(h);if(m)return m;if(a!==void 0)return a;throw new Error(`\`${f}\` must be used within \`${o}\``)}return u.displayName=o+"Provider",[u,c]}const i=()=>{const o=r.map(a=>v.createContext(a));return function(s){const l=(s==null?void 0:s[e])||o;return v.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return i.scopeName=e,[n,cS(i,...t)]}function cS(...e){const t=e[0];if(e.length===1)return t;const r=()=>{const n=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(o){const a=n.reduce((s,{useScope:l,scopeName:u})=>{const f=l(o)[`__scope${u}`];return{...s,...f}},{});return v.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return r.scopeName=t.scopeName,r}function fS(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function sd(...e){return t=>e.forEach(r=>fS(r,t))}function He(...e){return v.useCallback(sd(...e),e)}const ii=v.forwardRef((e,t)=>{const{children:r,...n}=e,i=v.Children.toArray(r),o=i.find(hS);if(o){const a=o.props.children,s=i.map(l=>l===o?v.Children.count(a)>1?v.Children.only(null):v.isValidElement(a)?a.props.children:null:l);return v.createElement(bf,de({},n,{ref:t}),v.isValidElement(a)?v.cloneElement(a,void 0,s):null)}return v.createElement(bf,de({},n,{ref:t}),r)});ii.displayName="Slot";const bf=v.forwardRef((e,t)=>{const{children:r,...n}=e;return v.isValidElement(r)?v.cloneElement(r,{...pS(n,r.props),ref:sd(t,r.ref)}):v.Children.count(r)>1?v.Children.only(null):null});bf.displayName="SlotClone";const dS=({children:e})=>v.createElement(v.Fragment,null,e);function hS(e){return v.isValidElement(e)&&e.type===dS}function pS(e,t){const r={...t};for(const n in t){const i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...s)=>{o(...s),i(...s)}:i&&(r[n]=i):n==="style"?r[n]={...i,...o}:n==="className"&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}function su(e){const t=e+"CollectionProvider",[r,n]=on(t),[i,o]=r(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:m,children:p}=h,g=nr.useRef(null),x=nr.useRef(new Map).current;return nr.createElement(i,{scope:m,itemMap:x,collectionRef:g},p)},s=e+"CollectionSlot",l=nr.forwardRef((h,m)=>{const{scope:p,children:g}=h,x=o(s,p),w=He(m,x.collectionRef);return nr.createElement(ii,{ref:w},g)}),u=e+"CollectionItemSlot",c="data-radix-collection-item",f=nr.forwardRef((h,m)=>{const{scope:p,children:g,...x}=h,w=nr.useRef(null),y=He(m,w),_=o(u,p);return nr.useEffect(()=>(_.itemMap.set(w,{ref:w,...x}),()=>void _.itemMap.delete(w))),nr.createElement(ii,{[c]:"",ref:y},g)});function d(h){const m=o(e+"CollectionConsumer",h);return nr.useCallback(()=>{const g=m.collectionRef.current;if(!g)return[];const x=Array.from(g.querySelectorAll(`[${c}]`));return Array.from(m.itemMap.values()).sort((_,k)=>x.indexOf(_.ref.current)-x.indexOf(k.ref.current))},[m.collectionRef,m.itemMap])}return[{Provider:a,Slot:l,ItemSlot:f},d,n]}const gS=v.createContext(void 0);function ld(e){const t=v.useContext(gS);return e||t||"ltr"}const mS=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],Ie=mS.reduce((e,t)=>{const r=v.forwardRef((n,i)=>{const{asChild:o,...a}=n,s=o?ii:t;return v.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),v.createElement(s,de({},a,{ref:i}))});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function ud(e,t){e&&Jr.flushSync(()=>e.dispatchEvent(t))}function Dt(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e}),v.useMemo(()=>(...r)=>{var n;return(n=t.current)===null||n===void 0?void 0:n.call(t,...r)},[])}function vS(e,t=globalThis==null?void 0:globalThis.document){const r=Dt(e);v.useEffect(()=>{const n=i=>{i.key==="Escape"&&r(i)};return t.addEventListener("keydown",n),()=>t.removeEventListener("keydown",n)},[r,t])}const kf="dismissableLayer.update",xS="dismissableLayer.pointerDownOutside",wS="dismissableLayer.focusOutside";let bp;const Ev=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),lu=v.forwardRef((e,t)=>{var r;const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:i,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:s,onDismiss:l,...u}=e,c=v.useContext(Ev),[f,d]=v.useState(null),h=(r=f==null?void 0:f.ownerDocument)!==null&&r!==void 0?r:globalThis==null?void 0:globalThis.document,[,m]=v.useState({}),p=He(t,A=>d(A)),g=Array.from(c.layers),[x]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),w=g.indexOf(x),y=f?g.indexOf(f):-1,_=c.layersWithOutsidePointerEventsDisabled.size>0,k=y>=w,N=ES(A=>{const R=A.target,L=[...c.branches].some(V=>V.contains(R));!k||L||(o==null||o(A),s==null||s(A),A.defaultPrevented||l==null||l())},h),S=_S(A=>{const R=A.target;[...c.branches].some(V=>V.contains(R))||(a==null||a(A),s==null||s(A),A.defaultPrevented||l==null||l())},h);return vS(A=>{y===c.layers.size-1&&(i==null||i(A),!A.defaultPrevented&&l&&(A.preventDefault(),l()))},h),v.useEffect(()=>{if(f)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(bp=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(f)),c.layers.add(f),kp(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=bp)}},[f,h,n,c]),v.useEffect(()=>()=>{f&&(c.layers.delete(f),c.layersWithOutsidePointerEventsDisabled.delete(f),kp())},[f,c]),v.useEffect(()=>{const A=()=>m({});return document.addEventListener(kf,A),()=>document.removeEventListener(kf,A)},[]),v.createElement(Ie.div,de({},u,{ref:p,style:{pointerEvents:_?k?"auto":"none":void 0,...e.style},onFocusCapture:Ee(e.onFocusCapture,S.onFocusCapture),onBlurCapture:Ee(e.onBlurCapture,S.onBlurCapture),onPointerDownCapture:Ee(e.onPointerDownCapture,N.onPointerDownCapture)}))}),yS=v.forwardRef((e,t)=>{const r=v.useContext(Ev),n=v.useRef(null),i=He(t,n);return v.useEffect(()=>{const o=n.current;if(o)return r.branches.add(o),()=>{r.branches.delete(o)}},[r.branches]),v.createElement(Ie.div,de({},e,{ref:i}))});function ES(e,t=globalThis==null?void 0:globalThis.document){const r=Dt(e),n=v.useRef(!1),i=v.useRef(()=>{});return v.useEffect(()=>{const o=s=>{if(s.target&&!n.current){let c=function(){_v(xS,r,u,{discrete:!0})};var l=c;const u={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",i.current),i.current=c,t.addEventListener("click",i.current,{once:!0})):c()}n.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",o),t.removeEventListener("click",i.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}function _S(e,t=globalThis==null?void 0:globalThis.document){const r=Dt(e),n=v.useRef(!1);return v.useEffect(()=>{const i=o=>{o.target&&!n.current&&_v(wS,r,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}function kp(){const e=new CustomEvent(kf);document.dispatchEvent(e)}function _v(e,t,r,{discrete:n}){const i=r.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?ud(i,o):i.dispatchEvent(o)}const SS=lu,TS=yS;let mc=0;function cd(){v.useEffect(()=>{var e,t;const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=r[0])!==null&&e!==void 0?e:$p()),document.body.insertAdjacentElement("beforeend",(t=r[1])!==null&&t!==void 0?t:$p()),mc++,()=>{mc===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(n=>n.remove()),mc--}},[])}function $p(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const vc="focusScope.autoFocusOnMount",xc="focusScope.autoFocusOnUnmount",Np={bubbles:!1,cancelable:!0},fd=v.forwardRef((e,t)=>{const{loop:r=!1,trapped:n=!1,onMountAutoFocus:i,onUnmountAutoFocus:o,...a}=e,[s,l]=v.useState(null),u=Dt(i),c=Dt(o),f=v.useRef(null),d=He(t,p=>l(p)),h=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(n){let x=function(y){if(h.paused||!s)return;const _=y.target;s.contains(_)?f.current=_:zn(f.current,{select:!0})},w=function(y){h.paused||!s||s.contains(y.relatedTarget)||zn(f.current,{select:!0})};var p=x,g=w;return document.addEventListener("focusin",x),document.addEventListener("focusout",w),()=>{document.removeEventListener("focusin",x),document.removeEventListener("focusout",w)}}},[n,s,h.paused]),v.useEffect(()=>{if(s){Lp.add(h);const p=document.activeElement;if(!s.contains(p)){const x=new CustomEvent(vc,Np);s.addEventListener(vc,u),s.dispatchEvent(x),x.defaultPrevented||(CS(DS(Sv(s)),{select:!0}),document.activeElement===p&&zn(s))}return()=>{s.removeEventListener(vc,u),setTimeout(()=>{const x=new CustomEvent(xc,Np);s.addEventListener(xc,c),s.dispatchEvent(x),x.defaultPrevented||zn(p??document.body,{select:!0}),s.removeEventListener(xc,c),Lp.remove(h)},0)}}},[s,u,c,h]);const m=v.useCallback(p=>{if(!r&&!n||h.paused)return;const g=p.key==="Tab"&&!p.altKey&&!p.ctrlKey&&!p.metaKey,x=document.activeElement;if(g&&x){const w=p.currentTarget,[y,_]=AS(w);y&&_?!p.shiftKey&&x===_?(p.preventDefault(),r&&zn(y,{select:!0})):p.shiftKey&&x===y&&(p.preventDefault(),r&&zn(_,{select:!0})):x===w&&p.preventDefault()}},[r,n,h.paused]);return v.createElement(Ie.div,de({tabIndex:-1},a,{ref:d,onKeyDown:m}))});function CS(e,{select:t=!1}={}){const r=document.activeElement;for(const n of e)if(zn(n,{select:t}),document.activeElement!==r)return}function AS(e){const t=Sv(e),r=Mp(t,e),n=Mp(t.reverse(),e);return[r,n]}function Sv(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Mp(e,t){for(const r of e)if(!RS(r,{upTo:t}))return r}function RS(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function OS(e){return e instanceof HTMLInputElement&&"select"in e}function zn(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&OS(e)&&t&&e.select()}}const Lp=FS();function FS(){let e=[];return{add(t){const r=e[0];t!==r&&(r==null||r.pause()),e=Bp(e,t),e.unshift(t)},remove(t){var r;e=Bp(e,t),(r=e[0])===null||r===void 0||r.resume()}}}function Bp(e,t){const r=[...e],n=r.indexOf(t);return n!==-1&&r.splice(n,1),r}function DS(e){return e.filter(t=>t.tagName!=="A")}const xt=globalThis!=null&&globalThis.document?v.useLayoutEffect:()=>{},PS=wy["useId".toString()]||(()=>{});let IS=0;function Xr(e){const[t,r]=v.useState(PS());return xt(()=>{e||r(n=>n??String(IS++))},[e]),e||(t?`radix-${t}`:"")}function hi(e){return e.split("-")[0]}function Ya(e){return e.split("-")[1]}function yo(e){return["top","bottom"].includes(hi(e))?"x":"y"}function dd(e){return e==="y"?"height":"width"}function Up(e,t,r){let{reference:n,floating:i}=e;const o=n.x+n.width/2-i.width/2,a=n.y+n.height/2-i.height/2,s=yo(t),l=dd(s),u=n[l]/2-i[l]/2,c=s==="x";let f;switch(hi(t)){case"top":f={x:o,y:n.y-i.height};break;case"bottom":f={x:o,y:n.y+n.height};break;case"right":f={x:n.x+n.width,y:a};break;case"left":f={x:n.x-i.width,y:a};break;default:f={x:n.x,y:n.y}}switch(Ya(t)){case"start":f[s]-=u*(r&&c?-1:1);break;case"end":f[s]+=u*(r&&c?-1:1)}return f}const bS=async(e,t,r)=>{const{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:a}=r,s=await(a.isRTL==null?void 0:a.isRTL(t));let l=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:c}=Up(l,n,s),f=n,d={},h=0;for(let m=0;m({name:"arrow",options:e,async fn(t){const{element:r,padding:n=0}=e??{},{x:i,y:o,placement:a,rects:s,platform:l}=t;if(r==null)return{};const u=Tv(n),c={x:i,y:o},f=yo(a),d=Ya(a),h=dd(f),m=await l.getDimensions(r),p=f==="y"?"top":"left",g=f==="y"?"bottom":"right",x=s.reference[h]+s.reference[f]-c[f]-s.floating[h],w=c[f]-s.reference[f],y=await(l.getOffsetParent==null?void 0:l.getOffsetParent(r));let _=y?f==="y"?y.clientHeight||0:y.clientWidth||0:0;_===0&&(_=s.floating[h]);const k=x/2-w/2,N=u[p],S=_-m[h]-u[g],A=_/2-m[h]/2+k,R=$f(N,A,S),L=(d==="start"?u[p]:u[g])>0&&A!==R&&s.reference[h]<=s.floating[h];return{[f]:c[f]-(L?A$S[t])}function NS(e,t,r){r===void 0&&(r=!1);const n=Ya(e),i=yo(e),o=dd(i);let a=i==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=Rl(a)),{main:a,cross:Rl(a)}}const MS={start:"end",end:"start"};function Vp(e){return e.replace(/start|end/g,t=>MS[t])}const Cv=["top","right","bottom","left"];Cv.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);const LS=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r;const{placement:n,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:l}=t,{mainAxis:u=!0,crossAxis:c=!0,fallbackPlacements:f,fallbackStrategy:d="bestFit",flipAlignment:h=!0,...m}=e,p=hi(n),g=f||(p===a||!h?[Rl(a)]:function(A){const R=Rl(A);return[Vp(A),R,Vp(R)]}(a)),x=[a,...g],w=await ka(t,m),y=[];let _=((r=i.flip)==null?void 0:r.overflows)||[];if(u&&y.push(w[p]),c){const{main:A,cross:R}=NS(n,o,await(s.isRTL==null?void 0:s.isRTL(l.floating)));y.push(w[A],w[R])}if(_=[..._,{placement:n,overflows:y}],!y.every(A=>A<=0)){var k,N;const A=((k=(N=i.flip)==null?void 0:N.index)!=null?k:0)+1,R=x[A];if(R)return{data:{index:A,overflows:_},reset:{placement:R}};let L="bottom";switch(d){case"bestFit":{var S;const V=(S=_.map(U=>[U,U.overflows.filter(W=>W>0).reduce((W,Y)=>W+Y,0)]).sort((U,W)=>U[1]-W[1])[0])==null?void 0:S[0].placement;V&&(L=V);break}case"initialPlacement":L=a}if(n!==L)return{reset:{placement:L}}}return{}}}};function Wp(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function zp(e){return Cv.some(t=>e[t]>=0)}const BS=function(e){let{strategy:t="referenceHidden",...r}=e===void 0?{}:e;return{name:"hide",async fn(n){const{rects:i}=n;switch(t){case"referenceHidden":{const o=Wp(await ka(n,{...r,elementContext:"reference"}),i.reference);return{data:{referenceHiddenOffsets:o,referenceHidden:zp(o)}}}case"escaped":{const o=Wp(await ka(n,{...r,altBoundary:!0}),i.floating);return{data:{escapedOffsets:o,escaped:zp(o)}}}default:return{}}}}},US=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:r,y:n}=t,i=await async function(o,a){const{placement:s,platform:l,elements:u}=o,c=await(l.isRTL==null?void 0:l.isRTL(u.floating)),f=hi(s),d=Ya(s),h=yo(s)==="x",m=["left","top"].includes(f)?-1:1,p=c&&h?-1:1,g=typeof a=="function"?a(o):a;let{mainAxis:x,crossAxis:w,alignmentAxis:y}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...g};return d&&typeof y=="number"&&(w=d==="end"?-1*y:y),h?{x:w*p,y:x*m}:{x:x*m,y:w*p}}(t,e);return{x:r+i.x,y:n+i.y,data:i}}}};function Av(e){return e==="x"?"y":"x"}const HS=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:g=>{let{x,y:w}=g;return{x,y:w}}},...l}=e,u={x:r,y:n},c=await ka(t,l),f=yo(hi(i)),d=Av(f);let h=u[f],m=u[d];if(o){const g=f==="y"?"bottom":"right";h=$f(h+c[f==="y"?"top":"left"],h,h-c[g])}if(a){const g=d==="y"?"bottom":"right";m=$f(m+c[d==="y"?"top":"left"],m,m-c[g])}const p=s.fn({...t,[f]:h,[d]:m});return{...p,data:{x:p.x-r,y:p.y-n}}}}},VS=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:i,rects:o,middlewareData:a}=t,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=e,c={x:r,y:n},f=yo(i),d=Av(f);let h=c[f],m=c[d];const p=typeof s=="function"?s({...o,placement:i}):s,g=typeof p=="number"?{mainAxis:p,crossAxis:0}:{mainAxis:0,crossAxis:0,...p};if(l){const k=f==="y"?"height":"width",N=o.reference[f]-o.floating[k]+g.mainAxis,S=o.reference[f]+o.reference[k]-g.mainAxis;hS&&(h=S)}if(u){var x,w,y,_;const k=f==="y"?"width":"height",N=["top","left"].includes(hi(i)),S=o.reference[d]-o.floating[k]+(N&&(x=(w=a.offset)==null?void 0:w[d])!=null?x:0)+(N?0:g.crossAxis),A=o.reference[d]+o.reference[k]+(N?0:(y=(_=a.offset)==null?void 0:_[d])!=null?y:0)-(N?g.crossAxis:0);mA&&(m=A)}return{[f]:h,[d]:m}}}},WS=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:n,platform:i,elements:o}=t,{apply:a,...s}=e,l=await ka(t,s),u=hi(r),c=Ya(r);let f,d;u==="top"||u==="bottom"?(f=u,d=c===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(d=u,f=c==="end"?"top":"bottom");const h=Gn(l.left,0),m=Gn(l.right,0),p=Gn(l.top,0),g=Gn(l.bottom,0),x={availableHeight:n.floating.height-(["left","right"].includes(r)?2*(p!==0||g!==0?p+g:Gn(l.top,l.bottom)):l[f]),availableWidth:n.floating.width-(["top","bottom"].includes(r)?2*(h!==0||m!==0?h+m:Gn(l.left,l.right)):l[d])},w=await i.getDimensions(o.floating);a==null||a({...t,...x});const y=await i.getDimensions(o.floating);return w.width!==y.width||w.height!==y.height?{reset:{rects:!0}}:{}}}};function Rv(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function an(e){if(e==null)return window;if(!Rv(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function qa(e){return an(e).getComputedStyle(e)}function Kr(e){return Rv(e)?"":e?(e.nodeName||"").toLowerCase():""}function Ov(){const e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(t=>t.brand+"/"+t.version).join(" "):navigator.userAgent}function Ir(e){return e instanceof an(e).HTMLElement}function kn(e){return e instanceof an(e).Element}function hd(e){return typeof ShadowRoot>"u"?!1:e instanceof an(e).ShadowRoot||e instanceof ShadowRoot}function uu(e){const{overflow:t,overflowX:r,overflowY:n}=qa(e);return/auto|scroll|overlay|hidden/.test(t+n+r)}function zS(e){return["table","td","th"].includes(Kr(e))}function Gp(e){const t=/firefox/i.test(Ov()),r=qa(e);return r.transform!=="none"||r.perspective!=="none"||r.contain==="paint"||["transform","perspective"].includes(r.willChange)||t&&r.willChange==="filter"||t&&!!r.filter&&r.filter!=="none"}function Fv(){return!/^((?!chrome|android).)*safari/i.test(Ov())}const jp=Math.min,fa=Math.max,Ol=Math.round;function Yr(e,t,r){var n,i,o,a;t===void 0&&(t=!1),r===void 0&&(r=!1);const s=e.getBoundingClientRect();let l=1,u=1;t&&Ir(e)&&(l=e.offsetWidth>0&&Ol(s.width)/e.offsetWidth||1,u=e.offsetHeight>0&&Ol(s.height)/e.offsetHeight||1);const c=kn(e)?an(e):window,f=!Fv()&&r,d=(s.left+(f&&(n=(i=c.visualViewport)==null?void 0:i.offsetLeft)!=null?n:0))/l,h=(s.top+(f&&(o=(a=c.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,m=s.width/l,p=s.height/u;return{width:m,height:p,top:h,right:d+m,bottom:h+p,left:d,x:d,y:h}}function An(e){return(t=e,(t instanceof an(t).Node?e.ownerDocument:e.document)||window.document).documentElement;var t}function cu(e){return kn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Dv(e){return Yr(An(e)).left+cu(e).scrollLeft}function GS(e,t,r){const n=Ir(t),i=An(t),o=Yr(e,n&&function(l){const u=Yr(l);return Ol(u.width)!==l.offsetWidth||Ol(u.height)!==l.offsetHeight}(t),r==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(n||!n&&r!=="fixed")if((Kr(t)!=="body"||uu(i))&&(a=cu(t)),Ir(t)){const l=Yr(t,!0);s.x=l.x+t.clientLeft,s.y=l.y+t.clientTop}else i&&(s.x=Dv(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function Pv(e){return Kr(e)==="html"?e:e.assignedSlot||e.parentNode||(hd(e)?e.host:null)||An(e)}function Xp(e){return Ir(e)&&getComputedStyle(e).position!=="fixed"?e.offsetParent:null}function Nf(e){const t=an(e);let r=Xp(e);for(;r&&zS(r)&&getComputedStyle(r).position==="static";)r=Xp(r);return r&&(Kr(r)==="html"||Kr(r)==="body"&&getComputedStyle(r).position==="static"&&!Gp(r))?t:r||function(n){let i=Pv(n);for(hd(i)&&(i=i.host);Ir(i)&&!["html","body"].includes(Kr(i));){if(Gp(i))return i;i=i.parentNode}return null}(e)||t}function Kp(e){if(Ir(e))return{width:e.offsetWidth,height:e.offsetHeight};const t=Yr(e);return{width:t.width,height:t.height}}function Iv(e){const t=Pv(e);return["html","body","#document"].includes(Kr(t))?e.ownerDocument.body:Ir(t)&&uu(t)?t:Iv(t)}function Fl(e,t){var r;t===void 0&&(t=[]);const n=Iv(e),i=n===((r=e.ownerDocument)==null?void 0:r.body),o=an(n),a=i?[o].concat(o.visualViewport||[],uu(n)?n:[]):n,s=t.concat(a);return i?s:s.concat(Fl(a))}function Yp(e,t,r){return t==="viewport"?Al(function(n,i){const o=an(n),a=An(n),s=o.visualViewport;let l=a.clientWidth,u=a.clientHeight,c=0,f=0;if(s){l=s.width,u=s.height;const d=Fv();(d||!d&&i==="fixed")&&(c=s.offsetLeft,f=s.offsetTop)}return{width:l,height:u,x:c,y:f}}(e,r)):kn(t)?function(n,i){const o=Yr(n,!1,i==="fixed"),a=o.top+n.clientTop,s=o.left+n.clientLeft;return{top:a,left:s,x:s,y:a,right:s+n.clientWidth,bottom:a+n.clientHeight,width:n.clientWidth,height:n.clientHeight}}(t,r):Al(function(n){var i;const o=An(n),a=cu(n),s=(i=n.ownerDocument)==null?void 0:i.body,l=fa(o.scrollWidth,o.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),u=fa(o.scrollHeight,o.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0);let c=-a.scrollLeft+Dv(n);const f=-a.scrollTop;return qa(s||o).direction==="rtl"&&(c+=fa(o.clientWidth,s?s.clientWidth:0)-l),{width:l,height:u,x:c,y:f}}(An(e)))}function jS(e){const t=Fl(e),r=["absolute","fixed"].includes(qa(e).position)&&Ir(e)?Nf(e):e;return kn(r)?t.filter(n=>kn(n)&&function(i,o){const a=o.getRootNode==null?void 0:o.getRootNode();if(i.contains(o))return!0;if(a&&hd(a)){let s=o;do{if(s&&i===s)return!0;s=s.parentNode||s.host}while(s)}return!1}(n,r)&&Kr(n)!=="body"):[]}const XS={getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e;const o=[...r==="clippingAncestors"?jS(t):[].concat(r),n],a=o[0],s=o.reduce((l,u)=>{const c=Yp(t,u,i);return l.top=fa(c.top,l.top),l.right=jp(c.right,l.right),l.bottom=jp(c.bottom,l.bottom),l.left=fa(c.left,l.left),l},Yp(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:r,strategy:n}=e;const i=Ir(r),o=An(r);if(r===o)return t;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&n!=="fixed")&&((Kr(r)!=="body"||uu(o))&&(a=cu(r)),Ir(r))){const l=Yr(r,!0);s.x=l.x+r.clientLeft,s.y=l.y+r.clientTop}return{...t,x:t.x-a.scrollLeft+s.x,y:t.y-a.scrollTop+s.y}},isElement:kn,getDimensions:Kp,getOffsetParent:Nf,getDocumentElement:An,getElementRects:e=>{let{reference:t,floating:r,strategy:n}=e;return{reference:GS(t,Nf(r),n),floating:{...Kp(r),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>qa(e).direction==="rtl"};function KS(e,t,r,n){n===void 0&&(n={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a=!0,animationFrame:s=!1}=n,l=i&&!s,u=o&&!s,c=l||u?[...kn(e)?Fl(e):[],...Fl(t)]:[];c.forEach(m=>{l&&m.addEventListener("scroll",r,{passive:!0}),u&&m.addEventListener("resize",r)});let f,d=null;if(a){let m=!0;d=new ResizeObserver(()=>{m||r(),m=!1}),kn(e)&&!s&&d.observe(e),d.observe(t)}let h=s?Yr(e):null;return s&&function m(){const p=Yr(e);!h||p.x===h.x&&p.y===h.y&&p.width===h.width&&p.height===h.height||r(),h=p,f=requestAnimationFrame(m)}(),r(),()=>{var m;c.forEach(p=>{l&&p.removeEventListener("scroll",r),u&&p.removeEventListener("resize",r)}),(m=d)==null||m.disconnect(),d=null,s&&cancelAnimationFrame(f)}}const YS=(e,t,r)=>bS(e,t,{platform:XS,...r});var Mf=typeof document<"u"?v.useLayoutEffect:v.useEffect;function Lf(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,n,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!=t.length)return!1;for(n=r;n--!==0;)if(!Lf(e[n],t[n]))return!1;return!0}if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(n=r;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[n]))return!1;for(n=r;n--!==0;){const o=i[n];if(!(o==="_owner"&&e.$$typeof)&&!Lf(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function qS(e){const t=v.useRef(e);return Mf(()=>{t.current=e}),t}function QS(e){let{middleware:t,placement:r="bottom",strategy:n="absolute",whileElementsMounted:i}=e===void 0?{}:e;const o=v.useRef(null),a=v.useRef(null),s=qS(i),l=v.useRef(null),[u,c]=v.useState({x:null,y:null,strategy:n,placement:r,middlewareData:{}}),[f,d]=v.useState(t);Lf(f==null?void 0:f.map(y=>{let{options:_}=y;return _}),t==null?void 0:t.map(y=>{let{options:_}=y;return _}))||d(t);const h=v.useCallback(()=>{!o.current||!a.current||YS(o.current,a.current,{middleware:f,placement:r,strategy:n}).then(y=>{m.current&&Jr.flushSync(()=>{c(y)})})},[f,r,n]);Mf(()=>{m.current&&h()},[h]);const m=v.useRef(!1);Mf(()=>(m.current=!0,()=>{m.current=!1}),[]);const p=v.useCallback(()=>{if(typeof l.current=="function"&&(l.current(),l.current=null),o.current&&a.current)if(s.current){const y=s.current(o.current,a.current,h);l.current=y}else h()},[h,s]),g=v.useCallback(y=>{o.current=y,p()},[p]),x=v.useCallback(y=>{a.current=y,p()},[p]),w=v.useMemo(()=>({reference:o,floating:a}),[]);return v.useMemo(()=>({...u,update:h,refs:w,reference:g,floating:x}),[u,h,w,g,x])}const ZS=e=>{const{element:t,padding:r}=e;function n(i){return Object.prototype.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){return n(t)?t.current!=null?Hp({element:t.current,padding:r}).fn(i):{}:t?Hp({element:t,padding:r}).fn(i):{}}}};function JS(e){const[t,r]=v.useState(void 0);return xt(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});const n=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const o=i[0];let a,s;if("borderBoxSize"in o){const l=o.borderBoxSize,u=Array.isArray(l)?l[0]:l;a=u.inlineSize,s=u.blockSize}else a=e.offsetWidth,s=e.offsetHeight;r({width:a,height:s})});return n.observe(e,{box:"border-box"}),()=>n.unobserve(e)}else r(void 0)},[e]),t}const bv="Popper",[pd,fu]=on(bv),[eT,kv]=pd(bv),tT=e=>{const{__scopePopper:t,children:r}=e,[n,i]=v.useState(null);return v.createElement(eT,{scope:t,anchor:n,onAnchorChange:i},r)},rT="PopperAnchor",nT=v.forwardRef((e,t)=>{const{__scopePopper:r,virtualRef:n,...i}=e,o=kv(rT,r),a=v.useRef(null),s=He(t,a);return v.useEffect(()=>{o.onAnchorChange((n==null?void 0:n.current)||a.current)}),n?null:v.createElement(Ie.div,de({},i,{ref:s}))}),Dl="PopperContent",[iT,Mk]=pd(Dl),[oT,aT]=pd(Dl,{hasParent:!1,positionUpdateFns:new Set}),sT=v.forwardRef((e,t)=>{var r,n,i,o,a,s,l,u;const{__scopePopper:c,side:f="bottom",sideOffset:d=0,align:h="center",alignOffset:m=0,arrowPadding:p=0,collisionBoundary:g=[],collisionPadding:x=0,sticky:w="partial",hideWhenDetached:y=!1,avoidCollisions:_=!0,onPlaced:k,...N}=e,S=kv(Dl,c),[A,R]=v.useState(null),L=He(t,Mr=>R(Mr)),[V,U]=v.useState(null),W=JS(V),Y=(r=W==null?void 0:W.width)!==null&&r!==void 0?r:0,re=(n=W==null?void 0:W.height)!==null&&n!==void 0?n:0,ye=f+(h!=="center"?"-"+h:""),ge=typeof x=="number"?x:{top:0,right:0,bottom:0,left:0,...x},Se=Array.isArray(g)?g:[g],ie=Se.length>0,we={padding:ge,boundary:Se.filter(uT),altBoundary:ie},{reference:Q,floating:F,strategy:M,x:b,y:T,placement:B,middlewareData:H,update:q}=QS({strategy:"fixed",placement:ye,whileElementsMounted:KS,middleware:[cT(),US({mainAxis:d+re,alignmentAxis:m}),_?HS({mainAxis:!0,crossAxis:!1,limiter:w==="partial"?VS():void 0,...we}):void 0,V?ZS({element:V,padding:p}):void 0,_?LS({...we}):void 0,WS({...we,apply:({elements:Mr,availableWidth:Ro,availableHeight:er})=>{Mr.floating.style.setProperty("--radix-popper-available-width",`${Ro}px`),Mr.floating.style.setProperty("--radix-popper-available-height",`${er}px`)}}),fT({arrowWidth:Y,arrowHeight:re}),y?BS({strategy:"referenceHidden"}):void 0].filter(lT)});xt(()=>{Q(S.anchor)},[Q,S.anchor]);const ee=b!==null&&T!==null,[K,ve]=$v(B),pe=Dt(k);xt(()=>{ee&&(pe==null||pe())},[ee,pe]);const De=(i=H.arrow)===null||i===void 0?void 0:i.x,_e=(o=H.arrow)===null||o===void 0?void 0:o.y,je=((a=H.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Re,ce]=v.useState();xt(()=>{A&&ce(window.getComputedStyle(A).zIndex)},[A]);const{hasParent:Mt,positionUpdateFns:_t}=aT(Dl,c),jt=!Mt;v.useLayoutEffect(()=>{if(!jt)return _t.add(q),()=>{_t.delete(q)}},[jt,_t,q]),xt(()=>{jt&&ee&&Array.from(_t).reverse().forEach(Mr=>requestAnimationFrame(Mr))},[jt,ee,_t]);const Nr={"data-side":K,"data-align":ve,...N,ref:L,style:{...N.style,animation:ee?void 0:"none",opacity:(s=H.hide)!==null&&s!==void 0&&s.referenceHidden?0:void 0}};return v.createElement("div",{ref:F,"data-radix-popper-content-wrapper":"",style:{position:M,left:0,top:0,transform:ee?`translate3d(${Math.round(b)}px, ${Math.round(T)}px, 0)`:"translate3d(0, -200%, 0)",minWidth:"max-content",zIndex:Re,["--radix-popper-transform-origin"]:[(l=H.transformOrigin)===null||l===void 0?void 0:l.x,(u=H.transformOrigin)===null||u===void 0?void 0:u.y].join(" ")},dir:e.dir},v.createElement(iT,{scope:c,placedSide:K,onArrowChange:U,arrowX:De,arrowY:_e,shouldHideArrow:je},jt?v.createElement(oT,{scope:c,hasParent:!0,positionUpdateFns:_t},v.createElement(Ie.div,Nr)):v.createElement(Ie.div,Nr)))});function lT(e){return e!==void 0}function uT(e){return e!==null}const cT=()=>({name:"anchorCssProperties",fn(e){const{rects:t,elements:r}=e,{width:n,height:i}=t.reference;return r.floating.style.setProperty("--radix-popper-anchor-width",`${n}px`),r.floating.style.setProperty("--radix-popper-anchor-height",`${i}px`),{}}}),fT=e=>({name:"transformOrigin",options:e,fn(t){var r,n,i,o,a;const{placement:s,rects:l,middlewareData:u}=t,f=((r=u.arrow)===null||r===void 0?void 0:r.centerOffset)!==0,d=f?0:e.arrowWidth,h=f?0:e.arrowHeight,[m,p]=$v(s),g={start:"0%",center:"50%",end:"100%"}[p],x=((n=(i=u.arrow)===null||i===void 0?void 0:i.x)!==null&&n!==void 0?n:0)+d/2,w=((o=(a=u.arrow)===null||a===void 0?void 0:a.y)!==null&&o!==void 0?o:0)+h/2;let y="",_="";return m==="bottom"?(y=f?g:`${x}px`,_=`${-h}px`):m==="top"?(y=f?g:`${x}px`,_=`${l.floating.height+h}px`):m==="right"?(y=`${-h}px`,_=f?g:`${w}px`):m==="left"&&(y=`${l.floating.width+h}px`,_=f?g:`${w}px`),{data:{x:y,y:_}}}});function $v(e){const[t,r="center"]=e.split("-");return[t,r]}const Nv=tT,Mv=nT,Lv=sT,du=v.forwardRef((e,t)=>{var r;const{container:n=globalThis==null||(r=globalThis.document)===null||r===void 0?void 0:r.body,...i}=e;return n?cv.createPortal(v.createElement(Ie.div,de({},i,{ref:t})),n):null});function lo({prop:e,defaultProp:t,onChange:r=()=>{}}){const[n,i]=dT({defaultProp:t,onChange:r}),o=e!==void 0,a=o?e:n,s=Dt(r),l=v.useCallback(u=>{if(o){const f=typeof u=="function"?u(e):u;f!==e&&s(f)}else i(u)},[o,e,i,s]);return[a,l]}function dT({defaultProp:e,onChange:t}){const r=v.useState(e),[n]=r,i=v.useRef(n),o=Dt(t);return v.useEffect(()=>{i.current!==n&&(o(n),i.current=n)},[n,i,o]),r}function hT(e){const t=v.useRef({value:e,previous:e});return v.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const gd=v.forwardRef((e,t)=>v.createElement(Ie.span,de({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}})));var pT=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ai=new WeakMap,Es=new WeakMap,_s={},wc=0,Bv=function(e){return e&&(e.host||Bv(e.parentNode))},gT=function(e,t){return t.map(function(r){if(e.contains(r))return r;var n=Bv(r);return n&&e.contains(n)?n:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},mT=function(e,t,r,n){var i=gT(t,Array.isArray(e)?e:[e]);_s[r]||(_s[r]=new WeakMap);var o=_s[r],a=[],s=new Set,l=new Set(i),u=function(f){!f||s.has(f)||(s.add(f),u(f.parentNode))};i.forEach(u);var c=function(f){!f||l.has(f)||Array.prototype.forEach.call(f.children,function(d){if(s.has(d))c(d);else{var h=d.getAttribute(n),m=h!==null&&h!=="false",p=(Ai.get(d)||0)+1,g=(o.get(d)||0)+1;Ai.set(d,p),o.set(d,g),a.push(d),p===1&&m&&Es.set(d,!0),g===1&&d.setAttribute(r,"true"),m||d.setAttribute(n,"true")}})};return c(t),s.clear(),wc++,function(){a.forEach(function(f){var d=Ai.get(f)-1,h=o.get(f)-1;Ai.set(f,d),o.set(f,h),d||(Es.has(f)||f.removeAttribute(n),Es.delete(f)),h||f.removeAttribute(r)}),wc--,wc||(Ai=new WeakMap,Ai=new WeakMap,Es=new WeakMap,_s={})}},md=function(e,t,r){r===void 0&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=t||pT(e);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live]"))),mT(n,i,r,"aria-hidden")):function(){return null}},Ar=function(){return Ar=Object.assign||function(t){for(var r,n=1,i=arguments.length;n"u")return bT;var t=kT(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},NT=Wv(),MT=function(e,t,r,n){var i=e.left,o=e.top,a=e.right,s=e.gap;return r===void 0&&(r="margin"),` + */function If(e,t){return e?aS(e)?v.createElement(e,t):e:null}function aS(e){return sS(e)||typeof e=="function"||lS(e)}function sS(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function lS(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function uS(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[r]=v.useState(()=>({current:q_(t)})),[n,i]=v.useState(()=>r.current.initialState);return r.current.setOptions(o=>({...o,...e,state:{...n,...e.state},onStateChange:a=>{i(a),e.onStateChange==null||e.onStateChange(a)}})),r.current}function yv(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;tm,Object.values(m));return v.createElement(p.Provider,{value:g},h)}function c(f,d){const h=(d==null?void 0:d[e][l])||s,m=v.useContext(h);if(m)return m;if(a!==void 0)return a;throw new Error(`\`${f}\` must be used within \`${o}\``)}return u.displayName=o+"Provider",[u,c]}const i=()=>{const o=r.map(a=>v.createContext(a));return function(s){const l=(s==null?void 0:s[e])||o;return v.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return i.scopeName=e,[n,cS(i,...t)]}function cS(...e){const t=e[0];if(e.length===1)return t;const r=()=>{const n=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(o){const a=n.reduce((s,{useScope:l,scopeName:u})=>{const f=l(o)[`__scope${u}`];return{...s,...f}},{});return v.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return r.scopeName=t.scopeName,r}function fS(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function sd(...e){return t=>e.forEach(r=>fS(r,t))}function He(...e){return v.useCallback(sd(...e),e)}const ii=v.forwardRef((e,t)=>{const{children:r,...n}=e,i=v.Children.toArray(r),o=i.find(hS);if(o){const a=o.props.children,s=i.map(l=>l===o?v.Children.count(a)>1?v.Children.only(null):v.isValidElement(a)?a.props.children:null:l);return v.createElement(bf,de({},n,{ref:t}),v.isValidElement(a)?v.cloneElement(a,void 0,s):null)}return v.createElement(bf,de({},n,{ref:t}),r)});ii.displayName="Slot";const bf=v.forwardRef((e,t)=>{const{children:r,...n}=e;return v.isValidElement(r)?v.cloneElement(r,{...pS(n,r.props),ref:sd(t,r.ref)}):v.Children.count(r)>1?v.Children.only(null):null});bf.displayName="SlotClone";const dS=({children:e})=>v.createElement(v.Fragment,null,e);function hS(e){return v.isValidElement(e)&&e.type===dS}function pS(e,t){const r={...t};for(const n in t){const i=e[n],o=t[n];/^on[A-Z]/.test(n)?i&&o?r[n]=(...s)=>{o(...s),i(...s)}:i&&(r[n]=i):n==="style"?r[n]={...i,...o}:n==="className"&&(r[n]=[i,o].filter(Boolean).join(" "))}return{...e,...r}}function su(e){const t=e+"CollectionProvider",[r,n]=on(t),[i,o]=r(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:m,children:p}=h,g=nr.useRef(null),x=nr.useRef(new Map).current;return nr.createElement(i,{scope:m,itemMap:x,collectionRef:g},p)},s=e+"CollectionSlot",l=nr.forwardRef((h,m)=>{const{scope:p,children:g}=h,x=o(s,p),w=He(m,x.collectionRef);return nr.createElement(ii,{ref:w},g)}),u=e+"CollectionItemSlot",c="data-radix-collection-item",f=nr.forwardRef((h,m)=>{const{scope:p,children:g,...x}=h,w=nr.useRef(null),y=He(m,w),_=o(u,p);return nr.useEffect(()=>(_.itemMap.set(w,{ref:w,...x}),()=>void _.itemMap.delete(w))),nr.createElement(ii,{[c]:"",ref:y},g)});function d(h){const m=o(e+"CollectionConsumer",h);return nr.useCallback(()=>{const g=m.collectionRef.current;if(!g)return[];const x=Array.from(g.querySelectorAll(`[${c}]`));return Array.from(m.itemMap.values()).sort((_,k)=>x.indexOf(_.ref.current)-x.indexOf(k.ref.current))},[m.collectionRef,m.itemMap])}return[{Provider:a,Slot:l,ItemSlot:f},d,n]}const gS=v.createContext(void 0);function ld(e){const t=v.useContext(gS);return e||t||"ltr"}const mS=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],Ie=mS.reduce((e,t)=>{const r=v.forwardRef((n,i)=>{const{asChild:o,...a}=n,s=o?ii:t;return v.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),v.createElement(s,de({},a,{ref:i}))});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function ud(e,t){e&&Jr.flushSync(()=>e.dispatchEvent(t))}function Dt(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e}),v.useMemo(()=>(...r)=>{var n;return(n=t.current)===null||n===void 0?void 0:n.call(t,...r)},[])}function vS(e,t=globalThis==null?void 0:globalThis.document){const r=Dt(e);v.useEffect(()=>{const n=i=>{i.key==="Escape"&&r(i)};return t.addEventListener("keydown",n),()=>t.removeEventListener("keydown",n)},[r,t])}const kf="dismissableLayer.update",xS="dismissableLayer.pointerDownOutside",wS="dismissableLayer.focusOutside";let bp;const Ev=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),lu=v.forwardRef((e,t)=>{var r;const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:i,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:s,onDismiss:l,...u}=e,c=v.useContext(Ev),[f,d]=v.useState(null),h=(r=f==null?void 0:f.ownerDocument)!==null&&r!==void 0?r:globalThis==null?void 0:globalThis.document,[,m]=v.useState({}),p=He(t,A=>d(A)),g=Array.from(c.layers),[x]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),w=g.indexOf(x),y=f?g.indexOf(f):-1,_=c.layersWithOutsidePointerEventsDisabled.size>0,k=y>=w,N=ES(A=>{const R=A.target,L=[...c.branches].some(V=>V.contains(R));!k||L||(o==null||o(A),s==null||s(A),A.defaultPrevented||l==null||l())},h),S=_S(A=>{const R=A.target;[...c.branches].some(V=>V.contains(R))||(a==null||a(A),s==null||s(A),A.defaultPrevented||l==null||l())},h);return vS(A=>{y===c.layers.size-1&&(i==null||i(A),!A.defaultPrevented&&l&&(A.preventDefault(),l()))},h),v.useEffect(()=>{if(f)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(bp=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(f)),c.layers.add(f),kp(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=bp)}},[f,h,n,c]),v.useEffect(()=>()=>{f&&(c.layers.delete(f),c.layersWithOutsidePointerEventsDisabled.delete(f),kp())},[f,c]),v.useEffect(()=>{const A=()=>m({});return document.addEventListener(kf,A),()=>document.removeEventListener(kf,A)},[]),v.createElement(Ie.div,de({},u,{ref:p,style:{pointerEvents:_?k?"auto":"none":void 0,...e.style},onFocusCapture:Ee(e.onFocusCapture,S.onFocusCapture),onBlurCapture:Ee(e.onBlurCapture,S.onBlurCapture),onPointerDownCapture:Ee(e.onPointerDownCapture,N.onPointerDownCapture)}))}),yS=v.forwardRef((e,t)=>{const r=v.useContext(Ev),n=v.useRef(null),i=He(t,n);return v.useEffect(()=>{const o=n.current;if(o)return r.branches.add(o),()=>{r.branches.delete(o)}},[r.branches]),v.createElement(Ie.div,de({},e,{ref:i}))});function ES(e,t=globalThis==null?void 0:globalThis.document){const r=Dt(e),n=v.useRef(!1),i=v.useRef(()=>{});return v.useEffect(()=>{const o=s=>{if(s.target&&!n.current){let c=function(){_v(xS,r,u,{discrete:!0})};var l=c;const u={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",i.current),i.current=c,t.addEventListener("click",i.current,{once:!0})):c()}n.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",o),t.removeEventListener("click",i.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}function _S(e,t=globalThis==null?void 0:globalThis.document){const r=Dt(e),n=v.useRef(!1);return v.useEffect(()=>{const i=o=>{o.target&&!n.current&&_v(wS,r,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}function kp(){const e=new CustomEvent(kf);document.dispatchEvent(e)}function _v(e,t,r,{discrete:n}){const i=r.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?ud(i,o):i.dispatchEvent(o)}const SS=lu,TS=yS;let mc=0;function cd(){v.useEffect(()=>{var e,t;const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=r[0])!==null&&e!==void 0?e:$p()),document.body.insertAdjacentElement("beforeend",(t=r[1])!==null&&t!==void 0?t:$p()),mc++,()=>{mc===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(n=>n.remove()),mc--}},[])}function $p(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const vc="focusScope.autoFocusOnMount",xc="focusScope.autoFocusOnUnmount",Np={bubbles:!1,cancelable:!0},fd=v.forwardRef((e,t)=>{const{loop:r=!1,trapped:n=!1,onMountAutoFocus:i,onUnmountAutoFocus:o,...a}=e,[s,l]=v.useState(null),u=Dt(i),c=Dt(o),f=v.useRef(null),d=He(t,p=>l(p)),h=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(n){let x=function(y){if(h.paused||!s)return;const _=y.target;s.contains(_)?f.current=_:zn(f.current,{select:!0})},w=function(y){h.paused||!s||s.contains(y.relatedTarget)||zn(f.current,{select:!0})};var p=x,g=w;return document.addEventListener("focusin",x),document.addEventListener("focusout",w),()=>{document.removeEventListener("focusin",x),document.removeEventListener("focusout",w)}}},[n,s,h.paused]),v.useEffect(()=>{if(s){Lp.add(h);const p=document.activeElement;if(!s.contains(p)){const x=new CustomEvent(vc,Np);s.addEventListener(vc,u),s.dispatchEvent(x),x.defaultPrevented||(CS(DS(Sv(s)),{select:!0}),document.activeElement===p&&zn(s))}return()=>{s.removeEventListener(vc,u),setTimeout(()=>{const x=new CustomEvent(xc,Np);s.addEventListener(xc,c),s.dispatchEvent(x),x.defaultPrevented||zn(p??document.body,{select:!0}),s.removeEventListener(xc,c),Lp.remove(h)},0)}}},[s,u,c,h]);const m=v.useCallback(p=>{if(!r&&!n||h.paused)return;const g=p.key==="Tab"&&!p.altKey&&!p.ctrlKey&&!p.metaKey,x=document.activeElement;if(g&&x){const w=p.currentTarget,[y,_]=AS(w);y&&_?!p.shiftKey&&x===_?(p.preventDefault(),r&&zn(y,{select:!0})):p.shiftKey&&x===y&&(p.preventDefault(),r&&zn(_,{select:!0})):x===w&&p.preventDefault()}},[r,n,h.paused]);return v.createElement(Ie.div,de({tabIndex:-1},a,{ref:d,onKeyDown:m}))});function CS(e,{select:t=!1}={}){const r=document.activeElement;for(const n of e)if(zn(n,{select:t}),document.activeElement!==r)return}function AS(e){const t=Sv(e),r=Mp(t,e),n=Mp(t.reverse(),e);return[r,n]}function Sv(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Mp(e,t){for(const r of e)if(!RS(r,{upTo:t}))return r}function RS(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function OS(e){return e instanceof HTMLInputElement&&"select"in e}function zn(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&OS(e)&&t&&e.select()}}const Lp=FS();function FS(){let e=[];return{add(t){const r=e[0];t!==r&&(r==null||r.pause()),e=Bp(e,t),e.unshift(t)},remove(t){var r;e=Bp(e,t),(r=e[0])===null||r===void 0||r.resume()}}}function Bp(e,t){const r=[...e],n=r.indexOf(t);return n!==-1&&r.splice(n,1),r}function DS(e){return e.filter(t=>t.tagName!=="A")}const xt=globalThis!=null&&globalThis.document?v.useLayoutEffect:()=>{},PS=wy["useId".toString()]||(()=>{});let IS=0;function Xr(e){const[t,r]=v.useState(PS());return xt(()=>{e||r(n=>n??String(IS++))},[e]),e||(t?`radix-${t}`:"")}function hi(e){return e.split("-")[0]}function Ya(e){return e.split("-")[1]}function yo(e){return["top","bottom"].includes(hi(e))?"x":"y"}function dd(e){return e==="y"?"height":"width"}function Up(e,t,r){let{reference:n,floating:i}=e;const o=n.x+n.width/2-i.width/2,a=n.y+n.height/2-i.height/2,s=yo(t),l=dd(s),u=n[l]/2-i[l]/2,c=s==="x";let f;switch(hi(t)){case"top":f={x:o,y:n.y-i.height};break;case"bottom":f={x:o,y:n.y+n.height};break;case"right":f={x:n.x+n.width,y:a};break;case"left":f={x:n.x-i.width,y:a};break;default:f={x:n.x,y:n.y}}switch(Ya(t)){case"start":f[s]-=u*(r&&c?-1:1);break;case"end":f[s]+=u*(r&&c?-1:1)}return f}const bS=async(e,t,r)=>{const{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:a}=r,s=await(a.isRTL==null?void 0:a.isRTL(t));let l=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:c}=Up(l,n,s),f=n,d={},h=0;for(let m=0;m({name:"arrow",options:e,async fn(t){const{element:r,padding:n=0}=e??{},{x:i,y:o,placement:a,rects:s,platform:l}=t;if(r==null)return{};const u=Tv(n),c={x:i,y:o},f=yo(a),d=Ya(a),h=dd(f),m=await l.getDimensions(r),p=f==="y"?"top":"left",g=f==="y"?"bottom":"right",x=s.reference[h]+s.reference[f]-c[f]-s.floating[h],w=c[f]-s.reference[f],y=await(l.getOffsetParent==null?void 0:l.getOffsetParent(r));let _=y?f==="y"?y.clientHeight||0:y.clientWidth||0:0;_===0&&(_=s.floating[h]);const k=x/2-w/2,N=u[p],S=_-m[h]-u[g],A=_/2-m[h]/2+k,R=$f(N,A,S),L=(d==="start"?u[p]:u[g])>0&&A!==R&&s.reference[h]<=s.floating[h];return{[f]:c[f]-(L?A$S[t])}function NS(e,t,r){r===void 0&&(r=!1);const n=Ya(e),i=yo(e),o=dd(i);let a=i==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=Rl(a)),{main:a,cross:Rl(a)}}const MS={start:"end",end:"start"};function Vp(e){return e.replace(/start|end/g,t=>MS[t])}const Cv=["top","right","bottom","left"];Cv.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);const LS=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var r;const{placement:n,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:l}=t,{mainAxis:u=!0,crossAxis:c=!0,fallbackPlacements:f,fallbackStrategy:d="bestFit",flipAlignment:h=!0,...m}=e,p=hi(n),g=f||(p===a||!h?[Rl(a)]:function(A){const R=Rl(A);return[Vp(A),R,Vp(R)]}(a)),x=[a,...g],w=await ka(t,m),y=[];let _=((r=i.flip)==null?void 0:r.overflows)||[];if(u&&y.push(w[p]),c){const{main:A,cross:R}=NS(n,o,await(s.isRTL==null?void 0:s.isRTL(l.floating)));y.push(w[A],w[R])}if(_=[..._,{placement:n,overflows:y}],!y.every(A=>A<=0)){var k,N;const A=((k=(N=i.flip)==null?void 0:N.index)!=null?k:0)+1,R=x[A];if(R)return{data:{index:A,overflows:_},reset:{placement:R}};let L="bottom";switch(d){case"bestFit":{var S;const V=(S=_.map(U=>[U,U.overflows.filter(W=>W>0).reduce((W,Y)=>W+Y,0)]).sort((U,W)=>U[1]-W[1])[0])==null?void 0:S[0].placement;V&&(L=V);break}case"initialPlacement":L=a}if(n!==L)return{reset:{placement:L}}}return{}}}};function Wp(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function zp(e){return Cv.some(t=>e[t]>=0)}const BS=function(e){let{strategy:t="referenceHidden",...r}=e===void 0?{}:e;return{name:"hide",async fn(n){const{rects:i}=n;switch(t){case"referenceHidden":{const o=Wp(await ka(n,{...r,elementContext:"reference"}),i.reference);return{data:{referenceHiddenOffsets:o,referenceHidden:zp(o)}}}case"escaped":{const o=Wp(await ka(n,{...r,altBoundary:!0}),i.floating);return{data:{escapedOffsets:o,escaped:zp(o)}}}default:return{}}}}},US=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:r,y:n}=t,i=await async function(o,a){const{placement:s,platform:l,elements:u}=o,c=await(l.isRTL==null?void 0:l.isRTL(u.floating)),f=hi(s),d=Ya(s),h=yo(s)==="x",m=["left","top"].includes(f)?-1:1,p=c&&h?-1:1,g=typeof a=="function"?a(o):a;let{mainAxis:x,crossAxis:w,alignmentAxis:y}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...g};return d&&typeof y=="number"&&(w=d==="end"?-1*y:y),h?{x:w*p,y:x*m}:{x:x*m,y:w*p}}(t,e);return{x:r+i.x,y:n+i.y,data:i}}}};function Av(e){return e==="x"?"y":"x"}const HS=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:g=>{let{x,y:w}=g;return{x,y:w}}},...l}=e,u={x:r,y:n},c=await ka(t,l),f=yo(hi(i)),d=Av(f);let h=u[f],m=u[d];if(o){const g=f==="y"?"bottom":"right";h=$f(h+c[f==="y"?"top":"left"],h,h-c[g])}if(a){const g=d==="y"?"bottom":"right";m=$f(m+c[d==="y"?"top":"left"],m,m-c[g])}const p=s.fn({...t,[f]:h,[d]:m});return{...p,data:{x:p.x-r,y:p.y-n}}}}},VS=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:i,rects:o,middlewareData:a}=t,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=e,c={x:r,y:n},f=yo(i),d=Av(f);let h=c[f],m=c[d];const p=typeof s=="function"?s({...o,placement:i}):s,g=typeof p=="number"?{mainAxis:p,crossAxis:0}:{mainAxis:0,crossAxis:0,...p};if(l){const k=f==="y"?"height":"width",N=o.reference[f]-o.floating[k]+g.mainAxis,S=o.reference[f]+o.reference[k]-g.mainAxis;hS&&(h=S)}if(u){var x,w,y,_;const k=f==="y"?"width":"height",N=["top","left"].includes(hi(i)),S=o.reference[d]-o.floating[k]+(N&&(x=(w=a.offset)==null?void 0:w[d])!=null?x:0)+(N?0:g.crossAxis),A=o.reference[d]+o.reference[k]+(N?0:(y=(_=a.offset)==null?void 0:_[d])!=null?y:0)-(N?g.crossAxis:0);mA&&(m=A)}return{[f]:h,[d]:m}}}},WS=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:n,platform:i,elements:o}=t,{apply:a,...s}=e,l=await ka(t,s),u=hi(r),c=Ya(r);let f,d;u==="top"||u==="bottom"?(f=u,d=c===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(d=u,f=c==="end"?"top":"bottom");const h=Gn(l.left,0),m=Gn(l.right,0),p=Gn(l.top,0),g=Gn(l.bottom,0),x={availableHeight:n.floating.height-(["left","right"].includes(r)?2*(p!==0||g!==0?p+g:Gn(l.top,l.bottom)):l[f]),availableWidth:n.floating.width-(["top","bottom"].includes(r)?2*(h!==0||m!==0?h+m:Gn(l.left,l.right)):l[d])},w=await i.getDimensions(o.floating);a==null||a({...t,...x});const y=await i.getDimensions(o.floating);return w.width!==y.width||w.height!==y.height?{reset:{rects:!0}}:{}}}};function Rv(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function an(e){if(e==null)return window;if(!Rv(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function qa(e){return an(e).getComputedStyle(e)}function Kr(e){return Rv(e)?"":e?(e.nodeName||"").toLowerCase():""}function Ov(){const e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(t=>t.brand+"/"+t.version).join(" "):navigator.userAgent}function Ir(e){return e instanceof an(e).HTMLElement}function kn(e){return e instanceof an(e).Element}function hd(e){return typeof ShadowRoot>"u"?!1:e instanceof an(e).ShadowRoot||e instanceof ShadowRoot}function uu(e){const{overflow:t,overflowX:r,overflowY:n}=qa(e);return/auto|scroll|overlay|hidden/.test(t+n+r)}function zS(e){return["table","td","th"].includes(Kr(e))}function Gp(e){const t=/firefox/i.test(Ov()),r=qa(e);return r.transform!=="none"||r.perspective!=="none"||r.contain==="paint"||["transform","perspective"].includes(r.willChange)||t&&r.willChange==="filter"||t&&!!r.filter&&r.filter!=="none"}function Fv(){return!/^((?!chrome|android).)*safari/i.test(Ov())}const jp=Math.min,fa=Math.max,Ol=Math.round;function Yr(e,t,r){var n,i,o,a;t===void 0&&(t=!1),r===void 0&&(r=!1);const s=e.getBoundingClientRect();let l=1,u=1;t&&Ir(e)&&(l=e.offsetWidth>0&&Ol(s.width)/e.offsetWidth||1,u=e.offsetHeight>0&&Ol(s.height)/e.offsetHeight||1);const c=kn(e)?an(e):window,f=!Fv()&&r,d=(s.left+(f&&(n=(i=c.visualViewport)==null?void 0:i.offsetLeft)!=null?n:0))/l,h=(s.top+(f&&(o=(a=c.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,m=s.width/l,p=s.height/u;return{width:m,height:p,top:h,right:d+m,bottom:h+p,left:d,x:d,y:h}}function An(e){return(t=e,(t instanceof an(t).Node?e.ownerDocument:e.document)||window.document).documentElement;var t}function cu(e){return kn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Dv(e){return Yr(An(e)).left+cu(e).scrollLeft}function GS(e,t,r){const n=Ir(t),i=An(t),o=Yr(e,n&&function(l){const u=Yr(l);return Ol(u.width)!==l.offsetWidth||Ol(u.height)!==l.offsetHeight}(t),r==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(n||!n&&r!=="fixed")if((Kr(t)!=="body"||uu(i))&&(a=cu(t)),Ir(t)){const l=Yr(t,!0);s.x=l.x+t.clientLeft,s.y=l.y+t.clientTop}else i&&(s.x=Dv(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function Pv(e){return Kr(e)==="html"?e:e.assignedSlot||e.parentNode||(hd(e)?e.host:null)||An(e)}function Xp(e){return Ir(e)&&getComputedStyle(e).position!=="fixed"?e.offsetParent:null}function Nf(e){const t=an(e);let r=Xp(e);for(;r&&zS(r)&&getComputedStyle(r).position==="static";)r=Xp(r);return r&&(Kr(r)==="html"||Kr(r)==="body"&&getComputedStyle(r).position==="static"&&!Gp(r))?t:r||function(n){let i=Pv(n);for(hd(i)&&(i=i.host);Ir(i)&&!["html","body"].includes(Kr(i));){if(Gp(i))return i;i=i.parentNode}return null}(e)||t}function Kp(e){if(Ir(e))return{width:e.offsetWidth,height:e.offsetHeight};const t=Yr(e);return{width:t.width,height:t.height}}function Iv(e){const t=Pv(e);return["html","body","#document"].includes(Kr(t))?e.ownerDocument.body:Ir(t)&&uu(t)?t:Iv(t)}function Fl(e,t){var r;t===void 0&&(t=[]);const n=Iv(e),i=n===((r=e.ownerDocument)==null?void 0:r.body),o=an(n),a=i?[o].concat(o.visualViewport||[],uu(n)?n:[]):n,s=t.concat(a);return i?s:s.concat(Fl(a))}function Yp(e,t,r){return t==="viewport"?Al(function(n,i){const o=an(n),a=An(n),s=o.visualViewport;let l=a.clientWidth,u=a.clientHeight,c=0,f=0;if(s){l=s.width,u=s.height;const d=Fv();(d||!d&&i==="fixed")&&(c=s.offsetLeft,f=s.offsetTop)}return{width:l,height:u,x:c,y:f}}(e,r)):kn(t)?function(n,i){const o=Yr(n,!1,i==="fixed"),a=o.top+n.clientTop,s=o.left+n.clientLeft;return{top:a,left:s,x:s,y:a,right:s+n.clientWidth,bottom:a+n.clientHeight,width:n.clientWidth,height:n.clientHeight}}(t,r):Al(function(n){var i;const o=An(n),a=cu(n),s=(i=n.ownerDocument)==null?void 0:i.body,l=fa(o.scrollWidth,o.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),u=fa(o.scrollHeight,o.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0);let c=-a.scrollLeft+Dv(n);const f=-a.scrollTop;return qa(s||o).direction==="rtl"&&(c+=fa(o.clientWidth,s?s.clientWidth:0)-l),{width:l,height:u,x:c,y:f}}(An(e)))}function jS(e){const t=Fl(e),r=["absolute","fixed"].includes(qa(e).position)&&Ir(e)?Nf(e):e;return kn(r)?t.filter(n=>kn(n)&&function(i,o){const a=o.getRootNode==null?void 0:o.getRootNode();if(i.contains(o))return!0;if(a&&hd(a)){let s=o;do{if(s&&i===s)return!0;s=s.parentNode||s.host}while(s)}return!1}(n,r)&&Kr(n)!=="body"):[]}const XS={getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e;const o=[...r==="clippingAncestors"?jS(t):[].concat(r),n],a=o[0],s=o.reduce((l,u)=>{const c=Yp(t,u,i);return l.top=fa(c.top,l.top),l.right=jp(c.right,l.right),l.bottom=jp(c.bottom,l.bottom),l.left=fa(c.left,l.left),l},Yp(t,a,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:r,strategy:n}=e;const i=Ir(r),o=An(r);if(r===o)return t;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&n!=="fixed")&&((Kr(r)!=="body"||uu(o))&&(a=cu(r)),Ir(r))){const l=Yr(r,!0);s.x=l.x+r.clientLeft,s.y=l.y+r.clientTop}return{...t,x:t.x-a.scrollLeft+s.x,y:t.y-a.scrollTop+s.y}},isElement:kn,getDimensions:Kp,getOffsetParent:Nf,getDocumentElement:An,getElementRects:e=>{let{reference:t,floating:r,strategy:n}=e;return{reference:GS(t,Nf(r),n),floating:{...Kp(r),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>qa(e).direction==="rtl"};function KS(e,t,r,n){n===void 0&&(n={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a=!0,animationFrame:s=!1}=n,l=i&&!s,u=o&&!s,c=l||u?[...kn(e)?Fl(e):[],...Fl(t)]:[];c.forEach(m=>{l&&m.addEventListener("scroll",r,{passive:!0}),u&&m.addEventListener("resize",r)});let f,d=null;if(a){let m=!0;d=new ResizeObserver(()=>{m||r(),m=!1}),kn(e)&&!s&&d.observe(e),d.observe(t)}let h=s?Yr(e):null;return s&&function m(){const p=Yr(e);!h||p.x===h.x&&p.y===h.y&&p.width===h.width&&p.height===h.height||r(),h=p,f=requestAnimationFrame(m)}(),r(),()=>{var m;c.forEach(p=>{l&&p.removeEventListener("scroll",r),u&&p.removeEventListener("resize",r)}),(m=d)==null||m.disconnect(),d=null,s&&cancelAnimationFrame(f)}}const YS=(e,t,r)=>bS(e,t,{platform:XS,...r});var Mf=typeof document<"u"?v.useLayoutEffect:v.useEffect;function Lf(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,n,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!=t.length)return!1;for(n=r;n--!==0;)if(!Lf(e[n],t[n]))return!1;return!0}if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(n=r;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[n]))return!1;for(n=r;n--!==0;){const o=i[n];if(!(o==="_owner"&&e.$$typeof)&&!Lf(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function qS(e){const t=v.useRef(e);return Mf(()=>{t.current=e}),t}function QS(e){let{middleware:t,placement:r="bottom",strategy:n="absolute",whileElementsMounted:i}=e===void 0?{}:e;const o=v.useRef(null),a=v.useRef(null),s=qS(i),l=v.useRef(null),[u,c]=v.useState({x:null,y:null,strategy:n,placement:r,middlewareData:{}}),[f,d]=v.useState(t);Lf(f==null?void 0:f.map(y=>{let{options:_}=y;return _}),t==null?void 0:t.map(y=>{let{options:_}=y;return _}))||d(t);const h=v.useCallback(()=>{!o.current||!a.current||YS(o.current,a.current,{middleware:f,placement:r,strategy:n}).then(y=>{m.current&&Jr.flushSync(()=>{c(y)})})},[f,r,n]);Mf(()=>{m.current&&h()},[h]);const m=v.useRef(!1);Mf(()=>(m.current=!0,()=>{m.current=!1}),[]);const p=v.useCallback(()=>{if(typeof l.current=="function"&&(l.current(),l.current=null),o.current&&a.current)if(s.current){const y=s.current(o.current,a.current,h);l.current=y}else h()},[h,s]),g=v.useCallback(y=>{o.current=y,p()},[p]),x=v.useCallback(y=>{a.current=y,p()},[p]),w=v.useMemo(()=>({reference:o,floating:a}),[]);return v.useMemo(()=>({...u,update:h,refs:w,reference:g,floating:x}),[u,h,w,g,x])}const ZS=e=>{const{element:t,padding:r}=e;function n(i){return Object.prototype.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){return n(t)?t.current!=null?Hp({element:t.current,padding:r}).fn(i):{}:t?Hp({element:t,padding:r}).fn(i):{}}}};function JS(e){const[t,r]=v.useState(void 0);return xt(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});const n=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const o=i[0];let a,s;if("borderBoxSize"in o){const l=o.borderBoxSize,u=Array.isArray(l)?l[0]:l;a=u.inlineSize,s=u.blockSize}else a=e.offsetWidth,s=e.offsetHeight;r({width:a,height:s})});return n.observe(e,{box:"border-box"}),()=>n.unobserve(e)}else r(void 0)},[e]),t}const bv="Popper",[pd,fu]=on(bv),[eT,kv]=pd(bv),tT=e=>{const{__scopePopper:t,children:r}=e,[n,i]=v.useState(null);return v.createElement(eT,{scope:t,anchor:n,onAnchorChange:i},r)},rT="PopperAnchor",nT=v.forwardRef((e,t)=>{const{__scopePopper:r,virtualRef:n,...i}=e,o=kv(rT,r),a=v.useRef(null),s=He(t,a);return v.useEffect(()=>{o.onAnchorChange((n==null?void 0:n.current)||a.current)}),n?null:v.createElement(Ie.div,de({},i,{ref:s}))}),Dl="PopperContent",[iT,Lk]=pd(Dl),[oT,aT]=pd(Dl,{hasParent:!1,positionUpdateFns:new Set}),sT=v.forwardRef((e,t)=>{var r,n,i,o,a,s,l,u;const{__scopePopper:c,side:f="bottom",sideOffset:d=0,align:h="center",alignOffset:m=0,arrowPadding:p=0,collisionBoundary:g=[],collisionPadding:x=0,sticky:w="partial",hideWhenDetached:y=!1,avoidCollisions:_=!0,onPlaced:k,...N}=e,S=kv(Dl,c),[A,R]=v.useState(null),L=He(t,Mr=>R(Mr)),[V,U]=v.useState(null),W=JS(V),Y=(r=W==null?void 0:W.width)!==null&&r!==void 0?r:0,re=(n=W==null?void 0:W.height)!==null&&n!==void 0?n:0,ye=f+(h!=="center"?"-"+h:""),ge=typeof x=="number"?x:{top:0,right:0,bottom:0,left:0,...x},Se=Array.isArray(g)?g:[g],ie=Se.length>0,we={padding:ge,boundary:Se.filter(uT),altBoundary:ie},{reference:Q,floating:F,strategy:M,x:b,y:T,placement:B,middlewareData:H,update:q}=QS({strategy:"fixed",placement:ye,whileElementsMounted:KS,middleware:[cT(),US({mainAxis:d+re,alignmentAxis:m}),_?HS({mainAxis:!0,crossAxis:!1,limiter:w==="partial"?VS():void 0,...we}):void 0,V?ZS({element:V,padding:p}):void 0,_?LS({...we}):void 0,WS({...we,apply:({elements:Mr,availableWidth:Ro,availableHeight:er})=>{Mr.floating.style.setProperty("--radix-popper-available-width",`${Ro}px`),Mr.floating.style.setProperty("--radix-popper-available-height",`${er}px`)}}),fT({arrowWidth:Y,arrowHeight:re}),y?BS({strategy:"referenceHidden"}):void 0].filter(lT)});xt(()=>{Q(S.anchor)},[Q,S.anchor]);const ee=b!==null&&T!==null,[K,ve]=$v(B),pe=Dt(k);xt(()=>{ee&&(pe==null||pe())},[ee,pe]);const De=(i=H.arrow)===null||i===void 0?void 0:i.x,_e=(o=H.arrow)===null||o===void 0?void 0:o.y,je=((a=H.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Re,ce]=v.useState();xt(()=>{A&&ce(window.getComputedStyle(A).zIndex)},[A]);const{hasParent:Mt,positionUpdateFns:_t}=aT(Dl,c),jt=!Mt;v.useLayoutEffect(()=>{if(!jt)return _t.add(q),()=>{_t.delete(q)}},[jt,_t,q]),xt(()=>{jt&&ee&&Array.from(_t).reverse().forEach(Mr=>requestAnimationFrame(Mr))},[jt,ee,_t]);const Nr={"data-side":K,"data-align":ve,...N,ref:L,style:{...N.style,animation:ee?void 0:"none",opacity:(s=H.hide)!==null&&s!==void 0&&s.referenceHidden?0:void 0}};return v.createElement("div",{ref:F,"data-radix-popper-content-wrapper":"",style:{position:M,left:0,top:0,transform:ee?`translate3d(${Math.round(b)}px, ${Math.round(T)}px, 0)`:"translate3d(0, -200%, 0)",minWidth:"max-content",zIndex:Re,["--radix-popper-transform-origin"]:[(l=H.transformOrigin)===null||l===void 0?void 0:l.x,(u=H.transformOrigin)===null||u===void 0?void 0:u.y].join(" ")},dir:e.dir},v.createElement(iT,{scope:c,placedSide:K,onArrowChange:U,arrowX:De,arrowY:_e,shouldHideArrow:je},jt?v.createElement(oT,{scope:c,hasParent:!0,positionUpdateFns:_t},v.createElement(Ie.div,Nr)):v.createElement(Ie.div,Nr)))});function lT(e){return e!==void 0}function uT(e){return e!==null}const cT=()=>({name:"anchorCssProperties",fn(e){const{rects:t,elements:r}=e,{width:n,height:i}=t.reference;return r.floating.style.setProperty("--radix-popper-anchor-width",`${n}px`),r.floating.style.setProperty("--radix-popper-anchor-height",`${i}px`),{}}}),fT=e=>({name:"transformOrigin",options:e,fn(t){var r,n,i,o,a;const{placement:s,rects:l,middlewareData:u}=t,f=((r=u.arrow)===null||r===void 0?void 0:r.centerOffset)!==0,d=f?0:e.arrowWidth,h=f?0:e.arrowHeight,[m,p]=$v(s),g={start:"0%",center:"50%",end:"100%"}[p],x=((n=(i=u.arrow)===null||i===void 0?void 0:i.x)!==null&&n!==void 0?n:0)+d/2,w=((o=(a=u.arrow)===null||a===void 0?void 0:a.y)!==null&&o!==void 0?o:0)+h/2;let y="",_="";return m==="bottom"?(y=f?g:`${x}px`,_=`${-h}px`):m==="top"?(y=f?g:`${x}px`,_=`${l.floating.height+h}px`):m==="right"?(y=`${-h}px`,_=f?g:`${w}px`):m==="left"&&(y=`${l.floating.width+h}px`,_=f?g:`${w}px`),{data:{x:y,y:_}}}});function $v(e){const[t,r="center"]=e.split("-");return[t,r]}const Nv=tT,Mv=nT,Lv=sT,du=v.forwardRef((e,t)=>{var r;const{container:n=globalThis==null||(r=globalThis.document)===null||r===void 0?void 0:r.body,...i}=e;return n?cv.createPortal(v.createElement(Ie.div,de({},i,{ref:t})),n):null});function lo({prop:e,defaultProp:t,onChange:r=()=>{}}){const[n,i]=dT({defaultProp:t,onChange:r}),o=e!==void 0,a=o?e:n,s=Dt(r),l=v.useCallback(u=>{if(o){const f=typeof u=="function"?u(e):u;f!==e&&s(f)}else i(u)},[o,e,i,s]);return[a,l]}function dT({defaultProp:e,onChange:t}){const r=v.useState(e),[n]=r,i=v.useRef(n),o=Dt(t);return v.useEffect(()=>{i.current!==n&&(o(n),i.current=n)},[n,i,o]),r}function hT(e){const t=v.useRef({value:e,previous:e});return v.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const gd=v.forwardRef((e,t)=>v.createElement(Ie.span,de({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}})));var pT=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ai=new WeakMap,Es=new WeakMap,_s={},wc=0,Bv=function(e){return e&&(e.host||Bv(e.parentNode))},gT=function(e,t){return t.map(function(r){if(e.contains(r))return r;var n=Bv(r);return n&&e.contains(n)?n:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},mT=function(e,t,r,n){var i=gT(t,Array.isArray(e)?e:[e]);_s[r]||(_s[r]=new WeakMap);var o=_s[r],a=[],s=new Set,l=new Set(i),u=function(f){!f||s.has(f)||(s.add(f),u(f.parentNode))};i.forEach(u);var c=function(f){!f||l.has(f)||Array.prototype.forEach.call(f.children,function(d){if(s.has(d))c(d);else{var h=d.getAttribute(n),m=h!==null&&h!=="false",p=(Ai.get(d)||0)+1,g=(o.get(d)||0)+1;Ai.set(d,p),o.set(d,g),a.push(d),p===1&&m&&Es.set(d,!0),g===1&&d.setAttribute(r,"true"),m||d.setAttribute(n,"true")}})};return c(t),s.clear(),wc++,function(){a.forEach(function(f){var d=Ai.get(f)-1,h=o.get(f)-1;Ai.set(f,d),o.set(f,h),d||(Es.has(f)||f.removeAttribute(n),Es.delete(f)),h||f.removeAttribute(r)}),wc--,wc||(Ai=new WeakMap,Ai=new WeakMap,Es=new WeakMap,_s={})}},md=function(e,t,r){r===void 0&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=t||pT(e);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live]"))),mT(n,i,r,"aria-hidden")):function(){return null}},Ar=function(){return Ar=Object.assign||function(t){for(var r,n=1,i=arguments.length;n"u")return bT;var t=kT(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},NT=Wv(),MT=function(e,t,r,n){var i=e.left,o=e.top,a=e.right,s=e.gap;return r===void 0&&(r="margin"),` .`.concat(xT,` { overflow: hidden `).concat(n,`; padding-right: `).concat(s,"px ").concat(n,`; @@ -180,7 +180,7 @@ `)},LT=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,i=n===void 0?"margin":n,o=v.useMemo(function(){return $T(i)},[i]);return v.createElement(NT,{styles:MT(o,!t,i,r?"":"!important")})},Bf=!1;if(typeof window<"u")try{var Ss=Object.defineProperty({},"passive",{get:function(){return Bf=!0,!0}});window.addEventListener("test",Ss,Ss),window.removeEventListener("test",Ss,Ss)}catch{Bf=!1}var Ri=Bf?{passive:!1}:!1,BT=function(e){return e.tagName==="TEXTAREA"},zv=function(e,t){var r=window.getComputedStyle(e);return r[t]!=="hidden"&&!(r.overflowY===r.overflowX&&!BT(e)&&r[t]==="visible")},UT=function(e){return zv(e,"overflowY")},HT=function(e){return zv(e,"overflowX")},Qp=function(e,t){var r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var n=Gv(e,r);if(n){var i=jv(e,r),o=i[1],a=i[2];if(o>a)return!0}r=r.parentNode}while(r&&r!==document.body);return!1},VT=function(e){var t=e.scrollTop,r=e.scrollHeight,n=e.clientHeight;return[t,r,n]},WT=function(e){var t=e.scrollLeft,r=e.scrollWidth,n=e.clientWidth;return[t,r,n]},Gv=function(e,t){return e==="v"?UT(t):HT(t)},jv=function(e,t){return e==="v"?VT(t):WT(t)},zT=function(e,t){return e==="h"&&t==="rtl"?-1:1},GT=function(e,t,r,n,i){var o=zT(e,window.getComputedStyle(t).direction),a=o*n,s=r.target,l=t.contains(s),u=!1,c=a>0,f=0,d=0;do{var h=jv(e,s),m=h[0],p=h[1],g=h[2],x=p-g-o*m;(m||x)&&Gv(e,s)&&(f+=x,d+=m),s=s.parentNode}while(!l&&s!==document.body||l&&(t.contains(s)||t===s));return(c&&(i&&f===0||!i&&a>f)||!c&&(i&&d===0||!i&&-a>d))&&(u=!0),u},Ts=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Zp=function(e){return[e.deltaX,e.deltaY]},Jp=function(e){return e&&"current"in e?e.current:e},jT=function(e,t){return e[0]===t[0]&&e[1]===t[1]},XT=function(e){return` .block-interactivity-`.concat(e,` {pointer-events: none;} .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},KT=0,Oi=[];function YT(e){var t=v.useRef([]),r=v.useRef([0,0]),n=v.useRef(),i=v.useState(KT++)[0],o=v.useState(function(){return Wv()})[0],a=v.useRef(e);v.useEffect(function(){a.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var p=vT([e.lockRef.current],(e.shards||[]).map(Jp),!0).filter(Boolean);return p.forEach(function(g){return g.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),p.forEach(function(g){return g.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var s=v.useCallback(function(p,g){if("touches"in p&&p.touches.length===2)return!a.current.allowPinchZoom;var x=Ts(p),w=r.current,y="deltaX"in p?p.deltaX:w[0]-x[0],_="deltaY"in p?p.deltaY:w[1]-x[1],k,N=p.target,S=Math.abs(y)>Math.abs(_)?"h":"v";if("touches"in p&&S==="h"&&N.type==="range")return!1;var A=Qp(S,N);if(!A)return!0;if(A?k=S:(k=S==="v"?"h":"v",A=Qp(S,N)),!A)return!1;if(!n.current&&"changedTouches"in p&&(y||_)&&(n.current=k),!k)return!0;var R=n.current||k;return GT(R,g,p,R==="h"?y:_,!0)},[]),l=v.useCallback(function(p){var g=p;if(!(!Oi.length||Oi[Oi.length-1]!==o)){var x="deltaY"in g?Zp(g):Ts(g),w=t.current.filter(function(k){return k.name===g.type&&k.target===g.target&&jT(k.delta,x)})[0];if(w&&w.should){g.cancelable&&g.preventDefault();return}if(!w){var y=(a.current.shards||[]).map(Jp).filter(Boolean).filter(function(k){return k.contains(g.target)}),_=y.length>0?s(g,y[0]):!a.current.noIsolation;_&&g.cancelable&&g.preventDefault()}}},[]),u=v.useCallback(function(p,g,x,w){var y={name:p,delta:g,target:x,should:w};t.current.push(y),setTimeout(function(){t.current=t.current.filter(function(_){return _!==y})},1)},[]),c=v.useCallback(function(p){r.current=Ts(p),n.current=void 0},[]),f=v.useCallback(function(p){u(p.type,Zp(p),p.target,s(p,e.lockRef.current))},[]),d=v.useCallback(function(p){u(p.type,Ts(p),p.target,s(p,e.lockRef.current))},[]);v.useEffect(function(){return Oi.push(o),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:d}),document.addEventListener("wheel",l,Ri),document.addEventListener("touchmove",l,Ri),document.addEventListener("touchstart",c,Ri),function(){Oi=Oi.filter(function(p){return p!==o}),document.removeEventListener("wheel",l,Ri),document.removeEventListener("touchmove",l,Ri),document.removeEventListener("touchstart",c,Ri)}},[]);var h=e.removeScrollBar,m=e.inert;return v.createElement(v.Fragment,null,m?v.createElement(o,{styles:XT(i)}):null,h?v.createElement(LT,{gapMode:"margin"}):null)}const qT=AT(Vv,YT);var Xv=v.forwardRef(function(e,t){return v.createElement(hu,Ar({},e,{ref:t,sideCar:qT}))});Xv.classNames=hu.classNames;const vd=Xv,QT=[" ","Enter","ArrowUp","ArrowDown"],ZT=[" ","Enter"],pu="Select",[gu,mu,JT]=su(pu),[Eo,Lk]=on(pu,[JT,fu]),xd=fu(),[eC,pi]=Eo(pu),[tC,rC]=Eo(pu),nC=e=>{const{__scopeSelect:t,children:r,open:n,defaultOpen:i,onOpenChange:o,value:a,defaultValue:s,onValueChange:l,dir:u,name:c,autoComplete:f,disabled:d,required:h}=e,m=xd(t),[p,g]=v.useState(null),[x,w]=v.useState(null),[y,_]=v.useState(!1),k=ld(u),[N=!1,S]=lo({prop:n,defaultProp:i,onChange:o}),[A,R]=lo({prop:a,defaultProp:s,onChange:l}),L=v.useRef(null),V=p?!!p.closest("form"):!0,[U,W]=v.useState(new Set),Y=Array.from(U).map(re=>re.props.value).join(";");return v.createElement(Nv,m,v.createElement(eC,{required:h,scope:t,trigger:p,onTriggerChange:g,valueNode:x,onValueNodeChange:w,valueNodeHasChildren:y,onValueNodeHasChildrenChange:_,contentId:Xr(),value:A,onValueChange:R,open:N,onOpenChange:S,dir:k,triggerPointerDownPosRef:L,disabled:d},v.createElement(gu.Provider,{scope:t},v.createElement(tC,{scope:e.__scopeSelect,onNativeOptionAdd:v.useCallback(re=>{W(ye=>new Set(ye).add(re))},[]),onNativeOptionRemove:v.useCallback(re=>{W(ye=>{const ge=new Set(ye);return ge.delete(re),ge})},[])},r)),V?v.createElement(Qv,{key:Y,"aria-hidden":!0,required:h,tabIndex:-1,name:c,autoComplete:f,value:A,onChange:re=>R(re.target.value),disabled:d},A===void 0?v.createElement("option",{value:""}):null,Array.from(U)):null))},iC="SelectTrigger",oC=v.forwardRef((e,t)=>{const{__scopeSelect:r,disabled:n=!1,...i}=e,o=xd(r),a=pi(iC,r),s=a.disabled||n,l=He(t,a.onTriggerChange),u=mu(r),[c,f,d]=Zv(m=>{const p=u().filter(w=>!w.disabled),g=p.find(w=>w.value===a.value),x=Jv(p,m,g);x!==void 0&&a.onValueChange(x.value)}),h=()=>{s||(a.onOpenChange(!0),d())};return v.createElement(Mv,de({asChild:!0},o),v.createElement(Ie.button,de({type:"button",role:"combobox","aria-controls":a.contentId,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":a.value===void 0?"":void 0},i,{ref:l,onClick:Ee(i.onClick,m=>{m.currentTarget.focus()}),onPointerDown:Ee(i.onPointerDown,m=>{const p=m.target;p.hasPointerCapture(m.pointerId)&&p.releasePointerCapture(m.pointerId),m.button===0&&m.ctrlKey===!1&&(h(),a.triggerPointerDownPosRef.current={x:Math.round(m.pageX),y:Math.round(m.pageY)},m.preventDefault())}),onKeyDown:Ee(i.onKeyDown,m=>{const p=c.current!=="";!(m.ctrlKey||m.altKey||m.metaKey)&&m.key.length===1&&f(m.key),!(p&&m.key===" ")&&QT.includes(m.key)&&(h(),m.preventDefault())})})))}),aC="SelectValue",sC=v.forwardRef((e,t)=>{const{__scopeSelect:r,className:n,style:i,children:o,placeholder:a,...s}=e,l=pi(aC,r),{onValueNodeHasChildrenChange:u}=l,c=o!==void 0,f=He(t,l.onValueNodeChange);return xt(()=>{u(c)},[u,c]),v.createElement(Ie.span,de({},s,{ref:f,style:{pointerEvents:"none"}}),l.value===void 0&&a!==void 0?a:o)}),lC=v.forwardRef((e,t)=>{const{__scopeSelect:r,children:n,...i}=e;return v.createElement(Ie.span,de({"aria-hidden":!0},i,{ref:t}),n||"▼")}),uC=e=>v.createElement(du,de({asChild:!0},e)),uo="SelectContent",cC=v.forwardRef((e,t)=>{const r=pi(uo,e.__scopeSelect),[n,i]=v.useState();if(xt(()=>{i(new DocumentFragment)},[]),!r.open){const o=n;return o?Jr.createPortal(v.createElement(Kv,{scope:e.__scopeSelect},v.createElement(gu.Slot,{scope:e.__scopeSelect},v.createElement("div",null,e.children))),o):null}return v.createElement(fC,de({},e,{ref:t}))}),Ur=10,[Kv,gi]=Eo(uo),fC=v.forwardRef((e,t)=>{const{__scopeSelect:r,position:n="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:o,onPointerDownOutside:a,side:s,sideOffset:l,align:u,alignOffset:c,arrowPadding:f,collisionBoundary:d,collisionPadding:h,sticky:m,hideWhenDetached:p,avoidCollisions:g,...x}=e,w=pi(uo,r),[y,_]=v.useState(null),[k,N]=v.useState(null),S=He(t,H=>_(H)),[A,R]=v.useState(null),[L,V]=v.useState(null),U=mu(r),[W,Y]=v.useState(!1),re=v.useRef(!1);v.useEffect(()=>{if(y)return md(y)},[y]),cd();const ye=v.useCallback(H=>{const[q,...ee]=U().map(pe=>pe.ref.current),[K]=ee.slice(-1),ve=document.activeElement;for(const pe of H)if(pe===ve||(pe==null||pe.scrollIntoView({block:"nearest"}),pe===q&&k&&(k.scrollTop=0),pe===K&&k&&(k.scrollTop=k.scrollHeight),pe==null||pe.focus(),document.activeElement!==ve))return},[U,k]),ge=v.useCallback(()=>ye([A,y]),[ye,A,y]);v.useEffect(()=>{W&&ge()},[W,ge]);const{onOpenChange:Se,triggerPointerDownPosRef:ie}=w;v.useEffect(()=>{if(y){let H={x:0,y:0};const q=K=>{var ve,pe,De,_e;H={x:Math.abs(Math.round(K.pageX)-((ve=(pe=ie.current)===null||pe===void 0?void 0:pe.x)!==null&&ve!==void 0?ve:0)),y:Math.abs(Math.round(K.pageY)-((De=(_e=ie.current)===null||_e===void 0?void 0:_e.y)!==null&&De!==void 0?De:0))}},ee=K=>{H.x<=10&&H.y<=10?K.preventDefault():y.contains(K.target)||Se(!1),document.removeEventListener("pointermove",q),ie.current=null};return ie.current!==null&&(document.addEventListener("pointermove",q),document.addEventListener("pointerup",ee,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",q),document.removeEventListener("pointerup",ee,{capture:!0})}}},[y,Se,ie]),v.useEffect(()=>{const H=()=>Se(!1);return window.addEventListener("blur",H),window.addEventListener("resize",H),()=>{window.removeEventListener("blur",H),window.removeEventListener("resize",H)}},[Se]);const[we,Q]=Zv(H=>{const q=U().filter(ve=>!ve.disabled),ee=q.find(ve=>ve.ref.current===document.activeElement),K=Jv(q,H,ee);K&&setTimeout(()=>K.ref.current.focus())}),F=v.useCallback((H,q,ee)=>{const K=!re.current&&!ee;(w.value!==void 0&&w.value===q||K)&&(R(H),K&&(re.current=!0))},[w.value]),M=v.useCallback(()=>y==null?void 0:y.focus(),[y]),b=v.useCallback((H,q,ee)=>{const K=!re.current&&!ee;(w.value!==void 0&&w.value===q||K)&&V(H)},[w.value]),T=n==="popper"?eg:dC,B=T===eg?{side:s,sideOffset:l,align:u,alignOffset:c,arrowPadding:f,collisionBoundary:d,collisionPadding:h,sticky:m,hideWhenDetached:p,avoidCollisions:g}:{};return v.createElement(Kv,{scope:r,content:y,viewport:k,onViewportChange:N,itemRefCallback:F,selectedItem:A,onItemLeave:M,itemTextRefCallback:b,focusSelectedItem:ge,selectedItemText:L,position:n,isPositioned:W,searchRef:we},v.createElement(vd,{as:ii,allowPinchZoom:!0},v.createElement(fd,{asChild:!0,trapped:w.open,onMountAutoFocus:H=>{H.preventDefault()},onUnmountAutoFocus:Ee(i,H=>{var q;(q=w.trigger)===null||q===void 0||q.focus({preventScroll:!0}),H.preventDefault()})},v.createElement(lu,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:a,onFocusOutside:H=>H.preventDefault(),onDismiss:()=>w.onOpenChange(!1)},v.createElement(T,de({role:"listbox",id:w.contentId,"data-state":w.open?"open":"closed",dir:w.dir,onContextMenu:H=>H.preventDefault()},x,B,{onPlaced:()=>Y(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:Ee(x.onKeyDown,H=>{const q=H.ctrlKey||H.altKey||H.metaKey;if(H.key==="Tab"&&H.preventDefault(),!q&&H.key.length===1&&Q(H.key),["ArrowUp","ArrowDown","Home","End"].includes(H.key)){let K=U().filter(ve=>!ve.disabled).map(ve=>ve.ref.current);if(["ArrowUp","End"].includes(H.key)&&(K=K.slice().reverse()),["ArrowUp","ArrowDown"].includes(H.key)){const ve=H.target,pe=K.indexOf(ve);K=K.slice(pe+1)}setTimeout(()=>ye(K)),H.preventDefault()}})}))))))}),dC=v.forwardRef((e,t)=>{const{__scopeSelect:r,onPlaced:n,...i}=e,o=pi(uo,r),a=gi(uo,r),[s,l]=v.useState(null),[u,c]=v.useState(null),f=He(t,S=>c(S)),d=mu(r),h=v.useRef(!1),m=v.useRef(!0),{viewport:p,selectedItem:g,selectedItemText:x,focusSelectedItem:w}=a,y=v.useCallback(()=>{if(o.trigger&&o.valueNode&&s&&u&&p&&g&&x){const S=o.trigger.getBoundingClientRect(),A=u.getBoundingClientRect(),R=o.valueNode.getBoundingClientRect(),L=x.getBoundingClientRect();if(o.dir!=="rtl"){const ve=L.left-A.left,pe=R.left-ve,De=S.left-pe,_e=S.width+De,je=Math.max(_e,A.width),Re=window.innerWidth-Ur,ce=Ip(pe,[Ur,Re-je]);s.style.minWidth=_e+"px",s.style.left=ce+"px"}else{const ve=A.right-L.right,pe=window.innerWidth-R.right-ve,De=window.innerWidth-S.right-pe,_e=S.width+De,je=Math.max(_e,A.width),Re=window.innerWidth-Ur,ce=Ip(pe,[Ur,Re-je]);s.style.minWidth=_e+"px",s.style.right=ce+"px"}const V=d(),U=window.innerHeight-Ur*2,W=p.scrollHeight,Y=window.getComputedStyle(u),re=parseInt(Y.borderTopWidth,10),ye=parseInt(Y.paddingTop,10),ge=parseInt(Y.borderBottomWidth,10),Se=parseInt(Y.paddingBottom,10),ie=re+ye+W+Se+ge,we=Math.min(g.offsetHeight*5,ie),Q=window.getComputedStyle(p),F=parseInt(Q.paddingTop,10),M=parseInt(Q.paddingBottom,10),b=S.top+S.height/2-Ur,T=U-b,B=g.offsetHeight/2,H=g.offsetTop+B,q=re+ye+H,ee=ie-q;if(q<=b){const ve=g===V[V.length-1].ref.current;s.style.bottom="0px";const pe=u.clientHeight-p.offsetTop-p.offsetHeight,De=Math.max(T,B+(ve?M:0)+pe+ge),_e=q+De;s.style.height=_e+"px"}else{const ve=g===V[0].ref.current;s.style.top="0px";const De=Math.max(b,re+p.offsetTop+(ve?F:0)+B)+ee;s.style.height=De+"px",p.scrollTop=q-b+p.offsetTop}s.style.margin=`${Ur}px 0`,s.style.minHeight=we+"px",s.style.maxHeight=U+"px",n==null||n(),requestAnimationFrame(()=>h.current=!0)}},[d,o.trigger,o.valueNode,s,u,p,g,x,o.dir,n]);xt(()=>y(),[y]);const[_,k]=v.useState();xt(()=>{u&&k(window.getComputedStyle(u).zIndex)},[u]);const N=v.useCallback(S=>{S&&m.current===!0&&(y(),w==null||w(),m.current=!1)},[y,w]);return v.createElement(hC,{scope:r,contentWrapper:s,shouldExpandOnScrollRef:h,onScrollButtonChange:N},v.createElement("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:_}},v.createElement(Ie.div,de({},i,{ref:f,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}}))))}),eg=v.forwardRef((e,t)=>{const{__scopeSelect:r,align:n="start",collisionPadding:i=Ur,...o}=e,a=xd(r);return v.createElement(Lv,de({},a,o,{ref:t,align:n,collisionPadding:i,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))}),[hC,wd]=Eo(uo,{}),tg="SelectViewport",pC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=gi(tg,r),o=wd(tg,r),a=He(t,i.onViewportChange),s=v.useRef(0);return v.createElement(v.Fragment,null,v.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),v.createElement(gu.Slot,{scope:r},v.createElement(Ie.div,de({"data-radix-select-viewport":"",role:"presentation"},n,{ref:a,style:{position:"relative",flex:1,overflow:"auto",...n.style},onScroll:Ee(n.onScroll,l=>{const u=l.currentTarget,{contentWrapper:c,shouldExpandOnScrollRef:f}=o;if(f!=null&&f.current&&c){const d=Math.abs(s.current-u.scrollTop);if(d>0){const h=window.innerHeight-Ur*2,m=parseFloat(c.style.minHeight),p=parseFloat(c.style.height),g=Math.max(m,p);if(g0?y:0,c.style.justifyContent="flex-end")}}}s.current=u.scrollTop})}))))}),gC="SelectGroup",[mC,vC]=Eo(gC),xC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=Xr();return v.createElement(mC,{scope:r,id:i},v.createElement(Ie.div,de({role:"group","aria-labelledby":i},n,{ref:t})))}),wC="SelectLabel",yC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=vC(wC,r);return v.createElement(Ie.div,de({id:i.id},n,{ref:t}))}),Uf="SelectItem",[EC,Yv]=Eo(Uf),_C=v.forwardRef((e,t)=>{const{__scopeSelect:r,value:n,disabled:i=!1,textValue:o,...a}=e,s=pi(Uf,r),l=gi(Uf,r),u=s.value===n,[c,f]=v.useState(o??""),[d,h]=v.useState(!1),m=He(t,x=>{var w;return(w=l.itemRefCallback)===null||w===void 0?void 0:w.call(l,x,n,i)}),p=Xr(),g=()=>{i||(s.onValueChange(n),s.onOpenChange(!1))};return v.createElement(EC,{scope:r,value:n,disabled:i,textId:p,isSelected:u,onItemTextChange:v.useCallback(x=>{f(w=>{var y;return w||((y=x==null?void 0:x.textContent)!==null&&y!==void 0?y:"").trim()})},[])},v.createElement(gu.ItemSlot,{scope:r,value:n,disabled:i,textValue:c},v.createElement(Ie.div,de({role:"option","aria-labelledby":p,"data-highlighted":d?"":void 0,"aria-selected":u&&d,"data-state":u?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1},a,{ref:m,onFocus:Ee(a.onFocus,()=>h(!0)),onBlur:Ee(a.onBlur,()=>h(!1)),onPointerUp:Ee(a.onPointerUp,g),onPointerMove:Ee(a.onPointerMove,x=>{if(i){var w;(w=l.onItemLeave)===null||w===void 0||w.call(l)}else x.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Ee(a.onPointerLeave,x=>{if(x.currentTarget===document.activeElement){var w;(w=l.onItemLeave)===null||w===void 0||w.call(l)}}),onKeyDown:Ee(a.onKeyDown,x=>{var w;((w=l.searchRef)===null||w===void 0?void 0:w.current)!==""&&x.key===" "||(ZT.includes(x.key)&&g(),x.key===" "&&x.preventDefault())})}))))}),Cs="SelectItemText",SC=v.forwardRef((e,t)=>{const{__scopeSelect:r,className:n,style:i,...o}=e,a=pi(Cs,r),s=gi(Cs,r),l=Yv(Cs,r),u=rC(Cs,r),[c,f]=v.useState(null),d=He(t,x=>f(x),l.onItemTextChange,x=>{var w;return(w=s.itemTextRefCallback)===null||w===void 0?void 0:w.call(s,x,l.value,l.disabled)}),h=c==null?void 0:c.textContent,m=v.useMemo(()=>v.createElement("option",{key:l.value,value:l.value,disabled:l.disabled},h),[l.disabled,l.value,h]),{onNativeOptionAdd:p,onNativeOptionRemove:g}=u;return xt(()=>(p(m),()=>g(m)),[p,g,m]),v.createElement(v.Fragment,null,v.createElement(Ie.span,de({id:l.textId},o,{ref:d})),l.isSelected&&a.valueNode&&!a.valueNodeHasChildren?Jr.createPortal(o.children,a.valueNode):null)}),TC="SelectItemIndicator",CC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e;return Yv(TC,r).isSelected?v.createElement(Ie.span,de({"aria-hidden":!0},n,{ref:t})):null}),rg="SelectScrollUpButton",AC=v.forwardRef((e,t)=>{const r=gi(rg,e.__scopeSelect),n=wd(rg,e.__scopeSelect),[i,o]=v.useState(!1),a=He(t,n.onScrollButtonChange);return xt(()=>{if(r.viewport&&r.isPositioned){let u=function(){const c=l.scrollTop>0;o(c)};var s=u;const l=r.viewport;return u(),l.addEventListener("scroll",u),()=>l.removeEventListener("scroll",u)}},[r.viewport,r.isPositioned]),i?v.createElement(qv,de({},e,{ref:a,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=r;s&&l&&(s.scrollTop=s.scrollTop-l.offsetHeight)}})):null}),ng="SelectScrollDownButton",RC=v.forwardRef((e,t)=>{const r=gi(ng,e.__scopeSelect),n=wd(ng,e.__scopeSelect),[i,o]=v.useState(!1),a=He(t,n.onScrollButtonChange);return xt(()=>{if(r.viewport&&r.isPositioned){let u=function(){const c=l.scrollHeight-l.clientHeight,f=Math.ceil(l.scrollTop)l.removeEventListener("scroll",u)}},[r.viewport,r.isPositioned]),i?v.createElement(qv,de({},e,{ref:a,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=r;s&&l&&(s.scrollTop=s.scrollTop+l.offsetHeight)}})):null}),qv=v.forwardRef((e,t)=>{const{__scopeSelect:r,onAutoScroll:n,...i}=e,o=gi("SelectScrollButton",r),a=v.useRef(null),s=mu(r),l=v.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return v.useEffect(()=>()=>l(),[l]),xt(()=>{var u;const c=s().find(f=>f.ref.current===document.activeElement);c==null||(u=c.ref.current)===null||u===void 0||u.scrollIntoView({block:"nearest"})},[s]),v.createElement(Ie.div,de({"aria-hidden":!0},i,{ref:t,style:{flexShrink:0,...i.style},onPointerMove:Ee(i.onPointerMove,()=>{var u;(u=o.onItemLeave)===null||u===void 0||u.call(o),a.current===null&&(a.current=window.setInterval(n,50))}),onPointerLeave:Ee(i.onPointerLeave,()=>{l()})}))}),Qv=v.forwardRef((e,t)=>{const{value:r,...n}=e,i=v.useRef(null),o=He(t,i),a=hT(r);return v.useEffect(()=>{const s=i.current,l=window.HTMLSelectElement.prototype,c=Object.getOwnPropertyDescriptor(l,"value").set;if(a!==r&&c){const f=new Event("change",{bubbles:!0});c.call(s,r),s.dispatchEvent(f)}},[a,r]),v.createElement(gd,{asChild:!0},v.createElement("select",de({},n,{ref:o,defaultValue:r})))});Qv.displayName="BubbleSelect";function Zv(e){const t=Dt(e),r=v.useRef(""),n=v.useRef(0),i=v.useCallback(a=>{const s=r.current+a;t(s),function l(u){r.current=u,window.clearTimeout(n.current),u!==""&&(n.current=window.setTimeout(()=>l(""),1e3))}(s)},[t]),o=v.useCallback(()=>{r.current="",window.clearTimeout(n.current)},[]);return v.useEffect(()=>()=>window.clearTimeout(n.current),[]),[r,i,o]}function Jv(e,t,r){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=r?e.indexOf(r):-1;let a=OC(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==r));const l=a.find(u=>u.textValue.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}function OC(e,t){return e.map((r,n)=>e[(t+n)%e.length])}const FC=nC,DC=oC,PC=sC,IC=lC,bC=uC,kC=cC,$C=pC,_c=xC,ig=yC,NC=_C,MC=SC,LC=CC,BC=AC,UC=RC;function yd(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}var HC=["color"],VC=v.forwardRef(function(e,t){var r=e.color,n=r===void 0?"currentColor":r,i=yd(e,HC);return v.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i,{ref:t}),v.createElement("path",{d:"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z",fill:n,fillRule:"evenodd",clipRule:"evenodd"}))}),WC=["color"],Hf=v.forwardRef(function(e,t){var r=e.color,n=r===void 0?"currentColor":r,i=yd(e,WC);return v.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i,{ref:t}),v.createElement("path",{d:"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z",fill:n,fillRule:"evenodd",clipRule:"evenodd"}))}),zC=["color"],GC=v.forwardRef(function(e,t){var r=e.color,n=r===void 0?"currentColor":r,i=yd(e,zC);return v.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i,{ref:t}),v.createElement("path",{d:"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z",fill:n,fillRule:"evenodd",clipRule:"evenodd"}))});const Vi=({value:e,onChange:t,label:r="Select",placeholder:n="Select a fruit…",groups:i,labelType:o="col"})=>{const a=i.length===1;return Te(FC,{value:e,onValueChange:t,children:[Te(_c,{className:bt("flex gap-1",{"flex-row items-center gap-2":o==="row","flex-col":o==="col"}),children:[Z(ig,{className:"whitespace-nowrap",children:r}),Te(DC,{className:"justify-between bg-white text-black dark:text-white dark:bg-grey-900 whitespace-nowrap h-[36px] border-[1.5px] border-grey-700 rounded p-3 inline-flex items-center leading-none gap-[5px] shadow-[0_2px_10px] shadow-black/10 focus:shadow-[0_0_0_2px] focus:shadow-black data-[placeholder]:text-white outline-none","aria-label":r,children:[Z(PC,{placeholder:n}),Z(IC,{children:Z(Hf,{})})]})]}),Z(bC,{children:Te(kC,{className:"z-50 bg-white/80 dark:bg-grey-900/80 backdrop-filter backdrop-blur overflow-hidden border-[1.5px] border-grey-700 rounded p-3 shadow-[0px_10px_38px_-10px_rgba(22,_23,_24,_0.35),0px_10px_20px_-15px_rgba(22,_23,_24,_0.2)]",children:[Z(BC,{className:"flex items-center justify-center h-[25px] cursor-default dark:text-white text-black",children:Z(GC,{})}),Z($C,{className:"p-[5px]",children:a?Z(_c,{children:i[0].items.map(s=>Z(og,{value:s.value,disabled:s.disabled,children:s.label}))}):i.map((s,l)=>Te(_c,{children:[Z(ig,{className:"text-xs leading-[25px]",children:s.label}),s.items.map(u=>Z(og,{value:u.value,disabled:u.disabled,children:u.label},u.value))]},s.label))}),Z(UC,{className:"flex items-center justify-center h-[25px] cursor-default dark:text-white text-black",children:Z(Hf,{})})]})})]})},og=v.forwardRef(({children:e,className:t,...r},n)=>Te(NC,{className:bt("text-[13px] leading-none rounded-[3px] flex items-center h-[25px] pr-[35px] pl-[25px] relative select-none data-[disabled]:text-grey-400 data-[disabled]:pointer-events-none data-[highlighted]:outline-none data-[highlighted]:bg-grey-600 data-[highlighted]:text-white text-black dark:text-white",t),...r,ref:n,children:[Z(MC,{children:e}),Z(LC,{className:"absolute left-0 w-[25px] inline-flex items-center justify-center",children:Z(VC,{})})]}));/** +`)},KT=0,Oi=[];function YT(e){var t=v.useRef([]),r=v.useRef([0,0]),n=v.useRef(),i=v.useState(KT++)[0],o=v.useState(function(){return Wv()})[0],a=v.useRef(e);v.useEffect(function(){a.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var p=vT([e.lockRef.current],(e.shards||[]).map(Jp),!0).filter(Boolean);return p.forEach(function(g){return g.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),p.forEach(function(g){return g.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var s=v.useCallback(function(p,g){if("touches"in p&&p.touches.length===2)return!a.current.allowPinchZoom;var x=Ts(p),w=r.current,y="deltaX"in p?p.deltaX:w[0]-x[0],_="deltaY"in p?p.deltaY:w[1]-x[1],k,N=p.target,S=Math.abs(y)>Math.abs(_)?"h":"v";if("touches"in p&&S==="h"&&N.type==="range")return!1;var A=Qp(S,N);if(!A)return!0;if(A?k=S:(k=S==="v"?"h":"v",A=Qp(S,N)),!A)return!1;if(!n.current&&"changedTouches"in p&&(y||_)&&(n.current=k),!k)return!0;var R=n.current||k;return GT(R,g,p,R==="h"?y:_,!0)},[]),l=v.useCallback(function(p){var g=p;if(!(!Oi.length||Oi[Oi.length-1]!==o)){var x="deltaY"in g?Zp(g):Ts(g),w=t.current.filter(function(k){return k.name===g.type&&k.target===g.target&&jT(k.delta,x)})[0];if(w&&w.should){g.cancelable&&g.preventDefault();return}if(!w){var y=(a.current.shards||[]).map(Jp).filter(Boolean).filter(function(k){return k.contains(g.target)}),_=y.length>0?s(g,y[0]):!a.current.noIsolation;_&&g.cancelable&&g.preventDefault()}}},[]),u=v.useCallback(function(p,g,x,w){var y={name:p,delta:g,target:x,should:w};t.current.push(y),setTimeout(function(){t.current=t.current.filter(function(_){return _!==y})},1)},[]),c=v.useCallback(function(p){r.current=Ts(p),n.current=void 0},[]),f=v.useCallback(function(p){u(p.type,Zp(p),p.target,s(p,e.lockRef.current))},[]),d=v.useCallback(function(p){u(p.type,Ts(p),p.target,s(p,e.lockRef.current))},[]);v.useEffect(function(){return Oi.push(o),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:d}),document.addEventListener("wheel",l,Ri),document.addEventListener("touchmove",l,Ri),document.addEventListener("touchstart",c,Ri),function(){Oi=Oi.filter(function(p){return p!==o}),document.removeEventListener("wheel",l,Ri),document.removeEventListener("touchmove",l,Ri),document.removeEventListener("touchstart",c,Ri)}},[]);var h=e.removeScrollBar,m=e.inert;return v.createElement(v.Fragment,null,m?v.createElement(o,{styles:XT(i)}):null,h?v.createElement(LT,{gapMode:"margin"}):null)}const qT=AT(Vv,YT);var Xv=v.forwardRef(function(e,t){return v.createElement(hu,Ar({},e,{ref:t,sideCar:qT}))});Xv.classNames=hu.classNames;const vd=Xv,QT=[" ","Enter","ArrowUp","ArrowDown"],ZT=[" ","Enter"],pu="Select",[gu,mu,JT]=su(pu),[Eo,Bk]=on(pu,[JT,fu]),xd=fu(),[eC,pi]=Eo(pu),[tC,rC]=Eo(pu),nC=e=>{const{__scopeSelect:t,children:r,open:n,defaultOpen:i,onOpenChange:o,value:a,defaultValue:s,onValueChange:l,dir:u,name:c,autoComplete:f,disabled:d,required:h}=e,m=xd(t),[p,g]=v.useState(null),[x,w]=v.useState(null),[y,_]=v.useState(!1),k=ld(u),[N=!1,S]=lo({prop:n,defaultProp:i,onChange:o}),[A,R]=lo({prop:a,defaultProp:s,onChange:l}),L=v.useRef(null),V=p?!!p.closest("form"):!0,[U,W]=v.useState(new Set),Y=Array.from(U).map(re=>re.props.value).join(";");return v.createElement(Nv,m,v.createElement(eC,{required:h,scope:t,trigger:p,onTriggerChange:g,valueNode:x,onValueNodeChange:w,valueNodeHasChildren:y,onValueNodeHasChildrenChange:_,contentId:Xr(),value:A,onValueChange:R,open:N,onOpenChange:S,dir:k,triggerPointerDownPosRef:L,disabled:d},v.createElement(gu.Provider,{scope:t},v.createElement(tC,{scope:e.__scopeSelect,onNativeOptionAdd:v.useCallback(re=>{W(ye=>new Set(ye).add(re))},[]),onNativeOptionRemove:v.useCallback(re=>{W(ye=>{const ge=new Set(ye);return ge.delete(re),ge})},[])},r)),V?v.createElement(Qv,{key:Y,"aria-hidden":!0,required:h,tabIndex:-1,name:c,autoComplete:f,value:A,onChange:re=>R(re.target.value),disabled:d},A===void 0?v.createElement("option",{value:""}):null,Array.from(U)):null))},iC="SelectTrigger",oC=v.forwardRef((e,t)=>{const{__scopeSelect:r,disabled:n=!1,...i}=e,o=xd(r),a=pi(iC,r),s=a.disabled||n,l=He(t,a.onTriggerChange),u=mu(r),[c,f,d]=Zv(m=>{const p=u().filter(w=>!w.disabled),g=p.find(w=>w.value===a.value),x=Jv(p,m,g);x!==void 0&&a.onValueChange(x.value)}),h=()=>{s||(a.onOpenChange(!0),d())};return v.createElement(Mv,de({asChild:!0},o),v.createElement(Ie.button,de({type:"button",role:"combobox","aria-controls":a.contentId,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":a.value===void 0?"":void 0},i,{ref:l,onClick:Ee(i.onClick,m=>{m.currentTarget.focus()}),onPointerDown:Ee(i.onPointerDown,m=>{const p=m.target;p.hasPointerCapture(m.pointerId)&&p.releasePointerCapture(m.pointerId),m.button===0&&m.ctrlKey===!1&&(h(),a.triggerPointerDownPosRef.current={x:Math.round(m.pageX),y:Math.round(m.pageY)},m.preventDefault())}),onKeyDown:Ee(i.onKeyDown,m=>{const p=c.current!=="";!(m.ctrlKey||m.altKey||m.metaKey)&&m.key.length===1&&f(m.key),!(p&&m.key===" ")&&QT.includes(m.key)&&(h(),m.preventDefault())})})))}),aC="SelectValue",sC=v.forwardRef((e,t)=>{const{__scopeSelect:r,className:n,style:i,children:o,placeholder:a,...s}=e,l=pi(aC,r),{onValueNodeHasChildrenChange:u}=l,c=o!==void 0,f=He(t,l.onValueNodeChange);return xt(()=>{u(c)},[u,c]),v.createElement(Ie.span,de({},s,{ref:f,style:{pointerEvents:"none"}}),l.value===void 0&&a!==void 0?a:o)}),lC=v.forwardRef((e,t)=>{const{__scopeSelect:r,children:n,...i}=e;return v.createElement(Ie.span,de({"aria-hidden":!0},i,{ref:t}),n||"▼")}),uC=e=>v.createElement(du,de({asChild:!0},e)),uo="SelectContent",cC=v.forwardRef((e,t)=>{const r=pi(uo,e.__scopeSelect),[n,i]=v.useState();if(xt(()=>{i(new DocumentFragment)},[]),!r.open){const o=n;return o?Jr.createPortal(v.createElement(Kv,{scope:e.__scopeSelect},v.createElement(gu.Slot,{scope:e.__scopeSelect},v.createElement("div",null,e.children))),o):null}return v.createElement(fC,de({},e,{ref:t}))}),Ur=10,[Kv,gi]=Eo(uo),fC=v.forwardRef((e,t)=>{const{__scopeSelect:r,position:n="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:o,onPointerDownOutside:a,side:s,sideOffset:l,align:u,alignOffset:c,arrowPadding:f,collisionBoundary:d,collisionPadding:h,sticky:m,hideWhenDetached:p,avoidCollisions:g,...x}=e,w=pi(uo,r),[y,_]=v.useState(null),[k,N]=v.useState(null),S=He(t,H=>_(H)),[A,R]=v.useState(null),[L,V]=v.useState(null),U=mu(r),[W,Y]=v.useState(!1),re=v.useRef(!1);v.useEffect(()=>{if(y)return md(y)},[y]),cd();const ye=v.useCallback(H=>{const[q,...ee]=U().map(pe=>pe.ref.current),[K]=ee.slice(-1),ve=document.activeElement;for(const pe of H)if(pe===ve||(pe==null||pe.scrollIntoView({block:"nearest"}),pe===q&&k&&(k.scrollTop=0),pe===K&&k&&(k.scrollTop=k.scrollHeight),pe==null||pe.focus(),document.activeElement!==ve))return},[U,k]),ge=v.useCallback(()=>ye([A,y]),[ye,A,y]);v.useEffect(()=>{W&&ge()},[W,ge]);const{onOpenChange:Se,triggerPointerDownPosRef:ie}=w;v.useEffect(()=>{if(y){let H={x:0,y:0};const q=K=>{var ve,pe,De,_e;H={x:Math.abs(Math.round(K.pageX)-((ve=(pe=ie.current)===null||pe===void 0?void 0:pe.x)!==null&&ve!==void 0?ve:0)),y:Math.abs(Math.round(K.pageY)-((De=(_e=ie.current)===null||_e===void 0?void 0:_e.y)!==null&&De!==void 0?De:0))}},ee=K=>{H.x<=10&&H.y<=10?K.preventDefault():y.contains(K.target)||Se(!1),document.removeEventListener("pointermove",q),ie.current=null};return ie.current!==null&&(document.addEventListener("pointermove",q),document.addEventListener("pointerup",ee,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",q),document.removeEventListener("pointerup",ee,{capture:!0})}}},[y,Se,ie]),v.useEffect(()=>{const H=()=>Se(!1);return window.addEventListener("blur",H),window.addEventListener("resize",H),()=>{window.removeEventListener("blur",H),window.removeEventListener("resize",H)}},[Se]);const[we,Q]=Zv(H=>{const q=U().filter(ve=>!ve.disabled),ee=q.find(ve=>ve.ref.current===document.activeElement),K=Jv(q,H,ee);K&&setTimeout(()=>K.ref.current.focus())}),F=v.useCallback((H,q,ee)=>{const K=!re.current&&!ee;(w.value!==void 0&&w.value===q||K)&&(R(H),K&&(re.current=!0))},[w.value]),M=v.useCallback(()=>y==null?void 0:y.focus(),[y]),b=v.useCallback((H,q,ee)=>{const K=!re.current&&!ee;(w.value!==void 0&&w.value===q||K)&&V(H)},[w.value]),T=n==="popper"?eg:dC,B=T===eg?{side:s,sideOffset:l,align:u,alignOffset:c,arrowPadding:f,collisionBoundary:d,collisionPadding:h,sticky:m,hideWhenDetached:p,avoidCollisions:g}:{};return v.createElement(Kv,{scope:r,content:y,viewport:k,onViewportChange:N,itemRefCallback:F,selectedItem:A,onItemLeave:M,itemTextRefCallback:b,focusSelectedItem:ge,selectedItemText:L,position:n,isPositioned:W,searchRef:we},v.createElement(vd,{as:ii,allowPinchZoom:!0},v.createElement(fd,{asChild:!0,trapped:w.open,onMountAutoFocus:H=>{H.preventDefault()},onUnmountAutoFocus:Ee(i,H=>{var q;(q=w.trigger)===null||q===void 0||q.focus({preventScroll:!0}),H.preventDefault()})},v.createElement(lu,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:a,onFocusOutside:H=>H.preventDefault(),onDismiss:()=>w.onOpenChange(!1)},v.createElement(T,de({role:"listbox",id:w.contentId,"data-state":w.open?"open":"closed",dir:w.dir,onContextMenu:H=>H.preventDefault()},x,B,{onPlaced:()=>Y(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:Ee(x.onKeyDown,H=>{const q=H.ctrlKey||H.altKey||H.metaKey;if(H.key==="Tab"&&H.preventDefault(),!q&&H.key.length===1&&Q(H.key),["ArrowUp","ArrowDown","Home","End"].includes(H.key)){let K=U().filter(ve=>!ve.disabled).map(ve=>ve.ref.current);if(["ArrowUp","End"].includes(H.key)&&(K=K.slice().reverse()),["ArrowUp","ArrowDown"].includes(H.key)){const ve=H.target,pe=K.indexOf(ve);K=K.slice(pe+1)}setTimeout(()=>ye(K)),H.preventDefault()}})}))))))}),dC=v.forwardRef((e,t)=>{const{__scopeSelect:r,onPlaced:n,...i}=e,o=pi(uo,r),a=gi(uo,r),[s,l]=v.useState(null),[u,c]=v.useState(null),f=He(t,S=>c(S)),d=mu(r),h=v.useRef(!1),m=v.useRef(!0),{viewport:p,selectedItem:g,selectedItemText:x,focusSelectedItem:w}=a,y=v.useCallback(()=>{if(o.trigger&&o.valueNode&&s&&u&&p&&g&&x){const S=o.trigger.getBoundingClientRect(),A=u.getBoundingClientRect(),R=o.valueNode.getBoundingClientRect(),L=x.getBoundingClientRect();if(o.dir!=="rtl"){const ve=L.left-A.left,pe=R.left-ve,De=S.left-pe,_e=S.width+De,je=Math.max(_e,A.width),Re=window.innerWidth-Ur,ce=Ip(pe,[Ur,Re-je]);s.style.minWidth=_e+"px",s.style.left=ce+"px"}else{const ve=A.right-L.right,pe=window.innerWidth-R.right-ve,De=window.innerWidth-S.right-pe,_e=S.width+De,je=Math.max(_e,A.width),Re=window.innerWidth-Ur,ce=Ip(pe,[Ur,Re-je]);s.style.minWidth=_e+"px",s.style.right=ce+"px"}const V=d(),U=window.innerHeight-Ur*2,W=p.scrollHeight,Y=window.getComputedStyle(u),re=parseInt(Y.borderTopWidth,10),ye=parseInt(Y.paddingTop,10),ge=parseInt(Y.borderBottomWidth,10),Se=parseInt(Y.paddingBottom,10),ie=re+ye+W+Se+ge,we=Math.min(g.offsetHeight*5,ie),Q=window.getComputedStyle(p),F=parseInt(Q.paddingTop,10),M=parseInt(Q.paddingBottom,10),b=S.top+S.height/2-Ur,T=U-b,B=g.offsetHeight/2,H=g.offsetTop+B,q=re+ye+H,ee=ie-q;if(q<=b){const ve=g===V[V.length-1].ref.current;s.style.bottom="0px";const pe=u.clientHeight-p.offsetTop-p.offsetHeight,De=Math.max(T,B+(ve?M:0)+pe+ge),_e=q+De;s.style.height=_e+"px"}else{const ve=g===V[0].ref.current;s.style.top="0px";const De=Math.max(b,re+p.offsetTop+(ve?F:0)+B)+ee;s.style.height=De+"px",p.scrollTop=q-b+p.offsetTop}s.style.margin=`${Ur}px 0`,s.style.minHeight=we+"px",s.style.maxHeight=U+"px",n==null||n(),requestAnimationFrame(()=>h.current=!0)}},[d,o.trigger,o.valueNode,s,u,p,g,x,o.dir,n]);xt(()=>y(),[y]);const[_,k]=v.useState();xt(()=>{u&&k(window.getComputedStyle(u).zIndex)},[u]);const N=v.useCallback(S=>{S&&m.current===!0&&(y(),w==null||w(),m.current=!1)},[y,w]);return v.createElement(hC,{scope:r,contentWrapper:s,shouldExpandOnScrollRef:h,onScrollButtonChange:N},v.createElement("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:_}},v.createElement(Ie.div,de({},i,{ref:f,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}}))))}),eg=v.forwardRef((e,t)=>{const{__scopeSelect:r,align:n="start",collisionPadding:i=Ur,...o}=e,a=xd(r);return v.createElement(Lv,de({},a,o,{ref:t,align:n,collisionPadding:i,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))}),[hC,wd]=Eo(uo,{}),tg="SelectViewport",pC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=gi(tg,r),o=wd(tg,r),a=He(t,i.onViewportChange),s=v.useRef(0);return v.createElement(v.Fragment,null,v.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),v.createElement(gu.Slot,{scope:r},v.createElement(Ie.div,de({"data-radix-select-viewport":"",role:"presentation"},n,{ref:a,style:{position:"relative",flex:1,overflow:"auto",...n.style},onScroll:Ee(n.onScroll,l=>{const u=l.currentTarget,{contentWrapper:c,shouldExpandOnScrollRef:f}=o;if(f!=null&&f.current&&c){const d=Math.abs(s.current-u.scrollTop);if(d>0){const h=window.innerHeight-Ur*2,m=parseFloat(c.style.minHeight),p=parseFloat(c.style.height),g=Math.max(m,p);if(g0?y:0,c.style.justifyContent="flex-end")}}}s.current=u.scrollTop})}))))}),gC="SelectGroup",[mC,vC]=Eo(gC),xC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=Xr();return v.createElement(mC,{scope:r,id:i},v.createElement(Ie.div,de({role:"group","aria-labelledby":i},n,{ref:t})))}),wC="SelectLabel",yC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=vC(wC,r);return v.createElement(Ie.div,de({id:i.id},n,{ref:t}))}),Uf="SelectItem",[EC,Yv]=Eo(Uf),_C=v.forwardRef((e,t)=>{const{__scopeSelect:r,value:n,disabled:i=!1,textValue:o,...a}=e,s=pi(Uf,r),l=gi(Uf,r),u=s.value===n,[c,f]=v.useState(o??""),[d,h]=v.useState(!1),m=He(t,x=>{var w;return(w=l.itemRefCallback)===null||w===void 0?void 0:w.call(l,x,n,i)}),p=Xr(),g=()=>{i||(s.onValueChange(n),s.onOpenChange(!1))};return v.createElement(EC,{scope:r,value:n,disabled:i,textId:p,isSelected:u,onItemTextChange:v.useCallback(x=>{f(w=>{var y;return w||((y=x==null?void 0:x.textContent)!==null&&y!==void 0?y:"").trim()})},[])},v.createElement(gu.ItemSlot,{scope:r,value:n,disabled:i,textValue:c},v.createElement(Ie.div,de({role:"option","aria-labelledby":p,"data-highlighted":d?"":void 0,"aria-selected":u&&d,"data-state":u?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1},a,{ref:m,onFocus:Ee(a.onFocus,()=>h(!0)),onBlur:Ee(a.onBlur,()=>h(!1)),onPointerUp:Ee(a.onPointerUp,g),onPointerMove:Ee(a.onPointerMove,x=>{if(i){var w;(w=l.onItemLeave)===null||w===void 0||w.call(l)}else x.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Ee(a.onPointerLeave,x=>{if(x.currentTarget===document.activeElement){var w;(w=l.onItemLeave)===null||w===void 0||w.call(l)}}),onKeyDown:Ee(a.onKeyDown,x=>{var w;((w=l.searchRef)===null||w===void 0?void 0:w.current)!==""&&x.key===" "||(ZT.includes(x.key)&&g(),x.key===" "&&x.preventDefault())})}))))}),Cs="SelectItemText",SC=v.forwardRef((e,t)=>{const{__scopeSelect:r,className:n,style:i,...o}=e,a=pi(Cs,r),s=gi(Cs,r),l=Yv(Cs,r),u=rC(Cs,r),[c,f]=v.useState(null),d=He(t,x=>f(x),l.onItemTextChange,x=>{var w;return(w=s.itemTextRefCallback)===null||w===void 0?void 0:w.call(s,x,l.value,l.disabled)}),h=c==null?void 0:c.textContent,m=v.useMemo(()=>v.createElement("option",{key:l.value,value:l.value,disabled:l.disabled},h),[l.disabled,l.value,h]),{onNativeOptionAdd:p,onNativeOptionRemove:g}=u;return xt(()=>(p(m),()=>g(m)),[p,g,m]),v.createElement(v.Fragment,null,v.createElement(Ie.span,de({id:l.textId},o,{ref:d})),l.isSelected&&a.valueNode&&!a.valueNodeHasChildren?Jr.createPortal(o.children,a.valueNode):null)}),TC="SelectItemIndicator",CC=v.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e;return Yv(TC,r).isSelected?v.createElement(Ie.span,de({"aria-hidden":!0},n,{ref:t})):null}),rg="SelectScrollUpButton",AC=v.forwardRef((e,t)=>{const r=gi(rg,e.__scopeSelect),n=wd(rg,e.__scopeSelect),[i,o]=v.useState(!1),a=He(t,n.onScrollButtonChange);return xt(()=>{if(r.viewport&&r.isPositioned){let u=function(){const c=l.scrollTop>0;o(c)};var s=u;const l=r.viewport;return u(),l.addEventListener("scroll",u),()=>l.removeEventListener("scroll",u)}},[r.viewport,r.isPositioned]),i?v.createElement(qv,de({},e,{ref:a,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=r;s&&l&&(s.scrollTop=s.scrollTop-l.offsetHeight)}})):null}),ng="SelectScrollDownButton",RC=v.forwardRef((e,t)=>{const r=gi(ng,e.__scopeSelect),n=wd(ng,e.__scopeSelect),[i,o]=v.useState(!1),a=He(t,n.onScrollButtonChange);return xt(()=>{if(r.viewport&&r.isPositioned){let u=function(){const c=l.scrollHeight-l.clientHeight,f=Math.ceil(l.scrollTop)l.removeEventListener("scroll",u)}},[r.viewport,r.isPositioned]),i?v.createElement(qv,de({},e,{ref:a,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=r;s&&l&&(s.scrollTop=s.scrollTop+l.offsetHeight)}})):null}),qv=v.forwardRef((e,t)=>{const{__scopeSelect:r,onAutoScroll:n,...i}=e,o=gi("SelectScrollButton",r),a=v.useRef(null),s=mu(r),l=v.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return v.useEffect(()=>()=>l(),[l]),xt(()=>{var u;const c=s().find(f=>f.ref.current===document.activeElement);c==null||(u=c.ref.current)===null||u===void 0||u.scrollIntoView({block:"nearest"})},[s]),v.createElement(Ie.div,de({"aria-hidden":!0},i,{ref:t,style:{flexShrink:0,...i.style},onPointerMove:Ee(i.onPointerMove,()=>{var u;(u=o.onItemLeave)===null||u===void 0||u.call(o),a.current===null&&(a.current=window.setInterval(n,50))}),onPointerLeave:Ee(i.onPointerLeave,()=>{l()})}))}),Qv=v.forwardRef((e,t)=>{const{value:r,...n}=e,i=v.useRef(null),o=He(t,i),a=hT(r);return v.useEffect(()=>{const s=i.current,l=window.HTMLSelectElement.prototype,c=Object.getOwnPropertyDescriptor(l,"value").set;if(a!==r&&c){const f=new Event("change",{bubbles:!0});c.call(s,r),s.dispatchEvent(f)}},[a,r]),v.createElement(gd,{asChild:!0},v.createElement("select",de({},n,{ref:o,defaultValue:r})))});Qv.displayName="BubbleSelect";function Zv(e){const t=Dt(e),r=v.useRef(""),n=v.useRef(0),i=v.useCallback(a=>{const s=r.current+a;t(s),function l(u){r.current=u,window.clearTimeout(n.current),u!==""&&(n.current=window.setTimeout(()=>l(""),1e3))}(s)},[t]),o=v.useCallback(()=>{r.current="",window.clearTimeout(n.current)},[]);return v.useEffect(()=>()=>window.clearTimeout(n.current),[]),[r,i,o]}function Jv(e,t,r){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=r?e.indexOf(r):-1;let a=OC(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==r));const l=a.find(u=>u.textValue.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}function OC(e,t){return e.map((r,n)=>e[(t+n)%e.length])}const FC=nC,DC=oC,PC=sC,IC=lC,bC=uC,kC=cC,$C=pC,_c=xC,ig=yC,NC=_C,MC=SC,LC=CC,BC=AC,UC=RC;function yd(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}var HC=["color"],VC=v.forwardRef(function(e,t){var r=e.color,n=r===void 0?"currentColor":r,i=yd(e,HC);return v.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i,{ref:t}),v.createElement("path",{d:"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z",fill:n,fillRule:"evenodd",clipRule:"evenodd"}))}),WC=["color"],Hf=v.forwardRef(function(e,t){var r=e.color,n=r===void 0?"currentColor":r,i=yd(e,WC);return v.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i,{ref:t}),v.createElement("path",{d:"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z",fill:n,fillRule:"evenodd",clipRule:"evenodd"}))}),zC=["color"],GC=v.forwardRef(function(e,t){var r=e.color,n=r===void 0?"currentColor":r,i=yd(e,zC);return v.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i,{ref:t}),v.createElement("path",{d:"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z",fill:n,fillRule:"evenodd",clipRule:"evenodd"}))});const Vi=({value:e,onChange:t,label:r="Select",placeholder:n="Select a fruit…",groups:i,labelType:o="col"})=>{const a=i.length===1;return Te(FC,{value:e,onValueChange:t,children:[Te(_c,{className:bt("flex gap-1",{"flex-row items-center gap-2":o==="row","flex-col":o==="col"}),children:[Z(ig,{className:"whitespace-nowrap",children:r}),Te(DC,{className:"justify-between bg-white text-black dark:text-white dark:bg-grey-900 whitespace-nowrap h-[36px] border-[1.5px] border-grey-700 rounded p-3 inline-flex items-center leading-none gap-[5px] shadow-[0_2px_10px] shadow-black/10 focus:shadow-[0_0_0_2px] focus:shadow-black data-[placeholder]:text-white outline-none","aria-label":r,children:[Z(PC,{placeholder:n}),Z(IC,{children:Z(Hf,{})})]})]}),Z(bC,{children:Te(kC,{className:"z-50 bg-white/80 dark:bg-grey-900/80 backdrop-filter backdrop-blur overflow-hidden border-[1.5px] border-grey-700 rounded p-3 shadow-[0px_10px_38px_-10px_rgba(22,_23,_24,_0.35),0px_10px_20px_-15px_rgba(22,_23,_24,_0.2)]",children:[Z(BC,{className:"flex items-center justify-center h-[25px] cursor-default dark:text-white text-black",children:Z(GC,{})}),Z($C,{className:"p-[5px]",children:a?Z(_c,{children:i[0].items.map(s=>Z(og,{value:s.value,disabled:s.disabled,children:s.label}))}):i.map((s,l)=>Te(_c,{children:[Z(ig,{className:"text-xs leading-[25px]",children:s.label}),s.items.map(u=>Z(og,{value:u.value,disabled:u.disabled,children:u.label},u.value))]},s.label))}),Z(UC,{className:"flex items-center justify-center h-[25px] cursor-default dark:text-white text-black",children:Z(Hf,{})})]})})]})},og=v.forwardRef(({children:e,className:t,...r},n)=>Te(NC,{className:bt("text-[13px] leading-none rounded-[3px] flex items-center h-[25px] pr-[35px] pl-[25px] relative select-none data-[disabled]:text-grey-400 data-[disabled]:pointer-events-none data-[highlighted]:outline-none data-[highlighted]:bg-grey-600 data-[highlighted]:text-white text-black dark:text-white",t),...r,ref:n,children:[Z(MC,{children:e}),Z(LC,{className:"absolute left-0 w-[25px] inline-flex items-center justify-center",children:Z(VC,{})})]}));/** * match-sorter-utils * * Copyright (c) TanStack @@ -289,10 +289,10 @@ `),l.push(` `),s.bookType=="fods"?l.push(""):l.push(""),l.join("")}}();function Fw(e,t){if(t.bookType=="fods")return Xg(e,t);var r=Td(),n="",i=[],o=[];return n="mimetype",Pe(r,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",Pe(r,n,Xg(e,t)),i.push([n,"text/xml"]),o.push([n,"ContentFile"]),n="styles.xml",Pe(r,n,vD(e,t)),i.push([n,"text/xml"]),o.push([n,"StylesFile"]),n="meta.xml",Pe(r,n,it+Wx()),i.push([n,"text/xml"]),o.push([n,"MetadataFile"]),n="manifest.rdf",Pe(r,n,F3(o)),i.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",Pe(r,n,R3(i)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Wl(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function xD(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):wr(Gr(e))}function wD(e,t){e:for(var r=0;r<=e.length-t.length;++r){for(var n=0;n>7,e[t+14]|=(n&127)<<1;for(var o=0;i>=1;++o,i/=256)e[t+o]=i&255;e[t+15]|=r>=0?0:128}function Ba(e,t){var r=t?t[0]:0,n=e[r]&127;e:if(e[r++]>=128&&(n|=(e[r]&127)<<7,e[r++]<128||(n|=(e[r]&127)<<14,e[r++]<128)||(n|=(e[r]&127)<<21,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,28),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,35),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,42),++r,e[r++]<128)))break e;return t&&(t[0]=r),n}function Ne(e){var t=new Uint8Array(7);t[0]=e&127;var r=1;e:if(e>127){if(t[r-1]|=128,t[r]=e>>7&127,++r,e<=16383||(t[r-1]|=128,t[r]=e>>14&127,++r,e<=2097151)||(t[r-1]|=128,t[r]=e>>21&127,++r,e<=268435455)||(t[r-1]|=128,t[r]=e/256>>>21&127,++r,e<=34359738367)||(t[r-1]|=128,t[r]=e/65536>>>21&127,++r,e<=4398046511103))break e;t[r-1]|=128,t[r]=e/16777216>>>21&127,++r}return t.slice(0,r)}function no(e){var t=0,r=e[t]&127;e:if(e[t++]>=128){if(r|=(e[t]&127)<<7,e[t++]<128||(r|=(e[t]&127)<<14,e[t++]<128)||(r|=(e[t]&127)<<21,e[t++]<128))break e;r|=(e[t]&127)<<28}return r}function ot(e){for(var t=[],r=[0];r[0]=128;);s=e.slice(l,r[0])}break;case 5:a=4,s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 1:a=8,s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 2:a=Ba(e,r),s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 3:case 4:default:throw new Error("PB Type ".concat(o," for Field ").concat(i," at offset ").concat(n))}var u={data:s,type:o};t[i]==null?t[i]=[u]:t[i].push(u)}return t}function dt(e){var t=[];return e.forEach(function(r,n){r.forEach(function(i){i.data&&(t.push(Ne(n*8+i.type)),i.type==2&&t.push(Ne(i.data.length)),t.push(i.data))})}),Mn(t)}function gr(e){for(var t,r=[],n=[0];n[0]>>0>0),r.push(a)}return r}function Di(e){var t=[];return e.forEach(function(r){var n=[];n[1]=[{data:Ne(r.id),type:0}],n[2]=[],r.merge!=null&&(n[3]=[{data:Ne(+!!r.merge),type:0}]);var i=[];r.messages.forEach(function(a){i.push(a.data),a.meta[3]=[{type:0,data:Ne(a.data.length)}],n[2].push({data:dt(a.meta),type:2})});var o=dt(n);t.push(Ne(o.length)),t.push(o),i.forEach(function(a){return t.push(a)})}),Mn(t)}function ED(e,t){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var r=[0],n=Ba(t,r),i=[];r[0]>2;if(a<60)++a;else{var s=a-59;a=t[r[0]],s>1&&(a|=t[r[0]+1]<<8),s>2&&(a|=t[r[0]+2]<<16),s>3&&(a|=t[r[0]+3]<<24),a>>>=0,a++,r[0]+=s}i.push(t.slice(r[0],r[0]+a)),r[0]+=a;continue}else{var l=0,u=0;if(o==1?(u=(t[r[0]]>>2&7)+4,l=(t[r[0]++]&224)<<3,l|=t[r[0]++]):(u=(t[r[0]++]>>2)+1,o==2?(l=t[r[0]]|t[r[0]+1]<<8,r[0]+=2):(l=(t[r[0]]|t[r[0]+1]<<8|t[r[0]+2]<<16|t[r[0]+3]<<24)>>>0,r[0]+=4)),i=[Mn(i)],l==0)throw new Error("Invalid offset 0");if(l>i[0].length)throw new Error("Invalid offset beyond length");if(u>=l)for(i.push(i[0].slice(-l)),u-=l;u>=i[i.length-1].length;)i.push(i[i.length-1]),u-=i[i.length-1].length;i.push(i[0].slice(-l,-l+u))}}var c=Mn(i);if(c.length!=n)throw new Error("Unexpected length: ".concat(c.length," != ").concat(n));return c}function mr(e){for(var t=[],r=0;r>8&255]))):n<=16777216?(a+=4,t.push(new Uint8Array([248,n-1&255,n-1>>8&255,n-1>>16&255]))):n<=4294967296&&(a+=5,t.push(new Uint8Array([252,n-1&255,n-1>>8&255,n-1>>16&255,n-1>>>24&255]))),t.push(e.slice(r,r+n)),a+=n,i[0]=0,i[1]=a&255,i[2]=a>>8&255,i[3]=a>>16&255,r+=n}return Mn(t)}function Fc(e,t){var r=new Uint8Array(32),n=Wl(r),i=12,o=0;switch(r[0]=5,e.t){case"n":r[1]=2,yD(r,i,e.v),o|=1,i+=16;break;case"b":r[1]=6,n.setFloat64(i,e.v?1:0,!0),o|=2,i+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[1]=3,n.setUint32(i,t.indexOf(e.v),!0),o|=8,i+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(8,o,!0),r.slice(0,i)}function Dc(e,t){var r=new Uint8Array(32),n=Wl(r),i=12,o=0;switch(r[0]=3,e.t){case"n":r[2]=2,n.setFloat64(i,e.v,!0),o|=32,i+=8;break;case"b":r[2]=6,n.setFloat64(i,e.v?1:0,!0),o|=32,i+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[2]=3,n.setUint32(i,t.indexOf(e.v),!0),o|=16,i+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(4,o,!0),r.slice(0,i)}function ln(e){var t=ot(e);return Ba(t[1][0].data)}function _D(e,t,r){var n,i,o,a;if(!((n=e[6])!=null&&n[0])||!((i=e[7])!=null&&i[0]))throw"Mutation only works on post-BNC storages!";var s=((a=(o=e[8])==null?void 0:o[0])==null?void 0:a.data)&&no(e[8][0].data)>0||!1;if(s)throw"Math only works with normal offsets";for(var l=0,u=Wl(e[7][0].data),c=0,f=[],d=Wl(e[4][0].data),h=0,m=[],p=0;p1&&console.error("The Numbers writer currently writes only the first table");var n=Zt(r["!ref"]);n.s.r=n.s.c=0;var i=!1;n.e.c>9&&(i=!0,n.e.c=9),n.e.r>49&&(i=!0,n.e.r=49),i&&console.error("The Numbers writer is currently limited to ".concat(nt(n)));var o=zl(r,{range:n,header:1}),a=["~Sh33tJ5~"];o.forEach(function(M){return M.forEach(function(b){typeof b=="string"&&a.push(b)})});var s={},l=[],u=Ue.read(t.numbers,{type:"base64"});u.FileIndex.map(function(M,b){return[M,u.FullPaths[b]]}).forEach(function(M){var b=M[0],T=M[1];if(b.type==2&&b.name.match(/\.iwa/)){var B=b.content,H=mr(B),q=gr(H);q.forEach(function(ee){l.push(ee.id),s[ee.id]={deps:[],location:T,type:no(ee.messages[0].meta[1][0].data)}})}}),l.sort(function(M,b){return M-b});var c=l.filter(function(M){return M>1}).map(function(M){return[M,Ne(M)]});u.FileIndex.map(function(M,b){return[M,u.FullPaths[b]]}).forEach(function(M){var b=M[0];if(M[1],!!b.name.match(/\.iwa/)){var T=gr(mr(b.content));T.forEach(function(B){B.messages.forEach(function(H){c.forEach(function(q){B.messages.some(function(ee){return no(ee.meta[1][0].data)!=11006&&wD(ee.data,q[1])})&&s[q[0]].deps.push(B.id)})})})}});for(var f=Ue.find(u,s[1].location),d=gr(mr(f.content)),h,m=0;m-1,i=Ux();Ud(t=t||{});var o=Td(),a="",s=0;if(t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),a="docProps/core.xml",Pe(o,a,zx(e.Props,t)),i.coreprops.push(a),Me(t.rels,2,a,ke.CORE_PROPS),a="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var l=[],u=0;u0&&(a="docProps/custom.xml",Pe(o,a,Xx(e.Custprops)),i.custprops.push(a),Me(t.rels,4,a,ke.CUST_PROPS)),s=1;s<=e.SheetNames.length;++s){var c={"!id":{}},f=e.Sheets[e.SheetNames[s-1]],d=(f||{})["!type"]||"sheet";switch(d){case"chart":default:a="xl/worksheets/sheet"+s+"."+r,Pe(o,a,F6(s-1,a,t,e,c)),i.sheets.push(a),Me(t.wbrels,-1,"worksheets/sheet"+s+"."+r,ke.WS[0])}if(f){var h=f["!comments"],m=!1,p="";h&&h.length>0&&(p="xl/comments"+s+"."+r,Pe(o,p,I6(h,p)),i.comments.push(p),Me(c,-1,"../comments"+s+"."+r,ke.CMNT),m=!0),f["!legacy"]&&m&&Pe(o,"xl/drawings/vmlDrawing"+s+".vml",uw(s,f["!comments"])),delete f["!comments"],delete f["!legacy"]}c["!id"].rId1&&Pe(o,Vx(a),to(c))}return t.Strings!=null&&t.Strings.length>0&&(a="xl/sharedStrings."+r,Pe(o,a,P6(t.Strings,a,t)),i.strs.push(a),Me(t.wbrels,-1,"sharedStrings."+r,ke.SST)),a="xl/workbook."+r,Pe(o,a,O6(e,a)),i.workbooks.push(a),Me(t.rels,1,a,ke.WB),a="xl/theme/theme1.xml",Pe(o,a,sw(e.Themes,t)),i.themes.push(a),Me(t.wbrels,-1,"theme/theme1.xml",ke.THEME),a="xl/styles."+r,Pe(o,a,D6(e,a,t)),i.styles.push(a),Me(t.wbrels,-1,"styles."+r,ke.STY),e.vbaraw&&n&&(a="xl/vbaProject.bin",Pe(o,a,e.vbaraw),i.vba.push(a),Me(t.wbrels,-1,"vbaProject.bin",ke.VBA)),a="xl/metadata."+r,Pe(o,a,b6(a)),i.metadata.push(a),Me(t.wbrels,-1,"metadata."+r,ke.XLMETA),Pe(o,"[Content_Types].xml",Hx(i,t)),Pe(o,"_rels/.rels",to(t.rels)),Pe(o,"xl/_rels/workbook."+r+".rels",to(t.wbrels)),delete t.revssf,delete t.ssf,o}function RD(e,t){Wi=1024,e&&!e.SSF&&(e.SSF=Gt(et)),e&&e.SSF&&(wu(),xu(e.SSF),t.revssf=yu(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,va?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r="xml",n=fw.indexOf(t.bookType)>-1,i=Ux();Ud(t=t||{});var o=Td(),a="",s=0;if(t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),a="docProps/core.xml",Pe(o,a,zx(e.Props,t)),i.coreprops.push(a),Me(t.rels,2,a,ke.CORE_PROPS),a="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var l=[],u=0;u0&&(a="docProps/custom.xml",Pe(o,a,Xx(e.Custprops)),i.custprops.push(a),Me(t.rels,4,a,ke.CUST_PROPS));var c=["SheetJ5"];for(t.tcid=0,s=1;s<=e.SheetNames.length;++s){var f={"!id":{}},d=e.Sheets[e.SheetNames[s-1]],h=(d||{})["!type"]||"sheet";switch(h){case"chart":default:a="xl/worksheets/sheet"+s+"."+r,Pe(o,a,yw(s-1,t,e,f)),i.sheets.push(a),Me(t.wbrels,-1,"worksheets/sheet"+s+"."+r,ke.WS[0])}if(d){var m=d["!comments"],p=!1,g="";if(m&&m.length>0){var x=!1;m.forEach(function(w){w[1].forEach(function(y){y.T==!0&&(x=!0)})}),x&&(g="xl/threadedComments/threadedComment"+s+"."+r,Pe(o,g,iR(m,c,t)),i.threadedcomments.push(g),Me(f,-1,"../threadedComments/threadedComment"+s+"."+r,ke.TCMNT)),g="xl/comments"+s+"."+r,Pe(o,g,cw(m)),i.comments.push(g),Me(f,-1,"../comments"+s+"."+r,ke.CMNT),p=!0}d["!legacy"]&&p&&Pe(o,"xl/drawings/vmlDrawing"+s+".vml",uw(s,d["!comments"])),delete d["!comments"],delete d["!legacy"]}f["!id"].rId1&&Pe(o,Vx(a),to(f))}return t.Strings!=null&&t.Strings.length>0&&(a="xl/sharedStrings."+r,Pe(o,a,tw(t.Strings,t)),i.strs.push(a),Me(t.wbrels,-1,"sharedStrings."+r,ke.SST)),a="xl/workbook."+r,Pe(o,a,Sw(e)),i.workbooks.push(a),Me(t.rels,1,a,ke.WB),a="xl/theme/theme1.xml",Pe(o,a,sw(e.Themes,t)),i.themes.push(a),Me(t.wbrels,-1,"theme/theme1.xml",ke.THEME),a="xl/styles."+r,Pe(o,a,ow(e,t)),i.styles.push(a),Me(t.wbrels,-1,"styles."+r,ke.STY),e.vbaraw&&n&&(a="xl/vbaProject.bin",Pe(o,a,e.vbaraw),i.vba.push(a),Me(t.wbrels,-1,"vbaProject.bin",ke.VBA)),a="xl/metadata."+r,Pe(o,a,lw()),i.metadata.push(a),Me(t.wbrels,-1,"metadata."+r,ke.XLMETA),c.length>1&&(a="xl/persons/person.xml",Pe(o,a,oR(c)),i.people.push(a),Me(t.wbrels,-1,"persons/person.xml",ke.PEOPLE)),Pe(o,"[Content_Types].xml",Hx(i,t)),Pe(o,"_rels/.rels",to(t.rels)),Pe(o,"xl/_rels/workbook."+r+".rels",to(t.wbrels)),delete t.revssf,delete t.ssf,o}function OD(e,t){var r="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":r=tn(e.slice(0,12));break;case"binary":r=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3),r.charCodeAt(4),r.charCodeAt(5),r.charCodeAt(6),r.charCodeAt(7)]}function Dw(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return Za(t.file,Ue.write(e,{type:$e?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return Ue.write(e,t)}function FD(e,t){var r=Gt(t||{}),n=CD(e,r);return DD(n,r)}function DD(e,t){var r={},n=$e?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(t.compression&&(r.compression="DEFLATE"),t.password)r.type=n;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=n;break;default:throw new Error("Unrecognized type "+t.type)}var i=e.FullPaths?Ue.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if(typeof Deno<"u"&&typeof i=="string"){if(t.type=="binary"||t.type=="base64")return i;i=new Uint8Array(vu(i))}return t.password&&typeof encrypt_agile<"u"?Dw(encrypt_agile(i,t.password),t):t.type==="file"?Za(t.file,i):t.type=="string"?ha(i):i}function PD(e,t){var r=t||{},n=X6(e,r);return Dw(n,r)}function Cr(e,t,r){r||(r="");var n=r+e;switch(t.type){case"base64":return Na(Gr(n));case"binary":return Gr(n);case"string":return e;case"file":return Za(t.file,n,"utf8");case"buffer":return $e?sn(n,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(n):Cr(n,{type:"binary"}).split("").map(function(i){return i.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function ID(e,t){switch(t.type){case"base64":return Na(e);case"binary":return e;case"string":return e;case"file":return Za(t.file,e,"binary");case"buffer":return $e?sn(e,"binary"):e.split("").map(function(r){return r.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function bs(e,t){switch(t.type){case"string":case"base64":case"binary":for(var r="",n=0;n0&&(i=0);var f=wt(l.s.r),d=[],h=[],m=0,p=0,g=Array.isArray(e),x=l.s.r,w=0,y={};g&&!e[x]&&(e[x]=[]);var _=u.skipHidden&&e["!cols"]||[],k=u.skipHidden&&e["!rows"]||[];for(w=l.s.c;w<=l.e.c;++w)if(!(_[w]||{}).hidden)switch(d[w]=Rt(w),r=g?e[x][w]:e[d[w]+f],n){case 1:o[w]=w-l.s.c;break;case 2:o[w]=d[w];break;case 3:o[w]=u.header[w-l.s.c];break;default:if(r==null&&(r={w:"__EMPTY",t:"s"}),s=a=rn(r,null,u),p=y[a]||0,!p)y[a]=1;else{do s=a+"_"+p++;while(y[s]);y[a]=p,y[s]=1}o[w]=s}for(x=l.s.r+i;x<=l.e.r;++x)if(!(k[x]||{}).hidden){var N=$D(e,l,x,d,n,o,g,u);(N.isempty===!1||(n===1?u.blankrows!==!1:u.blankrows))&&(h[m++]=N.row)}return h.length=m,h}var Kg=/"/g;function ND(e,t,r,n,i,o,a,s){for(var l=!0,u=[],c="",f=wt(r),d=t.s.c;d<=t.e.c;++d)if(n[d]){var h=s.dense?(e[r]||[])[d]:e[n[d]+f];if(h==null)c="";else if(h.v!=null){l=!1,c=""+(s.rawNumbers&&h.t=="n"?h.v:rn(h,null,s));for(var m=0,p=0;m!==c.length;++m)if((p=c.charCodeAt(m))===i||p===o||p===34||s.forceQuotes){c='"'+c.replace(Kg,'""')+'"';break}c=="ID"&&(c='"ID"')}else h.f!=null&&!h.F?(l=!1,c="="+h.f,c.indexOf(",")>=0&&(c='"'+c.replace(Kg,'""')+'"')):c="";u.push(c)}return s.blankrows===!1&&l?null:u.join(a)}function Hd(e,t){var r=[],n=t??{};if(e==null||e["!ref"]==null)return"";var i=Ge(e["!ref"]),o=n.FS!==void 0?n.FS:",",a=o.charCodeAt(0),s=n.RS!==void 0?n.RS:` `,l=s.charCodeAt(0),u=new RegExp((o=="|"?"\\|":o)+"+$"),c="",f=[];n.dense=Array.isArray(e);for(var d=n.skipHidden&&e["!cols"]||[],h=n.skipHidden&&e["!rows"]||[],m=i.s.c;m<=i.e.c;++m)(d[m]||{}).hidden||(f[m]=Rt(m));for(var p=0,g=i.s.r;g<=i.e.r;++g)(h[g]||{}).hidden||(c=ND(e,i,g,f,a,l,o,n),c!=null&&(n.strip&&(c=c.replace(u,"")),(c||n.blankrows!==!1)&&r.push((p++?s:"")+c)));return delete n.dense,r.join("")}function Iw(e,t){t||(t={}),t.FS=" ",t.RS=` -`;var r=Hd(e,t);return r}function MD(e){var t="",r,n="";if(e==null||e["!ref"]==null)return[];var i=Ge(e["!ref"]),o="",a=[],s,l=[],u=Array.isArray(e);for(s=i.s.c;s<=i.e.c;++s)a[s]=Rt(s);for(var c=i.s.r;c<=i.e.r;++c)for(o=wt(c),s=i.s.c;s<=i.e.c;++s)if(t=a[s]+o,r=u?(e[c]||[])[s]:e[t],n="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;n=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)n=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)n=""+r.v;else if(r.t=="b")n=r.v?"TRUE":"FALSE";else if(r.w!==void 0)n="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?n="'"+r.v:n=""+r.v}}l[l.length]=t+"="+n}return l}function bw(e,t,r){var n=r||{},i=+!n.skipHeader,o=e||{},a=0,s=0;if(o&&n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var l=typeof n.origin=="string"?ut(n.origin):n.origin;a=l.r,s=l.c}var u,c={s:{c:0,r:0},e:{c:s,r:a+t.length-1+i}};if(o["!ref"]){var f=Ge(o["!ref"]);c.e.c=Math.max(c.e.c,f.e.c),c.e.r=Math.max(c.e.r,f.e.r),a==-1&&(a=f.e.r+1,c.e.r=a+t.length-1+i)}else a==-1&&(a=0,c.e.r=t.length-1+i);var d=n.header||[],h=0;t.forEach(function(p,g){Et(p).forEach(function(x){(h=d.indexOf(x))==-1&&(d[h=d.length]=x);var w=p[x],y="z",_="",k=Be({c:s+h,r:a+g+i});u=Ua(o,k),w&&typeof w=="object"&&!(w instanceof Date)?o[k]=w:(typeof w=="number"?y="n":typeof w=="boolean"?y="b":typeof w=="string"?y="s":w instanceof Date?(y="d",n.cellDates||(y="n",w=zt(w)),_=n.dateNF||et[14]):w===null&&n.nullError&&(y="e",w=0),u?(u.t=y,u.v=w,delete u.w,delete u.R,_&&(u.z=_)):o[k]=u={t:y,v:w},_&&(u.z=_))})}),c.e.c=Math.max(c.e.c,s+d.length-1);var m=wt(a);if(i)for(h=0;h=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function UD(){return{SheetNames:[],Sheets:{}}}function HD(e,t,r,n){var i=1;if(!r)for(;i<=65535&&e.SheetNames.indexOf(r="Sheet"+i)!=-1;++i,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0){var o=r.match(/(^.*?)(\d+)$/);i=o&&+o[2]||0;var a=o&&o[1]||r;for(++i;i<=65535&&e.SheetNames.indexOf(r=a+i)!=-1;++i);}if(_w(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function VD(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=BD(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r}function WD(e,t){return e.z=t,e}function kw(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function zD(e,t,r){return kw(e,"#"+t,r)}function GD(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function jD(e,t,r,n){for(var i=typeof t!="string"?t:Ge(t),o=typeof t=="string"?t:nt(t),a=i.s.r;a<=i.e.r;++a)for(var s=i.s.c;s<=i.e.c;++s){var l=Ua(e,a,s);l.t="n",l.F=o,delete l.v,a==i.s.r&&s==i.s.c&&(l.f=r,n&&(l.D=!0))}return e}var Pc={encode_col:Rt,encode_row:wt,encode_cell:Be,encode_range:nt,decode_col:Dd,decode_row:Fd,split_cell:a3,decode_cell:ut,decode_range:Zt,format_cell:rn,sheet_add_aoa:kx,sheet_add_json:bw,sheet_add_dom:Rw,aoa_to_sheet:So,json_to_sheet:LD,table_to_sheet:Ow,table_to_book:gD,sheet_to_csv:Hd,sheet_to_txt:Iw,sheet_to_json:zl,sheet_to_html:Aw,sheet_to_formulae:MD,sheet_to_row_object_array:zl,sheet_get_cell:Ua,book_new:UD,book_append_sheet:HD,book_set_sheet_visibility:VD,cell_set_number_format:WD,cell_set_hyperlink:kw,cell_set_internal_link:zD,cell_add_comment:GD,sheet_set_array_formula:jD,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function XD(e){if(e%1!==0){const t=Math.max(2,e.toString().split(".")[1].length),r=Math.min(4,t);if(e<1e3)return e.toFixed(r)||0}if(e>1e3){const t=Math.min(4,Math.floor(Math.log10(Math.abs(e))/3)),r=["","K","M","B","T"][t];return`${(e/10**(t*3)).toFixed(2)} ${r}`}return e}function Vd(e){return["date","day","time","timestamp","year"].some(t=>e.toLowerCase().includes(t))}function KD(e,t){if(e===t)return!0;if(e==null||t==null||e.length!==t.length)return!1;for(var r=0;r{const i=YC(e.getValue(t),r);return n(i),i},qD=async({fileHandle:e,blob:t})=>{if(!e)throw new Error("Cannot access filesystem");const r=await e.createWritable();await r.write(t),await r.close()},QD=[{description:"PNG Image",accept:{"image/png":[".png"]}},{description:"JPEG Image",accept:{"image/jpeg":[".jpeg"]}},{description:"SVG Image",accept:{"image/svg+xml":[".svg"]}}],$w=({filename:e,is_image:t})=>{if("showSaveFilePicker"in window)return new Promise(n=>{n(null)});const r={suggestedName:e,types:t?QD:[{description:"CSV File",accept:{"image/csv":[".csv"]}}],excludeAcceptAllOption:!0};return showSaveFilePicker(r)},Nw=(e,t,r)=>{if("showSaveFilePicker"in window)return qD({fileHandle:r,blob:e});const n=URL.createObjectURL(e),i=document.createElement("a");i.setAttribute("href",n),i.setAttribute("download",t),i.style.visibility="hidden",document.body.appendChild(i),i.click(),document.body.removeChild(i)},Yg=(e,t,r)=>{const n=t,i=r.map(l=>n.map(u=>l[u])),o=[n,...i];if(e==="csv"){const l=o.map(f=>f.join(",")).join(` -`),u=new Blob([l],{type:"text/csv;charset=utf-8;"}),c=`${window.title}.csv`;return $w({filename:c}).then(f=>{Nw(u,c,f)})}const a=Pc.book_new(),s=Pc.aoa_to_sheet(o);Pc.book_append_sheet(a,s,"Sheet1"),kD(a,`${window.title}.xlsx`)},ZD=e=>{const t=document.getElementById(e),r=`${window.title}.png`;$w({filename:r,is_image:!0}).then(n=>{r4.toBlob(t).then(function(i){Nw(i,r,n)})})},Mw=v.createContext({dragDropManager:void 0});function tr(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var qg=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Ic=function(){return Math.random().toString(36).substring(7).split("").join(".")},Qg={INIT:"@@redux/INIT"+Ic(),REPLACE:"@@redux/REPLACE"+Ic(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Ic()}};function JD(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Lw(e,t,r){var n;if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(tr(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(tr(1));return r(Lw)(e,t)}if(typeof e!="function")throw new Error(tr(2));var i=e,o=t,a=[],s=a,l=!1;function u(){s===a&&(s=a.slice())}function c(){if(l)throw new Error(tr(3));return o}function f(p){if(typeof p!="function")throw new Error(tr(4));if(l)throw new Error(tr(5));var g=!0;return u(),s.push(p),function(){if(g){if(l)throw new Error(tr(6));g=!1,u();var w=s.indexOf(p);s.splice(w,1),a=null}}}function d(p){if(!JD(p))throw new Error(tr(7));if(typeof p.type>"u")throw new Error(tr(8));if(l)throw new Error(tr(9));try{l=!0,o=i(o,p)}finally{l=!1}for(var g=a=s,x=0;xn&&n[i]?n[i]:r||null,e)}function rP(e,t){return e.filter(r=>r!==t)}function Bw(e){return typeof e=="object"}function nP(e,t){const r=new Map,n=o=>{r.set(o,r.has(o)?r.get(o)+1:1)};e.forEach(n),t.forEach(n);const i=[];return r.forEach((o,a)=>{o===1&&i.push(a)}),i}function iP(e,t){return e.filter(r=>t.indexOf(r)>-1)}const Wd="dnd-core/INIT_COORDS",Cu="dnd-core/BEGIN_DRAG",zd="dnd-core/PUBLISH_DRAG_SOURCE",Au="dnd-core/HOVER",Ru="dnd-core/DROP",Ou="dnd-core/END_DRAG";function Zg(e,t){return{type:Wd,payload:{sourceClientOffset:t||null,clientOffset:e||null}}}const oP={type:Wd,payload:{clientOffset:null,sourceClientOffset:null}};function aP(e){return function(r=[],n={publishSource:!0}){const{publishSource:i=!0,clientOffset:o,getSourceClientOffset:a}=n,s=e.getMonitor(),l=e.getRegistry();e.dispatch(Zg(o)),sP(r,s,l);const u=cP(r,s);if(u==null){e.dispatch(oP);return}let c=null;if(o){if(!a)throw new Error("getSourceClientOffset must be defined");lP(a),c=a(u)}e.dispatch(Zg(o,c));const d=l.getSource(u).beginDrag(s,u);if(d==null)return;uP(d),l.pinSource(u);const h=l.getSourceType(u);return{type:Cu,payload:{itemType:h,item:d,sourceId:u,clientOffset:o||null,sourceClientOffset:c||null,isSourcePublic:!!i}}}}function sP(e,t,r){Fe(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach(function(n){Fe(r.getSource(n),"Expected sourceIds to be registered.")})}function lP(e){Fe(typeof e=="function","When clientOffset is provided, getSourceClientOffset must be a function.")}function uP(e){Fe(Bw(e),"Item must be an object.")}function cP(e,t){let r=null;for(let n=e.length-1;n>=0;n--)if(t.canDragSource(e[n])){r=e[n];break}return r}function fP(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dP(e){for(var t=1;t{const l=gP(a,s,i,n),u={type:Ru,payload:{dropResult:dP({},r,l)}};e.dispatch(u)})}}function pP(e){Fe(e.isDragging(),"Cannot call drop while not dragging."),Fe(!e.didDrop(),"Cannot call drop twice during one drag operation.")}function gP(e,t,r,n){const i=r.getTarget(e);let o=i?i.drop(n,e):void 0;return mP(o),typeof o>"u"&&(o=t===0?{}:n.getDropResult()),o}function mP(e){Fe(typeof e>"u"||Bw(e),"Drop result must either be an object or undefined.")}function vP(e){const t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}function xP(e){return function(){const r=e.getMonitor(),n=e.getRegistry();wP(r);const i=r.getSourceId();return i!=null&&(n.getSource(i,!0).endDrag(r,i),n.unpinSource()),{type:Ou}}}function wP(e){Fe(e.isDragging(),"Cannot call endDrag while not dragging.")}function Xf(e,t){return t===null?e===null:Array.isArray(e)?e.some(r=>r===t):e===t}function yP(e){return function(r,{clientOffset:n}={}){EP(r);const i=r.slice(0),o=e.getMonitor(),a=e.getRegistry(),s=o.getItemType();return SP(i,a,s),_P(i,o,a),TP(i,o,a),{type:Au,payload:{targetIds:i,clientOffset:n||null}}}}function EP(e){Fe(Array.isArray(e),"Expected targetIds to be an array.")}function _P(e,t,r){Fe(t.isDragging(),"Cannot call hover while not dragging."),Fe(!t.didDrop(),"Cannot call hover after drop.");for(let n=0;n=0;n--){const i=e[n],o=t.getTargetType(i);Xf(o,r)||e.splice(n,1)}}function TP(e,t,r){e.forEach(function(n){r.getTarget(n).hover(t,n)})}function CP(e){return function(){if(e.getMonitor().isDragging())return{type:zd}}}function AP(e){return{beginDrag:aP(e),publishDragSource:CP(e),hover:yP(e),drop:hP(e),endDrag:xP(e)}}class RP{receiveBackend(t){this.backend=t}getMonitor(){return this.monitor}getBackend(){return this.backend}getRegistry(){return this.monitor.registry}getActions(){const t=this,{dispatch:r}=this.store;function n(o){return(...a)=>{const s=o.apply(t,a);typeof s<"u"&&r(s)}}const i=AP(this);return Object.keys(i).reduce((o,a)=>{const s=i[a];return o[a]=n(s),o},{})}dispatch(t){this.store.dispatch(t)}constructor(t,r){this.isSetUp=!1,this.handleRefCountChange=()=>{const n=this.store.getState().refCount>0;this.backend&&(n&&!this.isSetUp?(this.backend.setup(),this.isSetUp=!0):!n&&this.isSetUp&&(this.backend.teardown(),this.isSetUp=!1))},this.store=t,this.monitor=r,t.subscribe(this.handleRefCountChange)}}function OP(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Uw(e,t){return{x:e.x-t.x,y:e.y-t.y}}function FP(e){const{clientOffset:t,initialClientOffset:r,initialSourceClientOffset:n}=e;return!t||!r||!n?null:Uw(OP(t,n),r)}function DP(e){const{clientOffset:t,initialClientOffset:r}=e;return!t||!r?null:Uw(t,r)}const xa=[],Gd=[];xa.__IS_NONE__=!0;Gd.__IS_ALL__=!0;function PP(e,t){return e===xa?!1:e===Gd||typeof t>"u"?!0:iP(t,e).length>0}class IP{subscribeToStateChange(t,r={}){const{handlerIds:n}=r;Fe(typeof t=="function","listener must be a function."),Fe(typeof n>"u"||Array.isArray(n),"handlerIds, when specified, must be an array of strings.");let i=this.store.getState().stateId;const o=()=>{const a=this.store.getState(),s=a.stateId;try{s===i||s===i+1&&!PP(a.dirtyHandlerIds,n)||t()}finally{i=s}};return this.store.subscribe(o)}subscribeToOffsetChange(t){Fe(typeof t=="function","listener must be a function.");let r=this.store.getState().dragOffset;const n=()=>{const i=this.store.getState().dragOffset;i!==r&&(r=i,t())};return this.store.subscribe(n)}canDragSource(t){if(!t)return!1;const r=this.registry.getSource(t);return Fe(r,`Expected to find a valid source. sourceId=${t}`),this.isDragging()?!1:r.canDrag(this,t)}canDropOnTarget(t){if(!t)return!1;const r=this.registry.getTarget(t);if(Fe(r,`Expected to find a valid target. targetId=${t}`),!this.isDragging()||this.didDrop())return!1;const n=this.registry.getTargetType(t),i=this.getItemType();return Xf(n,i)&&r.canDrop(this,t)}isDragging(){return!!this.getItemType()}isDraggingSource(t){if(!t)return!1;const r=this.registry.getSource(t,!0);if(Fe(r,`Expected to find a valid source. sourceId=${t}`),!this.isDragging()||!this.isSourcePublic())return!1;const n=this.registry.getSourceType(t),i=this.getItemType();return n!==i?!1:r.isDragging(this,t)}isOverTarget(t,r={shallow:!1}){if(!t)return!1;const{shallow:n}=r;if(!this.isDragging())return!1;const i=this.registry.getTargetType(t),o=this.getItemType();if(o&&!Xf(i,o))return!1;const a=this.getTargetIds();if(!a.length)return!1;const s=a.indexOf(t);return n?s===a.length-1:s>-1}getItemType(){return this.store.getState().dragOperation.itemType}getItem(){return this.store.getState().dragOperation.item}getSourceId(){return this.store.getState().dragOperation.sourceId}getTargetIds(){return this.store.getState().dragOperation.targetIds}getDropResult(){return this.store.getState().dragOperation.dropResult}didDrop(){return this.store.getState().dragOperation.didDrop}isSourcePublic(){return!!this.store.getState().dragOperation.isSourcePublic}getInitialClientOffset(){return this.store.getState().dragOffset.initialClientOffset}getInitialSourceClientOffset(){return this.store.getState().dragOffset.initialSourceClientOffset}getClientOffset(){return this.store.getState().dragOffset.clientOffset}getSourceClientOffset(){return FP(this.store.getState().dragOffset)}getDifferenceFromInitialOffset(){return DP(this.store.getState().dragOffset)}constructor(t,r){this.store=t,this.registry=r}}const Jg=typeof global<"u"?global:self,Hw=Jg.MutationObserver||Jg.WebKitMutationObserver;function Vw(e){return function(){const r=setTimeout(i,0),n=setInterval(i,50);function i(){clearTimeout(r),clearInterval(n),e()}}}function bP(e){let t=1;const r=new Hw(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}const kP=typeof Hw=="function"?bP:Vw;class $P{enqueueTask(t){const{queue:r,requestFlush:n}=this;r.length||(n(),this.flushing=!0),r[r.length]=t}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:t}=this;for(;this.indexthis.capacity){for(let n=0,i=t.length-this.index;n{this.pendingErrors.push(t),this.requestErrorThrow()},this.requestFlush=kP(this.flush),this.requestErrorThrow=Vw(()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()})}}class NP{call(){try{this.task&&this.task()}catch(t){this.onError(t)}finally{this.task=null,this.release(this)}}constructor(t,r){this.onError=t,this.release=r,this.task=null}}class MP{create(t){const r=this.freeTasks,n=r.length?r.pop():new NP(this.onError,i=>r[r.length]=i);return n.task=t,n}constructor(t){this.onError=t,this.freeTasks=[]}}const Ww=new $P,LP=new MP(Ww.registerPendingError);function BP(e){Ww.enqueueTask(LP.create(e))}const jd="dnd-core/ADD_SOURCE",Xd="dnd-core/ADD_TARGET",Kd="dnd-core/REMOVE_SOURCE",Fu="dnd-core/REMOVE_TARGET";function UP(e){return{type:jd,payload:{sourceId:e}}}function HP(e){return{type:Xd,payload:{targetId:e}}}function VP(e){return{type:Kd,payload:{sourceId:e}}}function WP(e){return{type:Fu,payload:{targetId:e}}}function zP(e){Fe(typeof e.canDrag=="function","Expected canDrag to be a function."),Fe(typeof e.beginDrag=="function","Expected beginDrag to be a function."),Fe(typeof e.endDrag=="function","Expected endDrag to be a function.")}function GP(e){Fe(typeof e.canDrop=="function","Expected canDrop to be a function."),Fe(typeof e.hover=="function","Expected hover to be a function."),Fe(typeof e.drop=="function","Expected beginDrag to be a function.")}function Kf(e,t){if(t&&Array.isArray(e)){e.forEach(r=>Kf(r,!1));return}Fe(typeof e=="string"||typeof e=="symbol",t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}var or;(function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"})(or||(or={}));let jP=0;function XP(){return jP++}function KP(e){const t=XP().toString();switch(e){case or.SOURCE:return`S${t}`;case or.TARGET:return`T${t}`;default:throw new Error(`Unknown Handler Role: ${e}`)}}function e1(e){switch(e[0]){case"S":return or.SOURCE;case"T":return or.TARGET;default:throw new Error(`Cannot parse handler ID: ${e}`)}}function t1(e,t){const r=e.entries();let n=!1;do{const{done:i,value:[,o]}=r.next();if(o===t)return!0;n=!!i}while(!n);return!1}class YP{addSource(t,r){Kf(t),zP(r);const n=this.addHandler(or.SOURCE,t,r);return this.store.dispatch(UP(n)),n}addTarget(t,r){Kf(t,!0),GP(r);const n=this.addHandler(or.TARGET,t,r);return this.store.dispatch(HP(n)),n}containsHandler(t){return t1(this.dragSources,t)||t1(this.dropTargets,t)}getSource(t,r=!1){return Fe(this.isSourceId(t),"Expected a valid source ID."),r&&t===this.pinnedSourceId?this.pinnedSource:this.dragSources.get(t)}getTarget(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.dropTargets.get(t)}getSourceType(t){return Fe(this.isSourceId(t),"Expected a valid source ID."),this.types.get(t)}getTargetType(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.types.get(t)}isSourceId(t){return e1(t)===or.SOURCE}isTargetId(t){return e1(t)===or.TARGET}removeSource(t){Fe(this.getSource(t),"Expected an existing source."),this.store.dispatch(VP(t)),BP(()=>{this.dragSources.delete(t),this.types.delete(t)})}removeTarget(t){Fe(this.getTarget(t),"Expected an existing target."),this.store.dispatch(WP(t)),this.dropTargets.delete(t),this.types.delete(t)}pinSource(t){const r=this.getSource(t);Fe(r,"Expected an existing source."),this.pinnedSourceId=t,this.pinnedSource=r}unpinSource(){Fe(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}addHandler(t,r,n){const i=KP(t);return this.types.set(i,r),t===or.SOURCE?this.dragSources.set(i,n):t===or.TARGET&&this.dropTargets.set(i,n),i}constructor(t){this.types=new Map,this.dragSources=new Map,this.dropTargets=new Map,this.pinnedSourceId=null,this.pinnedSource=null,this.store=t}}const qP=(e,t)=>e===t;function QP(e,t){return!e&&!t?!0:!e||!t?!1:e.x===t.x&&e.y===t.y}function ZP(e,t,r=qP){if(e.length!==t.length)return!1;for(let n=0;n0||!ZP(r,n)))return xa;const a=n[n.length-1],s=r[r.length-1];return a!==s&&(a&&i.push(a),s&&i.push(s)),i}function eI(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function tI(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function pI(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}let n1=0;const el=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__");var gI=v.memo(function(t){var{children:r}=t,n=hI(t,["children"]);const[i,o]=mI(n);return v.useEffect(()=>{if(o){const a=zw();return++n1,()=>{--n1===0&&(a[el]=null)}}},[]),Z(Mw.Provider,{value:i,children:r})});function mI(e){if("manager"in e)return[{dragDropManager:e.manager},!1];const t=vI(e.backend,e.context,e.options,e.debugMode),r=!e.context;return[t,r]}function vI(e,t=zw(),r,n){const i=t;return i[el]||(i[el]={dragDropManager:fI(e,t,r,n)}),i[el]}function zw(){return typeof global<"u"?global:window}var xI=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;i--!==0;){var a=o[i];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r};const li=typeof window<"u"?v.useLayoutEffect:v.useEffect;function wI(e,t,r){const[n,i]=v.useState(()=>t(e)),o=v.useCallback(()=>{const a=t(e);xI(n,a)||(i(a),r&&r())},[n,e,r]);return li(o),[n,o]}function yI(e,t,r){const[n,i]=wI(e,t,r);return li(function(){const a=e.getHandlerId();if(a!=null)return e.subscribeToStateChange(i,{handlerIds:[a]})},[e,i]),n}function Gw(e,t,r){return yI(t,e||(()=>({})),()=>r.reconnect())}function jw(e,t){const r=[...t||[]];return t==null&&typeof e!="function"&&r.push(e),v.useMemo(()=>typeof e=="function"?e():e,r)}function EI(e){return v.useMemo(()=>e.hooks.dragSource(),[e])}function _I(e){return v.useMemo(()=>e.hooks.dragPreview(),[e])}let bc=!1,kc=!1;class SI{receiveHandlerId(t){this.sourceId=t}getHandlerId(){return this.sourceId}canDrag(){Fe(!bc,"You may not call monitor.canDrag() inside your canDrag() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return bc=!0,this.internalMonitor.canDragSource(this.sourceId)}finally{bc=!1}}isDragging(){if(!this.sourceId)return!1;Fe(!kc,"You may not call monitor.isDragging() inside your isDragging() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return kc=!0,this.internalMonitor.isDraggingSource(this.sourceId)}finally{kc=!1}}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}isDraggingSource(t){return this.internalMonitor.isDraggingSource(t)}isOverTarget(t,r){return this.internalMonitor.isOverTarget(t,r)}getTargetIds(){return this.internalMonitor.getTargetIds()}isSourcePublic(){return this.internalMonitor.isSourcePublic()}getSourceId(){return this.internalMonitor.getSourceId()}subscribeToOffsetChange(t){return this.internalMonitor.subscribeToOffsetChange(t)}canDragSource(t){return this.internalMonitor.canDragSource(t)}canDropOnTarget(t){return this.internalMonitor.canDropOnTarget(t)}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.sourceId=null,this.internalMonitor=t.getMonitor()}}let $c=!1;class TI{receiveHandlerId(t){this.targetId=t}getHandlerId(){return this.targetId}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}canDrop(){if(!this.targetId)return!1;Fe(!$c,"You may not call monitor.canDrop() inside your canDrop() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor");try{return $c=!0,this.internalMonitor.canDropOnTarget(this.targetId)}finally{$c=!1}}isOver(t){return this.targetId?this.internalMonitor.isOverTarget(this.targetId,t):!1}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.targetId=null,this.internalMonitor=t.getMonitor()}}function CI(e,t,r){const n=r.getRegistry(),i=n.addTarget(e,t);return[i,()=>n.removeTarget(i)]}function AI(e,t,r){const n=r.getRegistry(),i=n.addSource(e,t);return[i,()=>n.removeSource(i)]}function Yf(e,t,r,n){let i=r?r.call(n,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!="object"||!e||typeof t!="object"||!t)return!1;const o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;const s=Object.prototype.hasOwnProperty.bind(t);for(let l=0;l, or turn it into a drag source or a drop target itself.`)}function OI(e){return(t=null,r=null)=>{if(!v.isValidElement(t)){const o=t;return e(o,r),o}const n=t;return RI(n),FI(n,r?o=>e(o,r):e)}}function Xw(e){const t={};return Object.keys(e).forEach(r=>{const n=e[r];if(r.endsWith("Ref"))t[r]=e[r];else{const i=OI(n);t[r]=()=>i}}),t}function i1(e,t){typeof e=="function"?e(t):e.current=t}function FI(e,t){const r=e.ref;return Fe(typeof r!="string","Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or
. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),r?v.cloneElement(e,{ref:n=>{i1(r,n),i1(t,n)}}):v.cloneElement(e,{ref:t})}class DI{receiveHandlerId(t){this.handlerId!==t&&(this.handlerId=t,this.reconnect())}get connectTarget(){return this.dragSource}get dragSourceOptions(){return this.dragSourceOptionsInternal}set dragSourceOptions(t){this.dragSourceOptionsInternal=t}get dragPreviewOptions(){return this.dragPreviewOptionsInternal}set dragPreviewOptions(t){this.dragPreviewOptionsInternal=t}reconnect(){const t=this.reconnectDragSource();this.reconnectDragPreview(t)}reconnectDragSource(){const t=this.dragSource,r=this.didHandlerIdChange()||this.didConnectedDragSourceChange()||this.didDragSourceOptionsChange();return r&&this.disconnectDragSource(),this.handlerId?t?(r&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragSource=t,this.lastConnectedDragSourceOptions=this.dragSourceOptions,this.dragSourceUnsubscribe=this.backend.connectDragSource(this.handlerId,t,this.dragSourceOptions)),r):(this.lastConnectedDragSource=t,r):r}reconnectDragPreview(t=!1){const r=this.dragPreview,n=t||this.didHandlerIdChange()||this.didConnectedDragPreviewChange()||this.didDragPreviewOptionsChange();if(n&&this.disconnectDragPreview(),!!this.handlerId){if(!r){this.lastConnectedDragPreview=r;return}n&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragPreview=r,this.lastConnectedDragPreviewOptions=this.dragPreviewOptions,this.dragPreviewUnsubscribe=this.backend.connectDragPreview(this.handlerId,r,this.dragPreviewOptions))}}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didConnectedDragSourceChange(){return this.lastConnectedDragSource!==this.dragSource}didConnectedDragPreviewChange(){return this.lastConnectedDragPreview!==this.dragPreview}didDragSourceOptionsChange(){return!Yf(this.lastConnectedDragSourceOptions,this.dragSourceOptions)}didDragPreviewOptionsChange(){return!Yf(this.lastConnectedDragPreviewOptions,this.dragPreviewOptions)}disconnectDragSource(){this.dragSourceUnsubscribe&&(this.dragSourceUnsubscribe(),this.dragSourceUnsubscribe=void 0)}disconnectDragPreview(){this.dragPreviewUnsubscribe&&(this.dragPreviewUnsubscribe(),this.dragPreviewUnsubscribe=void 0,this.dragPreviewNode=null,this.dragPreviewRef=null)}get dragSource(){return this.dragSourceNode||this.dragSourceRef&&this.dragSourceRef.current}get dragPreview(){return this.dragPreviewNode||this.dragPreviewRef&&this.dragPreviewRef.current}clearDragSource(){this.dragSourceNode=null,this.dragSourceRef=null}clearDragPreview(){this.dragPreviewNode=null,this.dragPreviewRef=null}constructor(t){this.hooks=Xw({dragSource:(r,n)=>{this.clearDragSource(),this.dragSourceOptions=n||null,qf(r)?this.dragSourceRef=r:this.dragSourceNode=r,this.reconnectDragSource()},dragPreview:(r,n)=>{this.clearDragPreview(),this.dragPreviewOptions=n||null,qf(r)?this.dragPreviewRef=r:this.dragPreviewNode=r,this.reconnectDragPreview()}}),this.handlerId=null,this.dragSourceRef=null,this.dragSourceOptionsInternal=null,this.dragPreviewRef=null,this.dragPreviewOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDragSource=null,this.lastConnectedDragSourceOptions=null,this.lastConnectedDragPreview=null,this.lastConnectedDragPreviewOptions=null,this.backend=t}}class PI{get connectTarget(){return this.dropTarget}reconnect(){const t=this.didHandlerIdChange()||this.didDropTargetChange()||this.didOptionsChange();t&&this.disconnectDropTarget();const r=this.dropTarget;if(this.handlerId){if(!r){this.lastConnectedDropTarget=r;return}t&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDropTarget=r,this.lastConnectedDropTargetOptions=this.dropTargetOptions,this.unsubscribeDropTarget=this.backend.connectDropTarget(this.handlerId,r,this.dropTargetOptions))}}receiveHandlerId(t){t!==this.handlerId&&(this.handlerId=t,this.reconnect())}get dropTargetOptions(){return this.dropTargetOptionsInternal}set dropTargetOptions(t){this.dropTargetOptionsInternal=t}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didDropTargetChange(){return this.lastConnectedDropTarget!==this.dropTarget}didOptionsChange(){return!Yf(this.lastConnectedDropTargetOptions,this.dropTargetOptions)}disconnectDropTarget(){this.unsubscribeDropTarget&&(this.unsubscribeDropTarget(),this.unsubscribeDropTarget=void 0)}get dropTarget(){return this.dropTargetNode||this.dropTargetRef&&this.dropTargetRef.current}clearDropTarget(){this.dropTargetRef=null,this.dropTargetNode=null}constructor(t){this.hooks=Xw({dropTarget:(r,n)=>{this.clearDropTarget(),this.dropTargetOptions=n,qf(r)?this.dropTargetRef=r:this.dropTargetNode=r,this.reconnect()}}),this.handlerId=null,this.dropTargetRef=null,this.dropTargetOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDropTarget=null,this.lastConnectedDropTargetOptions=null,this.backend=t}}function Ao(){const{dragDropManager:e}=v.useContext(Mw);return Fe(e!=null,"Expected drag drop context"),e}function II(e,t){const r=Ao(),n=v.useMemo(()=>new DI(r.getBackend()),[r]);return li(()=>(n.dragSourceOptions=e||null,n.reconnect(),()=>n.disconnectDragSource()),[n,e]),li(()=>(n.dragPreviewOptions=t||null,n.reconnect(),()=>n.disconnectDragPreview()),[n,t]),n}function bI(){const e=Ao();return v.useMemo(()=>new SI(e),[e])}class kI{beginDrag(){const t=this.spec,r=this.monitor;let n=null;return typeof t.item=="object"?n=t.item:typeof t.item=="function"?n=t.item(r):n={},n??null}canDrag(){const t=this.spec,r=this.monitor;return typeof t.canDrag=="boolean"?t.canDrag:typeof t.canDrag=="function"?t.canDrag(r):!0}isDragging(t,r){const n=this.spec,i=this.monitor,{isDragging:o}=n;return o?o(i):r===t.getSourceId()}endDrag(){const t=this.spec,r=this.monitor,n=this.connector,{end:i}=t;i&&i(r.getItem(),r),n.reconnect()}constructor(t,r,n){this.spec=t,this.monitor=r,this.connector=n}}function $I(e,t,r){const n=v.useMemo(()=>new kI(e,t,r),[t,r]);return v.useEffect(()=>{n.spec=e},[e]),n}function NI(e){return v.useMemo(()=>{const t=e.type;return Fe(t!=null,"spec.type must be defined"),t},[e])}function MI(e,t,r){const n=Ao(),i=$I(e,t,r),o=NI(e);li(function(){if(o!=null){const[s,l]=AI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l}},[n,t,r,i,o])}function LI(e,t){const r=jw(e,t);Fe(!r.begin,"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)");const n=bI(),i=II(r.options,r.previewOptions);return MI(r,n,i),[Gw(r.collect,n,i),EI(i),_I(i)]}function BI(e){return v.useMemo(()=>e.hooks.dropTarget(),[e])}function UI(e){const t=Ao(),r=v.useMemo(()=>new PI(t.getBackend()),[t]);return li(()=>(r.dropTargetOptions=e||null,r.reconnect(),()=>r.disconnectDropTarget()),[e]),r}function HI(){const e=Ao();return v.useMemo(()=>new TI(e),[e])}function VI(e){const{accept:t}=e;return v.useMemo(()=>(Fe(e.accept!=null,"accept must be defined"),Array.isArray(t)?t:[t]),[t])}class WI{canDrop(){const t=this.spec,r=this.monitor;return t.canDrop?t.canDrop(r.getItem(),r):!0}hover(){const t=this.spec,r=this.monitor;t.hover&&t.hover(r.getItem(),r)}drop(){const t=this.spec,r=this.monitor;if(t.drop)return t.drop(r.getItem(),r)}constructor(t,r){this.spec=t,this.monitor=r}}function zI(e,t){const r=v.useMemo(()=>new WI(e,t),[t]);return v.useEffect(()=>{r.spec=e},[e]),r}function GI(e,t,r){const n=Ao(),i=zI(e,t),o=VI(e);li(function(){const[s,l]=CI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l},[n,t,i,r,o.map(a=>a.toString()).join("|")])}function jI(e,t){const r=jw(e,t),n=HI(),i=UI(r.options);return GI(r,n,i),[Gw(r.collect,n,i),BI(i)]}function XI(e,t){return v.useReducer((r,n)=>{const i=t[r][n];return i??r},e)}const Ei=e=>{const{present:t,children:r}=e,n=KI(t),i=typeof r=="function"?r({present:n.isPresent}):v.Children.only(r),o=He(n.ref,i.ref);return typeof r=="function"||n.isPresent?v.cloneElement(i,{ref:o}):null};Ei.displayName="Presence";function KI(e){const[t,r]=v.useState(),n=v.useRef({}),i=v.useRef(e),o=v.useRef("none"),a=e?"mounted":"unmounted",[s,l]=XI(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const u=ks(n.current);o.current=s==="mounted"?u:"none"},[s]),xt(()=>{const u=n.current,c=i.current;if(c!==e){const d=o.current,h=ks(u);e?l("MOUNT"):h==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(c&&d!==h?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,l]),xt(()=>{if(t){const u=f=>{const h=ks(n.current).includes(f.animationName);f.target===t&&h&&Jr.flushSync(()=>l("ANIMATION_END"))},c=f=>{f.target===t&&(o.current=ks(n.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:v.useCallback(u=>{u&&(n.current=getComputedStyle(u)),r(u)},[])}}function ks(e){return(e==null?void 0:e.animationName)||"none"}const Nc="rovingFocusGroup.onEntryFocus",YI={bubbles:!1,cancelable:!0},Yd="RovingFocusGroup",[Qf,Kw,qI]=su(Yd),[QI,Yw]=on(Yd,[qI]),[ZI,JI]=QI(Yd),e5=v.forwardRef((e,t)=>v.createElement(Qf.Provider,{scope:e.__scopeRovingFocusGroup},v.createElement(Qf.Slot,{scope:e.__scopeRovingFocusGroup},v.createElement(t5,de({},e,{ref:t}))))),t5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:o,currentTabStopId:a,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,...c}=e,f=v.useRef(null),d=He(t,f),h=ld(o),[m=null,p]=lo({prop:a,defaultProp:s,onChange:l}),[g,x]=v.useState(!1),w=Dt(u),y=Kw(r),_=v.useRef(!1),[k,N]=v.useState(0);return v.useEffect(()=>{const S=f.current;if(S)return S.addEventListener(Nc,w),()=>S.removeEventListener(Nc,w)},[w]),v.createElement(ZI,{scope:r,orientation:n,dir:h,loop:i,currentTabStopId:m,onItemFocus:v.useCallback(S=>p(S),[p]),onItemShiftTab:v.useCallback(()=>x(!0),[]),onFocusableItemAdd:v.useCallback(()=>N(S=>S+1),[]),onFocusableItemRemove:v.useCallback(()=>N(S=>S-1),[])},v.createElement(Ie.div,de({tabIndex:g||k===0?-1:0,"data-orientation":n},c,{ref:d,style:{outline:"none",...e.style},onMouseDown:Ee(e.onMouseDown,()=>{_.current=!0}),onFocus:Ee(e.onFocus,S=>{const A=!_.current;if(S.target===S.currentTarget&&A&&!g){const R=new CustomEvent(Nc,YI);if(S.currentTarget.dispatchEvent(R),!R.defaultPrevented){const L=y().filter(re=>re.focusable),V=L.find(re=>re.active),U=L.find(re=>re.id===m),Y=[V,U,...L].filter(Boolean).map(re=>re.ref.current);qw(Y)}}_.current=!1}),onBlur:Ee(e.onBlur,()=>x(!1))})))}),r5="RovingFocusGroupItem",n5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:o,...a}=e,s=Xr(),l=o||s,u=JI(r5,r),c=u.currentTabStopId===l,f=Kw(r),{onFocusableItemAdd:d,onFocusableItemRemove:h}=u;return v.useEffect(()=>{if(n)return d(),()=>h()},[n,d,h]),v.createElement(Qf.ItemSlot,{scope:r,id:l,focusable:n,active:i},v.createElement(Ie.span,de({tabIndex:c?0:-1,"data-orientation":u.orientation},a,{ref:t,onMouseDown:Ee(e.onMouseDown,m=>{n?u.onItemFocus(l):m.preventDefault()}),onFocus:Ee(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:Ee(e.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){u.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const p=a5(m,u.orientation,u.dir);if(p!==void 0){m.preventDefault();let x=f().filter(w=>w.focusable).map(w=>w.ref.current);if(p==="last")x.reverse();else if(p==="prev"||p==="next"){p==="prev"&&x.reverse();const w=x.indexOf(m.currentTarget);x=u.loop?s5(x,w+1):x.slice(w+1)}setTimeout(()=>qw(x))}})})))}),i5={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function o5(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function a5(e,t,r){const n=o5(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return i5[n]}function qw(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function s5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}const l5=e5,u5=n5,c5=["Enter"," "],f5=["ArrowDown","PageUp","Home"],Qw=["ArrowUp","PageDown","End"],d5=[...f5,...Qw],Du="Menu",[Zf,h5,p5]=su(Du),[_i,Pu]=on(Du,[p5,fu,Yw]),qd=fu(),Zw=Yw(),[g5,ns]=_i(Du),[m5,Qd]=_i(Du),v5=e=>{const{__scopeMenu:t,open:r=!1,children:n,dir:i,onOpenChange:o,modal:a=!0}=e,s=qd(t),[l,u]=v.useState(null),c=v.useRef(!1),f=Dt(o),d=ld(i);return v.useEffect(()=>{const h=()=>{c.current=!0,document.addEventListener("pointerdown",m,{capture:!0,once:!0}),document.addEventListener("pointermove",m,{capture:!0,once:!0})},m=()=>c.current=!1;return document.addEventListener("keydown",h,{capture:!0}),()=>{document.removeEventListener("keydown",h,{capture:!0}),document.removeEventListener("pointerdown",m,{capture:!0}),document.removeEventListener("pointermove",m,{capture:!0})}},[]),v.createElement(Nv,s,v.createElement(g5,{scope:t,open:r,onOpenChange:f,content:l,onContentChange:u},v.createElement(m5,{scope:t,onClose:v.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:c,dir:d,modal:a},n)))},x5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e,i=qd(r);return v.createElement(Mv,de({},i,n,{ref:t}))}),Jw="MenuPortal",[w5,y5]=_i(Jw,{forceMount:void 0}),E5=e=>{const{__scopeMenu:t,forceMount:r,children:n,container:i}=e,o=ns(Jw,t);return v.createElement(w5,{scope:t,forceMount:r},v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},n)))},Rn="MenuContent",[_5,e2]=_i(Rn),S5=v.forwardRef((e,t)=>{const r=y5(Rn,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,o=ns(Rn,e.__scopeMenu),a=Qd(Rn,e.__scopeMenu);return v.createElement(Zf.Provider,{scope:e.__scopeMenu},v.createElement(Ei,{present:n||o.open},v.createElement(Zf.Slot,{scope:e.__scopeMenu},a.modal?v.createElement(T5,de({},i,{ref:t})):v.createElement(C5,de({},i,{ref:t})))))}),T5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu),n=v.useRef(null),i=He(t,n);return v.useEffect(()=>{const o=n.current;if(o)return md(o)},[]),v.createElement(t2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)}))}),C5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu);return v.createElement(t2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)}))}),t2=v.forwardRef((e,t)=>{const{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h,disableOutsideScroll:m,...p}=e,g=ns(Rn,r),x=Qd(Rn,r),w=qd(r),y=Zw(r),_=h5(r),[k,N]=v.useState(null),S=v.useRef(null),A=He(t,S,g.onContentChange),R=v.useRef(0),L=v.useRef(""),V=v.useRef(0),U=v.useRef(null),W=v.useRef("right"),Y=v.useRef(0),re=m?vd:v.Fragment,ye=m?{as:ii,allowPinchZoom:!0}:void 0,ge=ie=>{var we,Q;const F=L.current+ie,M=_().filter(ee=>!ee.disabled),b=document.activeElement,T=(we=M.find(ee=>ee.ref.current===b))===null||we===void 0?void 0:we.textValue,B=M.map(ee=>ee.textValue),H=N5(B,F,T),q=(Q=M.find(ee=>ee.textValue===H))===null||Q===void 0?void 0:Q.ref.current;(function ee(K){L.current=K,window.clearTimeout(R.current),K!==""&&(R.current=window.setTimeout(()=>ee(""),1e3))})(F),q&&setTimeout(()=>q.focus())};v.useEffect(()=>()=>window.clearTimeout(R.current),[]),cd();const Se=v.useCallback(ie=>{var we,Q;return W.current===((we=U.current)===null||we===void 0?void 0:we.side)&&L5(ie,(Q=U.current)===null||Q===void 0?void 0:Q.area)},[]);return v.createElement(_5,{scope:r,searchRef:L,onItemEnter:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),onItemLeave:v.useCallback(ie=>{var we;Se(ie)||((we=S.current)===null||we===void 0||we.focus(),N(null))},[Se]),onTriggerLeave:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),pointerGraceTimerRef:V,onPointerGraceIntentChange:v.useCallback(ie=>{U.current=ie},[])},v.createElement(re,ye,v.createElement(fd,{asChild:!0,trapped:i,onMountAutoFocus:Ee(o,ie=>{var we;ie.preventDefault(),(we=S.current)===null||we===void 0||we.focus()}),onUnmountAutoFocus:a},v.createElement(lu,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h},v.createElement(l5,de({asChild:!0},y,{dir:x.dir,orientation:"vertical",loop:n,currentTabStopId:k,onCurrentTabStopIdChange:N,onEntryFocus:Ee(l,ie=>{x.isUsingKeyboardRef.current||ie.preventDefault()})}),v.createElement(Lv,de({role:"menu","aria-orientation":"vertical","data-state":b5(g.open),"data-radix-menu-content":"",dir:x.dir},w,p,{ref:A,style:{outline:"none",...p.style},onKeyDown:Ee(p.onKeyDown,ie=>{const Q=ie.target.closest("[data-radix-menu-content]")===ie.currentTarget,F=ie.ctrlKey||ie.altKey||ie.metaKey,M=ie.key.length===1;Q&&(ie.key==="Tab"&&ie.preventDefault(),!F&&M&&ge(ie.key));const b=S.current;if(ie.target!==b||!d5.includes(ie.key))return;ie.preventDefault();const B=_().filter(H=>!H.disabled).map(H=>H.ref.current);Qw.includes(ie.key)&&B.reverse(),k5(B)}),onBlur:Ee(e.onBlur,ie=>{ie.currentTarget.contains(ie.target)||(window.clearTimeout(R.current),L.current="")}),onPointerMove:Ee(e.onPointerMove,e0(ie=>{const we=ie.target,Q=Y.current!==ie.clientX;if(ie.currentTarget.contains(we)&&Q){const F=ie.clientX>Y.current?"right":"left";W.current=F,Y.current=ie.clientX}}))})))))))}),A5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({role:"group"},n,{ref:t}))}),R5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Jf="MenuItem",o1="menu.itemSelect",O5=v.forwardRef((e,t)=>{const{disabled:r=!1,onSelect:n,...i}=e,o=v.useRef(null),a=Qd(Jf,e.__scopeMenu),s=e2(Jf,e.__scopeMenu),l=He(t,o),u=v.useRef(!1),c=()=>{const f=o.current;if(!r&&f){const d=new CustomEvent(o1,{bubbles:!0,cancelable:!0});f.addEventListener(o1,h=>n==null?void 0:n(h),{once:!0}),ud(f,d),d.defaultPrevented?u.current=!1:a.onClose()}};return v.createElement(F5,de({},i,{ref:l,disabled:r,onClick:Ee(e.onClick,c),onPointerDown:f=>{var d;(d=e.onPointerDown)===null||d===void 0||d.call(e,f),u.current=!0},onPointerUp:Ee(e.onPointerUp,f=>{var d;u.current||(d=f.currentTarget)===null||d===void 0||d.click()}),onKeyDown:Ee(e.onKeyDown,f=>{const d=s.searchRef.current!=="";r||d&&f.key===" "||c5.includes(f.key)&&(f.currentTarget.click(),f.preventDefault())})}))}),F5=v.forwardRef((e,t)=>{const{__scopeMenu:r,disabled:n=!1,textValue:i,...o}=e,a=e2(Jf,r),s=Zw(r),l=v.useRef(null),u=He(t,l),[c,f]=v.useState(!1),[d,h]=v.useState("");return v.useEffect(()=>{const m=l.current;if(m){var p;h(((p=m.textContent)!==null&&p!==void 0?p:"").trim())}},[o.children]),v.createElement(Zf.ItemSlot,{scope:r,disabled:n,textValue:i??d},v.createElement(u5,de({asChild:!0},s,{focusable:!n}),v.createElement(Ie.div,de({role:"menuitem","data-highlighted":c?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0},o,{ref:u,onPointerMove:Ee(e.onPointerMove,e0(m=>{n?a.onItemLeave(m):(a.onItemEnter(m),m.defaultPrevented||m.currentTarget.focus())})),onPointerLeave:Ee(e.onPointerLeave,e0(m=>a.onItemLeave(m))),onFocus:Ee(e.onFocus,()=>f(!0)),onBlur:Ee(e.onBlur,()=>f(!1))}))))}),D5="MenuRadioGroup";_i(D5,{value:void 0,onValueChange:()=>{}});const P5="MenuItemIndicator";_i(P5,{checked:!1});const I5="MenuSub";_i(I5);function b5(e){return e?"open":"closed"}function k5(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function $5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}function N5(e,t,r){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=r?e.indexOf(r):-1;let a=$5(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==r));const l=a.find(u=>u.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}function M5(e,t){const{x:r,y:n}=e;let i=!1;for(let o=0,a=t.length-1;on!=c>n&&r<(u-s)*(n-l)/(c-l)+s&&(i=!i)}return i}function L5(e,t){if(!t)return!1;const r={x:e.clientX,y:e.clientY};return M5(r,t)}function e0(e){return t=>t.pointerType==="mouse"?e(t):void 0}const r2=v5,n2=x5,i2=E5,o2=S5,B5=A5,U5=R5,H5=O5,a2="ContextMenu",[V5,Bk]=on(a2,[Pu]),Iu=Pu(),[W5,s2]=V5(a2),z5=e=>{const{__scopeContextMenu:t,children:r,onOpenChange:n,dir:i,modal:o=!0}=e,[a,s]=v.useState(!1),l=Iu(t),u=Dt(n),c=v.useCallback(f=>{s(f),u(f)},[u]);return v.createElement(W5,{scope:t,open:a,onOpenChange:c,modal:o},v.createElement(r2,de({},l,{dir:i,open:a,onOpenChange:c,modal:o}),r))},G5="ContextMenuTrigger",j5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,disabled:n=!1,...i}=e,o=s2(G5,r),a=Iu(r),s=v.useRef({x:0,y:0}),l=v.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...s.current})}),u=v.useRef(0),c=v.useCallback(()=>window.clearTimeout(u.current),[]),f=d=>{s.current={x:d.clientX,y:d.clientY},o.onOpenChange(!0)};return v.useEffect(()=>c,[c]),v.useEffect(()=>void(n&&c()),[n,c]),v.createElement(v.Fragment,null,v.createElement(n2,de({},a,{virtualRef:l})),v.createElement(Ie.span,de({"data-state":o.open?"open":"closed","data-disabled":n?"":void 0},i,{ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:n?e.onContextMenu:Ee(e.onContextMenu,d=>{c(),f(d),d.preventDefault()}),onPointerDown:n?e.onPointerDown:Ee(e.onPointerDown,$s(d=>{c(),u.current=window.setTimeout(()=>f(d),700)})),onPointerMove:n?e.onPointerMove:Ee(e.onPointerMove,$s(c)),onPointerCancel:n?e.onPointerCancel:Ee(e.onPointerCancel,$s(c)),onPointerUp:n?e.onPointerUp:Ee(e.onPointerUp,$s(c))})))}),X5=e=>{const{__scopeContextMenu:t,...r}=e,n=Iu(t);return v.createElement(i2,de({},n,r))},K5="ContextMenuContent",Y5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,...n}=e,i=s2(K5,r),o=Iu(r),a=v.useRef(!1);return v.createElement(o2,de({},o,n,{ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:s=>{var l;(l=e.onCloseAutoFocus)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&a.current&&s.preventDefault(),a.current=!1},onInteractOutside:s=>{var l;(l=e.onInteractOutside)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&!i.modal&&(a.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))});function $s(e){return t=>t.pointerType!=="mouse"?e(t):void 0}const q5=z5,Q5=j5,Z5=X5,J5=Y5;function e8({column:e,table:t,numberOfColumns:r}){const n=t.getPreFilteredRowModel().flatRows.map(u=>u.getValue(e.id)),i=n.every(u=>typeof u=="string"||u===null),o=n.every(u=>typeof u=="number"||u===null),a=n.some(u=>typeof u=="string"&&u.includes(" ")),s=e.getFilterValue();if(n.every(u=>typeof u!="string"?!1:u.replace(/[^0-9]/g,"").length>=4&&(Vd(e.id)||e.id.toLowerCase()==="index"&&!a))){let u=function(c){if(!c)return null;const f=new Date(c),d=f.getFullYear(),h=f.getMonth()+1>9?f.getMonth()+1:`0${f.getMonth()+1}`,m=f.getDate()>9?f.getDate():`0${f.getDate()}`;return`${d}-${h}-${m}`};return Te("div",{className:"flex gap-2 h-10",children:[Z("input",{type:"datetime-local",value:u(s==null?void 0:s[0])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[f,d==null?void 0:d[1]])},placeholder:"Start date",className:"_input"}),Z("input",{type:"datetime-local",value:u(s==null?void 0:s[1])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[d==null?void 0:d[0],f])},placeholder:"End date",className:"_input"})]})}return o?Te("div",{className:"flex gap-0.5 h-10",children:[Z("input",{type:"number",value:(s==null?void 0:s[0])??"",onChange:u=>e.setFilterValue(c=>[u.target.value,c==null?void 0:c[1]]),placeholder:"Min",className:"_input p-0.5"}),Z("input",{type:"number",value:(s==null?void 0:s[1])??"",onChange:u=>e.setFilterValue(c=>[c==null?void 0:c[0],u.target.value]),placeholder:"Max",className:"_input p-0.5"})]}):i?Z("div",{className:"h-10",children:Z("input",{type:"text",value:s??"",onChange:u=>e.setFilterValue(u.target.value),placeholder:"Search...",className:"_input"})}):Z("div",{className:"h-10"})}const t8=(e,t,r)=>(r.splice(r.indexOf(t),0,r.splice(r.indexOf(e),1)[0]),[...r]),r8=({header:e,table:t,advanced:r,idx:n,lockFirstColumn:i,setLockFirstColumn:o})=>{const{getState:a,setColumnOrder:s}=t,{columnOrder:l}=a(),{column:u}=e,[,c]=jI({accept:"column",drop:p=>{const g=t8(p.id,u.id,l);s(g)}}),[{isDragging:f},d,h]=LI({collect:p=>({isDragging:p.isDragging()}),item:()=>u,type:"column"}),m=()=>Z("div",{ref:h,className:"flex gap-1 flex-col",children:e.isPlaceholder?null:Te($1,{children:[Te("div",{className:"font-bold uppercase text-grey-700 dark:text-white tracking-widest flex gap-2 whitespace-nowrap justify-between",children:[Te("div",{onClick:e.column.getToggleSortingHandler(),className:bt("flex gap-1",{"cursor-pointer select-none":e.column.getCanSort()}),children:[If(e.column.columnDef.header,e.getContext()),e.column.getCanSort()&&Te("div",{className:"flex flex-col gap-0.5 items-center justify-center",children:[Z("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="asc","text-grey-600":e.column.getIsSorted()!=="asc"}),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:Z("path",{fill:"currentColor",d:"M10.333 5l-5-5-5 5"})})}),Z("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="desc","text-grey-600":e.column.getIsSorted()!=="desc"}),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:Z("path",{fill:"currentColor",d:"M.333 0l5 5 5-5"})})})]})]}),r&&u.id!=="select"&&Z("button",{ref:d,className:"text-grey-600 hover:text-grey-800 dark:hover:text-white",children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"16",fill:"none",viewBox:"0 0 17 16",children:Z("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",d:"M3.667 6l-2 2 2 2M6.333 3.333l2-2 2 2M10.333 12.667l-2 2-2-2M13 6l2 2-2 2M1.667 8H15M8.333 1.333v13.334"})})})]}),r&&e.column.getCanFilter()?Z("div",{children:Z(e8,{column:e.column,table:t,numberOfColumns:l.length})}):null]})});return Te("th",{className:bt("h-[70px] p-4 sticky",{"left-0 z-50 bg-white dark:bg-grey-900":n===0&&i}),colSpan:e.colSpan,style:{width:e.getSize(),opacity:f?.5:1},ref:c,children:[n===0?Te(q5,{children:[Z(Q5,{asChild:!0,children:m()}),Z(Z5,{children:Z(J5,{className:"bg-white text-black dark:text-white dark:bg-grey-900 border border-grey-200 dark:border-grey-800 rounded-md shadow-lg p-2 z-50 text-xs",children:Z("div",{className:"flex flex-col gap-2",children:Te("button",{onClick:()=>{o(!i)},className:"hover:bg-grey-300 dark:hover:bg-grey-800 rounded-md p-2",children:[i?"Unlock":"Lock"," first column"]})})})})]}):m(),Z("button",{className:"resizer bg-grey-300/20 dark:hover:bg-white absolute top-0 right-0 w-0.5 h-full",onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler()})]})};function l2(e){return typeof e!="number"?typeof e=="string"&&e.includes("All")?e:i0:e<1?i0:e}function n8({table:e,currentPage:t,setCurrentPage:r}){const n=e.getFilteredRowModel().rows.length;return Te("div",{className:"hidden md:flex items-center gap-8",children:[Z(Vi,{value:t,onChange:i=>{const o=l2(i);r(o),o.toString().includes("All")?e.setPageSize(n):e.setPageSize(o)},labelType:"row",label:"Rows per page",placeholder:"Select rows per page",groups:[{label:"Rows per page",items:[10,20,30,40,50,`All (${n})`].map(i=>({label:`${i}`,value:i}))}]}),Te("span",{className:"flex items-center gap-1",children:[Z("strong",{children:e.getState().pagination.pageIndex+1}),"of",Z("strong",{children:e.getPageCount()})]}),Te("div",{className:"hidden lg:block",children:[Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:"<<"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:"<"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:">"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:">>"})]})]})}function i8({columns:e,data:t,type:r,setType:n}){const i=()=>{switch(r){case"csv":Yg("csv",e,t);break;case"xlsx":Yg("xlsx",e,t);break;case"png":ZD("table");break}};return Te("div",{className:"flex gap-6 items-center",children:[Z(Vi,{labelType:"row",value:r,onChange:o=>{n(o)},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:o0.map(o=>({label:o,value:o}))}]}),Z("button",{onClick:i,className:"_btn",children:"Export"})]})}const u2="DropdownMenu",[o8,Uk]=on(u2,[Pu]),Si=Pu(),[a8,c2]=o8(u2),s8=e=>{const{__scopeDropdownMenu:t,children:r,dir:n,open:i,defaultOpen:o,onOpenChange:a,modal:s=!0}=e,l=Si(t),u=v.useRef(null),[c=!1,f]=lo({prop:i,defaultProp:o,onChange:a});return v.createElement(a8,{scope:t,triggerId:Xr(),triggerRef:u,contentId:Xr(),open:c,onOpenChange:f,onOpenToggle:v.useCallback(()=>f(d=>!d),[f]),modal:s},v.createElement(r2,de({},l,{open:c,onOpenChange:f,dir:n,modal:s}),r))},l8="DropdownMenuTrigger",u8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,disabled:n=!1,...i}=e,o=c2(l8,r),a=Si(r);return v.createElement(n2,de({asChild:!0},a),v.createElement(Ie.button,de({type:"button",id:o.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?"open":"closed","data-disabled":n?"":void 0,disabled:n},i,{ref:sd(t,o.triggerRef),onPointerDown:Ee(e.onPointerDown,s=>{!n&&s.button===0&&s.ctrlKey===!1&&(o.onOpenToggle(),o.open||s.preventDefault())}),onKeyDown:Ee(e.onKeyDown,s=>{n||(["Enter"," "].includes(s.key)&&o.onOpenToggle(),s.key==="ArrowDown"&&o.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(s.key)&&s.preventDefault())})})))}),c8=e=>{const{__scopeDropdownMenu:t,...r}=e,n=Si(t);return v.createElement(i2,de({},n,r))},f8="DropdownMenuContent",d8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=c2(f8,r),o=Si(r),a=v.useRef(!1);return v.createElement(o2,de({id:i.contentId,"aria-labelledby":i.triggerId},o,n,{ref:t,onCloseAutoFocus:Ee(e.onCloseAutoFocus,s=>{var l;a.current||(l=i.triggerRef.current)===null||l===void 0||l.focus(),a.current=!1,s.preventDefault()}),onInteractOutside:Ee(e.onInteractOutside,s=>{const l=s.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,c=l.button===2||u;(!i.modal||c)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))}),h8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(B5,de({},i,n,{ref:t}))}),p8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(U5,de({},i,n,{ref:t}))}),g8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(H5,de({},i,n,{ref:t}))}),m8=s8,a1=u8,v8=c8,x8=d8,w8=h8,y8=p8,s1=g8;function E8(e,t){v.useEffect(()=>{const r=n=>{!e.current||e.current.contains(n.target)||t(n)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}},[e,t])}function l1({label:e,table:t,onlyIconTrigger:r=!1}){const[n,i]=v.useState(!1),o=v.useRef(null);return E8(o,()=>i(!1)),v.useEffect(()=>{const a=s=>{s.key==="Escape"&&i(!1)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[]),Te(m8,{open:n,children:[r?Z(a1,{title:"Filter columns",onClick:()=>i(!n),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"w-7 h-7",children:Z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z"})})}):Te(w8,{className:"flex flex-row items-center gap-2",children:[Z(y8,{className:"whitespace-nowrap",children:e}),Te(a1,{onClick:()=>i(!n),className:"bg-white text-black dark:bg-grey-900 dark:text-white whitespace-nowrap h-[36px] border-[1.5px] border-grey-700 rounded p-3 inline-flex items-center justify-center leading-none gap-[5px] shadow-[0_2px_10px] shadow-black/10 focus:shadow-[0_0_0_2px] focus:shadow-black data-[placeholder]:text-white outline-none","aria-label":e,children:[Z("span",{children:"Filter columns"}),Z(Hf,{className:bt({"transform rotate-180 duration-200 transition":n})})]})]}),Z(v8,{children:Te(x8,{sideOffset:10,ref:o,className:"z-50 bg-white/80 dark:bg-grey-900/80 backdrop-filter backdrop-blur flex flex-col gap-4 overflow-auto border-[1.5px] border-grey-700 rounded p-3 max-h-[500px] text-black dark:text-white",children:[Z(s1,{children:Te("label",{className:"flex items-center gap-2",children:[Z("input",{type:"checkbox",checked:t.getIsAllColumnsVisible(),onChange:t.getToggleAllColumnsVisibilityHandler()}),"Toggle All"]})}),t.getAllLeafColumns().filter(a=>a.id!=="select").map(a=>Z(s1,{children:Te("label",{className:"flex items-center gap-2",children:[Z("input",{type:"checkbox",checked:a.getIsVisible(),onChange:a.getToggleVisibilityHandler()}),a.id]})},a.id))]})})]})}var Gl={},_8={get exports(){return Gl},set exports(e){Gl=e}},qe={},fo={},S8={get exports(){return fo},set exports(e){fo=e}},Ti={};function f2(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function T8(e,t,r){}function C8(e,t,r){}var A8=/javascript\s*\:/img;function R8(e,t){return A8.test(t)?"":t}Ti.whiteList=f2();Ti.getDefaultWhiteList=f2;Ti.onAttr=T8;Ti.onIgnoreAttr=C8;Ti.safeAttrValue=R8;var O8={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r/g,W8=/"/g,z8=/"/g,G8=/&#([a-zA-Z0-9]*);?/gim,j8=/:?/gim,X8=/&newline;?/gim,Ms=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,c1=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,f1=/u\s*r\s*l\s*\(.*/gi;function m2(e){return e.replace(W8,""")}function v2(e){return e.replace(z8,'"')}function x2(e){return e.replace(G8,function(r,n){return n[0]==="x"||n[0]==="X"?String.fromCharCode(parseInt(n.substr(1),16)):String.fromCharCode(parseInt(n,10))})}function w2(e){return e.replace(j8,":").replace(X8," ")}function y2(e){for(var t="",r=0,n=e.length;r",n);if(i===-1)break;r=i+3}return t}function Q8(e){var t=e.split("");return t=t.filter(function(r){var n=r.charCodeAt(0);return n===127?!1:n<=31?n===10||n===13:!0}),t.join("")}qe.whiteList=h2();qe.getDefaultWhiteList=h2;qe.onTag=N8;qe.onIgnoreTag=M8;qe.onTagAttr=L8;qe.onIgnoreTagAttr=B8;qe.safeAttrValue=U8;qe.escapeHtml=g2;qe.escapeQuote=m2;qe.unescapeQuote=v2;qe.escapeHtmlEntities=x2;qe.escapeDangerHtml5Entities=w2;qe.clearNonPrintableCharacter=y2;qe.friendlyAttrValue=E2;qe.escapeAttrValue=_2;qe.onIgnoreTagStripAll=K8;qe.StripTagBody=Y8;qe.stripCommentTag=q8;qe.stripBlankChar=Q8;qe.cssFilter=p2;qe.getDefaultCSSWhiteList=$8;var bu={},cn=Zd;function Z8(e){var t=cn.spaceIndex(e),r;return t===-1?r=e.slice(1,-1):r=e.slice(1,t+1),r=cn.trim(r).toLowerCase(),r.slice(0,1)==="/"&&(r=r.slice(1)),r.slice(-1)==="/"&&(r=r.slice(0,-1)),r}function J8(e){return e.slice(0,2)===""||s===l-1){n+=r(e.slice(i,o)),c=e.slice(o,s+1),u=Z8(c),n+=t(o,n.length,u,c,J8(c)),i=s+1,o=!1;continue}if(f==='"'||f==="'")for(var d=1,h=e.charAt(s-d);h.trim()===""||h==="=";){if(h==="="){a=f;continue e}h=e.charAt(s-++d)}}else if(f===a){a=!1;continue}}return i0;t--){var r=e[t];if(r!==" ")return r==="="?t:-1}}function ab(e){return e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'"}function d1(e){return ab(e)?e.substr(1,e.length-2):e}bu.parseTag=eb;bu.parseAttr=rb;var sb=fo.FilterCSS,xr=qe,S2=bu,lb=S2.parseTag,ub=S2.parseAttr,tl=Zd;function Ls(e){return e==null}function cb(e){var t=tl.spaceIndex(e);if(t===-1)return{html:"",closing:e[e.length-2]==="/"};e=tl.trim(e.slice(t+1,-1));var r=e[e.length-1]==="/";return r&&(e=tl.trim(e.slice(0,-1))),{html:e,closing:r}}function fb(e){var t={};for(var r in e)t[r]=e[r];return t}function db(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(n){return n.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}function T2(e){e=fb(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=xr.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=db(e.whiteList||e.allowList):e.whiteList=xr.whiteList,e.onTag=e.onTag||xr.onTag,e.onTagAttr=e.onTagAttr||xr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||xr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||xr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||xr.safeAttrValue,e.escapeHtml=e.escapeHtml||xr.escapeHtml,this.options=e,e.css===!1?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new sb(e.css))}T2.prototype.process=function(e){if(e=e||"",e=e.toString(),!e)return"";var t=this,r=t.options,n=r.whiteList,i=r.onTag,o=r.onIgnoreTag,a=r.onTagAttr,s=r.onIgnoreTagAttr,l=r.safeAttrValue,u=r.escapeHtml,c=t.cssFilter;r.stripBlankChar&&(e=xr.stripBlankChar(e)),r.allowCommentTag||(e=xr.stripCommentTag(e));var f=!1;r.stripIgnoreTagBody&&(f=xr.StripTagBody(r.stripIgnoreTagBody,o),o=f.onIgnoreTag);var d=lb(e,function(h,m,p,g,x){var w={sourcePosition:h,position:m,isClosing:x,isWhite:Object.prototype.hasOwnProperty.call(n,p)},y=i(p,g,w);if(!Ls(y))return y;if(w.isWhite){if(w.isClosing)return"";var _=cb(g),k=n[p],N=ub(_.html,function(S,A){var R=tl.indexOf(k,S)!==-1,L=a(p,S,A,R);return Ls(L)?R?(A=l(p,S,A,c),A?S+'="'+A+'"':S):(L=s(p,S,A,R),Ls(L)?void 0:L):L});return g="<"+p,N&&(g+=" "+N),_.closing&&(g+=" /"),g+=">",g}else return y=o(p,g,w),Ls(y)?u(g):y},u);return f&&(d=f.remove(d)),d};var hb=T2;(function(e,t){var r=qe,n=bu,i=hb;function o(s,l){var u=new i(l);return u.process(s)}t=e.exports=o,t.filterXSS=o,t.FilterXSS=i,function(){for(var s in r)t[s]=r[s];for(var l in n)t[l]=n[l]}(),typeof window<"u"&&(window.filterXSS=e.exports);function a(){return typeof self<"u"&&typeof DedicatedWorkerGlobalScope<"u"&&self instanceof DedicatedWorkerGlobalScope}a()&&(self.filterXSS=e.exports)})(_8,Gl);const pb=Gl;function jo(e,t,r){const[n,i]=v.useState(()=>{if(typeof window>"u")return t;try{const a=window.localStorage.getItem(e);return a?r?r(JSON.parse(a)):JSON.parse(a):t}catch(a){return console.log(a),t}});return[n,a=>{try{const s=a instanceof Function?a(n):a;i(s),typeof window<"u"&&window.localStorage.setItem(e,JSON.stringify(s))}catch(s){console.log(s)}}]}const C2="ToastProvider",[Jd,gb,mb]=su("Toast"),[A2,Hk]=on("Toast",[mb]),[vb,ku]=A2(C2),R2=e=>{const{__scopeToast:t,label:r="Notification",duration:n=5e3,swipeDirection:i="right",swipeThreshold:o=50,children:a}=e,[s,l]=v.useState(null),[u,c]=v.useState(0),f=v.useRef(!1),d=v.useRef(!1);return v.createElement(Jd.Provider,{scope:t},v.createElement(vb,{scope:t,label:r,duration:n,swipeDirection:i,swipeThreshold:o,toastCount:u,viewport:s,onViewportChange:l,onToastAdd:v.useCallback(()=>c(h=>h+1),[]),onToastRemove:v.useCallback(()=>c(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:d},a))};R2.propTypes={label(e){if(e.label&&typeof e.label=="string"&&!e.label.trim()){const t=`Invalid prop \`label\` supplied to \`${C2}\`. Expected non-empty \`string\`.`;return new Error(t)}return null}};const xb="ToastViewport",wb=["F8"],t0="toast.viewportPause",r0="toast.viewportResume",yb=v.forwardRef((e,t)=>{const{__scopeToast:r,hotkey:n=wb,label:i="Notifications ({hotkey})",...o}=e,a=ku(xb,r),s=gb(r),l=v.useRef(null),u=v.useRef(null),c=v.useRef(null),f=v.useRef(null),d=He(t,f,a.onViewportChange),h=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),m=a.toastCount>0;v.useEffect(()=>{const g=x=>{var w;n.every(_=>x[_]||x.code===_)&&((w=f.current)===null||w===void 0||w.focus())};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[n]),v.useEffect(()=>{const g=l.current,x=f.current;if(m&&g&&x){const w=()=>{if(!a.isClosePausedRef.current){const N=new CustomEvent(t0);x.dispatchEvent(N),a.isClosePausedRef.current=!0}},y=()=>{if(a.isClosePausedRef.current){const N=new CustomEvent(r0);x.dispatchEvent(N),a.isClosePausedRef.current=!1}},_=N=>{!g.contains(N.relatedTarget)&&y()},k=()=>{g.contains(document.activeElement)||y()};return g.addEventListener("focusin",w),g.addEventListener("focusout",_),g.addEventListener("pointermove",w),g.addEventListener("pointerleave",k),window.addEventListener("blur",w),window.addEventListener("focus",y),()=>{g.removeEventListener("focusin",w),g.removeEventListener("focusout",_),g.removeEventListener("pointermove",w),g.removeEventListener("pointerleave",k),window.removeEventListener("blur",w),window.removeEventListener("focus",y)}}},[m,a.isClosePausedRef]);const p=v.useCallback(({tabbingDirection:g})=>{const w=s().map(y=>{const _=y.ref.current,k=[_,...Mb(_)];return g==="forwards"?k:k.reverse()});return(g==="forwards"?w.reverse():w).flat()},[s]);return v.useEffect(()=>{const g=f.current;if(g){const x=w=>{const y=w.altKey||w.ctrlKey||w.metaKey;if(w.key==="Tab"&&!y){const A=document.activeElement,R=w.shiftKey;if(w.target===g&&R){var k;(k=u.current)===null||k===void 0||k.focus();return}const U=p({tabbingDirection:R?"backwards":"forwards"}),W=U.findIndex(Y=>Y===A);if(Mc(U.slice(W+1)))w.preventDefault();else{var N,S;R?(N=u.current)===null||N===void 0||N.focus():(S=c.current)===null||S===void 0||S.focus()}}};return g.addEventListener("keydown",x),()=>g.removeEventListener("keydown",x)}},[s,p]),v.createElement(TS,{ref:l,role:"region","aria-label":i.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:m?void 0:"none"}},m&&v.createElement(h1,{ref:u,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"forwards"});Mc(g)}}),v.createElement(Jd.Slot,{scope:r},v.createElement(Ie.ol,de({tabIndex:-1},o,{ref:d}))),m&&v.createElement(h1,{ref:c,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"backwards"});Mc(g)}}))}),Eb="ToastFocusProxy",h1=v.forwardRef((e,t)=>{const{__scopeToast:r,onFocusFromOutsideViewport:n,...i}=e,o=ku(Eb,r);return v.createElement(gd,de({"aria-hidden":!0,tabIndex:0},i,{ref:t,style:{position:"fixed"},onFocus:a=>{var s;const l=a.relatedTarget;!((s=o.viewport)!==null&&s!==void 0&&s.contains(l))&&n()}}))}),$u="Toast",_b="toast.swipeStart",Sb="toast.swipeMove",Tb="toast.swipeCancel",Cb="toast.swipeEnd",Ab=v.forwardRef((e,t)=>{const{forceMount:r,open:n,defaultOpen:i,onOpenChange:o,...a}=e,[s=!0,l]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Ei,{present:r||s},v.createElement(O2,de({open:s},a,{ref:t,onClose:()=>l(!1),onPause:Dt(e.onPause),onResume:Dt(e.onResume),onSwipeStart:Ee(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:Ee(e.onSwipeMove,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${f}px`)}),onSwipeCancel:Ee(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:Ee(e.onSwipeEnd,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${f}px`),l(!1)})})))}),[Rb,Ob]=A2($u,{onClose(){}}),O2=v.forwardRef((e,t)=>{const{__scopeToast:r,type:n="foreground",duration:i,open:o,onClose:a,onEscapeKeyDown:s,onPause:l,onResume:u,onSwipeStart:c,onSwipeMove:f,onSwipeCancel:d,onSwipeEnd:h,...m}=e,p=ku($u,r),[g,x]=v.useState(null),w=He(t,Y=>x(Y)),y=v.useRef(null),_=v.useRef(null),k=i||p.duration,N=v.useRef(0),S=v.useRef(k),A=v.useRef(0),{onToastAdd:R,onToastRemove:L}=p,V=Dt(()=>{var Y;(g==null?void 0:g.contains(document.activeElement))&&((Y=p.viewport)===null||Y===void 0||Y.focus()),a()}),U=v.useCallback(Y=>{!Y||Y===1/0||(window.clearTimeout(A.current),N.current=new Date().getTime(),A.current=window.setTimeout(V,Y))},[V]);v.useEffect(()=>{const Y=p.viewport;if(Y){const re=()=>{U(S.current),u==null||u()},ye=()=>{const ge=new Date().getTime()-N.current;S.current=S.current-ge,window.clearTimeout(A.current),l==null||l()};return Y.addEventListener(t0,ye),Y.addEventListener(r0,re),()=>{Y.removeEventListener(t0,ye),Y.removeEventListener(r0,re)}}},[p.viewport,k,l,u,U]),v.useEffect(()=>{o&&!p.isClosePausedRef.current&&U(k)},[o,k,p.isClosePausedRef,U]),v.useEffect(()=>(R(),()=>L()),[R,L]);const W=v.useMemo(()=>g?P2(g):null,[g]);return p.viewport?v.createElement(v.Fragment,null,W&&v.createElement(Fb,{__scopeToast:r,role:"status","aria-live":n==="foreground"?"assertive":"polite","aria-atomic":!0},W),v.createElement(Rb,{scope:r,onClose:V},Jr.createPortal(v.createElement(Jd.ItemSlot,{scope:r},v.createElement(SS,{asChild:!0,onEscapeKeyDown:Ee(s,()=>{p.isFocusedToastEscapeKeyDownRef.current||V(),p.isFocusedToastEscapeKeyDownRef.current=!1})},v.createElement(Ie.li,de({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":p.swipeDirection},m,{ref:w,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:Ee(e.onKeyDown,Y=>{Y.key==="Escape"&&(s==null||s(Y.nativeEvent),Y.nativeEvent.defaultPrevented||(p.isFocusedToastEscapeKeyDownRef.current=!0,V()))}),onPointerDown:Ee(e.onPointerDown,Y=>{Y.button===0&&(y.current={x:Y.clientX,y:Y.clientY})}),onPointerMove:Ee(e.onPointerMove,Y=>{if(!y.current)return;const re=Y.clientX-y.current.x,ye=Y.clientY-y.current.y,ge=!!_.current,Se=["left","right"].includes(p.swipeDirection),ie=["left","up"].includes(p.swipeDirection)?Math.min:Math.max,we=Se?ie(0,re):0,Q=Se?0:ie(0,ye),F=Y.pointerType==="touch"?10:2,M={x:we,y:Q},b={originalEvent:Y,delta:M};ge?(_.current=M,Bs(Sb,f,b,{discrete:!1})):p1(M,p.swipeDirection,F)?(_.current=M,Bs(_b,c,b,{discrete:!1}),Y.target.setPointerCapture(Y.pointerId)):(Math.abs(re)>F||Math.abs(ye)>F)&&(y.current=null)}),onPointerUp:Ee(e.onPointerUp,Y=>{const re=_.current,ye=Y.target;if(ye.hasPointerCapture(Y.pointerId)&&ye.releasePointerCapture(Y.pointerId),_.current=null,y.current=null,re){const ge=Y.currentTarget,Se={originalEvent:Y,delta:re};p1(re,p.swipeDirection,p.swipeThreshold)?Bs(Cb,h,Se,{discrete:!0}):Bs(Tb,d,Se,{discrete:!0}),ge.addEventListener("click",ie=>ie.preventDefault(),{once:!0})}})})))),p.viewport))):null});O2.propTypes={type(e){if(e.type&&!["foreground","background"].includes(e.type)){const t=`Invalid prop \`type\` supplied to \`${$u}\`. Expected \`foreground | background\`.`;return new Error(t)}return null}};const Fb=e=>{const{__scopeToast:t,children:r,...n}=e,i=ku($u,t),[o,a]=v.useState(!1),[s,l]=v.useState(!1);return $b(()=>a(!0)),v.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),s?null:v.createElement(du,{asChild:!0},v.createElement(gd,n,o&&v.createElement(v.Fragment,null,i.label," ",r)))},Db=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Pb=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Ib="ToastAction",bb=v.forwardRef((e,t)=>{const{altText:r,...n}=e;return r?v.createElement(D2,{altText:r,asChild:!0},v.createElement(F2,de({},n,{ref:t}))):null});bb.propTypes={altText(e){return e.altText?null:new Error(`Missing prop \`altText\` expected on \`${Ib}\``)}};const kb="ToastClose",F2=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e,i=Ob(kb,r);return v.createElement(D2,{asChild:!0},v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,i.onClose)})))}),D2=v.forwardRef((e,t)=>{const{__scopeToast:r,altText:n,...i}=e;return v.createElement(Ie.div,de({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":n||void 0},i,{ref:t}))});function P2(e){const t=[];return Array.from(e.childNodes).forEach(n=>{if(n.nodeType===n.TEXT_NODE&&n.textContent&&t.push(n.textContent),Nb(n)){const i=n.ariaHidden||n.hidden||n.style.display==="none",o=n.dataset.radixToastAnnounceExclude==="";if(!i)if(o){const a=n.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...P2(n))}}),t}function Bs(e,t,r,{discrete:n}){const i=r.originalEvent.currentTarget,o=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?ud(i,o):i.dispatchEvent(o)}const p1=(e,t,r=0)=>{const n=Math.abs(e.x),i=Math.abs(e.y),o=n>i;return t==="left"||t==="right"?o&&n>r:!o&&i>r};function $b(e=()=>{}){const t=Dt(e);xt(()=>{let r=0,n=0;return r=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(n)}},[t])}function Nb(e){return e.nodeType===e.ELEMENT_NODE}function Mb(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Mc(e){const t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}const Lb=R2,Bb=yb,Ub=Ab,Hb=Db,Vb=Pb,Wb=F2,I2=({title:e,titleId:t,...r})=>Z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,...r,children:Z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}),zb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M9 16.5a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15ZM11.25 6.75l-4.5 4.5M6.75 6.75l4.5 4.5",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Gb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 24 24",width:24,height:24,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10ZM12 16v-4M12 8h.01",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),jb=({title:e,titleId:t,...r})=>Te("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M16.5 8.31V9a7.5 7.5 0 1 1-4.447-6.855",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),Z("path",{d:"M16.5 3 9 10.508l-2.25-2.25",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Xb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M7.718 2.895 1.366 13.5a1.5 1.5 0 0 0 1.282 2.25h12.705a1.5 1.5 0 0 0 1.283-2.25L10.283 2.895a1.5 1.5 0 0 0-2.565 0v0ZM9 6.75v3M9 12.75h.008",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Kb=({toast:e,open:t,setOpen:r})=>Te(Lb,{children:[Te(Ub,{open:t,onOpenChange:n=>{e.preventClose||r(n)},className:bt("z-50 fixed bottom-4 md:left-1/2 md:-translate-x-[50%] inset-x-4 w-auto shadow-lg md:max-w-[658px] duration-300","radix-state-open:animate-fade-in","radix-state-closed:animate-toast-hide","radix-swipe-end:animate-toast-swipe-out","translate-x-radix-toast-swipe-move-x","radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]","px-[40px] md:px-[58px] py-6 flex flex-col border rounded-[4px]",{"bg-green-100 text-green-600 border-green-600":e.status==="success","bg-red-200 text-red-600 border-red-600":e.status==="error","bg-blue-100 text-blue-700 border-blue-600":e.status==="info","bg-orange-200 text-orange-600 border-orange-600":e.status==="warning"},{"h-[72px]":!e.description}),children:[e.status==="success"?Z(jb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="warning"?Z(Xb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="error"?Z(zb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):Z(Gb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}),Z(Hb,{className:"text-grey-900 font-bold text-sm",children:e.title}),e.description&&Z(Vb,{className:"mt-2 text-[10px] md:text-xs text-grey-800",children:e.description}),Z(Wb,{className:"absolute top-7 right-5 md:right-7",children:Z(I2,{className:"w-4 h-4 text-grey-900"})})]}),Z(Bb,{})]});function Yb(e){const[t,r]=v.useState(e),n=t==="dark"?"light":"dark";return v.useEffect(()=>{const i=window.document.documentElement;i.classList.remove(n),i.classList.add(t)},[t,n]),[n,r]}const b2="Dialog",[k2,Vk]=on(b2),[qb,$r]=k2(b2),Qb=e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:o,modal:a=!0}=e,s=v.useRef(null),l=v.useRef(null),[u=!1,c]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(qb,{scope:t,triggerRef:s,contentRef:l,contentId:Xr(),titleId:Xr(),descriptionId:Xr(),open:u,onOpenChange:c,onOpenToggle:v.useCallback(()=>c(f=>!f),[c]),modal:a},r)},Zb="DialogTrigger",Jb=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(Zb,r),o=He(t,i.triggerRef);return v.createElement(Ie.button,de({type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":eh(i.open)},n,{ref:o,onClick:Ee(e.onClick,i.onOpenToggle)}))}),$2="DialogPortal",[ek,N2]=k2($2,{forceMount:void 0}),tk=e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,o=$r($2,t);return v.createElement(ek,{scope:t,forceMount:r},v.Children.map(n,a=>v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},a))))},n0="DialogOverlay",rk=v.forwardRef((e,t)=>{const r=N2(n0,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(n0,e.__scopeDialog);return o.modal?v.createElement(Ei,{present:n||o.open},v.createElement(nk,de({},i,{ref:t}))):null}),nk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(n0,r);return v.createElement(vd,{as:ii,allowPinchZoom:!0,shards:[i.contentRef]},v.createElement(Ie.div,de({"data-state":eh(i.open)},n,{ref:t,style:{pointerEvents:"auto",...n.style}})))}),Ha="DialogContent",ik=v.forwardRef((e,t)=>{const r=N2(Ha,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(Ha,e.__scopeDialog);return v.createElement(Ei,{present:n||o.open},o.modal?v.createElement(ok,de({},i,{ref:t})):v.createElement(ak,de({},i,{ref:t})))}),ok=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(null),i=He(t,r.contentRef,n);return v.useEffect(()=>{const o=n.current;if(o)return md(o)},[]),v.createElement(M2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,o=>{var a;o.preventDefault(),(a=r.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,o=>{const a=o.detail.originalEvent,s=a.button===0&&a.ctrlKey===!0;(a.button===2||s)&&o.preventDefault()}),onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault())}))}),ak=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(!1);return v.createElement(M2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var o;if((o=e.onCloseAutoFocus)===null||o===void 0||o.call(e,i),!i.defaultPrevented){var a;n.current||(a=r.triggerRef.current)===null||a===void 0||a.focus(),i.preventDefault()}n.current=!1},onInteractOutside:i=>{var o,a;(o=e.onInteractOutside)===null||o===void 0||o.call(e,i),i.defaultPrevented||(n.current=!0);const s=i.target;((a=r.triggerRef.current)===null||a===void 0?void 0:a.contains(s))&&i.preventDefault()}}))}),M2=v.forwardRef((e,t)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:o,...a}=e,s=$r(Ha,r),l=v.useRef(null),u=He(t,l);return cd(),v.createElement(v.Fragment,null,v.createElement(fd,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:o},v.createElement(lu,de({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":eh(s.open)},a,{ref:u,onDismiss:()=>s.onOpenChange(!1)}))),!1)}),sk="DialogTitle",lk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(sk,r);return v.createElement(Ie.h2,de({id:i.titleId},n,{ref:t}))}),uk="DialogClose",ck=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(uk,r);return v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,()=>i.onOpenChange(!1))}))});function eh(e){return e?"open":"closed"}const fk=Qb,dk=Jb,hk=tk,pk=rk,gk=ik,mk=lk,vk=ck,xk=new Date,wk=50,i0=30;function yk(e,t){try{const r=e.hasOwnProperty("index")?"index":e.hasOwnProperty("Index")?"Index":null,n=r?e[r]:null,i=e[t],o=typeof i,s=(i==null?void 0:i.toString().replace(/[^0-9]/g,"")).length>=4&&(Vd(t)||t.toLowerCase()==="index"||n&&n&&typeof n=="string"&&(n.toLowerCase().includes("date")||n.toLowerCase().includes("day")||n.toLowerCase().includes("time")||n.toLowerCase().includes("timestamp")||n.toLowerCase().includes("year")||n.toLowerCase().includes("month")||n.toLowerCase().includes("week")||n.toLowerCase().includes("hour")||n.toLowerCase().includes("minute")));if(o==="string"&&i.startsWith("http"))return(i==null?void 0:i.toString().length)??0;if(s){if(typeof i=="string")return(i==null?void 0:i.toString().length)??0;try{const u=new Date(i);let c="";return u.getUTCHours()===0&&u.getUTCMinutes()===0&&u.getUTCSeconds()===0&&u.getMilliseconds()===0?c=u.toISOString().split("T")[0]:(c=u.toISOString(),c=c.split("T")[0]+" "+c.split("T")[1].split(".")[0]),(c==null?void 0:c.toString().length)??0}catch{return(i==null?void 0:i.toString().length)??0}}return(i==null?void 0:i.toString().length)??0}catch{return 0}}const o0=["csv","xlsx","png"];function Ek({data:e,columns:t,title:r,initialTheme:n,cmd:i=""}){const[o,a]=jo("exportType",o0[0]),[s,l]=Yb(n),[u,c]=v.useState(s==="dark"),f=T=>{l(s),c(T)},[d,h]=jo("rowsPerPage",i0,l2),[m,p]=jo("advanced",!1),[g,x]=jo("colors",!1),[w,y]=v.useState([]),[_,k]=v.useState(""),[N,S]=jo("fontSize","1"),[A,R]=v.useState(!1),L=t.reduce((T,B,H)=>(T[B]=H{const K=Math.max(...T.map(ve=>yk(ve,B)),H.length+8);return Math.min(200,K*12)},Y=v.useMemo(()=>[...t.map((T,B)=>({accessorKey:T,id:T,header:T,size:W(e,T,T),footer:T,cell:({row:H})=>{var je;const q=H.original.hasOwnProperty("index")?"index":H.original.hasOwnProperty("Index")?"Index":t[0],ee=q?H.original[q]:null,K=H.original[T],ve=typeof K,De=(K==null?void 0:K.toString().replace(/[^0-9]/g,"")).length>=4&&(Vd(T)||T.toLowerCase()==="index"||ee&&typeof ee=="string"&&(ee.toLowerCase().includes("date")||ee.toLowerCase().includes("time")||ee.toLowerCase().includes("timestamp")||ee.toLowerCase().includes("year")));if(ve==="string"&&K.startsWith("http"))return Z("a",{className:"_hyper-link",href:K,target:"_blank",rel:"noreferrer",children:K.length>25?K.substring(0,25)+"...":K});if(De){if(typeof K=="string"){const Re=K.split("T")[0],ce=(je=K.split("T")[1])==null?void 0:je.split(".")[0];return ce==="00:00:00"?Z("p",{children:Re}):Te("p",{children:[Re," ",ce]})}if(typeof K=="number"&&K<1e12)return Z("p",{children:K});try{const Re=new Date(K);let ce="";return Re.getUTCHours()===0&&Re.getUTCMinutes()===0&&Re.getUTCSeconds()===0&&Re.getMilliseconds()===0?ce=Re.toISOString().split("T")[0]:(ce=Re.toISOString(),ce=ce.split("T")[0]+" "+ce.split("T")[1].split(".")[0]),Z("p",{children:ce})}catch{return Z("p",{children:K})}}if(ve==="number"){const Re=XD(K);return Z("p",{className:bt("whitespace-nowrap",{"text-black dark:text-white":!g,"text-[#16A34A]":K>0&&g,"text-[#F87171]":K<0&&g,"text-[#404040]":K===0&&g}),children:K!==0?K>0?`${Re}`:`${Re}`:Re})}else if(ve==="string")return Z("div",{dangerouslySetInnerHTML:{__html:pb(K)}});return Z("p",{children:K})}}))],[m,g]),[re,ye]=v.useState(!1),[ge,Se]=v.useState(Y.map(T=>T.id)),ie=()=>Se(t.map(T=>T.id)),we=v.useMemo(()=>{const T=ge.map(H=>H),B=Y.map(H=>H.id);return!KD(T,B)},[ge,Y]),Q=uS({data:e,columns:Y,getCoreRowModel:Z_(),getSortedRowModel:nS(),getFilteredRowModel:rS(),getPaginationRowModel:oS(),columnResizeMode:"onChange",onColumnVisibilityChange:U,onColumnOrderChange:Se,onSortingChange:y,onGlobalFilterChange:k,globalFilterFn:YD,state:{sorting:w,globalFilter:_,columnOrder:ge,columnVisibility:V},initialState:{pagination:{pageIndex:0,pageSize:typeof d=="string"?d.includes("All")?e.length:parseInt(d):d}}}),F=v.useRef(null),{rows:M}=Q.getRowModel(),b=Q.getVisibleFlatColumns();return Te($1,{children:[Z(Kb,{toast:{id:"max-columns",title:"Max 12 columns are visible by default",description:"You can change this by clicking on advanced and then top right 'Filter' button",status:"info"},open:A,setOpen:R}),Te("div",{ref:F,className:bt("overflow-x-hidden h-screen"),children:[Te("div",{className:"relative p-4",id:"table",children:[Z("div",{className:"absolute -inset-0.5 bg-gradient-to-r rounded-md blur-md from-[#072e49]/30 via-[#0d345f]/30 to-[#0d3362]/30"}),Te("div",{className:"border border-grey-500/60 dark:border-grey-200/60 bg-white dark:bg-grey-900 rounded overflow-hidden relative z-20",children:[Te("div",{className:"_header relative gap-4 py-2 text-center text-xs flex items-center justify-between px-4 text-white",style:{fontSize:`${Number(N)*100}%`},children:[Z("div",{className:"w-1/3",children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"64",height:"40",fill:"none",viewBox:"0 0 64 40",children:Z("path",{fill:"#fff",d:"M61.283 3.965H33.608v27.757h25.699V19.826H37.561v-3.965H63.26V3.965h-1.977zM39.538 23.792h15.815v3.965H37.561v-3.965h1.977zM59.306 9.913v1.983H37.561V7.931h21.745v1.982zM33.606 0h-3.954v3.965H33.606V0zM25.7 3.966H0V15.86h25.7v3.965H3.953v11.896h25.7V3.966h-3.955zm0 21.808v1.983H7.907v-3.965h17.791v1.982zm0-15.86v1.982H3.953V7.931h21.745v1.982zM37.039 35.693v2.952l-.246-.246-.245-.245-.245-.247-.245-.246-.246-.246-.245-.245-.245-.247-.247-.246-.245-.246-.245-.246-.245-.246-.246-.246h-.49v3.936h.49v-3.198l.246.246.245.246.245.246.245.246.246.246.246.246.245.247.246.245.245.246.245.247.245.246.246.245.245.246h.245v-3.936h-.49zM44.938 37.17h-.491v-1.477h-2.944v3.937h3.93v-2.46h-.495zm-2.944-.246v-.739h1.962v.984h-1.962v-.245zm2.944.984v1.23h-2.944V37.66h2.944v.247zM52.835 37.17h-.49v-1.477h-2.946v3.937h3.925v-2.46h-.489zm-2.944-.246v-.739h1.963v.984h-1.965l.002-.245zm2.944.984v1.23H49.89V37.66h2.946v.247zM29.174 35.693H25.739v3.936H29.663v-.491H26.229v-.984h2.943v-.493H26.229v-1.476h3.434v-.492h-.489zM13.37 35.693H9.934v3.937h3.925v-3.937h-.49zm0 .738v2.709h-2.945v-2.955h2.943l.001.246zM21.276 35.693h-3.435v3.937h.491v-1.476h3.434v-2.461h-.49zm0 .738v1.23h-2.944v-1.476h2.944v.246z"})})}),Z("p",{className:"font-bold w-1/3 flex flex-col gap-0.5 items-center",children:r}),Te("p",{className:"w-1/3 text-right text-xs",children:[new Intl.DateTimeFormat("en-GB",{dateStyle:"full",timeStyle:"long"}).format(xk).replace(/:\d\d /," "),Z("br",{}),Z("span",{className:"text-grey-400",children:i})]})]}),Z("div",{className:"overflow-auto max-h-[calc(100vh-160px)] smh:max-h-[calc(100vh-95px)]",children:Te("table",{className:"text-sm relative",style:{fontSize:`${Number(N)*100}%`},children:[Z("thead",{className:"sticky top-0 bg-white dark:bg-grey-900",children:Q.getHeaderGroups().map((T,B)=>Z("tr",{children:T.headers.map((H,q)=>Z(r8,{setLockFirstColumn:ye,lockFirstColumn:re,idx:q,advanced:m,header:H,table:Q},H.id))},T.id))}),Z("tbody",{children:Q.getRowModel().rows.map((T,B)=>Z("tr",{className:"!h-[64px] border-b border-grey-400",children:T.getVisibleCells().map((H,q)=>Z("td",{className:bt("whitespace-normal p-4 text-black dark:text-white",{"bg-white dark:bg-grey-850":B%2===0,"bg-grey-100 dark:bg-[#202020]":B%2===1,"sticky left-0 z-10":q===0&&re}),style:{width:H.column.getSize()},children:If(H.column.columnDef.cell,H.getContext())},H.id))},T.id))}),M.length>30&&b.length>4&&Z("tfoot",{children:Q.getFooterGroups().map(T=>Z("tr",{children:T.headers.map(B=>Z("th",{colSpan:B.colSpan,className:"text-grey-500 bg-grey-100 dark:bg-grey-850 font-normal text-left text-sm h-10 p-4",style:{width:B.getSize()},children:B.isPlaceholder?null:If(B.column.columnDef.footer,B.getContext())},B.id))},T.id))})]})})]})]}),Te("div",{className:"smh:hidden flex max-h-[68px] overflow-x-auto bg-white/70 dark:bg-grey-900/70 backdrop-filter backdrop-blur z-20 bottom-0 left-0 w-full gap-10 justify-between py-4 px-4 text-sm",children:[Te("div",{className:"flex items-center gap-10",children:[Te(fk,{children:[Z(dk,{className:"_btn",children:"Settings"}),Te(hk,{children:[Z(pk,{className:"_modal-overlay"}),Te(gk,{className:"_modal",children:[Z(vk,{className:"absolute top-[40px] right-[46px] text-grey-200 hover:text-white rounded-[4px] focus:outline focus:outline-2 focus:outline-grey-500",children:Z(I2,{className:"w-6 h-6"})}),Z(mk,{className:"uppercase font-bold tracking-widest",children:"Settings"}),Te("div",{className:"grid grid-cols-2 gap-4 mt-10 text-sm",children:[we&&Z("button",{onClick:()=>ie(),className:"_btn h-9",children:"Reset Order"}),Z(Vi,{labelType:"row",value:u?"light":"dark",onChange:T=>{f(T!=="dark")},label:"Theme",placeholder:"Select theme",groups:[{label:"Theme",items:[{label:"Dark",value:"dark"},{label:"Light",value:"light"}]}]}),Z(Vi,{labelType:"row",value:o,onChange:T=>{a(T)},label:"Export type",placeholder:"Select export type",groups:[{label:"Export type",items:o0.map(T=>({label:T,value:T}))}]}),Z(Vi,{labelType:"row",value:N,onChange:S,label:"Font size",placeholder:"Select font size",groups:[{label:"Font size",items:[{label:"50%",value:"0.5"},{label:"75%",value:"0.75"},{label:"100%",value:"1"},{label:"125%",value:"1.25"},{label:"150%",value:"1.5"},{label:"175%",value:"1.75"},{label:"200%",value:"2"}]}]}),Z(l1,{table:Q,label:"Filter"}),Z("div",{className:"flex gap-2 items-center",children:Z(Vi,{labelType:"row",value:m?"advanced":"simple",onChange:T=>{p(T==="advanced")},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:[{label:"Simple",value:"simple"},{label:"Advanced",value:"advanced"}]}]})}),Te("div",{className:"flex gap-2 items-center",children:[Z("label",{htmlFor:"colors",children:"Colors"}),Z("input",{id:"colors",type:"checkbox",checked:g,onChange:()=>x(!g)})]})]})]})]})]}),Z(l1,{onlyIconTrigger:!0,table:Q,label:""})]}),Z(n8,{currentPage:d,setCurrentPage:h,table:Q}),Z(i8,{setType:a,type:o,columns:t,data:e})]})]})]})}function L2(e){let t=null;return()=>(t==null&&(t=e()),t)}function _k(e,t){return e.filter(r=>r!==t)}function Sk(e,t){const r=new Set,n=o=>r.add(o);e.forEach(n),t.forEach(n);const i=[];return r.forEach(o=>i.push(o)),i}class Tk{enter(t){const r=this.entered.length,n=i=>this.isNodeInDocument(i)&&(!i.contains||i.contains(t));return this.entered=Sk(this.entered.filter(n),[t]),r===0&&this.entered.length>0}leave(t){const r=this.entered.length;return this.entered=_k(this.entered.filter(this.isNodeInDocument),t),r>0&&this.entered.length===0}reset(){this.entered=[]}constructor(t){this.entered=[],this.isNodeInDocument=t}}class Ck{initializeExposedProperties(){Object.keys(this.config.exposeProperties).forEach(t=>{Object.defineProperty(this.item,t,{configurable:!0,enumerable:!0,get(){return console.warn(`Browser doesn't allow reading "${t}" until the drop event.`),null}})})}loadDataTransfer(t){if(t){const r={};Object.keys(this.config.exposeProperties).forEach(n=>{const i=this.config.exposeProperties[n];i!=null&&(r[n]={value:i(t,this.config.matchesTypes),configurable:!0,enumerable:!0})}),Object.defineProperties(this.item,r)}}canDrag(){return!0}beginDrag(){return this.item}isDragging(t,r){return r===t.getSourceId()}endDrag(){}constructor(t){this.config=t,this.item={},this.initializeExposedProperties()}}const B2="__NATIVE_FILE__",U2="__NATIVE_URL__",H2="__NATIVE_TEXT__",V2="__NATIVE_HTML__",g1=Object.freeze(Object.defineProperty({__proto__:null,FILE:B2,HTML:V2,TEXT:H2,URL:U2},Symbol.toStringTag,{value:"Module"}));function Lc(e,t,r){const n=t.reduce((i,o)=>i||e.getData(o),"");return n??r}const a0={[B2]:{exposeProperties:{files:e=>Array.prototype.slice.call(e.files),items:e=>e.items,dataTransfer:e=>e},matchesTypes:["Files"]},[V2]:{exposeProperties:{html:(e,t)=>Lc(e,t,""),dataTransfer:e=>e},matchesTypes:["Html","text/html"]},[U2]:{exposeProperties:{urls:(e,t)=>Lc(e,t,"").split(` -`),dataTransfer:e=>e},matchesTypes:["Url","text/uri-list"]},[H2]:{exposeProperties:{text:(e,t)=>Lc(e,t,""),dataTransfer:e=>e},matchesTypes:["Text","text/plain"]}};function Ak(e,t){const r=a0[e];if(!r)throw new Error(`native type ${e} has no configuration`);const n=new Ck(r);return n.loadDataTransfer(t),n}function Bc(e){if(!e)return null;const t=Array.prototype.slice.call(e.types||[]);return Object.keys(a0).filter(r=>{const n=a0[r];return n!=null&&n.matchesTypes?n.matchesTypes.some(i=>t.indexOf(i)>-1):!1})[0]||null}const Rk=L2(()=>/firefox/i.test(navigator.userAgent)),W2=L2(()=>!!window.safari);class m1{interpolate(t){const{xs:r,ys:n,c1s:i,c2s:o,c3s:a}=this;let s=r.length-1;if(t===r[s])return n[s];let l=0,u=a.length-1,c;for(;l<=u;){c=Math.floor(.5*(l+u));const h=r[c];if(ht)u=c-1;else return n[c]}s=Math.max(0,u);const f=t-r[s],d=f*f;return n[s]+i[s]*f+o[s]*d+a[s]*f*d}constructor(t,r){const{length:n}=t,i=[];for(let h=0;ht[h]{let N=new m1([0,.5,1],[l.y,l.y/c*m,l.y+m-c]).interpolate(d);return W2()&&o&&(N+=(window.devicePixelRatio-1)*m),N},g=()=>new m1([0,.5,1],[l.x,l.x/u*h,l.x+h-u]).interpolate(f),{offsetX:x,offsetY:w}=i,y=x===0||x,_=w===0||w;return{x:y?x:g(),y:_?w:p()}}class Ik{get window(){if(this.globalContext)return this.globalContext;if(typeof window<"u")return window}get document(){var t;return!((t=this.globalContext)===null||t===void 0)&&t.document?this.globalContext.document:this.window?this.window.document:void 0}get rootElement(){var t;return((t=this.optionsArgs)===null||t===void 0?void 0:t.rootElement)||this.window}constructor(t,r){this.ownerDocument=null,this.globalContext=t,this.optionsArgs=r}}function bk(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v1(e){for(var t=1;t{this.sourcePreviewNodes.delete(t),this.sourcePreviewNodeOptions.delete(t)}}connectDragSource(t,r,n){this.sourceNodes.set(t,r),this.sourceNodeOptions.set(t,n);const i=a=>this.handleDragStart(a,t),o=a=>this.handleSelectStart(a);return r.setAttribute("draggable","true"),r.addEventListener("dragstart",i),r.addEventListener("selectstart",o),()=>{this.sourceNodes.delete(t),this.sourceNodeOptions.delete(t),r.removeEventListener("dragstart",i),r.removeEventListener("selectstart",o),r.setAttribute("draggable","false")}}connectDropTarget(t,r){const n=a=>this.handleDragEnter(a,t),i=a=>this.handleDragOver(a,t),o=a=>this.handleDrop(a,t);return r.addEventListener("dragenter",n),r.addEventListener("dragover",i),r.addEventListener("drop",o),()=>{r.removeEventListener("dragenter",n),r.removeEventListener("dragover",i),r.removeEventListener("drop",o)}}addEventListeners(t){t.addEventListener&&(t.addEventListener("dragstart",this.handleTopDragStart),t.addEventListener("dragstart",this.handleTopDragStartCapture,!0),t.addEventListener("dragend",this.handleTopDragEndCapture,!0),t.addEventListener("dragenter",this.handleTopDragEnter),t.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.addEventListener("dragover",this.handleTopDragOver),t.addEventListener("dragover",this.handleTopDragOverCapture,!0),t.addEventListener("drop",this.handleTopDrop),t.addEventListener("drop",this.handleTopDropCapture,!0))}removeEventListeners(t){t.removeEventListener&&(t.removeEventListener("dragstart",this.handleTopDragStart),t.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),t.removeEventListener("dragend",this.handleTopDragEndCapture,!0),t.removeEventListener("dragenter",this.handleTopDragEnter),t.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.removeEventListener("dragover",this.handleTopDragOver),t.removeEventListener("dragover",this.handleTopDragOverCapture,!0),t.removeEventListener("drop",this.handleTopDrop),t.removeEventListener("drop",this.handleTopDropCapture,!0))}getCurrentSourceNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourceNodeOptions.get(t);return v1({dropEffect:this.altKeyPressed?"copy":"move"},r||{})}getCurrentDropEffect(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}getCurrentSourcePreviewNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourcePreviewNodeOptions.get(t);return v1({anchorX:.5,anchorY:.5,captureDraggingState:!1},r||{})}isDraggingNativeItem(){const t=this.monitor.getItemType();return Object.keys(g1).some(r=>g1[r]===t)}beginDragNativeItem(t,r){this.clearCurrentDragSourceNode(),this.currentNativeSource=Ak(t,r),this.currentNativeHandle=this.registry.addSource(t,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}setCurrentDragSourceNode(t){this.clearCurrentDragSourceNode(),this.currentDragSourceNode=t;const r=1e3;this.mouseMoveTimeoutTimer=setTimeout(()=>{var n;return(n=this.rootElement)===null||n===void 0?void 0:n.addEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)},r)}clearCurrentDragSourceNode(){if(this.currentDragSourceNode){if(this.currentDragSourceNode=null,this.rootElement){var t;(t=this.window)===null||t===void 0||t.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}return this.mouseMoveTimeoutTimer=null,!0}return!1}handleDragStart(t,r){t.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(r))}handleDragEnter(t,r){this.dragEnterTargetIds.unshift(r)}handleDragOver(t,r){this.dragOverTargetIds===null&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(r)}handleDrop(t,r){this.dropTargetIds.unshift(r)}constructor(t,r,n){this.sourcePreviewNodes=new Map,this.sourcePreviewNodeOptions=new Map,this.sourceNodes=new Map,this.sourceNodeOptions=new Map,this.dragStartSourceIds=null,this.dropTargetIds=[],this.dragEnterTargetIds=[],this.currentNativeSource=null,this.currentNativeHandle=null,this.currentDragSourceNode=null,this.altKeyPressed=!1,this.mouseMoveTimeoutTimer=null,this.asyncEndDragFrameId=null,this.dragOverTargetIds=null,this.lastClientOffset=null,this.hoverRafId=null,this.getSourceClientOffset=i=>{const o=this.sourceNodes.get(i);return o&&z2(o)||null},this.endDragNativeItem=()=>{this.isDraggingNativeItem()&&(this.actions.endDrag(),this.currentNativeHandle&&this.registry.removeSource(this.currentNativeHandle),this.currentNativeHandle=null,this.currentNativeSource=null)},this.isNodeInDocument=i=>!!(i&&this.document&&this.document.body&&this.document.body.contains(i)),this.endDragIfSourceWasRemovedFromDOM=()=>{const i=this.currentDragSourceNode;i==null||this.isNodeInDocument(i)||(this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover())},this.scheduleHover=i=>{this.hoverRafId===null&&typeof requestAnimationFrame<"u"&&(this.hoverRafId=requestAnimationFrame(()=>{this.monitor.isDragging()&&this.actions.hover(i||[],{clientOffset:this.lastClientOffset}),this.hoverRafId=null}))},this.cancelHover=()=>{this.hoverRafId!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(this.hoverRafId),this.hoverRafId=null)},this.handleTopDragStartCapture=()=>{this.clearCurrentDragSourceNode(),this.dragStartSourceIds=[]},this.handleTopDragStart=i=>{if(i.defaultPrevented)return;const{dragStartSourceIds:o}=this;this.dragStartSourceIds=null;const a=Us(i);this.monitor.isDragging()&&(this.actions.endDrag(),this.cancelHover()),this.actions.beginDrag(o||[],{publishSource:!1,getSourceClientOffset:this.getSourceClientOffset,clientOffset:a});const{dataTransfer:s}=i,l=Bc(s);if(this.monitor.isDragging()){if(s&&typeof s.setDragImage=="function"){const c=this.monitor.getSourceId(),f=this.sourceNodes.get(c),d=this.sourcePreviewNodes.get(c)||f;if(d){const{anchorX:h,anchorY:m,offsetX:p,offsetY:g}=this.getCurrentSourcePreviewNodeOptions(),y=Pk(f,d,a,{anchorX:h,anchorY:m},{offsetX:p,offsetY:g});s.setDragImage(d,y.x,y.y)}}try{s==null||s.setData("application/json",{})}catch{}this.setCurrentDragSourceNode(i.target);const{captureDraggingState:u}=this.getCurrentSourcePreviewNodeOptions();u?this.actions.publishDragSource():setTimeout(()=>this.actions.publishDragSource(),0)}else if(l)this.beginDragNativeItem(l);else{if(s&&!s.types&&(i.target&&!i.target.hasAttribute||!i.target.hasAttribute("draggable")))return;i.preventDefault()}},this.handleTopDragEndCapture=()=>{this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleTopDragEnterCapture=i=>{if(this.dragEnterTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}if(!this.enterLeaveCounter.enter(i.target)||this.monitor.isDragging())return;const{dataTransfer:s}=i,l=Bc(s);l&&this.beginDragNativeItem(l,s)},this.handleTopDragEnter=i=>{const{dragEnterTargetIds:o}=this;if(this.dragEnterTargetIds=[],!this.monitor.isDragging())return;this.altKeyPressed=i.altKey,o.length>0&&this.actions.hover(o,{clientOffset:Us(i)}),o.some(s=>this.monitor.canDropOnTarget(s))&&(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect()))},this.handleTopDragOverCapture=i=>{if(this.dragOverTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}},this.handleTopDragOver=i=>{const{dragOverTargetIds:o}=this;if(this.dragOverTargetIds=[],!this.monitor.isDragging()){i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none");return}this.altKeyPressed=i.altKey,this.lastClientOffset=Us(i),this.scheduleHover(o),(o||[]).some(s=>this.monitor.canDropOnTarget(s))?(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect())):this.isDraggingNativeItem()?i.preventDefault():(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none"))},this.handleTopDragLeaveCapture=i=>{this.isDraggingNativeItem()&&i.preventDefault(),this.enterLeaveCounter.leave(i.target)&&(this.isDraggingNativeItem()&&setTimeout(()=>this.endDragNativeItem(),0),this.cancelHover())},this.handleTopDropCapture=i=>{if(this.dropTargetIds=[],this.isDraggingNativeItem()){var o;i.preventDefault(),(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}else Bc(i.dataTransfer)&&i.preventDefault();this.enterLeaveCounter.reset()},this.handleTopDrop=i=>{const{dropTargetIds:o}=this;this.dropTargetIds=[],this.actions.hover(o,{clientOffset:Us(i)}),this.actions.drop({dropEffect:this.getCurrentDropEffect()}),this.isDraggingNativeItem()?this.endDragNativeItem():this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleSelectStart=i=>{const o=i.target;typeof o.dragDrop=="function"&&(o.tagName==="INPUT"||o.tagName==="SELECT"||o.tagName==="TEXTAREA"||o.isContentEditable||(i.preventDefault(),o.dragDrop()))},this.options=new Ik(r,n),this.actions=t.getActions(),this.monitor=t.getMonitor(),this.registry=t.getRegistry(),this.enterLeaveCounter=new Tk(this.isNodeInDocument)}}const $k=function(t,r,n){return new kk(t,r,n)};function Nk(){const[e,t]=v.useState(null),[r,n]=v.useState("Interactive Table");v.useEffect(()=>{const a=setInterval(()=>{if(window.json_data){const s=JSON.parse(window.json_data);console.log(s),t(s),s.title&&typeof s.title=="string"&&n(s.title),clearInterval(a)}},100);return()=>clearInterval(a)},[]);const o=(a=>{var h;if(!a)return null;let s=(h=a.title)==null?void 0:h.replace(/|<\/b>/g,"").replace(/ /g,"_"),l=new Date().toISOString().slice(0,10).replace(/-/g,""),u=new Date().toISOString().slice(11,19).replace(/:/g,"");window.title=`openbb_${s}_${l}_${u}`;const c=a.columns;a.index;const d=a.data.map((m,p)=>{const g={};return m.forEach((x,w)=>{g[c[w]]=x||""}),g});return{columns:c,data:d}})(e);return Z("div",{className:"relative h-full bg-white dark:bg-black text-black dark:text-white",children:Z(gI,{backend:$k,children:o&&Z(Ek,{title:r,data:o.data,columns:o.columns,initialTheme:e.theme&&typeof e.theme=="string"&&e.theme==="dark"?"dark":"light",cmd:(e==null?void 0:e.command_location)??""})})})}cv.render(Z(nr.StrictMode,{children:Z(Nk,{})}),document.getElementById("root")); +`;var r=Hd(e,t);return r}function MD(e){var t="",r,n="";if(e==null||e["!ref"]==null)return[];var i=Ge(e["!ref"]),o="",a=[],s,l=[],u=Array.isArray(e);for(s=i.s.c;s<=i.e.c;++s)a[s]=Rt(s);for(var c=i.s.r;c<=i.e.r;++c)for(o=wt(c),s=i.s.c;s<=i.e.c;++s)if(t=a[s]+o,r=u?(e[c]||[])[s]:e[t],n="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;n=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)n=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)n=""+r.v;else if(r.t=="b")n=r.v?"TRUE":"FALSE";else if(r.w!==void 0)n="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?n="'"+r.v:n=""+r.v}}l[l.length]=t+"="+n}return l}function bw(e,t,r){var n=r||{},i=+!n.skipHeader,o=e||{},a=0,s=0;if(o&&n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var l=typeof n.origin=="string"?ut(n.origin):n.origin;a=l.r,s=l.c}var u,c={s:{c:0,r:0},e:{c:s,r:a+t.length-1+i}};if(o["!ref"]){var f=Ge(o["!ref"]);c.e.c=Math.max(c.e.c,f.e.c),c.e.r=Math.max(c.e.r,f.e.r),a==-1&&(a=f.e.r+1,c.e.r=a+t.length-1+i)}else a==-1&&(a=0,c.e.r=t.length-1+i);var d=n.header||[],h=0;t.forEach(function(p,g){Et(p).forEach(function(x){(h=d.indexOf(x))==-1&&(d[h=d.length]=x);var w=p[x],y="z",_="",k=Be({c:s+h,r:a+g+i});u=Ua(o,k),w&&typeof w=="object"&&!(w instanceof Date)?o[k]=w:(typeof w=="number"?y="n":typeof w=="boolean"?y="b":typeof w=="string"?y="s":w instanceof Date?(y="d",n.cellDates||(y="n",w=zt(w)),_=n.dateNF||et[14]):w===null&&n.nullError&&(y="e",w=0),u?(u.t=y,u.v=w,delete u.w,delete u.R,_&&(u.z=_)):o[k]=u={t:y,v:w},_&&(u.z=_))})}),c.e.c=Math.max(c.e.c,s+d.length-1);var m=wt(a);if(i)for(h=0;h=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function UD(){return{SheetNames:[],Sheets:{}}}function HD(e,t,r,n){var i=1;if(!r)for(;i<=65535&&e.SheetNames.indexOf(r="Sheet"+i)!=-1;++i,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0){var o=r.match(/(^.*?)(\d+)$/);i=o&&+o[2]||0;var a=o&&o[1]||r;for(++i;i<=65535&&e.SheetNames.indexOf(r=a+i)!=-1;++i);}if(_w(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function VD(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=BD(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r}function WD(e,t){return e.z=t,e}function kw(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function zD(e,t,r){return kw(e,"#"+t,r)}function GD(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function jD(e,t,r,n){for(var i=typeof t!="string"?t:Ge(t),o=typeof t=="string"?t:nt(t),a=i.s.r;a<=i.e.r;++a)for(var s=i.s.c;s<=i.e.c;++s){var l=Ua(e,a,s);l.t="n",l.F=o,delete l.v,a==i.s.r&&s==i.s.c&&(l.f=r,n&&(l.D=!0))}return e}var Pc={encode_col:Rt,encode_row:wt,encode_cell:Be,encode_range:nt,decode_col:Dd,decode_row:Fd,split_cell:a3,decode_cell:ut,decode_range:Zt,format_cell:rn,sheet_add_aoa:kx,sheet_add_json:bw,sheet_add_dom:Rw,aoa_to_sheet:So,json_to_sheet:LD,table_to_sheet:Ow,table_to_book:gD,sheet_to_csv:Hd,sheet_to_txt:Iw,sheet_to_json:zl,sheet_to_html:Aw,sheet_to_formulae:MD,sheet_to_row_object_array:zl,sheet_get_cell:Ua,book_new:UD,book_append_sheet:HD,book_set_sheet_visibility:VD,cell_set_number_format:WD,cell_set_hyperlink:kw,cell_set_internal_link:zD,cell_add_comment:GD,sheet_set_array_formula:jD,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function XD(e){if(e%1!==0){const t=Math.max(2,e.toString().split(".")[1].length),r=Math.min(4,t);if(e<1e3)return e.toFixed(r)||0}if(e>1e3){const t=Math.min(4,Math.floor(Math.log10(Math.abs(e))/3)),r=["","K","M","B","T"][t];return`${(e/10**(t*3)).toFixed(2)} ${r}`}return e}function Vd(e){return["date","day","time","timestamp","year"].some(t=>e.toLowerCase().includes(t))}function KD(e,t){if(e===t)return!0;if(e==null||t==null||e.length!==t.length)return!1;for(var r=0;r{const i=YC(e.getValue(t),r);return n(i),i},qD=async({fileHandle:e,blob:t})=>{if(!e)throw new Error("Cannot access filesystem");await QD({fileHandle:e,blob:t})},QD=async({fileHandle:e,blob:t})=>{const r=await e.createWritable();await r.write(t),await r.close()},ZD=[{description:"PNG Image",accept:{"image/png":[".png"]}},{description:"JPEG Image",accept:{"image/jpeg":[".jpeg"]}}],$w=({filename:e,is_image:t})=>{if("showSaveFilePicker"in window){const r={suggestedName:e,types:t?ZD:[{description:"CSV File",accept:{"image/csv":[".csv"]}}],excludeAcceptAllOption:!0};return showSaveFilePicker(r)}return new Promise(r=>{r(null)})},Nw=(e,t,r)=>{try{qD({fileHandle:r,blob:e})}catch(n){console.error("oops, something went wrong!",n);const i=URL.createObjectURL(e),o=document.createElement("a");o.setAttribute("href",i),o.setAttribute("download",t),o.style.visibility="hidden",document.body.appendChild(o),o.click(),document.body.removeChild(o)}},Yg=(e,t,r)=>{const n=t,i=r.map(l=>n.map(u=>l[u])),o=[n,...i];if(e==="csv"){const l=o.map(f=>f.join(",")).join(` +`),u=new Blob([l],{type:"text/csv;charset=utf-8;"}),c=`${window.title}.csv`;$w({filename:c}).then(f=>{Nw(u,c,f)});return}const a=Pc.book_new(),s=Pc.aoa_to_sheet(o);Pc.book_append_sheet(a,s,"Sheet1"),kD(a,`${window.title}.xlsx`)},JD=e=>{const t=document.getElementById(e),r=`${window.title}.png`;$w({filename:r,is_image:!0}).then(n=>{r4.toBlob(t).then(function(i){Nw(i,r,n)})})},Mw=v.createContext({dragDropManager:void 0});function tr(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var qg=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Ic=function(){return Math.random().toString(36).substring(7).split("").join(".")},Qg={INIT:"@@redux/INIT"+Ic(),REPLACE:"@@redux/REPLACE"+Ic(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Ic()}};function eP(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Lw(e,t,r){var n;if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(tr(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(tr(1));return r(Lw)(e,t)}if(typeof e!="function")throw new Error(tr(2));var i=e,o=t,a=[],s=a,l=!1;function u(){s===a&&(s=a.slice())}function c(){if(l)throw new Error(tr(3));return o}function f(p){if(typeof p!="function")throw new Error(tr(4));if(l)throw new Error(tr(5));var g=!0;return u(),s.push(p),function(){if(g){if(l)throw new Error(tr(6));g=!1,u();var w=s.indexOf(p);s.splice(w,1),a=null}}}function d(p){if(!eP(p))throw new Error(tr(7));if(typeof p.type>"u")throw new Error(tr(8));if(l)throw new Error(tr(9));try{l=!0,o=i(o,p)}finally{l=!1}for(var g=a=s,x=0;xn&&n[i]?n[i]:r||null,e)}function nP(e,t){return e.filter(r=>r!==t)}function Bw(e){return typeof e=="object"}function iP(e,t){const r=new Map,n=o=>{r.set(o,r.has(o)?r.get(o)+1:1)};e.forEach(n),t.forEach(n);const i=[];return r.forEach((o,a)=>{o===1&&i.push(a)}),i}function oP(e,t){return e.filter(r=>t.indexOf(r)>-1)}const Wd="dnd-core/INIT_COORDS",Cu="dnd-core/BEGIN_DRAG",zd="dnd-core/PUBLISH_DRAG_SOURCE",Au="dnd-core/HOVER",Ru="dnd-core/DROP",Ou="dnd-core/END_DRAG";function Zg(e,t){return{type:Wd,payload:{sourceClientOffset:t||null,clientOffset:e||null}}}const aP={type:Wd,payload:{clientOffset:null,sourceClientOffset:null}};function sP(e){return function(r=[],n={publishSource:!0}){const{publishSource:i=!0,clientOffset:o,getSourceClientOffset:a}=n,s=e.getMonitor(),l=e.getRegistry();e.dispatch(Zg(o)),lP(r,s,l);const u=fP(r,s);if(u==null){e.dispatch(aP);return}let c=null;if(o){if(!a)throw new Error("getSourceClientOffset must be defined");uP(a),c=a(u)}e.dispatch(Zg(o,c));const d=l.getSource(u).beginDrag(s,u);if(d==null)return;cP(d),l.pinSource(u);const h=l.getSourceType(u);return{type:Cu,payload:{itemType:h,item:d,sourceId:u,clientOffset:o||null,sourceClientOffset:c||null,isSourcePublic:!!i}}}}function lP(e,t,r){Fe(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach(function(n){Fe(r.getSource(n),"Expected sourceIds to be registered.")})}function uP(e){Fe(typeof e=="function","When clientOffset is provided, getSourceClientOffset must be a function.")}function cP(e){Fe(Bw(e),"Item must be an object.")}function fP(e,t){let r=null;for(let n=e.length-1;n>=0;n--)if(t.canDragSource(e[n])){r=e[n];break}return r}function dP(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function hP(e){for(var t=1;t{const l=mP(a,s,i,n),u={type:Ru,payload:{dropResult:hP({},r,l)}};e.dispatch(u)})}}function gP(e){Fe(e.isDragging(),"Cannot call drop while not dragging."),Fe(!e.didDrop(),"Cannot call drop twice during one drag operation.")}function mP(e,t,r,n){const i=r.getTarget(e);let o=i?i.drop(n,e):void 0;return vP(o),typeof o>"u"&&(o=t===0?{}:n.getDropResult()),o}function vP(e){Fe(typeof e>"u"||Bw(e),"Drop result must either be an object or undefined.")}function xP(e){const t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}function wP(e){return function(){const r=e.getMonitor(),n=e.getRegistry();yP(r);const i=r.getSourceId();return i!=null&&(n.getSource(i,!0).endDrag(r,i),n.unpinSource()),{type:Ou}}}function yP(e){Fe(e.isDragging(),"Cannot call endDrag while not dragging.")}function Xf(e,t){return t===null?e===null:Array.isArray(e)?e.some(r=>r===t):e===t}function EP(e){return function(r,{clientOffset:n}={}){_P(r);const i=r.slice(0),o=e.getMonitor(),a=e.getRegistry(),s=o.getItemType();return TP(i,a,s),SP(i,o,a),CP(i,o,a),{type:Au,payload:{targetIds:i,clientOffset:n||null}}}}function _P(e){Fe(Array.isArray(e),"Expected targetIds to be an array.")}function SP(e,t,r){Fe(t.isDragging(),"Cannot call hover while not dragging."),Fe(!t.didDrop(),"Cannot call hover after drop.");for(let n=0;n=0;n--){const i=e[n],o=t.getTargetType(i);Xf(o,r)||e.splice(n,1)}}function CP(e,t,r){e.forEach(function(n){r.getTarget(n).hover(t,n)})}function AP(e){return function(){if(e.getMonitor().isDragging())return{type:zd}}}function RP(e){return{beginDrag:sP(e),publishDragSource:AP(e),hover:EP(e),drop:pP(e),endDrag:wP(e)}}class OP{receiveBackend(t){this.backend=t}getMonitor(){return this.monitor}getBackend(){return this.backend}getRegistry(){return this.monitor.registry}getActions(){const t=this,{dispatch:r}=this.store;function n(o){return(...a)=>{const s=o.apply(t,a);typeof s<"u"&&r(s)}}const i=RP(this);return Object.keys(i).reduce((o,a)=>{const s=i[a];return o[a]=n(s),o},{})}dispatch(t){this.store.dispatch(t)}constructor(t,r){this.isSetUp=!1,this.handleRefCountChange=()=>{const n=this.store.getState().refCount>0;this.backend&&(n&&!this.isSetUp?(this.backend.setup(),this.isSetUp=!0):!n&&this.isSetUp&&(this.backend.teardown(),this.isSetUp=!1))},this.store=t,this.monitor=r,t.subscribe(this.handleRefCountChange)}}function FP(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Uw(e,t){return{x:e.x-t.x,y:e.y-t.y}}function DP(e){const{clientOffset:t,initialClientOffset:r,initialSourceClientOffset:n}=e;return!t||!r||!n?null:Uw(FP(t,n),r)}function PP(e){const{clientOffset:t,initialClientOffset:r}=e;return!t||!r?null:Uw(t,r)}const xa=[],Gd=[];xa.__IS_NONE__=!0;Gd.__IS_ALL__=!0;function IP(e,t){return e===xa?!1:e===Gd||typeof t>"u"?!0:oP(t,e).length>0}class bP{subscribeToStateChange(t,r={}){const{handlerIds:n}=r;Fe(typeof t=="function","listener must be a function."),Fe(typeof n>"u"||Array.isArray(n),"handlerIds, when specified, must be an array of strings.");let i=this.store.getState().stateId;const o=()=>{const a=this.store.getState(),s=a.stateId;try{s===i||s===i+1&&!IP(a.dirtyHandlerIds,n)||t()}finally{i=s}};return this.store.subscribe(o)}subscribeToOffsetChange(t){Fe(typeof t=="function","listener must be a function.");let r=this.store.getState().dragOffset;const n=()=>{const i=this.store.getState().dragOffset;i!==r&&(r=i,t())};return this.store.subscribe(n)}canDragSource(t){if(!t)return!1;const r=this.registry.getSource(t);return Fe(r,`Expected to find a valid source. sourceId=${t}`),this.isDragging()?!1:r.canDrag(this,t)}canDropOnTarget(t){if(!t)return!1;const r=this.registry.getTarget(t);if(Fe(r,`Expected to find a valid target. targetId=${t}`),!this.isDragging()||this.didDrop())return!1;const n=this.registry.getTargetType(t),i=this.getItemType();return Xf(n,i)&&r.canDrop(this,t)}isDragging(){return!!this.getItemType()}isDraggingSource(t){if(!t)return!1;const r=this.registry.getSource(t,!0);if(Fe(r,`Expected to find a valid source. sourceId=${t}`),!this.isDragging()||!this.isSourcePublic())return!1;const n=this.registry.getSourceType(t),i=this.getItemType();return n!==i?!1:r.isDragging(this,t)}isOverTarget(t,r={shallow:!1}){if(!t)return!1;const{shallow:n}=r;if(!this.isDragging())return!1;const i=this.registry.getTargetType(t),o=this.getItemType();if(o&&!Xf(i,o))return!1;const a=this.getTargetIds();if(!a.length)return!1;const s=a.indexOf(t);return n?s===a.length-1:s>-1}getItemType(){return this.store.getState().dragOperation.itemType}getItem(){return this.store.getState().dragOperation.item}getSourceId(){return this.store.getState().dragOperation.sourceId}getTargetIds(){return this.store.getState().dragOperation.targetIds}getDropResult(){return this.store.getState().dragOperation.dropResult}didDrop(){return this.store.getState().dragOperation.didDrop}isSourcePublic(){return!!this.store.getState().dragOperation.isSourcePublic}getInitialClientOffset(){return this.store.getState().dragOffset.initialClientOffset}getInitialSourceClientOffset(){return this.store.getState().dragOffset.initialSourceClientOffset}getClientOffset(){return this.store.getState().dragOffset.clientOffset}getSourceClientOffset(){return DP(this.store.getState().dragOffset)}getDifferenceFromInitialOffset(){return PP(this.store.getState().dragOffset)}constructor(t,r){this.store=t,this.registry=r}}const Jg=typeof global<"u"?global:self,Hw=Jg.MutationObserver||Jg.WebKitMutationObserver;function Vw(e){return function(){const r=setTimeout(i,0),n=setInterval(i,50);function i(){clearTimeout(r),clearInterval(n),e()}}}function kP(e){let t=1;const r=new Hw(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}const $P=typeof Hw=="function"?kP:Vw;class NP{enqueueTask(t){const{queue:r,requestFlush:n}=this;r.length||(n(),this.flushing=!0),r[r.length]=t}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:t}=this;for(;this.indexthis.capacity){for(let n=0,i=t.length-this.index;n{this.pendingErrors.push(t),this.requestErrorThrow()},this.requestFlush=$P(this.flush),this.requestErrorThrow=Vw(()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()})}}class MP{call(){try{this.task&&this.task()}catch(t){this.onError(t)}finally{this.task=null,this.release(this)}}constructor(t,r){this.onError=t,this.release=r,this.task=null}}class LP{create(t){const r=this.freeTasks,n=r.length?r.pop():new MP(this.onError,i=>r[r.length]=i);return n.task=t,n}constructor(t){this.onError=t,this.freeTasks=[]}}const Ww=new NP,BP=new LP(Ww.registerPendingError);function UP(e){Ww.enqueueTask(BP.create(e))}const jd="dnd-core/ADD_SOURCE",Xd="dnd-core/ADD_TARGET",Kd="dnd-core/REMOVE_SOURCE",Fu="dnd-core/REMOVE_TARGET";function HP(e){return{type:jd,payload:{sourceId:e}}}function VP(e){return{type:Xd,payload:{targetId:e}}}function WP(e){return{type:Kd,payload:{sourceId:e}}}function zP(e){return{type:Fu,payload:{targetId:e}}}function GP(e){Fe(typeof e.canDrag=="function","Expected canDrag to be a function."),Fe(typeof e.beginDrag=="function","Expected beginDrag to be a function."),Fe(typeof e.endDrag=="function","Expected endDrag to be a function.")}function jP(e){Fe(typeof e.canDrop=="function","Expected canDrop to be a function."),Fe(typeof e.hover=="function","Expected hover to be a function."),Fe(typeof e.drop=="function","Expected beginDrag to be a function.")}function Kf(e,t){if(t&&Array.isArray(e)){e.forEach(r=>Kf(r,!1));return}Fe(typeof e=="string"||typeof e=="symbol",t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}var or;(function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"})(or||(or={}));let XP=0;function KP(){return XP++}function YP(e){const t=KP().toString();switch(e){case or.SOURCE:return`S${t}`;case or.TARGET:return`T${t}`;default:throw new Error(`Unknown Handler Role: ${e}`)}}function e1(e){switch(e[0]){case"S":return or.SOURCE;case"T":return or.TARGET;default:throw new Error(`Cannot parse handler ID: ${e}`)}}function t1(e,t){const r=e.entries();let n=!1;do{const{done:i,value:[,o]}=r.next();if(o===t)return!0;n=!!i}while(!n);return!1}class qP{addSource(t,r){Kf(t),GP(r);const n=this.addHandler(or.SOURCE,t,r);return this.store.dispatch(HP(n)),n}addTarget(t,r){Kf(t,!0),jP(r);const n=this.addHandler(or.TARGET,t,r);return this.store.dispatch(VP(n)),n}containsHandler(t){return t1(this.dragSources,t)||t1(this.dropTargets,t)}getSource(t,r=!1){return Fe(this.isSourceId(t),"Expected a valid source ID."),r&&t===this.pinnedSourceId?this.pinnedSource:this.dragSources.get(t)}getTarget(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.dropTargets.get(t)}getSourceType(t){return Fe(this.isSourceId(t),"Expected a valid source ID."),this.types.get(t)}getTargetType(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.types.get(t)}isSourceId(t){return e1(t)===or.SOURCE}isTargetId(t){return e1(t)===or.TARGET}removeSource(t){Fe(this.getSource(t),"Expected an existing source."),this.store.dispatch(WP(t)),UP(()=>{this.dragSources.delete(t),this.types.delete(t)})}removeTarget(t){Fe(this.getTarget(t),"Expected an existing target."),this.store.dispatch(zP(t)),this.dropTargets.delete(t),this.types.delete(t)}pinSource(t){const r=this.getSource(t);Fe(r,"Expected an existing source."),this.pinnedSourceId=t,this.pinnedSource=r}unpinSource(){Fe(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}addHandler(t,r,n){const i=YP(t);return this.types.set(i,r),t===or.SOURCE?this.dragSources.set(i,n):t===or.TARGET&&this.dropTargets.set(i,n),i}constructor(t){this.types=new Map,this.dragSources=new Map,this.dropTargets=new Map,this.pinnedSourceId=null,this.pinnedSource=null,this.store=t}}const QP=(e,t)=>e===t;function ZP(e,t){return!e&&!t?!0:!e||!t?!1:e.x===t.x&&e.y===t.y}function JP(e,t,r=QP){if(e.length!==t.length)return!1;for(let n=0;n0||!JP(r,n)))return xa;const a=n[n.length-1],s=r[r.length-1];return a!==s&&(a&&i.push(a),s&&i.push(s)),i}function tI(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function rI(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function gI(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}let n1=0;const el=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__");var mI=v.memo(function(t){var{children:r}=t,n=pI(t,["children"]);const[i,o]=vI(n);return v.useEffect(()=>{if(o){const a=zw();return++n1,()=>{--n1===0&&(a[el]=null)}}},[]),Z(Mw.Provider,{value:i,children:r})});function vI(e){if("manager"in e)return[{dragDropManager:e.manager},!1];const t=xI(e.backend,e.context,e.options,e.debugMode),r=!e.context;return[t,r]}function xI(e,t=zw(),r,n){const i=t;return i[el]||(i[el]={dragDropManager:dI(e,t,r,n)}),i[el]}function zw(){return typeof global<"u"?global:window}var wI=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;i--!==0;){var a=o[i];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r};const li=typeof window<"u"?v.useLayoutEffect:v.useEffect;function yI(e,t,r){const[n,i]=v.useState(()=>t(e)),o=v.useCallback(()=>{const a=t(e);wI(n,a)||(i(a),r&&r())},[n,e,r]);return li(o),[n,o]}function EI(e,t,r){const[n,i]=yI(e,t,r);return li(function(){const a=e.getHandlerId();if(a!=null)return e.subscribeToStateChange(i,{handlerIds:[a]})},[e,i]),n}function Gw(e,t,r){return EI(t,e||(()=>({})),()=>r.reconnect())}function jw(e,t){const r=[...t||[]];return t==null&&typeof e!="function"&&r.push(e),v.useMemo(()=>typeof e=="function"?e():e,r)}function _I(e){return v.useMemo(()=>e.hooks.dragSource(),[e])}function SI(e){return v.useMemo(()=>e.hooks.dragPreview(),[e])}let bc=!1,kc=!1;class TI{receiveHandlerId(t){this.sourceId=t}getHandlerId(){return this.sourceId}canDrag(){Fe(!bc,"You may not call monitor.canDrag() inside your canDrag() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return bc=!0,this.internalMonitor.canDragSource(this.sourceId)}finally{bc=!1}}isDragging(){if(!this.sourceId)return!1;Fe(!kc,"You may not call monitor.isDragging() inside your isDragging() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return kc=!0,this.internalMonitor.isDraggingSource(this.sourceId)}finally{kc=!1}}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}isDraggingSource(t){return this.internalMonitor.isDraggingSource(t)}isOverTarget(t,r){return this.internalMonitor.isOverTarget(t,r)}getTargetIds(){return this.internalMonitor.getTargetIds()}isSourcePublic(){return this.internalMonitor.isSourcePublic()}getSourceId(){return this.internalMonitor.getSourceId()}subscribeToOffsetChange(t){return this.internalMonitor.subscribeToOffsetChange(t)}canDragSource(t){return this.internalMonitor.canDragSource(t)}canDropOnTarget(t){return this.internalMonitor.canDropOnTarget(t)}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.sourceId=null,this.internalMonitor=t.getMonitor()}}let $c=!1;class CI{receiveHandlerId(t){this.targetId=t}getHandlerId(){return this.targetId}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}canDrop(){if(!this.targetId)return!1;Fe(!$c,"You may not call monitor.canDrop() inside your canDrop() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor");try{return $c=!0,this.internalMonitor.canDropOnTarget(this.targetId)}finally{$c=!1}}isOver(t){return this.targetId?this.internalMonitor.isOverTarget(this.targetId,t):!1}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.targetId=null,this.internalMonitor=t.getMonitor()}}function AI(e,t,r){const n=r.getRegistry(),i=n.addTarget(e,t);return[i,()=>n.removeTarget(i)]}function RI(e,t,r){const n=r.getRegistry(),i=n.addSource(e,t);return[i,()=>n.removeSource(i)]}function Yf(e,t,r,n){let i=r?r.call(n,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!="object"||!e||typeof t!="object"||!t)return!1;const o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;const s=Object.prototype.hasOwnProperty.bind(t);for(let l=0;l, or turn it into a drag source or a drop target itself.`)}function FI(e){return(t=null,r=null)=>{if(!v.isValidElement(t)){const o=t;return e(o,r),o}const n=t;return OI(n),DI(n,r?o=>e(o,r):e)}}function Xw(e){const t={};return Object.keys(e).forEach(r=>{const n=e[r];if(r.endsWith("Ref"))t[r]=e[r];else{const i=FI(n);t[r]=()=>i}}),t}function i1(e,t){typeof e=="function"?e(t):e.current=t}function DI(e,t){const r=e.ref;return Fe(typeof r!="string","Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or
. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),r?v.cloneElement(e,{ref:n=>{i1(r,n),i1(t,n)}}):v.cloneElement(e,{ref:t})}class PI{receiveHandlerId(t){this.handlerId!==t&&(this.handlerId=t,this.reconnect())}get connectTarget(){return this.dragSource}get dragSourceOptions(){return this.dragSourceOptionsInternal}set dragSourceOptions(t){this.dragSourceOptionsInternal=t}get dragPreviewOptions(){return this.dragPreviewOptionsInternal}set dragPreviewOptions(t){this.dragPreviewOptionsInternal=t}reconnect(){const t=this.reconnectDragSource();this.reconnectDragPreview(t)}reconnectDragSource(){const t=this.dragSource,r=this.didHandlerIdChange()||this.didConnectedDragSourceChange()||this.didDragSourceOptionsChange();return r&&this.disconnectDragSource(),this.handlerId?t?(r&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragSource=t,this.lastConnectedDragSourceOptions=this.dragSourceOptions,this.dragSourceUnsubscribe=this.backend.connectDragSource(this.handlerId,t,this.dragSourceOptions)),r):(this.lastConnectedDragSource=t,r):r}reconnectDragPreview(t=!1){const r=this.dragPreview,n=t||this.didHandlerIdChange()||this.didConnectedDragPreviewChange()||this.didDragPreviewOptionsChange();if(n&&this.disconnectDragPreview(),!!this.handlerId){if(!r){this.lastConnectedDragPreview=r;return}n&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragPreview=r,this.lastConnectedDragPreviewOptions=this.dragPreviewOptions,this.dragPreviewUnsubscribe=this.backend.connectDragPreview(this.handlerId,r,this.dragPreviewOptions))}}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didConnectedDragSourceChange(){return this.lastConnectedDragSource!==this.dragSource}didConnectedDragPreviewChange(){return this.lastConnectedDragPreview!==this.dragPreview}didDragSourceOptionsChange(){return!Yf(this.lastConnectedDragSourceOptions,this.dragSourceOptions)}didDragPreviewOptionsChange(){return!Yf(this.lastConnectedDragPreviewOptions,this.dragPreviewOptions)}disconnectDragSource(){this.dragSourceUnsubscribe&&(this.dragSourceUnsubscribe(),this.dragSourceUnsubscribe=void 0)}disconnectDragPreview(){this.dragPreviewUnsubscribe&&(this.dragPreviewUnsubscribe(),this.dragPreviewUnsubscribe=void 0,this.dragPreviewNode=null,this.dragPreviewRef=null)}get dragSource(){return this.dragSourceNode||this.dragSourceRef&&this.dragSourceRef.current}get dragPreview(){return this.dragPreviewNode||this.dragPreviewRef&&this.dragPreviewRef.current}clearDragSource(){this.dragSourceNode=null,this.dragSourceRef=null}clearDragPreview(){this.dragPreviewNode=null,this.dragPreviewRef=null}constructor(t){this.hooks=Xw({dragSource:(r,n)=>{this.clearDragSource(),this.dragSourceOptions=n||null,qf(r)?this.dragSourceRef=r:this.dragSourceNode=r,this.reconnectDragSource()},dragPreview:(r,n)=>{this.clearDragPreview(),this.dragPreviewOptions=n||null,qf(r)?this.dragPreviewRef=r:this.dragPreviewNode=r,this.reconnectDragPreview()}}),this.handlerId=null,this.dragSourceRef=null,this.dragSourceOptionsInternal=null,this.dragPreviewRef=null,this.dragPreviewOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDragSource=null,this.lastConnectedDragSourceOptions=null,this.lastConnectedDragPreview=null,this.lastConnectedDragPreviewOptions=null,this.backend=t}}class II{get connectTarget(){return this.dropTarget}reconnect(){const t=this.didHandlerIdChange()||this.didDropTargetChange()||this.didOptionsChange();t&&this.disconnectDropTarget();const r=this.dropTarget;if(this.handlerId){if(!r){this.lastConnectedDropTarget=r;return}t&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDropTarget=r,this.lastConnectedDropTargetOptions=this.dropTargetOptions,this.unsubscribeDropTarget=this.backend.connectDropTarget(this.handlerId,r,this.dropTargetOptions))}}receiveHandlerId(t){t!==this.handlerId&&(this.handlerId=t,this.reconnect())}get dropTargetOptions(){return this.dropTargetOptionsInternal}set dropTargetOptions(t){this.dropTargetOptionsInternal=t}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didDropTargetChange(){return this.lastConnectedDropTarget!==this.dropTarget}didOptionsChange(){return!Yf(this.lastConnectedDropTargetOptions,this.dropTargetOptions)}disconnectDropTarget(){this.unsubscribeDropTarget&&(this.unsubscribeDropTarget(),this.unsubscribeDropTarget=void 0)}get dropTarget(){return this.dropTargetNode||this.dropTargetRef&&this.dropTargetRef.current}clearDropTarget(){this.dropTargetRef=null,this.dropTargetNode=null}constructor(t){this.hooks=Xw({dropTarget:(r,n)=>{this.clearDropTarget(),this.dropTargetOptions=n,qf(r)?this.dropTargetRef=r:this.dropTargetNode=r,this.reconnect()}}),this.handlerId=null,this.dropTargetRef=null,this.dropTargetOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDropTarget=null,this.lastConnectedDropTargetOptions=null,this.backend=t}}function Ao(){const{dragDropManager:e}=v.useContext(Mw);return Fe(e!=null,"Expected drag drop context"),e}function bI(e,t){const r=Ao(),n=v.useMemo(()=>new PI(r.getBackend()),[r]);return li(()=>(n.dragSourceOptions=e||null,n.reconnect(),()=>n.disconnectDragSource()),[n,e]),li(()=>(n.dragPreviewOptions=t||null,n.reconnect(),()=>n.disconnectDragPreview()),[n,t]),n}function kI(){const e=Ao();return v.useMemo(()=>new TI(e),[e])}class $I{beginDrag(){const t=this.spec,r=this.monitor;let n=null;return typeof t.item=="object"?n=t.item:typeof t.item=="function"?n=t.item(r):n={},n??null}canDrag(){const t=this.spec,r=this.monitor;return typeof t.canDrag=="boolean"?t.canDrag:typeof t.canDrag=="function"?t.canDrag(r):!0}isDragging(t,r){const n=this.spec,i=this.monitor,{isDragging:o}=n;return o?o(i):r===t.getSourceId()}endDrag(){const t=this.spec,r=this.monitor,n=this.connector,{end:i}=t;i&&i(r.getItem(),r),n.reconnect()}constructor(t,r,n){this.spec=t,this.monitor=r,this.connector=n}}function NI(e,t,r){const n=v.useMemo(()=>new $I(e,t,r),[t,r]);return v.useEffect(()=>{n.spec=e},[e]),n}function MI(e){return v.useMemo(()=>{const t=e.type;return Fe(t!=null,"spec.type must be defined"),t},[e])}function LI(e,t,r){const n=Ao(),i=NI(e,t,r),o=MI(e);li(function(){if(o!=null){const[s,l]=RI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l}},[n,t,r,i,o])}function BI(e,t){const r=jw(e,t);Fe(!r.begin,"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)");const n=kI(),i=bI(r.options,r.previewOptions);return LI(r,n,i),[Gw(r.collect,n,i),_I(i),SI(i)]}function UI(e){return v.useMemo(()=>e.hooks.dropTarget(),[e])}function HI(e){const t=Ao(),r=v.useMemo(()=>new II(t.getBackend()),[t]);return li(()=>(r.dropTargetOptions=e||null,r.reconnect(),()=>r.disconnectDropTarget()),[e]),r}function VI(){const e=Ao();return v.useMemo(()=>new CI(e),[e])}function WI(e){const{accept:t}=e;return v.useMemo(()=>(Fe(e.accept!=null,"accept must be defined"),Array.isArray(t)?t:[t]),[t])}class zI{canDrop(){const t=this.spec,r=this.monitor;return t.canDrop?t.canDrop(r.getItem(),r):!0}hover(){const t=this.spec,r=this.monitor;t.hover&&t.hover(r.getItem(),r)}drop(){const t=this.spec,r=this.monitor;if(t.drop)return t.drop(r.getItem(),r)}constructor(t,r){this.spec=t,this.monitor=r}}function GI(e,t){const r=v.useMemo(()=>new zI(e,t),[t]);return v.useEffect(()=>{r.spec=e},[e]),r}function jI(e,t,r){const n=Ao(),i=GI(e,t),o=WI(e);li(function(){const[s,l]=AI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l},[n,t,i,r,o.map(a=>a.toString()).join("|")])}function XI(e,t){const r=jw(e,t),n=VI(),i=HI(r.options);return jI(r,n,i),[Gw(r.collect,n,i),UI(i)]}function KI(e,t){return v.useReducer((r,n)=>{const i=t[r][n];return i??r},e)}const Ei=e=>{const{present:t,children:r}=e,n=YI(t),i=typeof r=="function"?r({present:n.isPresent}):v.Children.only(r),o=He(n.ref,i.ref);return typeof r=="function"||n.isPresent?v.cloneElement(i,{ref:o}):null};Ei.displayName="Presence";function YI(e){const[t,r]=v.useState(),n=v.useRef({}),i=v.useRef(e),o=v.useRef("none"),a=e?"mounted":"unmounted",[s,l]=KI(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const u=ks(n.current);o.current=s==="mounted"?u:"none"},[s]),xt(()=>{const u=n.current,c=i.current;if(c!==e){const d=o.current,h=ks(u);e?l("MOUNT"):h==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(c&&d!==h?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,l]),xt(()=>{if(t){const u=f=>{const h=ks(n.current).includes(f.animationName);f.target===t&&h&&Jr.flushSync(()=>l("ANIMATION_END"))},c=f=>{f.target===t&&(o.current=ks(n.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:v.useCallback(u=>{u&&(n.current=getComputedStyle(u)),r(u)},[])}}function ks(e){return(e==null?void 0:e.animationName)||"none"}const Nc="rovingFocusGroup.onEntryFocus",qI={bubbles:!1,cancelable:!0},Yd="RovingFocusGroup",[Qf,Kw,QI]=su(Yd),[ZI,Yw]=on(Yd,[QI]),[JI,e5]=ZI(Yd),t5=v.forwardRef((e,t)=>v.createElement(Qf.Provider,{scope:e.__scopeRovingFocusGroup},v.createElement(Qf.Slot,{scope:e.__scopeRovingFocusGroup},v.createElement(r5,de({},e,{ref:t}))))),r5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:o,currentTabStopId:a,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,...c}=e,f=v.useRef(null),d=He(t,f),h=ld(o),[m=null,p]=lo({prop:a,defaultProp:s,onChange:l}),[g,x]=v.useState(!1),w=Dt(u),y=Kw(r),_=v.useRef(!1),[k,N]=v.useState(0);return v.useEffect(()=>{const S=f.current;if(S)return S.addEventListener(Nc,w),()=>S.removeEventListener(Nc,w)},[w]),v.createElement(JI,{scope:r,orientation:n,dir:h,loop:i,currentTabStopId:m,onItemFocus:v.useCallback(S=>p(S),[p]),onItemShiftTab:v.useCallback(()=>x(!0),[]),onFocusableItemAdd:v.useCallback(()=>N(S=>S+1),[]),onFocusableItemRemove:v.useCallback(()=>N(S=>S-1),[])},v.createElement(Ie.div,de({tabIndex:g||k===0?-1:0,"data-orientation":n},c,{ref:d,style:{outline:"none",...e.style},onMouseDown:Ee(e.onMouseDown,()=>{_.current=!0}),onFocus:Ee(e.onFocus,S=>{const A=!_.current;if(S.target===S.currentTarget&&A&&!g){const R=new CustomEvent(Nc,qI);if(S.currentTarget.dispatchEvent(R),!R.defaultPrevented){const L=y().filter(re=>re.focusable),V=L.find(re=>re.active),U=L.find(re=>re.id===m),Y=[V,U,...L].filter(Boolean).map(re=>re.ref.current);qw(Y)}}_.current=!1}),onBlur:Ee(e.onBlur,()=>x(!1))})))}),n5="RovingFocusGroupItem",i5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:o,...a}=e,s=Xr(),l=o||s,u=e5(n5,r),c=u.currentTabStopId===l,f=Kw(r),{onFocusableItemAdd:d,onFocusableItemRemove:h}=u;return v.useEffect(()=>{if(n)return d(),()=>h()},[n,d,h]),v.createElement(Qf.ItemSlot,{scope:r,id:l,focusable:n,active:i},v.createElement(Ie.span,de({tabIndex:c?0:-1,"data-orientation":u.orientation},a,{ref:t,onMouseDown:Ee(e.onMouseDown,m=>{n?u.onItemFocus(l):m.preventDefault()}),onFocus:Ee(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:Ee(e.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){u.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const p=s5(m,u.orientation,u.dir);if(p!==void 0){m.preventDefault();let x=f().filter(w=>w.focusable).map(w=>w.ref.current);if(p==="last")x.reverse();else if(p==="prev"||p==="next"){p==="prev"&&x.reverse();const w=x.indexOf(m.currentTarget);x=u.loop?l5(x,w+1):x.slice(w+1)}setTimeout(()=>qw(x))}})})))}),o5={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function a5(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function s5(e,t,r){const n=a5(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return o5[n]}function qw(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function l5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}const u5=t5,c5=i5,f5=["Enter"," "],d5=["ArrowDown","PageUp","Home"],Qw=["ArrowUp","PageDown","End"],h5=[...d5,...Qw],Du="Menu",[Zf,p5,g5]=su(Du),[_i,Pu]=on(Du,[g5,fu,Yw]),qd=fu(),Zw=Yw(),[m5,ns]=_i(Du),[v5,Qd]=_i(Du),x5=e=>{const{__scopeMenu:t,open:r=!1,children:n,dir:i,onOpenChange:o,modal:a=!0}=e,s=qd(t),[l,u]=v.useState(null),c=v.useRef(!1),f=Dt(o),d=ld(i);return v.useEffect(()=>{const h=()=>{c.current=!0,document.addEventListener("pointerdown",m,{capture:!0,once:!0}),document.addEventListener("pointermove",m,{capture:!0,once:!0})},m=()=>c.current=!1;return document.addEventListener("keydown",h,{capture:!0}),()=>{document.removeEventListener("keydown",h,{capture:!0}),document.removeEventListener("pointerdown",m,{capture:!0}),document.removeEventListener("pointermove",m,{capture:!0})}},[]),v.createElement(Nv,s,v.createElement(m5,{scope:t,open:r,onOpenChange:f,content:l,onContentChange:u},v.createElement(v5,{scope:t,onClose:v.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:c,dir:d,modal:a},n)))},w5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e,i=qd(r);return v.createElement(Mv,de({},i,n,{ref:t}))}),Jw="MenuPortal",[y5,E5]=_i(Jw,{forceMount:void 0}),_5=e=>{const{__scopeMenu:t,forceMount:r,children:n,container:i}=e,o=ns(Jw,t);return v.createElement(y5,{scope:t,forceMount:r},v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},n)))},Rn="MenuContent",[S5,e2]=_i(Rn),T5=v.forwardRef((e,t)=>{const r=E5(Rn,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,o=ns(Rn,e.__scopeMenu),a=Qd(Rn,e.__scopeMenu);return v.createElement(Zf.Provider,{scope:e.__scopeMenu},v.createElement(Ei,{present:n||o.open},v.createElement(Zf.Slot,{scope:e.__scopeMenu},a.modal?v.createElement(C5,de({},i,{ref:t})):v.createElement(A5,de({},i,{ref:t})))))}),C5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu),n=v.useRef(null),i=He(t,n);return v.useEffect(()=>{const o=n.current;if(o)return md(o)},[]),v.createElement(t2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)}))}),A5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu);return v.createElement(t2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)}))}),t2=v.forwardRef((e,t)=>{const{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h,disableOutsideScroll:m,...p}=e,g=ns(Rn,r),x=Qd(Rn,r),w=qd(r),y=Zw(r),_=p5(r),[k,N]=v.useState(null),S=v.useRef(null),A=He(t,S,g.onContentChange),R=v.useRef(0),L=v.useRef(""),V=v.useRef(0),U=v.useRef(null),W=v.useRef("right"),Y=v.useRef(0),re=m?vd:v.Fragment,ye=m?{as:ii,allowPinchZoom:!0}:void 0,ge=ie=>{var we,Q;const F=L.current+ie,M=_().filter(ee=>!ee.disabled),b=document.activeElement,T=(we=M.find(ee=>ee.ref.current===b))===null||we===void 0?void 0:we.textValue,B=M.map(ee=>ee.textValue),H=M5(B,F,T),q=(Q=M.find(ee=>ee.textValue===H))===null||Q===void 0?void 0:Q.ref.current;(function ee(K){L.current=K,window.clearTimeout(R.current),K!==""&&(R.current=window.setTimeout(()=>ee(""),1e3))})(F),q&&setTimeout(()=>q.focus())};v.useEffect(()=>()=>window.clearTimeout(R.current),[]),cd();const Se=v.useCallback(ie=>{var we,Q;return W.current===((we=U.current)===null||we===void 0?void 0:we.side)&&B5(ie,(Q=U.current)===null||Q===void 0?void 0:Q.area)},[]);return v.createElement(S5,{scope:r,searchRef:L,onItemEnter:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),onItemLeave:v.useCallback(ie=>{var we;Se(ie)||((we=S.current)===null||we===void 0||we.focus(),N(null))},[Se]),onTriggerLeave:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),pointerGraceTimerRef:V,onPointerGraceIntentChange:v.useCallback(ie=>{U.current=ie},[])},v.createElement(re,ye,v.createElement(fd,{asChild:!0,trapped:i,onMountAutoFocus:Ee(o,ie=>{var we;ie.preventDefault(),(we=S.current)===null||we===void 0||we.focus()}),onUnmountAutoFocus:a},v.createElement(lu,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h},v.createElement(u5,de({asChild:!0},y,{dir:x.dir,orientation:"vertical",loop:n,currentTabStopId:k,onCurrentTabStopIdChange:N,onEntryFocus:Ee(l,ie=>{x.isUsingKeyboardRef.current||ie.preventDefault()})}),v.createElement(Lv,de({role:"menu","aria-orientation":"vertical","data-state":k5(g.open),"data-radix-menu-content":"",dir:x.dir},w,p,{ref:A,style:{outline:"none",...p.style},onKeyDown:Ee(p.onKeyDown,ie=>{const Q=ie.target.closest("[data-radix-menu-content]")===ie.currentTarget,F=ie.ctrlKey||ie.altKey||ie.metaKey,M=ie.key.length===1;Q&&(ie.key==="Tab"&&ie.preventDefault(),!F&&M&&ge(ie.key));const b=S.current;if(ie.target!==b||!h5.includes(ie.key))return;ie.preventDefault();const B=_().filter(H=>!H.disabled).map(H=>H.ref.current);Qw.includes(ie.key)&&B.reverse(),$5(B)}),onBlur:Ee(e.onBlur,ie=>{ie.currentTarget.contains(ie.target)||(window.clearTimeout(R.current),L.current="")}),onPointerMove:Ee(e.onPointerMove,e0(ie=>{const we=ie.target,Q=Y.current!==ie.clientX;if(ie.currentTarget.contains(we)&&Q){const F=ie.clientX>Y.current?"right":"left";W.current=F,Y.current=ie.clientX}}))})))))))}),R5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({role:"group"},n,{ref:t}))}),O5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Jf="MenuItem",o1="menu.itemSelect",F5=v.forwardRef((e,t)=>{const{disabled:r=!1,onSelect:n,...i}=e,o=v.useRef(null),a=Qd(Jf,e.__scopeMenu),s=e2(Jf,e.__scopeMenu),l=He(t,o),u=v.useRef(!1),c=()=>{const f=o.current;if(!r&&f){const d=new CustomEvent(o1,{bubbles:!0,cancelable:!0});f.addEventListener(o1,h=>n==null?void 0:n(h),{once:!0}),ud(f,d),d.defaultPrevented?u.current=!1:a.onClose()}};return v.createElement(D5,de({},i,{ref:l,disabled:r,onClick:Ee(e.onClick,c),onPointerDown:f=>{var d;(d=e.onPointerDown)===null||d===void 0||d.call(e,f),u.current=!0},onPointerUp:Ee(e.onPointerUp,f=>{var d;u.current||(d=f.currentTarget)===null||d===void 0||d.click()}),onKeyDown:Ee(e.onKeyDown,f=>{const d=s.searchRef.current!=="";r||d&&f.key===" "||f5.includes(f.key)&&(f.currentTarget.click(),f.preventDefault())})}))}),D5=v.forwardRef((e,t)=>{const{__scopeMenu:r,disabled:n=!1,textValue:i,...o}=e,a=e2(Jf,r),s=Zw(r),l=v.useRef(null),u=He(t,l),[c,f]=v.useState(!1),[d,h]=v.useState("");return v.useEffect(()=>{const m=l.current;if(m){var p;h(((p=m.textContent)!==null&&p!==void 0?p:"").trim())}},[o.children]),v.createElement(Zf.ItemSlot,{scope:r,disabled:n,textValue:i??d},v.createElement(c5,de({asChild:!0},s,{focusable:!n}),v.createElement(Ie.div,de({role:"menuitem","data-highlighted":c?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0},o,{ref:u,onPointerMove:Ee(e.onPointerMove,e0(m=>{n?a.onItemLeave(m):(a.onItemEnter(m),m.defaultPrevented||m.currentTarget.focus())})),onPointerLeave:Ee(e.onPointerLeave,e0(m=>a.onItemLeave(m))),onFocus:Ee(e.onFocus,()=>f(!0)),onBlur:Ee(e.onBlur,()=>f(!1))}))))}),P5="MenuRadioGroup";_i(P5,{value:void 0,onValueChange:()=>{}});const I5="MenuItemIndicator";_i(I5,{checked:!1});const b5="MenuSub";_i(b5);function k5(e){return e?"open":"closed"}function $5(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function N5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}function M5(e,t,r){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=r?e.indexOf(r):-1;let a=N5(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==r));const l=a.find(u=>u.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}function L5(e,t){const{x:r,y:n}=e;let i=!1;for(let o=0,a=t.length-1;on!=c>n&&r<(u-s)*(n-l)/(c-l)+s&&(i=!i)}return i}function B5(e,t){if(!t)return!1;const r={x:e.clientX,y:e.clientY};return L5(r,t)}function e0(e){return t=>t.pointerType==="mouse"?e(t):void 0}const r2=x5,n2=w5,i2=_5,o2=T5,U5=R5,H5=O5,V5=F5,a2="ContextMenu",[W5,Uk]=on(a2,[Pu]),Iu=Pu(),[z5,s2]=W5(a2),G5=e=>{const{__scopeContextMenu:t,children:r,onOpenChange:n,dir:i,modal:o=!0}=e,[a,s]=v.useState(!1),l=Iu(t),u=Dt(n),c=v.useCallback(f=>{s(f),u(f)},[u]);return v.createElement(z5,{scope:t,open:a,onOpenChange:c,modal:o},v.createElement(r2,de({},l,{dir:i,open:a,onOpenChange:c,modal:o}),r))},j5="ContextMenuTrigger",X5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,disabled:n=!1,...i}=e,o=s2(j5,r),a=Iu(r),s=v.useRef({x:0,y:0}),l=v.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...s.current})}),u=v.useRef(0),c=v.useCallback(()=>window.clearTimeout(u.current),[]),f=d=>{s.current={x:d.clientX,y:d.clientY},o.onOpenChange(!0)};return v.useEffect(()=>c,[c]),v.useEffect(()=>void(n&&c()),[n,c]),v.createElement(v.Fragment,null,v.createElement(n2,de({},a,{virtualRef:l})),v.createElement(Ie.span,de({"data-state":o.open?"open":"closed","data-disabled":n?"":void 0},i,{ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:n?e.onContextMenu:Ee(e.onContextMenu,d=>{c(),f(d),d.preventDefault()}),onPointerDown:n?e.onPointerDown:Ee(e.onPointerDown,$s(d=>{c(),u.current=window.setTimeout(()=>f(d),700)})),onPointerMove:n?e.onPointerMove:Ee(e.onPointerMove,$s(c)),onPointerCancel:n?e.onPointerCancel:Ee(e.onPointerCancel,$s(c)),onPointerUp:n?e.onPointerUp:Ee(e.onPointerUp,$s(c))})))}),K5=e=>{const{__scopeContextMenu:t,...r}=e,n=Iu(t);return v.createElement(i2,de({},n,r))},Y5="ContextMenuContent",q5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,...n}=e,i=s2(Y5,r),o=Iu(r),a=v.useRef(!1);return v.createElement(o2,de({},o,n,{ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:s=>{var l;(l=e.onCloseAutoFocus)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&a.current&&s.preventDefault(),a.current=!1},onInteractOutside:s=>{var l;(l=e.onInteractOutside)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&!i.modal&&(a.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))});function $s(e){return t=>t.pointerType!=="mouse"?e(t):void 0}const Q5=G5,Z5=X5,J5=K5,e8=q5;function t8({column:e,table:t,numberOfColumns:r}){const n=t.getPreFilteredRowModel().flatRows.map(u=>u.getValue(e.id)),i=n.every(u=>typeof u=="string"||u===null),o=n.every(u=>typeof u=="number"||u===null),a=n.some(u=>typeof u=="string"&&u.includes(" ")),s=e.getFilterValue();if(n.every(u=>typeof u!="string"?!1:u.replace(/[^0-9]/g,"").length>=4&&(Vd(e.id)||e.id.toLowerCase()==="index"&&!a))){let u=function(c){if(!c)return null;const f=new Date(c),d=f.getFullYear(),h=f.getMonth()+1>9?f.getMonth()+1:`0${f.getMonth()+1}`,m=f.getDate()>9?f.getDate():`0${f.getDate()}`;return`${d}-${h}-${m}`};return Te("div",{className:"flex gap-2 h-10",children:[Z("input",{type:"datetime-local",value:u(s==null?void 0:s[0])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[f,d==null?void 0:d[1]])},placeholder:"Start date",className:"_input"}),Z("input",{type:"datetime-local",value:u(s==null?void 0:s[1])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[d==null?void 0:d[0],f])},placeholder:"End date",className:"_input"})]})}return o?Te("div",{className:"flex gap-0.5 h-10",children:[Z("input",{type:"number",value:(s==null?void 0:s[0])??"",onChange:u=>e.setFilterValue(c=>[u.target.value,c==null?void 0:c[1]]),placeholder:"Min",className:"_input p-0.5"}),Z("input",{type:"number",value:(s==null?void 0:s[1])??"",onChange:u=>e.setFilterValue(c=>[c==null?void 0:c[0],u.target.value]),placeholder:"Max",className:"_input p-0.5"})]}):i?Z("div",{className:"h-10",children:Z("input",{type:"text",value:s??"",onChange:u=>e.setFilterValue(u.target.value),placeholder:"Search...",className:"_input"})}):Z("div",{className:"h-10"})}const r8=(e,t,r)=>(r.splice(r.indexOf(t),0,r.splice(r.indexOf(e),1)[0]),[...r]),n8=({header:e,table:t,advanced:r,idx:n,lockFirstColumn:i,setLockFirstColumn:o})=>{const{getState:a,setColumnOrder:s}=t,{columnOrder:l}=a(),{column:u}=e,[,c]=XI({accept:"column",drop:p=>{const g=r8(p.id,u.id,l);s(g)}}),[{isDragging:f},d,h]=BI({collect:p=>({isDragging:p.isDragging()}),item:()=>u,type:"column"}),m=()=>Z("div",{ref:h,className:"flex gap-1 flex-col",children:e.isPlaceholder?null:Te($1,{children:[Te("div",{className:"font-bold uppercase text-grey-700 dark:text-white tracking-widest flex gap-2 whitespace-nowrap justify-between",children:[Te("div",{onClick:e.column.getToggleSortingHandler(),className:bt("flex gap-1",{"cursor-pointer select-none":e.column.getCanSort()}),children:[If(e.column.columnDef.header,e.getContext()),e.column.getCanSort()&&Te("div",{className:"flex flex-col gap-0.5 items-center justify-center",children:[Z("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="asc","text-grey-600":e.column.getIsSorted()!=="asc"}),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:Z("path",{fill:"currentColor",d:"M10.333 5l-5-5-5 5"})})}),Z("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="desc","text-grey-600":e.column.getIsSorted()!=="desc"}),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:Z("path",{fill:"currentColor",d:"M.333 0l5 5 5-5"})})})]})]}),r&&u.id!=="select"&&Z("button",{ref:d,className:"text-grey-600 hover:text-grey-800 dark:hover:text-white",children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"16",fill:"none",viewBox:"0 0 17 16",children:Z("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",d:"M3.667 6l-2 2 2 2M6.333 3.333l2-2 2 2M10.333 12.667l-2 2-2-2M13 6l2 2-2 2M1.667 8H15M8.333 1.333v13.334"})})})]}),r&&e.column.getCanFilter()?Z("div",{children:Z(t8,{column:e.column,table:t,numberOfColumns:l.length})}):null]})});return Te("th",{className:bt("h-[70px] p-4 sticky",{"left-0 z-50 bg-white dark:bg-grey-900":n===0&&i}),colSpan:e.colSpan,style:{width:e.getSize(),opacity:f?.5:1},ref:c,children:[n===0?Te(Q5,{children:[Z(Z5,{asChild:!0,children:m()}),Z(J5,{children:Z(e8,{className:"bg-white text-black dark:text-white dark:bg-grey-900 border border-grey-200 dark:border-grey-800 rounded-md shadow-lg p-2 z-50 text-xs",children:Z("div",{className:"flex flex-col gap-2",children:Te("button",{onClick:()=>{o(!i)},className:"hover:bg-grey-300 dark:hover:bg-grey-800 rounded-md p-2",children:[i?"Unlock":"Lock"," first column"]})})})})]}):m(),Z("button",{className:"resizer bg-grey-300/20 dark:hover:bg-white absolute top-0 right-0 w-0.5 h-full",onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler()})]})};function l2(e){return typeof e!="number"?typeof e=="string"&&e.includes("All")?e:i0:e<1?i0:e}function i8({table:e,currentPage:t,setCurrentPage:r}){const n=e.getFilteredRowModel().rows.length;return Te("div",{className:"hidden md:flex items-center gap-8",children:[Z(Vi,{value:t,onChange:i=>{const o=l2(i);r(o),o.toString().includes("All")?e.setPageSize(n):e.setPageSize(o)},labelType:"row",label:"Rows per page",placeholder:"Select rows per page",groups:[{label:"Rows per page",items:[10,20,30,40,50,`All (${n})`].map(i=>({label:`${i}`,value:i}))}]}),Te("span",{className:"flex items-center gap-1",children:[Z("strong",{children:e.getState().pagination.pageIndex+1}),"of",Z("strong",{children:e.getPageCount()})]}),Te("div",{className:"hidden lg:block",children:[Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:"<<"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:"<"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:">"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:">>"})]})]})}function o8({columns:e,data:t,type:r,setType:n}){const i=()=>{switch(r){case"csv":Yg("csv",e,t);break;case"xlsx":Yg("xlsx",e,t);break;case"png":JD("table");break}};return Te("div",{className:"flex gap-6 items-center",children:[Z(Vi,{labelType:"row",value:r,onChange:o=>{n(o)},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:o0.map(o=>({label:o,value:o}))}]}),Z("button",{onClick:i,className:"_btn",children:"Export"})]})}const u2="DropdownMenu",[a8,Hk]=on(u2,[Pu]),Si=Pu(),[s8,c2]=a8(u2),l8=e=>{const{__scopeDropdownMenu:t,children:r,dir:n,open:i,defaultOpen:o,onOpenChange:a,modal:s=!0}=e,l=Si(t),u=v.useRef(null),[c=!1,f]=lo({prop:i,defaultProp:o,onChange:a});return v.createElement(s8,{scope:t,triggerId:Xr(),triggerRef:u,contentId:Xr(),open:c,onOpenChange:f,onOpenToggle:v.useCallback(()=>f(d=>!d),[f]),modal:s},v.createElement(r2,de({},l,{open:c,onOpenChange:f,dir:n,modal:s}),r))},u8="DropdownMenuTrigger",c8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,disabled:n=!1,...i}=e,o=c2(u8,r),a=Si(r);return v.createElement(n2,de({asChild:!0},a),v.createElement(Ie.button,de({type:"button",id:o.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?"open":"closed","data-disabled":n?"":void 0,disabled:n},i,{ref:sd(t,o.triggerRef),onPointerDown:Ee(e.onPointerDown,s=>{!n&&s.button===0&&s.ctrlKey===!1&&(o.onOpenToggle(),o.open||s.preventDefault())}),onKeyDown:Ee(e.onKeyDown,s=>{n||(["Enter"," "].includes(s.key)&&o.onOpenToggle(),s.key==="ArrowDown"&&o.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(s.key)&&s.preventDefault())})})))}),f8=e=>{const{__scopeDropdownMenu:t,...r}=e,n=Si(t);return v.createElement(i2,de({},n,r))},d8="DropdownMenuContent",h8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=c2(d8,r),o=Si(r),a=v.useRef(!1);return v.createElement(o2,de({id:i.contentId,"aria-labelledby":i.triggerId},o,n,{ref:t,onCloseAutoFocus:Ee(e.onCloseAutoFocus,s=>{var l;a.current||(l=i.triggerRef.current)===null||l===void 0||l.focus(),a.current=!1,s.preventDefault()}),onInteractOutside:Ee(e.onInteractOutside,s=>{const l=s.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,c=l.button===2||u;(!i.modal||c)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))}),p8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(U5,de({},i,n,{ref:t}))}),g8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(H5,de({},i,n,{ref:t}))}),m8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(V5,de({},i,n,{ref:t}))}),v8=l8,a1=c8,x8=f8,w8=h8,y8=p8,E8=g8,s1=m8;function _8(e,t){v.useEffect(()=>{const r=n=>{!e.current||e.current.contains(n.target)||t(n)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}},[e,t])}function l1({label:e,table:t,onlyIconTrigger:r=!1}){const[n,i]=v.useState(!1),o=v.useRef(null);return _8(o,()=>i(!1)),v.useEffect(()=>{const a=s=>{s.key==="Escape"&&i(!1)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[]),Te(v8,{open:n,children:[r?Z(a1,{title:"Filter columns",onClick:()=>i(!n),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"w-7 h-7",children:Z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z"})})}):Te(y8,{className:"flex flex-row items-center gap-2",children:[Z(E8,{className:"whitespace-nowrap",children:e}),Te(a1,{onClick:()=>i(!n),className:"bg-white text-black dark:bg-grey-900 dark:text-white whitespace-nowrap h-[36px] border-[1.5px] border-grey-700 rounded p-3 inline-flex items-center justify-center leading-none gap-[5px] shadow-[0_2px_10px] shadow-black/10 focus:shadow-[0_0_0_2px] focus:shadow-black data-[placeholder]:text-white outline-none","aria-label":e,children:[Z("span",{children:"Filter columns"}),Z(Hf,{className:bt({"transform rotate-180 duration-200 transition":n})})]})]}),Z(x8,{children:Te(w8,{sideOffset:10,ref:o,className:"z-50 bg-white/80 dark:bg-grey-900/80 backdrop-filter backdrop-blur flex flex-col gap-4 overflow-auto border-[1.5px] border-grey-700 rounded p-3 max-h-[500px] text-black dark:text-white",children:[Z(s1,{children:Te("label",{className:"flex items-center gap-2",children:[Z("input",{type:"checkbox",checked:t.getIsAllColumnsVisible(),onChange:t.getToggleAllColumnsVisibilityHandler()}),"Toggle All"]})}),t.getAllLeafColumns().filter(a=>a.id!=="select").map(a=>Z(s1,{children:Te("label",{className:"flex items-center gap-2",children:[Z("input",{type:"checkbox",checked:a.getIsVisible(),onChange:a.getToggleVisibilityHandler()}),a.id]})},a.id))]})})]})}var Gl={},S8={get exports(){return Gl},set exports(e){Gl=e}},qe={},fo={},T8={get exports(){return fo},set exports(e){fo=e}},Ti={};function f2(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function C8(e,t,r){}function A8(e,t,r){}var R8=/javascript\s*\:/img;function O8(e,t){return R8.test(t)?"":t}Ti.whiteList=f2();Ti.getDefaultWhiteList=f2;Ti.onAttr=C8;Ti.onIgnoreAttr=A8;Ti.safeAttrValue=O8;var F8={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r/g,z8=/"/g,G8=/"/g,j8=/&#([a-zA-Z0-9]*);?/gim,X8=/:?/gim,K8=/&newline;?/gim,Ms=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,c1=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,f1=/u\s*r\s*l\s*\(.*/gi;function m2(e){return e.replace(z8,""")}function v2(e){return e.replace(G8,'"')}function x2(e){return e.replace(j8,function(r,n){return n[0]==="x"||n[0]==="X"?String.fromCharCode(parseInt(n.substr(1),16)):String.fromCharCode(parseInt(n,10))})}function w2(e){return e.replace(X8,":").replace(K8," ")}function y2(e){for(var t="",r=0,n=e.length;r",n);if(i===-1)break;r=i+3}return t}function Z8(e){var t=e.split("");return t=t.filter(function(r){var n=r.charCodeAt(0);return n===127?!1:n<=31?n===10||n===13:!0}),t.join("")}qe.whiteList=h2();qe.getDefaultWhiteList=h2;qe.onTag=M8;qe.onIgnoreTag=L8;qe.onTagAttr=B8;qe.onIgnoreTagAttr=U8;qe.safeAttrValue=H8;qe.escapeHtml=g2;qe.escapeQuote=m2;qe.unescapeQuote=v2;qe.escapeHtmlEntities=x2;qe.escapeDangerHtml5Entities=w2;qe.clearNonPrintableCharacter=y2;qe.friendlyAttrValue=E2;qe.escapeAttrValue=_2;qe.onIgnoreTagStripAll=Y8;qe.StripTagBody=q8;qe.stripCommentTag=Q8;qe.stripBlankChar=Z8;qe.cssFilter=p2;qe.getDefaultCSSWhiteList=N8;var bu={},cn=Zd;function J8(e){var t=cn.spaceIndex(e),r;return t===-1?r=e.slice(1,-1):r=e.slice(1,t+1),r=cn.trim(r).toLowerCase(),r.slice(0,1)==="/"&&(r=r.slice(1)),r.slice(-1)==="/"&&(r=r.slice(0,-1)),r}function eb(e){return e.slice(0,2)===""||s===l-1){n+=r(e.slice(i,o)),c=e.slice(o,s+1),u=J8(c),n+=t(o,n.length,u,c,eb(c)),i=s+1,o=!1;continue}if(f==='"'||f==="'")for(var d=1,h=e.charAt(s-d);h.trim()===""||h==="=";){if(h==="="){a=f;continue e}h=e.charAt(s-++d)}}else if(f===a){a=!1;continue}}return i0;t--){var r=e[t];if(r!==" ")return r==="="?t:-1}}function sb(e){return e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'"}function d1(e){return sb(e)?e.substr(1,e.length-2):e}bu.parseTag=tb;bu.parseAttr=nb;var lb=fo.FilterCSS,xr=qe,S2=bu,ub=S2.parseTag,cb=S2.parseAttr,tl=Zd;function Ls(e){return e==null}function fb(e){var t=tl.spaceIndex(e);if(t===-1)return{html:"",closing:e[e.length-2]==="/"};e=tl.trim(e.slice(t+1,-1));var r=e[e.length-1]==="/";return r&&(e=tl.trim(e.slice(0,-1))),{html:e,closing:r}}function db(e){var t={};for(var r in e)t[r]=e[r];return t}function hb(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(n){return n.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}function T2(e){e=db(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=xr.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=hb(e.whiteList||e.allowList):e.whiteList=xr.whiteList,e.onTag=e.onTag||xr.onTag,e.onTagAttr=e.onTagAttr||xr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||xr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||xr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||xr.safeAttrValue,e.escapeHtml=e.escapeHtml||xr.escapeHtml,this.options=e,e.css===!1?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new lb(e.css))}T2.prototype.process=function(e){if(e=e||"",e=e.toString(),!e)return"";var t=this,r=t.options,n=r.whiteList,i=r.onTag,o=r.onIgnoreTag,a=r.onTagAttr,s=r.onIgnoreTagAttr,l=r.safeAttrValue,u=r.escapeHtml,c=t.cssFilter;r.stripBlankChar&&(e=xr.stripBlankChar(e)),r.allowCommentTag||(e=xr.stripCommentTag(e));var f=!1;r.stripIgnoreTagBody&&(f=xr.StripTagBody(r.stripIgnoreTagBody,o),o=f.onIgnoreTag);var d=ub(e,function(h,m,p,g,x){var w={sourcePosition:h,position:m,isClosing:x,isWhite:Object.prototype.hasOwnProperty.call(n,p)},y=i(p,g,w);if(!Ls(y))return y;if(w.isWhite){if(w.isClosing)return"";var _=fb(g),k=n[p],N=cb(_.html,function(S,A){var R=tl.indexOf(k,S)!==-1,L=a(p,S,A,R);return Ls(L)?R?(A=l(p,S,A,c),A?S+'="'+A+'"':S):(L=s(p,S,A,R),Ls(L)?void 0:L):L});return g="<"+p,N&&(g+=" "+N),_.closing&&(g+=" /"),g+=">",g}else return y=o(p,g,w),Ls(y)?u(g):y},u);return f&&(d=f.remove(d)),d};var pb=T2;(function(e,t){var r=qe,n=bu,i=pb;function o(s,l){var u=new i(l);return u.process(s)}t=e.exports=o,t.filterXSS=o,t.FilterXSS=i,function(){for(var s in r)t[s]=r[s];for(var l in n)t[l]=n[l]}(),typeof window<"u"&&(window.filterXSS=e.exports);function a(){return typeof self<"u"&&typeof DedicatedWorkerGlobalScope<"u"&&self instanceof DedicatedWorkerGlobalScope}a()&&(self.filterXSS=e.exports)})(S8,Gl);const gb=Gl;function jo(e,t,r){const[n,i]=v.useState(()=>{if(typeof window>"u")return t;try{const a=window.localStorage.getItem(e);return a?r?r(JSON.parse(a)):JSON.parse(a):t}catch(a){return console.log(a),t}});return[n,a=>{try{const s=a instanceof Function?a(n):a;i(s),typeof window<"u"&&window.localStorage.setItem(e,JSON.stringify(s))}catch(s){console.log(s)}}]}const C2="ToastProvider",[Jd,mb,vb]=su("Toast"),[A2,Vk]=on("Toast",[vb]),[xb,ku]=A2(C2),R2=e=>{const{__scopeToast:t,label:r="Notification",duration:n=5e3,swipeDirection:i="right",swipeThreshold:o=50,children:a}=e,[s,l]=v.useState(null),[u,c]=v.useState(0),f=v.useRef(!1),d=v.useRef(!1);return v.createElement(Jd.Provider,{scope:t},v.createElement(xb,{scope:t,label:r,duration:n,swipeDirection:i,swipeThreshold:o,toastCount:u,viewport:s,onViewportChange:l,onToastAdd:v.useCallback(()=>c(h=>h+1),[]),onToastRemove:v.useCallback(()=>c(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:d},a))};R2.propTypes={label(e){if(e.label&&typeof e.label=="string"&&!e.label.trim()){const t=`Invalid prop \`label\` supplied to \`${C2}\`. Expected non-empty \`string\`.`;return new Error(t)}return null}};const wb="ToastViewport",yb=["F8"],t0="toast.viewportPause",r0="toast.viewportResume",Eb=v.forwardRef((e,t)=>{const{__scopeToast:r,hotkey:n=yb,label:i="Notifications ({hotkey})",...o}=e,a=ku(wb,r),s=mb(r),l=v.useRef(null),u=v.useRef(null),c=v.useRef(null),f=v.useRef(null),d=He(t,f,a.onViewportChange),h=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),m=a.toastCount>0;v.useEffect(()=>{const g=x=>{var w;n.every(_=>x[_]||x.code===_)&&((w=f.current)===null||w===void 0||w.focus())};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[n]),v.useEffect(()=>{const g=l.current,x=f.current;if(m&&g&&x){const w=()=>{if(!a.isClosePausedRef.current){const N=new CustomEvent(t0);x.dispatchEvent(N),a.isClosePausedRef.current=!0}},y=()=>{if(a.isClosePausedRef.current){const N=new CustomEvent(r0);x.dispatchEvent(N),a.isClosePausedRef.current=!1}},_=N=>{!g.contains(N.relatedTarget)&&y()},k=()=>{g.contains(document.activeElement)||y()};return g.addEventListener("focusin",w),g.addEventListener("focusout",_),g.addEventListener("pointermove",w),g.addEventListener("pointerleave",k),window.addEventListener("blur",w),window.addEventListener("focus",y),()=>{g.removeEventListener("focusin",w),g.removeEventListener("focusout",_),g.removeEventListener("pointermove",w),g.removeEventListener("pointerleave",k),window.removeEventListener("blur",w),window.removeEventListener("focus",y)}}},[m,a.isClosePausedRef]);const p=v.useCallback(({tabbingDirection:g})=>{const w=s().map(y=>{const _=y.ref.current,k=[_,...Lb(_)];return g==="forwards"?k:k.reverse()});return(g==="forwards"?w.reverse():w).flat()},[s]);return v.useEffect(()=>{const g=f.current;if(g){const x=w=>{const y=w.altKey||w.ctrlKey||w.metaKey;if(w.key==="Tab"&&!y){const A=document.activeElement,R=w.shiftKey;if(w.target===g&&R){var k;(k=u.current)===null||k===void 0||k.focus();return}const U=p({tabbingDirection:R?"backwards":"forwards"}),W=U.findIndex(Y=>Y===A);if(Mc(U.slice(W+1)))w.preventDefault();else{var N,S;R?(N=u.current)===null||N===void 0||N.focus():(S=c.current)===null||S===void 0||S.focus()}}};return g.addEventListener("keydown",x),()=>g.removeEventListener("keydown",x)}},[s,p]),v.createElement(TS,{ref:l,role:"region","aria-label":i.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:m?void 0:"none"}},m&&v.createElement(h1,{ref:u,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"forwards"});Mc(g)}}),v.createElement(Jd.Slot,{scope:r},v.createElement(Ie.ol,de({tabIndex:-1},o,{ref:d}))),m&&v.createElement(h1,{ref:c,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"backwards"});Mc(g)}}))}),_b="ToastFocusProxy",h1=v.forwardRef((e,t)=>{const{__scopeToast:r,onFocusFromOutsideViewport:n,...i}=e,o=ku(_b,r);return v.createElement(gd,de({"aria-hidden":!0,tabIndex:0},i,{ref:t,style:{position:"fixed"},onFocus:a=>{var s;const l=a.relatedTarget;!((s=o.viewport)!==null&&s!==void 0&&s.contains(l))&&n()}}))}),$u="Toast",Sb="toast.swipeStart",Tb="toast.swipeMove",Cb="toast.swipeCancel",Ab="toast.swipeEnd",Rb=v.forwardRef((e,t)=>{const{forceMount:r,open:n,defaultOpen:i,onOpenChange:o,...a}=e,[s=!0,l]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Ei,{present:r||s},v.createElement(O2,de({open:s},a,{ref:t,onClose:()=>l(!1),onPause:Dt(e.onPause),onResume:Dt(e.onResume),onSwipeStart:Ee(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:Ee(e.onSwipeMove,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${f}px`)}),onSwipeCancel:Ee(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:Ee(e.onSwipeEnd,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${f}px`),l(!1)})})))}),[Ob,Fb]=A2($u,{onClose(){}}),O2=v.forwardRef((e,t)=>{const{__scopeToast:r,type:n="foreground",duration:i,open:o,onClose:a,onEscapeKeyDown:s,onPause:l,onResume:u,onSwipeStart:c,onSwipeMove:f,onSwipeCancel:d,onSwipeEnd:h,...m}=e,p=ku($u,r),[g,x]=v.useState(null),w=He(t,Y=>x(Y)),y=v.useRef(null),_=v.useRef(null),k=i||p.duration,N=v.useRef(0),S=v.useRef(k),A=v.useRef(0),{onToastAdd:R,onToastRemove:L}=p,V=Dt(()=>{var Y;(g==null?void 0:g.contains(document.activeElement))&&((Y=p.viewport)===null||Y===void 0||Y.focus()),a()}),U=v.useCallback(Y=>{!Y||Y===1/0||(window.clearTimeout(A.current),N.current=new Date().getTime(),A.current=window.setTimeout(V,Y))},[V]);v.useEffect(()=>{const Y=p.viewport;if(Y){const re=()=>{U(S.current),u==null||u()},ye=()=>{const ge=new Date().getTime()-N.current;S.current=S.current-ge,window.clearTimeout(A.current),l==null||l()};return Y.addEventListener(t0,ye),Y.addEventListener(r0,re),()=>{Y.removeEventListener(t0,ye),Y.removeEventListener(r0,re)}}},[p.viewport,k,l,u,U]),v.useEffect(()=>{o&&!p.isClosePausedRef.current&&U(k)},[o,k,p.isClosePausedRef,U]),v.useEffect(()=>(R(),()=>L()),[R,L]);const W=v.useMemo(()=>g?P2(g):null,[g]);return p.viewport?v.createElement(v.Fragment,null,W&&v.createElement(Db,{__scopeToast:r,role:"status","aria-live":n==="foreground"?"assertive":"polite","aria-atomic":!0},W),v.createElement(Ob,{scope:r,onClose:V},Jr.createPortal(v.createElement(Jd.ItemSlot,{scope:r},v.createElement(SS,{asChild:!0,onEscapeKeyDown:Ee(s,()=>{p.isFocusedToastEscapeKeyDownRef.current||V(),p.isFocusedToastEscapeKeyDownRef.current=!1})},v.createElement(Ie.li,de({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":p.swipeDirection},m,{ref:w,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:Ee(e.onKeyDown,Y=>{Y.key==="Escape"&&(s==null||s(Y.nativeEvent),Y.nativeEvent.defaultPrevented||(p.isFocusedToastEscapeKeyDownRef.current=!0,V()))}),onPointerDown:Ee(e.onPointerDown,Y=>{Y.button===0&&(y.current={x:Y.clientX,y:Y.clientY})}),onPointerMove:Ee(e.onPointerMove,Y=>{if(!y.current)return;const re=Y.clientX-y.current.x,ye=Y.clientY-y.current.y,ge=!!_.current,Se=["left","right"].includes(p.swipeDirection),ie=["left","up"].includes(p.swipeDirection)?Math.min:Math.max,we=Se?ie(0,re):0,Q=Se?0:ie(0,ye),F=Y.pointerType==="touch"?10:2,M={x:we,y:Q},b={originalEvent:Y,delta:M};ge?(_.current=M,Bs(Tb,f,b,{discrete:!1})):p1(M,p.swipeDirection,F)?(_.current=M,Bs(Sb,c,b,{discrete:!1}),Y.target.setPointerCapture(Y.pointerId)):(Math.abs(re)>F||Math.abs(ye)>F)&&(y.current=null)}),onPointerUp:Ee(e.onPointerUp,Y=>{const re=_.current,ye=Y.target;if(ye.hasPointerCapture(Y.pointerId)&&ye.releasePointerCapture(Y.pointerId),_.current=null,y.current=null,re){const ge=Y.currentTarget,Se={originalEvent:Y,delta:re};p1(re,p.swipeDirection,p.swipeThreshold)?Bs(Ab,h,Se,{discrete:!0}):Bs(Cb,d,Se,{discrete:!0}),ge.addEventListener("click",ie=>ie.preventDefault(),{once:!0})}})})))),p.viewport))):null});O2.propTypes={type(e){if(e.type&&!["foreground","background"].includes(e.type)){const t=`Invalid prop \`type\` supplied to \`${$u}\`. Expected \`foreground | background\`.`;return new Error(t)}return null}};const Db=e=>{const{__scopeToast:t,children:r,...n}=e,i=ku($u,t),[o,a]=v.useState(!1),[s,l]=v.useState(!1);return Nb(()=>a(!0)),v.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),s?null:v.createElement(du,{asChild:!0},v.createElement(gd,n,o&&v.createElement(v.Fragment,null,i.label," ",r)))},Pb=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Ib=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),bb="ToastAction",kb=v.forwardRef((e,t)=>{const{altText:r,...n}=e;return r?v.createElement(D2,{altText:r,asChild:!0},v.createElement(F2,de({},n,{ref:t}))):null});kb.propTypes={altText(e){return e.altText?null:new Error(`Missing prop \`altText\` expected on \`${bb}\``)}};const $b="ToastClose",F2=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e,i=Fb($b,r);return v.createElement(D2,{asChild:!0},v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,i.onClose)})))}),D2=v.forwardRef((e,t)=>{const{__scopeToast:r,altText:n,...i}=e;return v.createElement(Ie.div,de({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":n||void 0},i,{ref:t}))});function P2(e){const t=[];return Array.from(e.childNodes).forEach(n=>{if(n.nodeType===n.TEXT_NODE&&n.textContent&&t.push(n.textContent),Mb(n)){const i=n.ariaHidden||n.hidden||n.style.display==="none",o=n.dataset.radixToastAnnounceExclude==="";if(!i)if(o){const a=n.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...P2(n))}}),t}function Bs(e,t,r,{discrete:n}){const i=r.originalEvent.currentTarget,o=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?ud(i,o):i.dispatchEvent(o)}const p1=(e,t,r=0)=>{const n=Math.abs(e.x),i=Math.abs(e.y),o=n>i;return t==="left"||t==="right"?o&&n>r:!o&&i>r};function Nb(e=()=>{}){const t=Dt(e);xt(()=>{let r=0,n=0;return r=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(n)}},[t])}function Mb(e){return e.nodeType===e.ELEMENT_NODE}function Lb(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Mc(e){const t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}const Bb=R2,Ub=Eb,Hb=Rb,Vb=Pb,Wb=Ib,zb=F2,I2=({title:e,titleId:t,...r})=>Z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,...r,children:Z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}),Gb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M9 16.5a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15ZM11.25 6.75l-4.5 4.5M6.75 6.75l4.5 4.5",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),jb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 24 24",width:24,height:24,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10ZM12 16v-4M12 8h.01",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Xb=({title:e,titleId:t,...r})=>Te("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M16.5 8.31V9a7.5 7.5 0 1 1-4.447-6.855",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),Z("path",{d:"M16.5 3 9 10.508l-2.25-2.25",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Kb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M7.718 2.895 1.366 13.5a1.5 1.5 0 0 0 1.282 2.25h12.705a1.5 1.5 0 0 0 1.283-2.25L10.283 2.895a1.5 1.5 0 0 0-2.565 0v0ZM9 6.75v3M9 12.75h.008",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Yb=({toast:e,open:t,setOpen:r})=>Te(Bb,{children:[Te(Hb,{open:t,onOpenChange:n=>{e.preventClose||r(n)},className:bt("z-50 fixed bottom-4 md:left-1/2 md:-translate-x-[50%] inset-x-4 w-auto shadow-lg md:max-w-[658px] duration-300","radix-state-open:animate-fade-in","radix-state-closed:animate-toast-hide","radix-swipe-end:animate-toast-swipe-out","translate-x-radix-toast-swipe-move-x","radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]","px-[40px] md:px-[58px] py-6 flex flex-col border rounded-[4px]",{"bg-green-100 text-green-600 border-green-600":e.status==="success","bg-red-200 text-red-600 border-red-600":e.status==="error","bg-blue-100 text-blue-700 border-blue-600":e.status==="info","bg-orange-200 text-orange-600 border-orange-600":e.status==="warning"},{"h-[72px]":!e.description}),children:[e.status==="success"?Z(Xb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="warning"?Z(Kb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="error"?Z(Gb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):Z(jb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}),Z(Vb,{className:"text-grey-900 font-bold text-sm",children:e.title}),e.description&&Z(Wb,{className:"mt-2 text-[10px] md:text-xs text-grey-800",children:e.description}),Z(zb,{className:"absolute top-7 right-5 md:right-7",children:Z(I2,{className:"w-4 h-4 text-grey-900"})})]}),Z(Ub,{})]});function qb(e){const[t,r]=v.useState(e),n=t==="dark"?"light":"dark";return v.useEffect(()=>{const i=window.document.documentElement;i.classList.remove(n),i.classList.add(t)},[t,n]),[n,r]}const b2="Dialog",[k2,Wk]=on(b2),[Qb,$r]=k2(b2),Zb=e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:o,modal:a=!0}=e,s=v.useRef(null),l=v.useRef(null),[u=!1,c]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Qb,{scope:t,triggerRef:s,contentRef:l,contentId:Xr(),titleId:Xr(),descriptionId:Xr(),open:u,onOpenChange:c,onOpenToggle:v.useCallback(()=>c(f=>!f),[c]),modal:a},r)},Jb="DialogTrigger",ek=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(Jb,r),o=He(t,i.triggerRef);return v.createElement(Ie.button,de({type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":eh(i.open)},n,{ref:o,onClick:Ee(e.onClick,i.onOpenToggle)}))}),$2="DialogPortal",[tk,N2]=k2($2,{forceMount:void 0}),rk=e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,o=$r($2,t);return v.createElement(tk,{scope:t,forceMount:r},v.Children.map(n,a=>v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},a))))},n0="DialogOverlay",nk=v.forwardRef((e,t)=>{const r=N2(n0,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(n0,e.__scopeDialog);return o.modal?v.createElement(Ei,{present:n||o.open},v.createElement(ik,de({},i,{ref:t}))):null}),ik=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(n0,r);return v.createElement(vd,{as:ii,allowPinchZoom:!0,shards:[i.contentRef]},v.createElement(Ie.div,de({"data-state":eh(i.open)},n,{ref:t,style:{pointerEvents:"auto",...n.style}})))}),Ha="DialogContent",ok=v.forwardRef((e,t)=>{const r=N2(Ha,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(Ha,e.__scopeDialog);return v.createElement(Ei,{present:n||o.open},o.modal?v.createElement(ak,de({},i,{ref:t})):v.createElement(sk,de({},i,{ref:t})))}),ak=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(null),i=He(t,r.contentRef,n);return v.useEffect(()=>{const o=n.current;if(o)return md(o)},[]),v.createElement(M2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,o=>{var a;o.preventDefault(),(a=r.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,o=>{const a=o.detail.originalEvent,s=a.button===0&&a.ctrlKey===!0;(a.button===2||s)&&o.preventDefault()}),onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault())}))}),sk=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(!1);return v.createElement(M2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var o;if((o=e.onCloseAutoFocus)===null||o===void 0||o.call(e,i),!i.defaultPrevented){var a;n.current||(a=r.triggerRef.current)===null||a===void 0||a.focus(),i.preventDefault()}n.current=!1},onInteractOutside:i=>{var o,a;(o=e.onInteractOutside)===null||o===void 0||o.call(e,i),i.defaultPrevented||(n.current=!0);const s=i.target;((a=r.triggerRef.current)===null||a===void 0?void 0:a.contains(s))&&i.preventDefault()}}))}),M2=v.forwardRef((e,t)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:o,...a}=e,s=$r(Ha,r),l=v.useRef(null),u=He(t,l);return cd(),v.createElement(v.Fragment,null,v.createElement(fd,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:o},v.createElement(lu,de({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":eh(s.open)},a,{ref:u,onDismiss:()=>s.onOpenChange(!1)}))),!1)}),lk="DialogTitle",uk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(lk,r);return v.createElement(Ie.h2,de({id:i.titleId},n,{ref:t}))}),ck="DialogClose",fk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(ck,r);return v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,()=>i.onOpenChange(!1))}))});function eh(e){return e?"open":"closed"}const dk=Zb,hk=ek,pk=rk,gk=nk,mk=ok,vk=uk,xk=fk,wk=new Date,yk=50,i0=30;function Ek(e,t){try{const r=e.hasOwnProperty("index")?"index":e.hasOwnProperty("Index")?"Index":null,n=r?e[r]:null,i=e[t],o=typeof i,s=(i==null?void 0:i.toString().replace(/[^0-9]/g,"")).length>=4&&(Vd(t)||t.toLowerCase()==="index"||n&&n&&typeof n=="string"&&(n.toLowerCase().includes("date")||n.toLowerCase().includes("day")||n.toLowerCase().includes("time")||n.toLowerCase().includes("timestamp")||n.toLowerCase().includes("year")||n.toLowerCase().includes("month")||n.toLowerCase().includes("week")||n.toLowerCase().includes("hour")||n.toLowerCase().includes("minute")));if(o==="string"&&i.startsWith("http"))return(i==null?void 0:i.toString().length)??0;if(s){if(typeof i=="string")return(i==null?void 0:i.toString().length)??0;try{const u=new Date(i);let c="";return u.getUTCHours()===0&&u.getUTCMinutes()===0&&u.getUTCSeconds()===0&&u.getMilliseconds()===0?c=u.toISOString().split("T")[0]:(c=u.toISOString(),c=c.split("T")[0]+" "+c.split("T")[1].split(".")[0]),(c==null?void 0:c.toString().length)??0}catch{return(i==null?void 0:i.toString().length)??0}}return(i==null?void 0:i.toString().length)??0}catch{return 0}}const o0=["csv","xlsx","png"];function _k({data:e,columns:t,title:r,initialTheme:n,cmd:i=""}){const[o,a]=jo("exportType",o0[0]),[s,l]=qb(n),[u,c]=v.useState(s==="dark"),f=T=>{l(s),c(T)},[d,h]=jo("rowsPerPage",i0,l2),[m,p]=jo("advanced",!1),[g,x]=jo("colors",!1),[w,y]=v.useState([]),[_,k]=v.useState(""),[N,S]=jo("fontSize","1"),[A,R]=v.useState(!1),L=t.reduce((T,B,H)=>(T[B]=H{const K=Math.max(...T.map(ve=>Ek(ve,B)),H.length+8);return Math.min(200,K*12)},Y=v.useMemo(()=>[...t.map((T,B)=>({accessorKey:T,id:T,header:T,size:W(e,T,T),footer:T,cell:({row:H})=>{var je;const q=H.original.hasOwnProperty("index")?"index":H.original.hasOwnProperty("Index")?"Index":t[0],ee=q?H.original[q]:null,K=H.original[T],ve=typeof K,De=(K==null?void 0:K.toString().replace(/[^0-9]/g,"")).length>=4&&(Vd(T)||T.toLowerCase()==="index"||ee&&typeof ee=="string"&&(ee.toLowerCase().includes("date")||ee.toLowerCase().includes("time")||ee.toLowerCase().includes("timestamp")||ee.toLowerCase().includes("year")));if(ve==="string"&&K.startsWith("http"))return Z("a",{className:"_hyper-link",href:K,target:"_blank",rel:"noreferrer",children:K.length>25?K.substring(0,25)+"...":K});if(De){if(typeof K=="string"){const Re=K.split("T")[0],ce=(je=K.split("T")[1])==null?void 0:je.split(".")[0];return ce==="00:00:00"?Z("p",{children:Re}):Te("p",{children:[Re," ",ce]})}if(typeof K=="number"&&K<1e12)return Z("p",{children:K});try{const Re=new Date(K);let ce="";return Re.getUTCHours()===0&&Re.getUTCMinutes()===0&&Re.getUTCSeconds()===0&&Re.getMilliseconds()===0?ce=Re.toISOString().split("T")[0]:(ce=Re.toISOString(),ce=ce.split("T")[0]+" "+ce.split("T")[1].split(".")[0]),Z("p",{children:ce})}catch{return Z("p",{children:K})}}if(ve==="number"){const Re=XD(K);return Z("p",{className:bt("whitespace-nowrap",{"text-black dark:text-white":!g,"text-[#16A34A]":K>0&&g,"text-[#F87171]":K<0&&g,"text-[#404040]":K===0&&g}),children:K!==0?K>0?`${Re}`:`${Re}`:Re})}else if(ve==="string")return Z("div",{dangerouslySetInnerHTML:{__html:gb(K)}});return Z("p",{children:K})}}))],[m,g]),[re,ye]=v.useState(!1),[ge,Se]=v.useState(Y.map(T=>T.id)),ie=()=>Se(t.map(T=>T.id)),we=v.useMemo(()=>{const T=ge.map(H=>H),B=Y.map(H=>H.id);return!KD(T,B)},[ge,Y]),Q=uS({data:e,columns:Y,getCoreRowModel:Z_(),getSortedRowModel:nS(),getFilteredRowModel:rS(),getPaginationRowModel:oS(),columnResizeMode:"onChange",onColumnVisibilityChange:U,onColumnOrderChange:Se,onSortingChange:y,onGlobalFilterChange:k,globalFilterFn:YD,state:{sorting:w,globalFilter:_,columnOrder:ge,columnVisibility:V},initialState:{pagination:{pageIndex:0,pageSize:typeof d=="string"?d.includes("All")?e.length:parseInt(d):d}}}),F=v.useRef(null),{rows:M}=Q.getRowModel(),b=Q.getVisibleFlatColumns();return Te($1,{children:[Z(Yb,{toast:{id:"max-columns",title:"Max 12 columns are visible by default",description:"You can change this by clicking on advanced and then top right 'Filter' button",status:"info"},open:A,setOpen:R}),Te("div",{ref:F,className:bt("overflow-x-hidden h-screen"),children:[Te("div",{className:"relative p-4",id:"table",children:[Z("div",{className:"absolute -inset-0.5 bg-gradient-to-r rounded-md blur-md from-[#072e49]/30 via-[#0d345f]/30 to-[#0d3362]/30"}),Te("div",{className:"border border-grey-500/60 dark:border-grey-200/60 bg-white dark:bg-grey-900 rounded overflow-hidden relative z-20",children:[Te("div",{className:"_header relative gap-4 py-2 text-center text-xs flex items-center justify-between px-4 text-white",style:{fontSize:`${Number(N)*100}%`},children:[Z("div",{className:"w-1/3",children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"64",height:"40",fill:"none",viewBox:"0 0 64 40",children:Z("path",{fill:"#fff",d:"M61.283 3.965H33.608v27.757h25.699V19.826H37.561v-3.965H63.26V3.965h-1.977zM39.538 23.792h15.815v3.965H37.561v-3.965h1.977zM59.306 9.913v1.983H37.561V7.931h21.745v1.982zM33.606 0h-3.954v3.965H33.606V0zM25.7 3.966H0V15.86h25.7v3.965H3.953v11.896h25.7V3.966h-3.955zm0 21.808v1.983H7.907v-3.965h17.791v1.982zm0-15.86v1.982H3.953V7.931h21.745v1.982zM37.039 35.693v2.952l-.246-.246-.245-.245-.245-.247-.245-.246-.246-.246-.245-.245-.245-.247-.247-.246-.245-.246-.245-.246-.245-.246-.246-.246h-.49v3.936h.49v-3.198l.246.246.245.246.245.246.245.246.246.246.246.246.245.247.246.245.245.246.245.247.245.246.246.245.245.246h.245v-3.936h-.49zM44.938 37.17h-.491v-1.477h-2.944v3.937h3.93v-2.46h-.495zm-2.944-.246v-.739h1.962v.984h-1.962v-.245zm2.944.984v1.23h-2.944V37.66h2.944v.247zM52.835 37.17h-.49v-1.477h-2.946v3.937h3.925v-2.46h-.489zm-2.944-.246v-.739h1.963v.984h-1.965l.002-.245zm2.944.984v1.23H49.89V37.66h2.946v.247zM29.174 35.693H25.739v3.936H29.663v-.491H26.229v-.984h2.943v-.493H26.229v-1.476h3.434v-.492h-.489zM13.37 35.693H9.934v3.937h3.925v-3.937h-.49zm0 .738v2.709h-2.945v-2.955h2.943l.001.246zM21.276 35.693h-3.435v3.937h.491v-1.476h3.434v-2.461h-.49zm0 .738v1.23h-2.944v-1.476h2.944v.246z"})})}),Z("p",{className:"font-bold w-1/3 flex flex-col gap-0.5 items-center",children:r}),Te("p",{className:"w-1/3 text-right text-xs",children:[new Intl.DateTimeFormat("en-GB",{dateStyle:"full",timeStyle:"long"}).format(wk).replace(/:\d\d /," "),Z("br",{}),Z("span",{className:"text-grey-400",children:i})]})]}),Z("div",{className:"overflow-auto max-h-[calc(100vh-160px)] smh:max-h-[calc(100vh-95px)]",children:Te("table",{className:"text-sm relative",style:{fontSize:`${Number(N)*100}%`},children:[Z("thead",{className:"sticky top-0 bg-white dark:bg-grey-900",children:Q.getHeaderGroups().map((T,B)=>Z("tr",{children:T.headers.map((H,q)=>Z(n8,{setLockFirstColumn:ye,lockFirstColumn:re,idx:q,advanced:m,header:H,table:Q},H.id))},T.id))}),Z("tbody",{children:Q.getRowModel().rows.map((T,B)=>Z("tr",{className:"!h-[64px] border-b border-grey-400",children:T.getVisibleCells().map((H,q)=>Z("td",{className:bt("whitespace-normal p-4 text-black dark:text-white",{"bg-white dark:bg-grey-850":B%2===0,"bg-grey-100 dark:bg-[#202020]":B%2===1,"sticky left-0 z-10":q===0&&re}),style:{width:H.column.getSize()},children:If(H.column.columnDef.cell,H.getContext())},H.id))},T.id))}),M.length>30&&b.length>4&&Z("tfoot",{children:Q.getFooterGroups().map(T=>Z("tr",{children:T.headers.map(B=>Z("th",{colSpan:B.colSpan,className:"text-grey-500 bg-grey-100 dark:bg-grey-850 font-normal text-left text-sm h-10 p-4",style:{width:B.getSize()},children:B.isPlaceholder?null:If(B.column.columnDef.footer,B.getContext())},B.id))},T.id))})]})})]})]}),Te("div",{className:"smh:hidden flex max-h-[68px] overflow-x-auto bg-white/70 dark:bg-grey-900/70 backdrop-filter backdrop-blur z-20 bottom-0 left-0 w-full gap-10 justify-between py-4 px-4 text-sm",children:[Te("div",{className:"flex items-center gap-10",children:[Te(dk,{children:[Z(hk,{className:"_btn",children:"Settings"}),Te(pk,{children:[Z(gk,{className:"_modal-overlay"}),Te(mk,{className:"_modal",children:[Z(xk,{className:"absolute top-[40px] right-[46px] text-grey-200 hover:text-white rounded-[4px] focus:outline focus:outline-2 focus:outline-grey-500",children:Z(I2,{className:"w-6 h-6"})}),Z(vk,{className:"uppercase font-bold tracking-widest",children:"Settings"}),Te("div",{className:"grid grid-cols-2 gap-4 mt-10 text-sm",children:[we&&Z("button",{onClick:()=>ie(),className:"_btn h-9",children:"Reset Order"}),Z(Vi,{labelType:"row",value:u?"light":"dark",onChange:T=>{f(T!=="dark")},label:"Theme",placeholder:"Select theme",groups:[{label:"Theme",items:[{label:"Dark",value:"dark"},{label:"Light",value:"light"}]}]}),Z(Vi,{labelType:"row",value:o,onChange:T=>{a(T)},label:"Export type",placeholder:"Select export type",groups:[{label:"Export type",items:o0.map(T=>({label:T,value:T}))}]}),Z(Vi,{labelType:"row",value:N,onChange:S,label:"Font size",placeholder:"Select font size",groups:[{label:"Font size",items:[{label:"50%",value:"0.5"},{label:"75%",value:"0.75"},{label:"100%",value:"1"},{label:"125%",value:"1.25"},{label:"150%",value:"1.5"},{label:"175%",value:"1.75"},{label:"200%",value:"2"}]}]}),Z(l1,{table:Q,label:"Filter"}),Z("div",{className:"flex gap-2 items-center",children:Z(Vi,{labelType:"row",value:m?"advanced":"simple",onChange:T=>{p(T==="advanced")},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:[{label:"Simple",value:"simple"},{label:"Advanced",value:"advanced"}]}]})}),Te("div",{className:"flex gap-2 items-center",children:[Z("label",{htmlFor:"colors",children:"Colors"}),Z("input",{id:"colors",type:"checkbox",checked:g,onChange:()=>x(!g)})]})]})]})]})]}),Z(l1,{onlyIconTrigger:!0,table:Q,label:""})]}),Z(i8,{currentPage:d,setCurrentPage:h,table:Q}),Z(o8,{setType:a,type:o,columns:t,data:e})]})]})]})}function L2(e){let t=null;return()=>(t==null&&(t=e()),t)}function Sk(e,t){return e.filter(r=>r!==t)}function Tk(e,t){const r=new Set,n=o=>r.add(o);e.forEach(n),t.forEach(n);const i=[];return r.forEach(o=>i.push(o)),i}class Ck{enter(t){const r=this.entered.length,n=i=>this.isNodeInDocument(i)&&(!i.contains||i.contains(t));return this.entered=Tk(this.entered.filter(n),[t]),r===0&&this.entered.length>0}leave(t){const r=this.entered.length;return this.entered=Sk(this.entered.filter(this.isNodeInDocument),t),r>0&&this.entered.length===0}reset(){this.entered=[]}constructor(t){this.entered=[],this.isNodeInDocument=t}}class Ak{initializeExposedProperties(){Object.keys(this.config.exposeProperties).forEach(t=>{Object.defineProperty(this.item,t,{configurable:!0,enumerable:!0,get(){return console.warn(`Browser doesn't allow reading "${t}" until the drop event.`),null}})})}loadDataTransfer(t){if(t){const r={};Object.keys(this.config.exposeProperties).forEach(n=>{const i=this.config.exposeProperties[n];i!=null&&(r[n]={value:i(t,this.config.matchesTypes),configurable:!0,enumerable:!0})}),Object.defineProperties(this.item,r)}}canDrag(){return!0}beginDrag(){return this.item}isDragging(t,r){return r===t.getSourceId()}endDrag(){}constructor(t){this.config=t,this.item={},this.initializeExposedProperties()}}const B2="__NATIVE_FILE__",U2="__NATIVE_URL__",H2="__NATIVE_TEXT__",V2="__NATIVE_HTML__",g1=Object.freeze(Object.defineProperty({__proto__:null,FILE:B2,HTML:V2,TEXT:H2,URL:U2},Symbol.toStringTag,{value:"Module"}));function Lc(e,t,r){const n=t.reduce((i,o)=>i||e.getData(o),"");return n??r}const a0={[B2]:{exposeProperties:{files:e=>Array.prototype.slice.call(e.files),items:e=>e.items,dataTransfer:e=>e},matchesTypes:["Files"]},[V2]:{exposeProperties:{html:(e,t)=>Lc(e,t,""),dataTransfer:e=>e},matchesTypes:["Html","text/html"]},[U2]:{exposeProperties:{urls:(e,t)=>Lc(e,t,"").split(` +`),dataTransfer:e=>e},matchesTypes:["Url","text/uri-list"]},[H2]:{exposeProperties:{text:(e,t)=>Lc(e,t,""),dataTransfer:e=>e},matchesTypes:["Text","text/plain"]}};function Rk(e,t){const r=a0[e];if(!r)throw new Error(`native type ${e} has no configuration`);const n=new Ak(r);return n.loadDataTransfer(t),n}function Bc(e){if(!e)return null;const t=Array.prototype.slice.call(e.types||[]);return Object.keys(a0).filter(r=>{const n=a0[r];return n!=null&&n.matchesTypes?n.matchesTypes.some(i=>t.indexOf(i)>-1):!1})[0]||null}const Ok=L2(()=>/firefox/i.test(navigator.userAgent)),W2=L2(()=>!!window.safari);class m1{interpolate(t){const{xs:r,ys:n,c1s:i,c2s:o,c3s:a}=this;let s=r.length-1;if(t===r[s])return n[s];let l=0,u=a.length-1,c;for(;l<=u;){c=Math.floor(.5*(l+u));const h=r[c];if(ht)u=c-1;else return n[c]}s=Math.max(0,u);const f=t-r[s],d=f*f;return n[s]+i[s]*f+o[s]*d+a[s]*f*d}constructor(t,r){const{length:n}=t,i=[];for(let h=0;ht[h]{let N=new m1([0,.5,1],[l.y,l.y/c*m,l.y+m-c]).interpolate(d);return W2()&&o&&(N+=(window.devicePixelRatio-1)*m),N},g=()=>new m1([0,.5,1],[l.x,l.x/u*h,l.x+h-u]).interpolate(f),{offsetX:x,offsetY:w}=i,y=x===0||x,_=w===0||w;return{x:y?x:g(),y:_?w:p()}}class bk{get window(){if(this.globalContext)return this.globalContext;if(typeof window<"u")return window}get document(){var t;return!((t=this.globalContext)===null||t===void 0)&&t.document?this.globalContext.document:this.window?this.window.document:void 0}get rootElement(){var t;return((t=this.optionsArgs)===null||t===void 0?void 0:t.rootElement)||this.window}constructor(t,r){this.ownerDocument=null,this.globalContext=t,this.optionsArgs=r}}function kk(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v1(e){for(var t=1;t{this.sourcePreviewNodes.delete(t),this.sourcePreviewNodeOptions.delete(t)}}connectDragSource(t,r,n){this.sourceNodes.set(t,r),this.sourceNodeOptions.set(t,n);const i=a=>this.handleDragStart(a,t),o=a=>this.handleSelectStart(a);return r.setAttribute("draggable","true"),r.addEventListener("dragstart",i),r.addEventListener("selectstart",o),()=>{this.sourceNodes.delete(t),this.sourceNodeOptions.delete(t),r.removeEventListener("dragstart",i),r.removeEventListener("selectstart",o),r.setAttribute("draggable","false")}}connectDropTarget(t,r){const n=a=>this.handleDragEnter(a,t),i=a=>this.handleDragOver(a,t),o=a=>this.handleDrop(a,t);return r.addEventListener("dragenter",n),r.addEventListener("dragover",i),r.addEventListener("drop",o),()=>{r.removeEventListener("dragenter",n),r.removeEventListener("dragover",i),r.removeEventListener("drop",o)}}addEventListeners(t){t.addEventListener&&(t.addEventListener("dragstart",this.handleTopDragStart),t.addEventListener("dragstart",this.handleTopDragStartCapture,!0),t.addEventListener("dragend",this.handleTopDragEndCapture,!0),t.addEventListener("dragenter",this.handleTopDragEnter),t.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.addEventListener("dragover",this.handleTopDragOver),t.addEventListener("dragover",this.handleTopDragOverCapture,!0),t.addEventListener("drop",this.handleTopDrop),t.addEventListener("drop",this.handleTopDropCapture,!0))}removeEventListeners(t){t.removeEventListener&&(t.removeEventListener("dragstart",this.handleTopDragStart),t.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),t.removeEventListener("dragend",this.handleTopDragEndCapture,!0),t.removeEventListener("dragenter",this.handleTopDragEnter),t.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.removeEventListener("dragover",this.handleTopDragOver),t.removeEventListener("dragover",this.handleTopDragOverCapture,!0),t.removeEventListener("drop",this.handleTopDrop),t.removeEventListener("drop",this.handleTopDropCapture,!0))}getCurrentSourceNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourceNodeOptions.get(t);return v1({dropEffect:this.altKeyPressed?"copy":"move"},r||{})}getCurrentDropEffect(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}getCurrentSourcePreviewNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourcePreviewNodeOptions.get(t);return v1({anchorX:.5,anchorY:.5,captureDraggingState:!1},r||{})}isDraggingNativeItem(){const t=this.monitor.getItemType();return Object.keys(g1).some(r=>g1[r]===t)}beginDragNativeItem(t,r){this.clearCurrentDragSourceNode(),this.currentNativeSource=Rk(t,r),this.currentNativeHandle=this.registry.addSource(t,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}setCurrentDragSourceNode(t){this.clearCurrentDragSourceNode(),this.currentDragSourceNode=t;const r=1e3;this.mouseMoveTimeoutTimer=setTimeout(()=>{var n;return(n=this.rootElement)===null||n===void 0?void 0:n.addEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)},r)}clearCurrentDragSourceNode(){if(this.currentDragSourceNode){if(this.currentDragSourceNode=null,this.rootElement){var t;(t=this.window)===null||t===void 0||t.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}return this.mouseMoveTimeoutTimer=null,!0}return!1}handleDragStart(t,r){t.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(r))}handleDragEnter(t,r){this.dragEnterTargetIds.unshift(r)}handleDragOver(t,r){this.dragOverTargetIds===null&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(r)}handleDrop(t,r){this.dropTargetIds.unshift(r)}constructor(t,r,n){this.sourcePreviewNodes=new Map,this.sourcePreviewNodeOptions=new Map,this.sourceNodes=new Map,this.sourceNodeOptions=new Map,this.dragStartSourceIds=null,this.dropTargetIds=[],this.dragEnterTargetIds=[],this.currentNativeSource=null,this.currentNativeHandle=null,this.currentDragSourceNode=null,this.altKeyPressed=!1,this.mouseMoveTimeoutTimer=null,this.asyncEndDragFrameId=null,this.dragOverTargetIds=null,this.lastClientOffset=null,this.hoverRafId=null,this.getSourceClientOffset=i=>{const o=this.sourceNodes.get(i);return o&&z2(o)||null},this.endDragNativeItem=()=>{this.isDraggingNativeItem()&&(this.actions.endDrag(),this.currentNativeHandle&&this.registry.removeSource(this.currentNativeHandle),this.currentNativeHandle=null,this.currentNativeSource=null)},this.isNodeInDocument=i=>!!(i&&this.document&&this.document.body&&this.document.body.contains(i)),this.endDragIfSourceWasRemovedFromDOM=()=>{const i=this.currentDragSourceNode;i==null||this.isNodeInDocument(i)||(this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover())},this.scheduleHover=i=>{this.hoverRafId===null&&typeof requestAnimationFrame<"u"&&(this.hoverRafId=requestAnimationFrame(()=>{this.monitor.isDragging()&&this.actions.hover(i||[],{clientOffset:this.lastClientOffset}),this.hoverRafId=null}))},this.cancelHover=()=>{this.hoverRafId!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(this.hoverRafId),this.hoverRafId=null)},this.handleTopDragStartCapture=()=>{this.clearCurrentDragSourceNode(),this.dragStartSourceIds=[]},this.handleTopDragStart=i=>{if(i.defaultPrevented)return;const{dragStartSourceIds:o}=this;this.dragStartSourceIds=null;const a=Us(i);this.monitor.isDragging()&&(this.actions.endDrag(),this.cancelHover()),this.actions.beginDrag(o||[],{publishSource:!1,getSourceClientOffset:this.getSourceClientOffset,clientOffset:a});const{dataTransfer:s}=i,l=Bc(s);if(this.monitor.isDragging()){if(s&&typeof s.setDragImage=="function"){const c=this.monitor.getSourceId(),f=this.sourceNodes.get(c),d=this.sourcePreviewNodes.get(c)||f;if(d){const{anchorX:h,anchorY:m,offsetX:p,offsetY:g}=this.getCurrentSourcePreviewNodeOptions(),y=Ik(f,d,a,{anchorX:h,anchorY:m},{offsetX:p,offsetY:g});s.setDragImage(d,y.x,y.y)}}try{s==null||s.setData("application/json",{})}catch{}this.setCurrentDragSourceNode(i.target);const{captureDraggingState:u}=this.getCurrentSourcePreviewNodeOptions();u?this.actions.publishDragSource():setTimeout(()=>this.actions.publishDragSource(),0)}else if(l)this.beginDragNativeItem(l);else{if(s&&!s.types&&(i.target&&!i.target.hasAttribute||!i.target.hasAttribute("draggable")))return;i.preventDefault()}},this.handleTopDragEndCapture=()=>{this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleTopDragEnterCapture=i=>{if(this.dragEnterTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}if(!this.enterLeaveCounter.enter(i.target)||this.monitor.isDragging())return;const{dataTransfer:s}=i,l=Bc(s);l&&this.beginDragNativeItem(l,s)},this.handleTopDragEnter=i=>{const{dragEnterTargetIds:o}=this;if(this.dragEnterTargetIds=[],!this.monitor.isDragging())return;this.altKeyPressed=i.altKey,o.length>0&&this.actions.hover(o,{clientOffset:Us(i)}),o.some(s=>this.monitor.canDropOnTarget(s))&&(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect()))},this.handleTopDragOverCapture=i=>{if(this.dragOverTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}},this.handleTopDragOver=i=>{const{dragOverTargetIds:o}=this;if(this.dragOverTargetIds=[],!this.monitor.isDragging()){i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none");return}this.altKeyPressed=i.altKey,this.lastClientOffset=Us(i),this.scheduleHover(o),(o||[]).some(s=>this.monitor.canDropOnTarget(s))?(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect())):this.isDraggingNativeItem()?i.preventDefault():(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none"))},this.handleTopDragLeaveCapture=i=>{this.isDraggingNativeItem()&&i.preventDefault(),this.enterLeaveCounter.leave(i.target)&&(this.isDraggingNativeItem()&&setTimeout(()=>this.endDragNativeItem(),0),this.cancelHover())},this.handleTopDropCapture=i=>{if(this.dropTargetIds=[],this.isDraggingNativeItem()){var o;i.preventDefault(),(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}else Bc(i.dataTransfer)&&i.preventDefault();this.enterLeaveCounter.reset()},this.handleTopDrop=i=>{const{dropTargetIds:o}=this;this.dropTargetIds=[],this.actions.hover(o,{clientOffset:Us(i)}),this.actions.drop({dropEffect:this.getCurrentDropEffect()}),this.isDraggingNativeItem()?this.endDragNativeItem():this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleSelectStart=i=>{const o=i.target;typeof o.dragDrop=="function"&&(o.tagName==="INPUT"||o.tagName==="SELECT"||o.tagName==="TEXTAREA"||o.isContentEditable||(i.preventDefault(),o.dragDrop()))},this.options=new bk(r,n),this.actions=t.getActions(),this.monitor=t.getMonitor(),this.registry=t.getRegistry(),this.enterLeaveCounter=new Ck(this.isNodeInDocument)}}const Nk=function(t,r,n){return new $k(t,r,n)};function Mk(){const[e,t]=v.useState(null),[r,n]=v.useState("Interactive Table");v.useEffect(()=>{const a=setInterval(()=>{if(window.json_data){const s=JSON.parse(window.json_data);console.log(s),t(s),s.title&&typeof s.title=="string"&&n(s.title),clearInterval(a)}},100);return()=>clearInterval(a)},[]);const o=(a=>{var h;if(!a)return null;let s=(h=a.title)==null?void 0:h.replace(/|<\/b>/g,"").replace(/ /g,"_"),l=new Date().toISOString().slice(0,10).replace(/-/g,""),u=new Date().toISOString().slice(11,19).replace(/:/g,"");window.title=`openbb_${s}_${l}_${u}`;const c=a.columns;a.index;const d=a.data.map((m,p)=>{const g={};return m.forEach((x,w)=>{g[c[w]]=x||""}),g});return{columns:c,data:d}})(e);return Z("div",{className:"relative h-full bg-white dark:bg-black text-black dark:text-white",children:Z(mI,{backend:Nk,children:o&&Z(_k,{title:r,data:o.data,columns:o.columns,initialTheme:e.theme&&typeof e.theme=="string"&&e.theme==="dark"?"dark":"light",cmd:(e==null?void 0:e.command_location)??""})})})}cv.render(Z(nr.StrictMode,{children:Z(Mk,{})}),document.getElementById("root")); \n", + "\n", + "\"\"\"\n", + "\n", + "\n", + "img = (\n", + " str(REPOSITORY_DIRECTORY)\n", + " + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n", + ")\n", + "floppy_disk_img = (\n", + " str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n", + ")\n", + "body += widgets.header(\n", + " img,\n", + " floppy_disk_img,\n", + " author,\n", + " report_date,\n", + " report_time,\n", + " report_timezone,\n", + " f\"ECONOMY REPORT: Leverage multiple sources to create custom reports.\",\n", + ")\n", + "\n", + "body += widgets.tablinks(\n", + " [\n", + " \"SUMMARY\",\n", + " \"Events\",\n", + " \"Yields\",\n", + " \"Equity Market\",\n", + " \"Macro Data\",\n", + " ]\n", + ")\n", + "\n", + "# Summary\n", + "htmlcode = widgets.row(\n", + " [widgets.h(3, \"Global markets (source: WSJ)\") + overview.to_html()]\n", + ")\n", + "\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Commodities (source: WSJ)\") + futures_fig.to_html()]\n", + " + [\n", + " widgets.h(3, \"Real-time sector performance (source: Alphavantage)\")\n", + " + rtps_data.to_html().replace(\"table\", 'table style=\"display:inline\"')\n", + " ]\n", + ")\n", + "htmlcode += widgets.row([chart_0])\n", + "\n", + "if not news.empty:\n", + " htmlcode += widgets.row(\n", + " [\n", + " widgets.h(3, \"Top news on 'economy' keyword (source: Feedparser)\")\n", + " + news.to_html(escape=False)\n", + " ]\n", + " )\n", + "\n", + "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n", + "\n", + "# Events\n", + "htmlcode = widgets.row([widgets.h(3, \"Economic calendars (source: investing.com)\")])\n", + "htmlcode += widgets.row([widgets.h(3, \"United States\") + events_1.to_html()])\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Select European Countries\") + events_2.to_html()]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"China\") + events_3.to_html()])\n", + "body += widgets.add_tab(\"Events\", htmlcode)\n", + "\n", + "# Yields\n", + "htmlcode = widgets.row([widgets.h(3, \"US treasuries (source: EconDB)\") + ust])\n", + "\n", + "if ycrv:\n", + " htmlcode += widgets.row(\n", + " [\n", + " widgets.h(3, f\"{ycrv_country_1} yield curve (source: FRED)\")\n", + " + (ycrv_chart_1 or \"\")\n", + " ]\n", + " )\n", + " htmlcode += widgets.row([widgets.h(3, \"\") + ycrv_data_1.to_html()])\n", + "\n", + "body += widgets.add_tab(\"Yields\", htmlcode)\n", + "\n", + "# Equity market\n", + "htmlcode = widgets.row(\n", + " [widgets.h(3, \"Valuation (source: Finviz)\") + valuation.to_html()]\n", + ")\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Performance (source: Finviz)\") + valuation.to_html()]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"US markets (source: YahooFinance)\") + eqty_0])\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"European markets (source: YahooFinance)\") + eqty_1]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"APAC markets (source: YahooFinance)\") + eqty_2])\n", + "htmlcode += widgets.row(\n", + " [widgets.h(3, \"Emerging markets (source: YahooFinance)\") + eqty_3]\n", + ")\n", + "htmlcode += widgets.row([widgets.h(3, \"ARCA (source: YahooFinance)\") + eqty_4])\n", + "body += widgets.add_tab(\"Equity Market\", htmlcode)\n", + "\n", + "# Macro\n", + "htmlcode = \"\"\n", + "if not bigmac_res.empty:\n", + " htmlcode += widgets.row(\n", + " [widgets.h(3, \"Bigmac index (source: Nasdaq)\") + (bigmac or \"\")]\n", + " )\n", + "htmlcode += widgets.row([widgets.h(3, \"Leading indicators (source: EconDB)\") + macro_0])\n", + "if fred:\n", + " htmlcode += widgets.row(\n", + " [widgets.h(3, \"Recession indicator (source: FRED)\") + fred_0]\n", + " )\n", + "body += widgets.add_tab(\"Macro Data\", htmlcode)\n", + "\n", + "body += widgets.tab_clickable_and_save_evt()\n", + "report = widgets.html_report(title=report_name, stylesheet=stylesheet, body=body)\n", + "\n", + "# to save the results\n", + "with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n", + " fh.write(report)" + ] + } + ], + "metadata": { + "celltoolbar": "Tags", + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.9" + }, + "vscode": { + "interpreter": { + "hash": "381a209f752e9104bff95ec5e80679ea2e476866b80e4326f1ee6b7658af6049" + } + } }, - { - "cell_type": "code", - "execution_count": null, - "id": "driven-billion", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import io\n", - "import warnings\n", - "import datetime\n", - "import numpy as np\n", - "import pandas as pd\n", - "import base64\n", - "import pytz\n", - "\n", - "from IPython.display import HTML\n", - "\n", - "import openbb_terminal.config_terminal as cfg\n", - "from openbb_terminal.helper_funcs import get_user_timezone\n", - "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n", - "from openbb_terminal import OpenBBFigure, theme\n", - "from openbb_terminal.helper_classes import TerminalStyle\n", - "\n", - "\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4494cd3e", - "metadata": {}, - "outputs": [], - "source": [ - "# Suppressing sdk logs\n", - "from openbb_terminal.core.session.current_system import set_system_variable\n", - "\n", - "set_system_variable(\"LOGGING_SUPPRESS\", True)\n", - "\n", - "# Import the OpenBB SDK\n", - "from openbb_terminal.sdk import openbb, widgets" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f9feebc8", - "metadata": {}, - "outputs": [], - "source": [ - "from openbb_terminal.core.session.current_user import get_current_user\n", - "\n", - "user = get_current_user()\n", - "\n", - "cfg.theme = TerminalStyle(\n", - " user.preferences.MPL_STYLE,\n", - " user.preferences.PMF_STYLE,\n", - " user.preferences.RICH_STYLE,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e6e39973", - "metadata": {}, - "outputs": [], - "source": [ - "stylesheet = widgets.html_report_stylesheet()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "daef64ec", - "metadata": { - "tags": [ - "parameters" - ] - }, - "outputs": [], - "source": [ - "# Parameters that will be replaced when calling this notebook\n", - "# Do not leave parameters blank as notebook will not run otherwise\n", - "report_name = \"economy_report\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1be26dae-cafe-4a22-80aa-eff296fc1a9b", - "metadata": {}, - "outputs": [], - "source": [ - "author = \"OpenBB\"\n", - "report_title = f\"Economy report\"\n", - "user_time_zone = pytz.timezone(get_user_timezone())\n", - "report_date = pd.Timestamp.now(tz=user_time_zone).strftime(\"%d %B, %Y\")\n", - "report_time = pd.Timestamp.now(tz=user_time_zone).strftime(\"%H:%M\")\n", - "report_timezone = pd.Timestamp.now(tz=user_time_zone).tzinfo\n", - "report_title, report_date, report_time, report_timezone" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "9363f19a", - "metadata": {}, - "source": [ - "## Data\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "0b9ec3f9", - "metadata": {}, - "source": [ - "Summary\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e3b15d6f-dc9e-4f97-aa07-37d949a4e4bb", - "metadata": {}, - "outputs": [], - "source": [ - "overview = openbb.economy.overview()\n", - "overview.set_index(list(overview.columns[0]), inplace=True)\n", - "overview = OpenBBFigure.to_table(overview, print_index=True, width=600)\n", - "\n", - "futures = openbb.economy.futures()\n", - "futures.set_index(list(futures.columns[0]), inplace=True)\n", - "futures[\"%Chg\"] = futures[\"%Chg\"].apply(lambda x: float(f\"{x:.2f}\"))\n", - "futures_fig = OpenBBFigure.to_table(futures, print_index=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "351d0451", - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " news = openbb.news(\"economy\")\n", - " news.columns = news.columns.str.title()\n", - " news = news.rename(\n", - " columns={\"Date\": \"Published\", \"Description\": \"Title\", \"Url\": \"Link\"}\n", - " )\n", - " news[\"Title\"] = news.apply(\n", - " lambda x: f'{x[\"Title\"]}', axis=1\n", - " )\n", - " news = news[[\"Title\", \"Published\"]]\n", - " news[\"Published\"] = pd.to_datetime(news[\"Published\"]).dt.strftime(\"%Y-%m-%d %H:%M\")\n", - " news = news.set_index(\"Published\")\n", - "except:\n", - " news = pd.DataFrame()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64729474", - "metadata": {}, - "outputs": [], - "source": [ - "rtps_data = openbb.economy.rtps()\n", - "subplots = OpenBBFigure.create_subplots(1, 2, horizontal_spacing=0.15)\n", - "openbb.economy.rtps_chart(external_axes=True).to_subplot(subplots, 1, 1)\n", - "\n", - "chg = futures[\"%Chg\"]\n", - "colors = [theme.up_color if x > 0 else theme.down_color for x in list(chg.values)]\n", - "subplots.add_bar(\n", - " y=chg.index,\n", - " x=chg.values,\n", - " orientation=\"h\",\n", - " marker_color=colors,\n", - " showlegend=False,\n", - " row=1,\n", - " col=2,\n", - ")\n", - "subplots.update_xaxes(title_text=\"Performance (%)\", row=1, col=1)\n", - "subplots.update_xaxes(title_text=\"Change %\", row=1, col=2)\n", - "subplots.update_layout(margin=dict(l=0, r=0, t=0, b=0), yaxis=dict(side=\"left\"))\n", - "chart_0 = subplots.to_html()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7315ac99", - "metadata": {}, - "source": [ - "Events\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a02c6166", - "metadata": {}, - "outputs": [], - "source": [ - "events_1 = openbb.economy.events(\n", - " countries=\"United States\",\n", - " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", - ")\n", - "if not events_1.empty:\n", - " events_1 = OpenBBFigure.to_table(\n", - " events_1.set_index(\"Date\"), print_index=True, height=200\n", - " )\n", - "\n", - "events_2 = openbb.economy.events(\n", - " countries=[\n", - " \"Germany\",\n", - " \"Spain\",\n", - " \"Italy\",\n", - " \"United Kingdom\",\n", - " \"France\",\n", - " \"Portugal\",\n", - " \"Greece\",\n", - " ],\n", - " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", - ")\n", - "if not events_2.empty:\n", - " events_2 = OpenBBFigure.to_table(events_2.set_index(\"Date\"), print_index=True)\n", - "\n", - "events_3 = openbb.economy.events(\n", - " countries=\"China\",\n", - " start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n", - ")\n", - "if not events_3.empty:\n", - " events_3 = OpenBBFigure.to_table(events_3.set_index(\"Date\"), print_index=True)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f1863bd0", - "metadata": {}, - "source": [ - "Yields\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8e332ca6", - "metadata": {}, - "outputs": [], - "source": [ - "ycrv = openbb.fixedincome.ycrv(return_date=True)\n", - "\n", - "if (isinstance(ycrv, pd.DataFrame) and not ycrv.empty) or (\n", - " not isinstance(ycrv, pd.DataFrame) and ycrv\n", - "):\n", - " ycrv_data_1, _ = ycrv\n", - " ycrv_country_1 = \"United states\"\n", - "\n", - " ycrv_chart_1 = openbb.fixedincome.ycrv_chart(external_axes=True)\n", - "\n", - " if ycrv_chart_1:\n", - " ycrv_chart_1 = ycrv_chart_1.to_html()\n", - "\n", - " if not ycrv_data_1.empty:\n", - " ycrv_data_1.drop([\"Maturity\"], axis=1, inplace=True)\n", - " ycrv_data_1.index = [\n", - " \"1M\",\n", - " \"3M\",\n", - " \"6M\",\n", - " \"1Y\",\n", - " \"2Y\",\n", - " \"3Y\",\n", - " \"5Y\",\n", - " \"7Y\",\n", - " \"10Y\",\n", - " \"20Y\",\n", - " \"30Y\",\n", - " ]\n", - "else:\n", - " ycrv = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "31fb0f86", - "metadata": {}, - "outputs": [], - "source": [ - "openbb.economy.treasury_maturities()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c4f987af", - "metadata": {}, - "outputs": [], - "source": [ - "subplots = OpenBBFigure.create_subplots(\n", - " 2,\n", - " 2,\n", - " vertical_spacing=0.15,\n", - " subplot_titles=(\"UST 2y-10y\", \"UST 10y-30y\", \"Nominal vs TIPS\"),\n", - " specs=[[{}, {}], [{\"colspan\": 2}, None]],\n", - ")\n", - "openbb.economy.treasury_chart(\n", - " instruments=[\"nominal\"],\n", - " maturities=[\"2y\", \"10y\"],\n", - " frequency=\"daily\",\n", - " start_date=\"2020-01-01\",\n", - " external_axes=True,\n", - ").to_subplot(subplots, 1, 1)\n", - "\n", - "openbb.economy.treasury_chart(\n", - " instruments=[\"nominal\"],\n", - " maturities=[\"10y\", \"30y\"],\n", - " frequency=\"daily\",\n", - " start_date=\"2020-01-01\",\n", - " external_axes=True,\n", - ").to_subplot(subplots, 1, 2)\n", - "\n", - "openbb.economy.treasury_chart(\n", - " instruments=[\"nominal\", \"inflation\"],\n", - " maturities=[\"10y\"],\n", - " frequency=\"daily\",\n", - " start_date=\"2020-01-01\",\n", - " external_axes=True,\n", - ").to_subplot(subplots, 2, 1)\n", - "\n", - "ust = subplots.to_html()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7a3c421f", - "metadata": {}, - "source": [ - "Equity Market\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "12c98e06", - "metadata": {}, - "outputs": [], - "source": [ - "valuation = OpenBBFigure.to_table(openbb.economy.valuation(), print_index=False)\n", - "performance = OpenBBFigure.to_table(openbb.economy.performance(), print_index=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "42f5570d", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"sp500\", \"dow_djus\", \"nasdaq100\", \"russell3000\", \"cboe_vix\"],\n", - " start_date=\"2000-03-09\",\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_0 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "286a82d7", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"ftse100\", \"de_dax40\", \"fr_cac40\", \"it_mib40\", \"es_ibex35\"],\n", - " start_date=\"2000-01-01\",\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_1 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e825e8ed", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"jp_n225\", \"cn_csi300\", \"hk_china\", \"au_asx50\"], start_date=\"2014-01-01\"\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_2 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8eb1327b", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(\n", - " indices=[\"in_nse50\", \"br_bvsp\", \"za_jo\", \"mx_ipc\", \"ru_moex\"],\n", - " start_date=\"2013-01-01\",\n", - ")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_3 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "02630bd6", - "metadata": {}, - "outputs": [], - "source": [ - "fig = OpenBBFigure(yaxis_title=\"Cumulative returns (%)\")\n", - "data = openbb.economy.index(indices=[\"arca_xoi\", \"arca_pse\"], start_date=\"2000-01-01\")\n", - "\n", - "data = data.pct_change().dropna()\n", - "data = (1 + data.shift(periods=1, fill_value=0)).cumprod() - 1\n", - "for col in data.columns:\n", - " fig.add_scatter(\n", - " x=data.index,\n", - " y=data[col] * 100,\n", - " name=col,\n", - " )\n", - "\n", - "eqty_4 = fig.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a4c8963", - "metadata": {}, - "outputs": [], - "source": [ - "bigmac_res = openbb.economy.bigmac()\n", - "\n", - "if (isinstance(bigmac_res, pd.DataFrame) and not bigmac_res.empty) or (\n", - " not isinstance(bigmac_res, pd.DataFrame) and bigmac_res\n", - "):\n", - " bigmac = openbb.economy.bigmac_chart(\n", - " country_codes=[\n", - " \"USA\",\n", - " \"CAN\",\n", - " \"ARG\",\n", - " \"PRT\",\n", - " \"NLD\",\n", - " \"FRA\",\n", - " \"UAE\",\n", - " \"LKA\",\n", - " \"VNM\",\n", - " \"RUS\",\n", - " \"SWE\",\n", - " \"GBR\",\n", - " ],\n", - " external_axes=True,\n", - " )\n", - " if bigmac:\n", - " bigmac.set_title(\"\")\n", - " bigmac = bigmac.to_html()\n", - "\n", - "else:\n", - " bigmac_res = pd.DataFrame()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1947a06c", - "metadata": {}, - "outputs": [], - "source": [ - "subplots = OpenBBFigure.create_subplots(1, 1, specs=[[{\"secondary_y\": True}]])\n", - "\n", - "openbb.economy.macro_chart(\n", - " parameters=[\"CONF\", \"IP\"], start_date=\"2010-01-01\", external_axes=True\n", - ").to_subplot(subplots, 1, 1, secondary_y=False)\n", - "subplots.update_yaxes(title_text=\"Confidence and IP\", secondary_y=False)\n", - "\n", - "\n", - "df, df_dict, _ = openbb.economy.macro(parameters=[\"CPI\"], start_date=\"2010-01-01\")\n", - "cpi_chg = df.pct_change(1) * 100\n", - "subplots.add_scatter(\n", - " x=cpi_chg.index,\n", - " y=cpi_chg.T.values[0],\n", - " name=\"CPI (% change)\",\n", - " mode=\"lines\",\n", - " line=dict(color=\"red\", dash=\"dash\"),\n", - " secondary_y=True,\n", - " yaxis=\"y2\",\n", - ")\n", - "subplots.update_yaxes(\n", - " title_text=\"CPI (% change)\",\n", - " secondary_y=True,\n", - " range=[-2, 2],\n", - " side=\"left\",\n", - " overlaying=\"y\",\n", - ")\n", - "subplots.horizontal_legend()\n", - "\n", - "macro_0 = subplots.to_html()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "971e4c51", - "metadata": {}, - "outputs": [], - "source": [ - "fred = openbb.economy.fred(series_ids=[\"T10Y3M\"], start_date=\"1980-01-01\")\n", - "\n", - "if (isinstance(fred, pd.DataFrame) and not fred.empty) or (\n", - " not isinstance(fred, pd.DataFrame) and fred\n", - "):\n", - " df, df_dict = fred\n", - "\n", - " fig = OpenBBFigure.create_subplots(1, 1, specs=[[{\"secondary_y\": True}]])\n", - " fig.add_scatter(\n", - " x=df.index,\n", - " y=df[\"T10Y3M\"],\n", - " name=df_dict[\"T10Y3M\"][\"title\"],\n", - " line=dict(color=\"red\", dash=\"dash\"),\n", - " secondary_y=False,\n", - " )\n", - " openbb.economy.fred_chart(\n", - " series_ids=[\"A191RP1A027NBEA\"],\n", - " start_date=\"1980-01-01\",\n", - " external_axes=True,\n", - " ).to_subplot(fig, 1, 1, secondary_y=True)\n", - " fig.update_yaxes(secondary_y=True, side=\"left\", overlaying=\"y\")\n", - " fig.set_title(\"\")\n", - " fig.horizontal_legend()\n", - "\n", - " fred_0 = fig.to_html()\n", - "else:\n", - " fred = None" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ac501a32-124d-4d21-aae1-a8d147bb1071", - "metadata": {}, - "source": [ - "## Render the report template to a file\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abfe37e4-ea38-42c3-8fb5-7cceb233fb12", - "metadata": {}, - "outputs": [], - "source": [ - "body = f\"\"\"\n", - "\n", - "\n", - "\"\"\"\n", - "\n", - "\n", - "img = (\n", - " str(REPOSITORY_DIRECTORY)\n", - " + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n", - ")\n", - "floppy_disk_img = (\n", - " str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n", - ")\n", - "body += widgets.header(\n", - " img,\n", - " floppy_disk_img,\n", - " author,\n", - " report_date,\n", - " report_time,\n", - " report_timezone,\n", - " f\"ECONOMY REPORT: Leverage multiple sources to create custom reports.\",\n", - ")\n", - "\n", - "body += widgets.tablinks(\n", - " [\n", - " \"SUMMARY\",\n", - " \"Events\",\n", - " \"Yields\",\n", - " \"Equity Market\",\n", - " \"Macro Data\",\n", - " ]\n", - ")\n", - "\n", - "# Summary\n", - "htmlcode = widgets.row(\n", - " [widgets.h(3, \"Global markets (source: WSJ)\") + overview.to_html()]\n", - ")\n", - "\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Commodities (source: WSJ)\") + futures_fig.to_html()]\n", - " + [\n", - " widgets.h(3, \"Real-time sector performance (source: Alphavantage)\")\n", - " + rtps_data.to_html().replace(\"table\", 'table style=\"display:inline\"')\n", - " ]\n", - ")\n", - "htmlcode += widgets.row([chart_0])\n", - "\n", - "if not news.empty:\n", - " htmlcode += widgets.row(\n", - " [\n", - " widgets.h(3, \"Top news on 'economy' keyword (source: Feedparser)\")\n", - " + news.to_html(escape=False)\n", - " ]\n", - " )\n", - "\n", - "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n", - "\n", - "# Events\n", - "htmlcode = widgets.row([widgets.h(3, \"Economic calendars (source: investing.com)\")])\n", - "htmlcode += widgets.row([widgets.h(3, \"United States\") + events_1.to_html()])\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Select European Countries\") + events_2.to_html()]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"China\") + events_3.to_html()])\n", - "body += widgets.add_tab(\"Events\", htmlcode)\n", - "\n", - "# Yields\n", - "htmlcode = widgets.row([widgets.h(3, \"US treasuries (source: EconDB)\") + ust])\n", - "\n", - "if ycrv:\n", - " htmlcode += widgets.row(\n", - " [\n", - " widgets.h(3, f\"{ycrv_country_1} yield curve (source: FRED)\")\n", - " + (ycrv_chart_1 or \"\")\n", - " ]\n", - " )\n", - " htmlcode += widgets.row([widgets.h(3, \"\") + ycrv_data_1.to_html()])\n", - "\n", - "body += widgets.add_tab(\"Yields\", htmlcode)\n", - "\n", - "# Equity market\n", - "htmlcode = widgets.row(\n", - " [widgets.h(3, \"Valuation (source: Finviz)\") + valuation.to_html()]\n", - ")\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Performance (source: Finviz)\") + valuation.to_html()]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"US markets (source: YahooFinance)\") + eqty_0])\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"European markets (source: YahooFinance)\") + eqty_1]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"APAC markets (source: YahooFinance)\") + eqty_2])\n", - "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Emerging markets (source: YahooFinance)\") + eqty_3]\n", - ")\n", - "htmlcode += widgets.row([widgets.h(3, \"ARCA (source: YahooFinance)\") + eqty_4])\n", - "body += widgets.add_tab(\"Equity Market\", htmlcode)\n", - "\n", - "# Macro\n", - "htmlcode = \"\"\n", - "if not bigmac_res.empty:\n", - " htmlcode += widgets.row(\n", - " [widgets.h(3, \"Bigmac index (source: Nasdaq)\") + (bigmac or \"\")]\n", - " )\n", - "htmlcode += widgets.row([widgets.h(3, \"Leading indicators (source: EconDB)\") + macro_0])\n", - "if fred:\n", - " htmlcode += widgets.row(\n", - " [widgets.h(3, \"Recession indicator (source: FRED)\") + fred_0]\n", - " )\n", - "body += widgets.add_tab(\"Macro Data\", htmlcode)\n", - "\n", - "body += widgets.tab_clickable_and_save_evt()\n", - "report = widgets.html_report(title=report_name, stylesheet=stylesheet, body=body)\n", - "\n", - "# to save the results\n", - "with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n", - " fh.write(report)" - ] - } - ], - "metadata": { - "celltoolbar": "Tags", - "kernelspec": { - "display_name": "venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - }, - "vscode": { - "interpreter": { - "hash": "381a209f752e9104bff95ec5e80679ea2e476866b80e4326f1ee6b7658af6049" - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index dc4a271f7461..c074ac350e07 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -36,7 +36,7 @@ class OpenBBSDK: Attributes: `login`: Login and load user info.\n `logout`: Logout and clear session.\n - `news`: Get news for a given term and source. [Source: Feedparser]\n + `news`: Get news for a given term and source. [Source: Ultima Insights News Monitor]\n `whoami`: Display user info.\n """ diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[USDC].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[USDC].yaml deleted file mode 100644 index ac447df525e9..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[USDC].yaml +++ /dev/null @@ -1,264 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n select\n date_trunc(''day'', block_timestamp) as timeframe,\n sum(case - when symbol = ''U'' then amount_usd end) as U,sum(case when symbol = ''S'' then - amount_usd end) as S,sum(case when symbol = ''D'' then amount_usd end) as D,sum(case - when symbol = ''C'' then amount_usd end) as C\n from ethereum.udm_events\n where\n block_timestamp - >= ''2020-06-01''\n -- and amount0_usd > ''0''\n group by 1\n order - by timeframe desc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '472' - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNNbBMSUm2MDQxSrZISzNPMU5LTjUyMDY1N042 - STVPNVHSUUpOTM5ITVGySkvMKU6tBQAhooQXRAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:14:44 GMT - etag: - - W/"44-q5TDVqI2cmbhDDLiGzKLvyQ4VxQ" - fly-request-id: - - 01GF0P7HDTDF3AYV3HM4R978WB-cdg - keep-alive: - - timeout=5 - ratelimit-limit: - - '10000' - ratelimit-remaining: - - '9992' - ratelimit-reset: - - '84813' - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-e09ddc8142c8ff7d3fce203573c4e7e4?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKi5JLCktVrJSKirNy8vMS1eqBQAqTkzLFAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:14:45 GMT - etag: - - W/"14-gfn4m/4htgMx1Nnl9+2EBDZ+o8g" - fly-request-id: - - 01GF0P7HPPFFA2SW6Q8PE4P0CQ-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-e09ddc8142c8ff7d3fce203573c4e7e4?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6pWKkotLs0pKVayio5WMjIwMtI1sNA1sFAwMLACIz0DAwMlnbzSnBw0IlYHSb05 - ierNSFRvSqJ6ExLVG5Oo3ohE9YakqDfXNSZVvQFp5htZkqiepPRgrmtEUnow1zUiKT2Y6xqRlB7M - dY1ISg/mukYkpQdzXSOS0oO5rhGJ8WtEYvwakhi/hiTGryER8QsAAAD//0KUD+a6hiTGryGJ8WtI - Yvwakhi/hiTGryGJ8WtIYvwakBi/pJXn5roGJMavAYnxa0Bi/BqQGL8GJMavAYnxa0BS/JrpGpMU - v2a6pJXPZrpGJOVfMxLLZzMSy2czEstnMxLLZzMSy2czEstnMxLLZzNd0spnM13SymczXdLKZzNd - 0spnMxLLZzNd0spnM13SymczXdLKZzNd0spnM13SymczXdLKZzNd0spnMxLb22Ykls9muqSVz2a6 - pJVvpiS2V01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01J - LA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NSSwPTUksD01JLA9NdUlrr5rq - ktZeNdUlrb1qqktae9WUxPLchMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy - 2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZhMTy2YTE8tmExPLZ - hMTy2YTE8tmExPLZhMTy2YTE8tmExPLZmMT2tjGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkx - ieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ - 5bkxieW5MYnluTGJ5bkxieW5MYnluTGJ5bkxieW5MYnluRGJ5acRieWnEYnlpxGJ5acRieWnEYnl - pxGJ5acRieWnEYnlpxGJ5acRieWnEYnlpxGJ5acRieWnEYnlpxGJ5acRieWnEYnlpxGJ5acRieUn - aMkEKfPpRiSWn0Yklp9GJJafRiSWn0Yklp9GJJafRiSWn4YktocNSWwPG5LYHjYksTw3JLE8NySx - PDcksTw3JLE8N8RangMAAAD//8rBuV7IkMTy3JDE8tyQxPLckMTy3JDE8tyQxPLckMTy3JDE8tyQ - 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 - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:14:55 GMT - etag: - - W/"9af7-WUxr4dUWiUQwMLKR+X8sug9PBVE" - fly-request-id: - - 01GF0P7VNPKXV4SB42QKE3PC7K-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[symbols0].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[symbols0].yaml deleted file mode 100644 index 4e77ac87d5fd..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_daily_transactions[symbols0].yaml +++ /dev/null @@ -1,858 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n select\n date_trunc(''day'', block_timestamp) as timeframe,\n sum(case - when symbol = ''DAI'' then amount_usd end) as DAI,sum(case when symbol = ''USDT'' - then amount_usd end) as USDT,sum(case when symbol = ''BUSD'' then amount_usd - end) as BUSD,sum(case when symbol = ''USDC'' then amount_usd end) as USDC\n from ethereum.udm_events\n where\n block_timestamp - >= ''2020-06-01''\n -- and amount0_usd > ''0''\n group by 1\n order - by timeframe desc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '494' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNNjdLtjRLS00yNDY0SzFINDI0NklONk5LTDZI - S06xNFPSUUpOTM5ITVGyKikqTa0FAMwg9V1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"43-f3m9ZGaa4MiJolas/MEhJEbgGNM" - fly-request-id: - - 01GF0TQ8M18R7H6CAGSGB701HV-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-c76c96feb1316d0a2134cc3fac0fcd96?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"118b7-6J6yPO9XYWSI8/cM9Xmd0wXzXXM" - fly-request-id: - - 01GF0TQ8RR7QQH3DT6517WVBC7-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats.yaml deleted file mode 100644 index 10eecedf41df..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats.yaml +++ /dev/null @@ -1,184 +0,0 @@ -interactions: -- request: - body: '{"sql": "select\n date_trunc(''week'', s.block_timestamp) as date,\n sum(t.fee_usd) - as fee,\n count(distinct(s.from_address)) as n_users,\n count(distinct(s.amount_usd)) - as volume\n from ethereum.dex_swaps s\n join ethereum.transactions t\n on - s.tx_id = t.tx_id\n where platform = ''curve''\n group by date\n order - by date asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '388' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdO1TEuxSEwxTrZMtTQ2TEwyMzM0tjC2MDNMTUtM - s7AwN1DSUUpOTM5ITVGySkvMKU6tBQAfnID9RAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:15 GMT - etag: - - W/"44-icLlpJusNrO2+YzTyfb2yGjlgZA" - fly-request-id: - - 01GF0TQ981WAH8WZEHRT3ZKWB4-lhr - keep-alive: - - timeout=5 - ratelimit-limit: - - '10000' - ratelimit-remaining: - - '9977' - ratelimit-reset: - - '80102' - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-9fd8ad3c9e931ab661383861efaf8870?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKi5JLCktVrJSKirNy8vMS1eqBQAqTkzLFAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:15 GMT - etag: - - W/"14-gfn4m/4htgMx1Nnl9+2EBDZ+o8g" - fly-request-id: - - 01GF0TQ9HMM1QSYTWSKRRQHFBD-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-9fd8ad3c9e931ab661383861efaf8870?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - ZeZlFmekpijVAgB++H8Q2AoAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:25 GMT - etag: - - W/"ad8-sf5LVDKFh712tzShzGXcp7mL3EI" - fly-request-id: - - 01GF0TQKFSRXA7ZRQ6D05KBFG8-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats[uniswap-v3].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats[uniswap-v3].yaml deleted file mode 100644 index 38092dca6137..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_dapp_stats[uniswap-v3].yaml +++ /dev/null @@ -1,136 +0,0 @@ -interactions: -- request: - body: '{"sql": "select\n date_trunc(''week'', s.block_timestamp) as date,\n sum(t.fee_usd) - as fee,\n count(distinct(s.from_address)) as n_users,\n count(distinct(s.amount_usd)) - as volume\n from ethereum.dex_swaps s\n join ethereum.transactions t\n on - s.tx_id = t.tx_id\n where platform = ''uniswap-v3''\n group by date\n order - by date asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '393' - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNSzY2NjA3TDE2Nk1ONLOwSEs1MTQzT0pONk80 - TjEyNVDSUUpOTM5ITVGyKikqTa0FAFcJBi1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:22:18 GMT - etag: - - W/"43-YXSdVSomTVod7CBsfttMVpizbvI" - fly-request-id: - - 01GF0PNCBM4RXG8AD34ATNTAXS-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.28.1 - x-api-key: - - f5857482-1185-4d7c-98f0-e537d2335130 - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-fc33071d335ca688fe4167bcc7a3d250?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 10:22:18 GMT - etag: - - W/"b4f-KgwzwsKNMhsr7nBbQ37PwRZfLQ8" - fly-request-id: - - 01GF0PNCGTNX1NPF2A1VWBAYBS-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].yaml deleted file mode 100644 index 0bb195d757a2..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].yaml +++ /dev/null @@ -1,106 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n SELECT\n date_trunc(''day'', balance_date) as metric_date,\n symbol,\n amount_usd/1000000 - as amount_usd\n FROM\n ethereum.erc20_balances\n WHERE\n user_address - = ''0x0000000000000000000000000000000000000000'' and\n symbol = ''USDC'' - AND\n balance_date >= getdate() - interval ''1 month''\n ORDER BY\n metric_date - asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '414' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdM1NzNMNTE1Nk41tTA0STa1SLUwSUoxTDYxTjRI - S0wzNlfSUUpOTM5ITVGyKikqTa0FAAtAnM1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"43-ChAWkttvmcKq7c9L9ujpGopGlsY" - fly-request-id: - - 01GF0TQ80W41K9Y0C5GFZMVEB2-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-761e4533e5814c58e84bd1c43a0faf37?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKkotLs0pKVayio7VUUrOzynNzfNJTErNAYko+bqGBHk6x7s4hrgq6SgFR/o6 - +fso6Sg5+vqH+oXEhwa7KME1hVQWpIL1pCSWpCrpKBWXFGXmpSvpKOWV5ialFoEUFpckFpWkpjiW - KFkpGRkYGekaGugaGoQYGloZG1kZm+kZGBhEKekopeal4FRkAVNUkJie6gcx2cpQRwnEDc6sSlWy - MjQAAZD9iSWlxUpWSmmZeZnFGakpSrUAu0TkMu0AAAA= - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:33:14 GMT - etag: - - W/"ed-fhfNu3Lmjm2FyGdzfm0tVbLc5Fk" - fly-request-id: - - 01GF0TQ8EDKNH5DB71B9A6TB41-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_daily_transactions.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_daily_transactions.yaml deleted file mode 100644 index d5666505feb2..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_daily_transactions.yaml +++ /dev/null @@ -1,858 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n select\n date_trunc(''day'', block_timestamp) as timeframe,\n sum(case - when symbol = ''DAI'' then amount_usd end) as DAI,sum(case when symbol = ''USDT'' - then amount_usd end) as USDT,sum(case when symbol = ''BUSD'' then amount_usd - end) as BUSD,sum(case when symbol = ''USDC'' then amount_usd end) as USDC\n from ethereum.udm_events\n where\n block_timestamp - >= ''2020-06-01''\n -- and amount0_usd > ''0''\n group by 1\n order - by timeframe desc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '494' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNNjdLtjRLS00yNDY0SzFINDI0NklONk5LTDZI - S06xNFPSUUpOTM5ITVGyKikqTa0FAMwg9V1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:35 GMT - etag: - - W/"43-f3m9ZGaa4MiJolas/MEhJEbgGNM" - fly-request-id: - - 01GF0TP2DPR60W86T6TTQT75NB-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-c76c96feb1316d0a2134cc3fac0fcd96?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - wJaVlBYrWSmlZeZlFmekpijVAgD9iAELtxgBAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:35 GMT - etag: - - W/"118b7-6J6yPO9XYWSI8/cM9Xmd0wXzXXM" - fly-request-id: - - 01GF0TP2KHAT73YC7592NKYGYG-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_dapp_stats.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_dapp_stats.yaml deleted file mode 100644 index 318d64ddaa97..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_dapp_stats.yaml +++ /dev/null @@ -1,132 +0,0 @@ -interactions: -- request: - body: '{"sql": "select\n date_trunc(''week'', s.block_timestamp) as date,\n sum(t.fee_usd) - as fee,\n count(distinct(s.from_address)) as n_users,\n count(distinct(s.amount_usd)) - as volume\n from ethereum.dex_swaps s\n join ethereum.transactions t\n on - s.tx_id = t.tx_id\n where platform = ''uniswap-v3''\n group by date\n order - by date asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '393' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdNNSzY2NjA3TDE2Nk1ONLOwSEs1MTQzT0pONk80 - TjEyNVDSUUpOTM5ITVGyKikqTa0FAFcJBi1DAAAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"43-YXSdVSomTVod7CBsfttMVpizbvI" - fly-request-id: - - 01GF0TP32HHZQSJT8ZQ89A38KA-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-fc33071d335ca688fe4167bcc7a3d250?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - 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 - 2LKS0mIlK6W0zLzM4ozUFKVaADfuoyhPCwAA - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"b4f-FL9M7yKwoZj9rMPMgI6HmQKZvD4" - fly-request-id: - - 01GF0TP37CDWJ7SKX1KNYFXFGV-cdg - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_total_value_locked.yaml b/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_total_value_locked.yaml deleted file mode 100644 index 2e07fe1efe8b..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/cassettes/test_shroom_view/test_display_total_value_locked.yaml +++ /dev/null @@ -1,159 +0,0 @@ -interactions: -- request: - body: '{"sql": "\n SELECT\n date_trunc(''day'', balance_date) as metric_date,\n symbol,\n amount_usd/1000000 - as amount_usd\n FROM\n ethereum.erc20_balances\n WHERE\n user_address - = ''0x0000000000000000000000000000000000000000'' and\n symbol = ''USDC'' - AND\n balance_date >= getdate() - interval ''1 month''\n ORDER BY\n metric_date - asc\n ", "ttlMinutes": 15}' - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Length: - - '414' - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: POST - uri: https://node-api.flipsidecrypto.com/queries - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKsnPTs1TslIqLE0tqgwqzdM1NzNMNTE1Nk41tTA0STa1SLUwSUoxTDYxTjRI - S0wzNlfSUUpOTM5ITVGySkvMKU6tBQCItla1RAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"44-s2PPX6EWKS6gFs7IgeKrrq0b9Rc" - fly-request-id: - - 01GF0TP3FVTJTTSM519PV4FVF9-cdg - keep-alive: - - timeout=5 - ratelimit-limit: - - '10000' - ratelimit-remaining: - - '9978' - ratelimit-reset: - - '80141' - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-761e4533e5814c58e84bd1c43a0faf37?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKi5JLCktVrJSKirNy8vMS1eqBQAqTkzLFAAAAA== - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:36 GMT - etag: - - W/"14-gfn4m/4htgMx1Nnl9+2EBDZ+o8g" - fly-request-id: - - 01GF0TP3QGBX48JR6MK2Z6NCSB-ams - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Content-Type: - - application/json - x-api-key: - - MOCK_AUTHORIZATION - method: GET - uri: https://node-api.flipsidecrypto.com/queries/queryRun-761e4533e5814c58e84bd1c43a0faf37?pageNumber=1&pageSize=100000 - response: - body: - string: !!binary | - H4sIAAAAAAAE/6tWKkotLs0pKVayio7VUUrOzynNzfNJTErNAYko+bqGBHk6x7s4hrgq6SgFR/o6 - +fso6Sg5+vqH+oXEhwa7KME1hVQWpIL1pCSWpCrpKBWXFGXmpSvpKOWV5ialFoEUFpckFpWkpjiW - KFkpGRkYGekaGugaGoQYGloZG1kZm+kZGBhEKekopeal4FRkAVNUkJie6gcx2cpQRwnEDc6sSlWy - MjQAAZD9iSWlxUpWSmmZeZnFGakpSrUAu0TkMu0AAAA= - headers: - connection: - - keep-alive - content-encoding: - - gzip - content-type: - - application/json; charset=utf-8 - date: - - Mon, 10 Oct 2022 11:32:47 GMT - etag: - - W/"ed-fhfNu3Lmjm2FyGdzfm0tVbLc5Fk" - fly-request-id: - - 01GF0TPDQ1AEJBQYFPXF7599EH-lhr - keep-alive: - - timeout=5 - server: - - Fly/54d1d920f (2022-09-30) - transfer-encoding: - - chunked - vary: - - Origin - via: - - 1.1 fly.io - x-powered-by: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_daily_transactions[symbols0].csv b/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_daily_transactions[symbols0].csv deleted file mode 100644 index dabf5e79b0f8..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_daily_transactions[symbols0].csv +++ /dev/null @@ -1,796 +0,0 @@ -timeframe,DAI,USDT,BUSD,USDC -2022-08-08,696549.068261015,6883865.44947931,,60100842.9594408 -2022-08-07,55478227.0129458,142436767.74422,,391540772.566818 -2022-08-06,921149847.244623,234519469.130976,,2092821123.01755 -2022-08-05,1295899973.512,659450660.951105,,3255484885.3575 -2022-08-04,7709800798.75701,2547802927.26371,,9358731330.11925 -2022-08-03,11012564986.4206,2767309767.73299,,12443706934.9529 -2022-08-02,12811759128.9201,3016713400.96395,,15487985470.7385 -2022-08-01,8823228328.3265,3468668913.695,,15670761717.5337 -2022-07-31,3039224195.19408,1436666560.11098,,7970185422.99008 -2022-07-30,3218039634.22373,1769738140.45459,,8195611210.94511 -2022-07-29,10575816270.1378,3205585054.06391,,14973362401.8052 -2022-07-28,5536447093.80861,3981715344.23448,,13953930153.851 -2022-07-27,4490236804.71598,3619419502.19643,,12397757851.5011 -2022-07-26,3244173561.19432,3797482287.98411,,10143878333.8585 -2022-07-25,3113569214.52379,3361635360.53148,,13147446117.0178 -2022-07-24,3579767475.67209,1456223853.00139,,7547498794.7169 -2022-07-23,12807432327.2269,1813132393.89947,,11511115564.9638 -2022-07-22,5072528779.04504,3871243165.94748,643641564.095963,12417203085.8068 -2022-07-21,5160686207.445,3813592261.22715,629157800.88735,13441864275.8206 -2022-07-20,9717683256.14005,4002955570.27921,1159049726.29704,20700537880.2768 -2022-07-19,5028402602.2445,4520514344.82047,525139593.840689,11045993696.4138 -2022-07-18,3227854510.94078,3994251360.96276,1193617649.52338,14178611224.0926 -2022-07-17,3436900479.50879,1790283787.53514,119986173.042141,6546987180.27934 -2022-07-16,1367635576.61295,2310931520.4203,128367792.999903,6367839361.06222 -2022-07-15,6758703321.83494,3610116334.14735,1322948962.52974,12618815344.6228 -2022-07-14,3006422823.36289,3289585590.31125,779665624.965346,10067727046.0183 -2022-07-13,3828489501.89532,3441423598.11136,585989943.665163,11334267570.4135 -2022-07-12,5083016900.78775,3363215320.57461,650768267.552713,12083259728.2855 -2022-07-11,6179304657.16556,2702712865.24188,1190443390.04913,13832735855.4197 -2022-07-10,5817102886.20893,1562671635.16181,109718345.216767,9233911113.98243 -2022-07-09,6029183188.82781,1326079808.0162,374827662.435708,9289241423.42353 -2022-07-08,3140674637.60343,3051410272.97657,488023520.430931,12457455624.8892 -2022-07-07,4196965354.71779,3706753832.68082,324274105.762342,11660826607.961 -2022-07-06,1374097270.63586,3655739645.55223,881835035.181127,10471313891.7528 -2022-07-05,6605457225.24037,3649182338.60526,280777216.940619,12458441996.9406 -2022-07-04,707168953.473921,417674810.939526,,1952817046.31055 -2022-07-03,,,, -2022-07-02,,,, -2022-07-01,,,, -2022-06-30,1943331295.8726,3160748166.19171,407483541.586193,6335179865.76898 -2022-06-29,4276192947.74726,4908104803.16038,847482758.154662,11858825915.6453 -2022-06-28,3094460678.8048,4319204111.34131,369289925.144288,9236689759.39326 -2022-06-27,2103560037.04045,3491502036.9742,385540443.629008,9154390420.15228 -2022-06-26,2300567584.85319,1658959798.85294,38228888.6321954,4558202076.37419 -2022-06-25,593867740.448034,1813989631.79779,291656865.566147,4207203361.2455 -2022-06-24,4753161601.29779,4888195572.23085,826853256.79178,12650816377.4945 -2022-06-23,4246939693.59827,4446188209.6336,1121077566.22768,11953930556.8142 -2022-06-22,1794817137.95205,5878056633.08216,1047653504.23131,10566689798.1941 -2022-06-21,3884784399.50408,6014500754.79117,1998316474.46779,11486733320.4321 -2022-06-20,3566123655.85468,9846691038.94227,764161484.90086,14865437109.5512 -2022-06-19,5380981503.61972,4379789876.43933,1260765933.08897,13975674101.2024 -2022-06-18,13376842600.1513,5670229681.70557,1192438003.23676,20488876955.6774 -2022-06-17,6119178680.5633,7059320543.84916,1769980045.58102,16986451274.163 -2022-06-16,4133408366.55031,8483863946.17641,1565833008.75848,15232973574.3018 -2022-06-15,5971959435.91127,11165023314.4898,3664459045.0298,29901401007.063 -2022-06-14,6693921646.50561,13525502740.3682,2370233945.35995,25343802071.893 -2022-06-13,10018934996.8789,14023446633.2144,3074027418.54999,38795371326.3182 -2022-06-12,5800205671.51764,3147880373.35771,577674536.796713,11497726609.6843 -2022-06-11,3140008691.54716,2742285603.01457,521527298.979933,7758183839.01235 -2022-06-10,1973815746.69573,3461369655.63198,555330021.662104,9175067520.95453 -2022-06-09,1554053061.57067,3235744595.77186,688149004.368769,8748831367.42219 -2022-06-08,211816480.688644,400378203.61287,117945520.303798,1101517682.65645 -2022-06-07,1435072648.64027,3364232565.74628,945013956.772079,4519970357.01152 -2022-06-06,1338719658.99798,3922670451.07235,971516282.030056,8918231579.47426 -2022-06-01,888148054.649171,2959197893.48107,545887687.526495,3542252698.90311 -2022-05-31,2298533560.31296,4848497906.55551,1231867687.11145,9587333779.70882 -2022-05-30,2521317115.21217,4214301821.01666,270984650.133637,13164808120.1363 -2022-05-29,257060342.660975,1201238699.99477,405770044.214284,2956031197.90368 -2022-05-28,1540246253.43324,1649405746.88301,438215981.232171,5453519789.57636 -2022-05-27,2647426053.33231,4768781363.59888,1251863348.37132,12972962474.9062 -2022-05-26,3286814237.67256,4611309937.39176,1483163809.99215,13245924414.7761 -2022-05-25,2140083455.9664,3470931834.13929,763992787.675034,12000434302.2047 -2022-05-24,2447041956.34332,3550709622.57756,217477762.768763,12443108065.9403 -2022-05-23,1649148702.77621,4283492288.381,805261360.917192,15588160816.5909 -2022-05-22,474181769.218894,1642768175.9701,671207937.177331,4845608919.26185 -2022-05-21,2454371668.60647,2260537568.71962,106308160.275547,6353393376.90221 -2022-05-20,5153129183.34468,5497383684.93384,137623152.047554,15106230879.8623 -2022-05-19,3070875419.24793,5327644193.47946,1505207636.04842,15638581862.0495 -2022-05-18,1111568627.736,4932217657.13416,939217729.15354,13225891112.849 -2022-05-17,212595621.370361,2581842869.75419,619376321.805174,2823479166.24682 -2022-05-16,1796681804.70777,6552907795.22871,2172199434.90015,16963268300.8597 -2022-05-15,3350184438.35331,2562112623.86598,297227817.867724,7854442349.34194 -2022-05-14,2059634281.54843,5426201756.56766,1593359718.50934,9108139399.06968 -2022-05-13,3137006905.76305,15156952655.2297,3868227850.34876,22929125962.172 -2022-05-12,10380621707.8624,33074227409.5953,4381966221.15216,43313952766.4695 -2022-05-11,8425296578.94272,21653846507.8059,4220754350.45912,31754652067.1365 -2022-05-10,3152253623.27522,13174824159.035,1190967797.04976,19959647510.2447 -2022-05-09,7157020478.40014,11289794813.6343,362052159.227394,24392870887.7522 -2022-05-08,6188328452.3321,6374559840.30725,811524488.514459,13240337983.1733 -2022-05-07,2018241548.70062,4268839439.25356,5114198279.3733,7194891783.2165 -2022-05-06,2933993127.07536,5995456155.59712,7181894166.98528,11144837420.3437 -2022-05-05,1766419730.08363,5474314671.37787,1164557696.86172,10554878076.9091 -2022-05-04,1654960398.23165,4493247009.16862,256188701.817401,10315094180.0796 -2022-05-03,269117.924174702,1843388.15213565,7840.100081066,5095231.11649359 -2022-05-02,12345.835604028,734000.305790821,543.611518765,1339773.69391452 -2022-05-01,,738387.788112833,,1079891.90458082 -2022-04-30,2297287288.84115,1879231670.87253,266311362.852483,5550110741.15987 -2022-04-29,1425065442.83286,4412693479.19355,1638809702.11955,8480560331.17216 -2022-04-28,1832128920.3195,5168160421.92276,437795129.967195,9319454399.88714 -2022-04-27,1083136121.84367,4078118848.8177,471442187.528315,6755003502.26006 -2022-04-26,1730157012.66095,5147119909.73921,686493198.107569,9177718246.98773 -2022-04-25,1502716188.65882,6307029359.92487,1101370208.3563,10776100473.9138 -2022-04-24,504983851.364299,2614028927.40107,272126922.702619,2704804459.50499 -2022-04-23,732531331.16035,2287189608.92392,53865126.017983,2594419040.73229 -2022-04-22,1271614733.44788,4983570476.04154,1920233889.34913,7222304459.91232 -2022-04-21,1061828735.60931,4988965011.16136,660363259.449558,7806652158.75309 -2022-04-20,1260064818.1416,4968883359.16947,1226787768.58256,10864462432.5095 -2022-04-19,699147895.495671,4182871249.45185,543627511.054257,7451118249.33172 -2022-04-18,,,,247474.972244322 -2022-04-17,2525384439.42036,2256571970.70283,9127718.11056824,5773794938.91803 -2022-04-16,446980068.369895,1805676410.34198,45331980.5027842,2503640930.25771 -2022-04-15,756773208.811889,3560115546.62495,171871440.316572,5557393360.56746 -2022-04-14,1323064919.54724,4029984871.72464,554592135.14439,7970572046.91305 -2022-04-13,1093087106.92093,4453802245.02984,887125136.67463,9515267387.48911 -2022-04-12,919100771.423777,5636647365.21301,1005343002.30889,9841270039.01335 -2022-04-11,2330779030.62203,6447003974.38265,701580193.773654,13145284071.7204 -2022-04-10,494380136.836548,2159928892.65247,268486868.532888,3061980829.98823 -2022-04-09,1485391618.05424,2298570633.45637,975418025.038012,3742089428.62799 -2022-04-08,1458342053.64275,4944539736.40174,332723847.751848,9646964191.82418 -2022-04-07,2186054541.98661,4407107743.86765,512462880.969004,8337803230.06056 -2022-04-06,2242227426.2128,7110724912.40087,866909860.814656,10350191234.7265 -2022-04-05,776395720.056537,4227360102.1638,798670747.153973,8757186760.97851 -2022-04-04,657482760.326543,3940632908.66443,301044103.693711,10268131401.4625 -2022-04-03,794959386.750565,1999469241.15043,208415588.538409,3262752151.76399 -2022-04-02,1253099707.72246,3006915436.24096,264936007.87314,5008468782.99416 -2022-04-01,1183454016.06363,5101736237.8389,1282538578.88821,9121705348.1619 -2022-03-31,2041533201.23621,5483419085.36223,430428728.536005,9537733672.9404 -2022-03-30,1209561384.73793,5324918126.13003,380605879.799079,9838326795.60175 -2022-03-29,2780699059.3809,5520691093.85118,252952005.32329,13105109704.0727 -2022-03-28,3185929977.55501,5800714919.86182,534833567.217266,11419532251.9388 -2022-03-27,893219593.88714,2649369308.30323,150762317.429929,3675967991.67686 -2022-03-26,975398939.265387,3415320365.35633,107407250.911986,4247804207.17423 -2022-03-25,2196399673.65963,7096510054.00182,945080242.938084,16945813154.3133 -2022-03-24,1714469575.53544,7786460758.26989,392734498.481742,10208039788.3524 -2022-03-23,1009173224.68805,5797161255.23752,371638197.958114,8834596016.01829 -2022-03-22,1604359744.23523,5171347560.80018,347076232.31309,11109120696.6518 -2022-03-21,1313543517.5575,4222215302.24796,344959437.414191,8952500779.20518 -2022-03-20,982488028.387372,2963725371.4261,132990038.427497,4644204689.56119 -2022-03-19,824714193.195814,3896795728.83525,369298420.720443,4860532803.91548 -2022-03-18,941097284.810001,5317622439.52913,530640664.506847,7691783239.02078 -2022-03-17,1951278573.23,4850513208.40084,551466668.800974,8586747106.57608 -2022-03-16,839024639.388055,4327282649.00866,655608883.517386,7176136174.89306 -2022-03-15,774452601.582944,4064564564.81502,452979024.690389,6013732188.05423 -2022-03-14,1118002682.73903,4833263247.5189,265338170.847161,9869477603.58913 -2022-03-13,658595260.035506,3302510031.04919,38414657.7728439,4183631568.6218 -2022-03-12,617331623.161178,2922575217.82031,292361099.592461,3785289402.59484 -2022-03-11,1011170499.14037,4806856244.7615,420352449.124927,8654437713.93054 -2022-03-10,776029363.026199,5291280973.51463,581434066.256173,8171944329.18353 -2022-03-09,949912383.783688,4110422035.10851,1306946061.96168,8199541168.54771 -2022-03-08,1416644372.45681,5662608895.66869,820957088.98157,10234033608.4291 -2022-03-07,1441997394.44318,5390417951.50365,2131759463.0168,10055406909.7088 -2022-03-06,1525258047.43718,3136431764.4943,1252469981.9229,5406646400.47898 -2022-03-05,3385809396.22287,2738038826.69268,86741755.52311,4366841872.57058 -2022-03-04,2267224268.11517,6226338862.2743,1179926721.35147,12095418010.828 -2022-03-03,1242209506.75247,6646867476.48019,712637499.146776,8779584166.28788 -2022-03-02,1830024211.48,5125372801.00284,1747455448.26715,10662402262.1459 -2022-03-01,1498339650.00006,7340903278.92353,563878255.12322,11165178417.5234 -2022-02-28,883978298.956209,7457031553.5785,1188636636.1285,7356978307.92457 -2022-02-27,577995815.161149,2803276640.50604,80412220.4439756,5337027341.10388 -2022-02-26,897693047.974731,2649592852.16859,92827570.5432283,4012825831.21491 -2022-02-25,2347908627.03195,6088954264.64337,2071308553.66297,11202301030.282 -2022-02-24,5999057860.36481,9286139266.19335,1824772931.84852,15116075447.2569 -2022-02-23,1028942021.47663,3819523650.36269,714049407.047257,6618646836.43473 -2022-02-22,1007152423.96478,6232871041.75661,987681840.543408,6587153662.44109 -2022-02-21,5799628217.33986,4834181499.87164,162602623.897236,8529056960.74527 -2022-02-20,1851868626.62865,2708079745.82876,186223128.017507,4581071768.57085 -2022-02-19,1213472147.4464,2309959713.19159,403355926.396557,3541931043.03986 -2022-02-18,1059384693.82179,5281039306.28912,1926050019.87344,6551727024.51967 -2022-02-17,1585283385.65774,4792696256.97161,918925130.158167,7874297385.62819 -2022-02-16,1289530609.20884,4506257642.77722,677032719.849259,5926819598.9408 -2022-02-15,1336363500.05729,4604377014.45188,991308429.223694,6525512252.3959 -2022-02-14,907690378.496442,4794608198.58783,361544535.739274,5692921839.47896 -2022-02-13,262367586.625162,2005443204.71265,23709153.6299159,2818628598.51361 -2022-02-12,839816606.417976,2789001049.025,697360867.570067,4298111633.74082 -2022-02-11,1730338300.77367,5339998860.46147,1755337443.63247,8428830077.68777 -2022-02-10,2056134933.66019,5571772730.40293,906125349.334113,8279997790.66682 -2022-02-09,811964733.303901,5316485660.37998,1400794834.39801,6696892518.38427 -2022-02-08,1324708356.40283,5569192125.99831,1845163403.58322,6520027585.5525 -2022-02-07,1442340545.8801,5814387507.20965,933171978.880003,8819268267.77265 -2022-02-06,775439669.294986,2035891840.33818,1688421536.87848,3578435445.37817 -2022-02-05,1109348869.92294,3201417644.68224,401404392.717797,5408170588.14839 -2022-02-04,874151128.976837,4299253599.72676,1080538633.41425,7007744584.87233 -2022-02-03,1077422699.17617,4334707884.03263,1470279437.24283,8029864416.1599 -2022-02-02,1911343294.54559,3509714999.79701,1117247493.16284,7260424317.7277 -2022-02-01,3311589265.14221,3507072438.75676,1836929542.58139,7756567339.42388 -2022-01-31,1223427509.49714,2461736879.92775,384262211.82383,3844603921.04435 -2022-01-30,1366175835.43257,3074019513.32745,218410399.086163,4221211356.74585 -2022-01-29,1601586119.87427,5250024145.23691,276910753.428953,6509061520.28036 -2022-01-28,4233083100.06128,11886069414.9858,2007045931.3014,15454033014.6702 -2022-01-27,3342705611.12887,8981581734.90539,1172791257.19952,11977455874.7442 -2022-01-26,2008843744.8935,6990838615.41941,1273280609.05598,11374228146.6445 -2022-01-25,2420251285.57853,6614269725.38099,705822107.172759,9334508090.23838 -2022-01-24,4124686672.31619,9373966317.14864,2362639166.00378,13855733788.0132 -2022-01-23,1184062707.98453,4760584574.9774,1263713468.48308,6522726897.20582 -2022-01-22,8082698021.01535,16379170734.4037,1130659149.82741,15937761228.191 -2022-01-21,6197204719.46752,8636070785.96914,1647618578.42518,18170843347.6328 -2022-01-20,1647072461.2352,6020502522.49607,1084544689.05451,8227730004.92812 -2022-01-19,1252365335.38158,5608842172.14709,775783847.153321,6821787944.99068 -2022-01-18,826247471.677817,5485515094.84823,577542789.832961,7231057952.5223 -2022-01-17,1388748418.05264,4524768232.95435,1160424731.84981,4676597476.70682 -2022-01-16,824511068.081144,2775300900.42247,82265161.1975697,3414934957.10682 -2022-01-15,976106787.906216,2885300002.03772,469651568.153699,3294998384.07307 -2022-01-14,2424339381.77256,4906848810.70173,684634026.535567,5684306678.01546 -2022-01-13,639453195.689038,4332752341.76715,322555202.315328,5842110670.42403 -2022-01-12,892045568.414802,6167630869.3242,487322457.999294,6697319755.80447 -2022-01-11,1056676048.61738,5620376772.21142,236192325.892109,5408054335.66305 -2022-01-10,1834782733.54601,5695817664.70711,384602589.492454,7937149173.9772 -2022-01-09,623569807.444202,3004179652.12067,780729905.900621,4477297398.5248 -2022-01-08,1374379394.75475,3620017259.08317,521441316.196113,5718286997.89884 -2022-01-07,2305795865.85812,10666594283.9532,940251247.150867,9639955144.04818 -2022-01-06,2088020555.25947,7870613173.07686,758308795.965044,8631037899.17863 -2022-01-05,1552440578.25139,7388018874.63421,1786789113.3403,8235313252.62371 -2022-01-04,1071335781.90278,5816327965.77174,1706203147.22099,6615407475.64949 -2022-01-03,711335694.380754,4732588106.32982,483094851.851051,4843149507.24098 -2022-01-02,1693101468.83744,3235590269.16563,306161156.092777,3118169693.43783 -2022-01-01,2064625236.46146,3827393327.63698,271114736.677353,8499235253.95334 -2021-12-31,2622829038.7964,5410208847.54358,1374776972.00226,8380671206.93344 -2021-12-30,7643748261.90107,7911540571.63773,733247893.887632,5970964801.78717 -2021-12-29,14248808194.2524,8744923096.38935,1706271184.72741,7180347377.67822 -2021-12-28,18591133538.0301,7084805627.05361,972658720.540426,7069697323.1318 -2021-12-27,8282922998.50193,5469192782.89576,628461036.314241,5426145704.99443 -2021-12-26,8562255017.5826,4163503232.68208,299992221.835625,3505548308.97337 -2021-12-25,2486520652.18038,4024461887.1005,934539616.792877,4766988315.01832 -2021-12-24,6499614904.42077,7977028672.22039,744316628.545004,7665671167.35802 -2021-12-23,21240810158.2149,9534402786.85765,622573783.400751,7954372446.29784 -2021-12-22,18673391781.0352,6772027649.09396,1066936750.87296,8335101541.9538 -2021-12-21,16284404238.6331,6017050132.55236,958361802.12612,8225286209.86266 -2021-12-20,11525822166.4095,6753882788.74133,1235247443.088,7103917209.76178 -2021-12-19,16016728315.4321,3304128497.35365,1545197938.52241,4885633599.13049 -2021-12-18,13943523692.6574,4092094462.36238,162144272.819658,6027710197.97488 -2021-12-17,24561106271.1019,5518157353.52649,1945816076.94263,8116695011.69308 -2021-12-16,16691550151.8463,7257937769.69625,1131333407.16399,8104676150.82448 -2021-12-15,24127435008.5916,7078678718.41478,920537311.018007,9612938808.00617 -2021-12-14,8463753394.23345,6161815063.69662,926023682.983387,7759529398.38571 -2021-12-13,39108110080.5329,7148006122.69172,643190234.129226,8944891636.47055 -2021-12-12,3580957879.84041,3225588359.30744,481912031.902114,4275827864.66957 -2021-12-11,11220578573.5706,3588241205.16729,407689875.840604,7079935813.66577 -2021-12-10,24489844038.5915,10375573332.5131,1562587179.53559,9569320030.73991 -2021-12-09,11192817341.0104,10889505223.4856,857748679.076964,8974724851.83023 -2021-12-08,9140631115.79411,6474345880.43993,1367384252.66395,7130719024.53687 -2021-12-07,6500826337.94671,7870847845.3267,1627549089.91082,7541939545.64719 -2021-12-06,9855565078.31874,11569275689.2187,4001062346.26661,12178867527.7093 -2021-12-05,1561510739.45309,6423204229.94424,1007616735.57657,9783651100.19811 -2021-12-04,5721891704.2736,13428977763.8095,1567846736.7747,14853780842.0171 -2021-12-03,1663363404.72675,8253509089.53377,1869267773.73425,8817139730.21949 -2021-12-02,1463618860.75532,8952853200.74415,1165556346.46115,7517328272.16139 -2021-12-01,1611312733.42124,9245033427.48347,1217192494.79788,7710214734.49977 -2021-11-30,1428631501.57531,10073059480.9198,2978951089.95691,9954105983.76776 -2021-11-29,1084722279.15998,5761966664.57151,1036908285.42466,6810703040.99944 -2021-11-28,3503921471.10068,4195097275.41338,646153283.486517,5097268613.43394 -2021-11-27,940030907.018831,4137936304.87196,528524535.172914,5224003624.83418 -2021-11-26,3592130921.95384,8571185936.05124,1359389002.83161,10885406626.0251 -2021-11-25,1437696045.95757,7060085922.82059,640264407.182259,6510954226.67345 -2021-11-24,1230660811.73408,7380848994.07616,834443908.062377,9200089800.04704 -2021-11-23,1587039110.12495,6590774731.01438,2518960125.8051,7609750724.0803 -2021-11-22,2049400759.41127,9000164529.96667,1291957234.60057,9197973533.78178 -2021-11-21,1722603765.41912,5221519001.95317,2090876141.5552,4981953674.7722 -2021-11-20,4597440686.02264,3830214914.21817,633998054.667352,6860092261.67561 -2021-11-19,1793898819.8447,6982470462.38052,2499334671.28648,9428338154.05625 -2021-11-18,3463930296.37064,8386037060.67099,1347638580.12242,12040452605.3755 -2021-11-17,3076376592.50062,8806606105.46844,2047216523.84092,8130648388.90892 -2021-11-16,2773695527.86625,10136333628.5685,1138655550.07759,11706107362.7211 -2021-11-15,2606637391.78781,7251571700.74001,871500008.174801,7699148510.51636 -2021-11-14,1485807386.61687,3465562789.33849,440362584.954425,4219247067.5226 -2021-11-13,1077166383.57652,4449203447.36717,736720811.357436,5412203417.90204 -2021-11-12,1963782055.33326,8420256805.96551,1699667427.99891,10182939449.7088 -2021-11-11,2023869262.34353,6277913935.10233,1299221355.99193,7823529204.68095 -2021-11-10,2834349277.8481,8482920265.37794,1636144111.2293,10490910506.1739 -2021-11-09,1917677080.38991,15099704265.4807,2378151863.02354,7912338034.98751 -2021-11-08,2615981811.52202,10332275281.7979,2560379855.79395,8676333965.07962 -2021-11-07,2104281402.85984,4383937069.79282,651752027.925388,4031717259.183 -2021-11-06,934501906.722915,4716982608.34576,1679463414.97037,4514573773.51104 -2021-11-05,2911330595.64593,8482693181.0652,615486490.937985,6281098836.3795 -2021-11-04,3677797110.61158,10811222147.8808,1927959219.41668,8319116556.08652 -2021-11-03,2793773704.1579,6969928518.96325,620225977.326198,7305802415.52228 -2021-11-02,1665216986.11274,7251552587.88829,3116868666.31115,8457690652.16107 -2021-11-01,1600374343.51066,7644717632.73768,2399518968.27762,7414535804.23788 -2021-10-31,2230442658.77027,4891364031.14979,1252172724.2381,4683665348.28523 -2021-10-30,2794305899.31901,5607149320.88696,1236433111.25193,8944460647.70995 -2021-10-29,2970563557.53894,11827080496.054,2386140622.24291,13745650551.4684 -2021-10-28,5521142497.08641,9520143678.00076,1510752597.82019,9978347079.32533 -2021-10-27,5266890661.72085,10060040846.779,1373816767.21362,8625958618.11682 -2021-10-26,9100405632.58685,7606670936.8543,794004828.241502,5964289628.08707 -2021-10-25,1450537764.27327,6849431181.41415,1079865850.93635,7118940353.92225 -2021-10-24,778075239.980223,4013503783.44765,489366688.111539,3600061587.71532 -2021-10-23,2125555706.7039,3648706633.56919,217537125.172155,3919571175.04865 -2021-10-22,1494015606.34848,7888448520.73596,1093398632.96643,6904258727.62909 -2021-10-21,2959274404.2811,9548609500.01974,2193441838.9735,10920828389.3929 -2021-10-20,2002331445.05039,8621208695.92862,1665151400.27,7373918627.36503 -2021-10-19,1230409584.62971,6500862218.64478,1033015876.52302,7012580039.51362 -2021-10-18,1053055474.42237,6459877023.35071,2425786816.87573,9204128238.92776 -2021-10-17,743916837.31409,3048853114.1994,367599171.987934,3345996590.07026 -2021-10-16,1528520539.38665,5416818362.30991,473684927.937401,5264783228.6909 -2021-10-15,2782434982.14082,8781111937.16252,1450989244.74147,8155437910.55764 -2021-10-14,1902785038.88365,7199943905.35057,1432110803.32222,6392281933.80967 -2021-10-13,3140575937.46246,6636869662.80349,1277957670.43674,9504140955.00377 -2021-10-12,1527948326.35463,7041191684.60693,1087603736.58001,6683962526.17029 -2021-10-11,1109324674.30092,7270408904.82258,630260275.089657,5485904032.51103 -2021-10-10,703630210.062448,3361025005.21128,840609155.628083,3763007704.70741 -2021-10-09,1010019493.49153,4425303048.26771,157184258.88934,3352140626.61961 -2021-10-08,1643478546.33012,7344364312.56255,928003412.166837,6835908497.96258 -2021-10-07,1212093312.87467,8262929332.03152,1372882007.81141,7753769000.19337 -2021-10-06,2572448977.21456,5769574903.40288,1756401866.02937,7125205968.22143 -2021-10-05,1076830825.469,6246223030.24547,457665210.881204,6315324576.60224 -2021-10-04,1242268857.41582,5362121766.16688,558101086.17893,6926358401.6015 -2021-10-03,729259960.646573,3165423645.16434,767286050.765993,4372474470.61927 -2021-10-02,629556529.21861,3918711912.65363,520387577.907148,4466524090.53417 -2021-10-01,1210244217.04561,6484480565.73397,864125800.403659,6735760939.54032 -2021-09-30,5706317953.62322,7375893887.37362,3250975607.69568,10100977983.2464 -2021-09-29,1027943328.06461,5445203741.95125,2323851818.38623,6810925376.90076 -2021-09-28,1029742582.93034,5692138019.75087,716634241.323011,7671294937.14746 -2021-09-27,2349873545.63009,7104154737.50892,1608826566.61765,11592044863.5462 -2021-09-26,848743779.969482,6470410200.31705,610171686.678789,5852497767.89491 -2021-09-25,671559910.626824,4175729554.3068,713389408.567562,4637320304.1739 -2021-09-24,1377105421.77932,8825623131.14134,330731975.894491,8096157269.42887 -2021-09-23,718211544.688131,7903242996.30975,75778627.4059893,5708069825.43339 -2021-09-22,2590637432.4516,6094739626.47435,357334013.382926,7308617178.41108 -2021-09-21,1608698838.76512,6818595170.70937,417353167.681837,9178784688.16273 -2021-09-20,3149102452.85511,8668458276.18677,1511746533.58857,9586792345.11209 -2021-09-19,437831322.459047,3326738020.77576,264147920.358027,2831626989.27651 -2021-09-18,566040259.219058,3443086180.80748,461642074.114907,2796823727.59429 -2021-09-17,754588909.578278,6385298616.5235,136968304.6908,5227252074.27969 -2021-09-16,894372962.377979,6322050081.59012,23717585.6987953,6575652568.63873 -2021-09-15,632157338.317045,5173275218.03389,1033140534.64289,4228016000.22972 -2021-09-14,726318413.947188,5276376755.07229,1290426369.91627,6916415314.96191 -2021-09-13,743837934.677886,6224826706.96919,1318902678.08474,6601229686.09593 -2021-09-12,478972957.219227,3358647640.50286,390509413.239199,3884262693.77366 -2021-09-11,1325623391.48124,3726783462.05806,179529074.362325,3285864080.94258 -2021-09-10,716107352.248007,6260178349.91933,1221610839.01252,7972443453.0617 -2021-09-09,583812050.046899,7521455561.41027,1379261113.59202,6217199277.33506 -2021-09-08,1302855587.17308,9568663905.88809,2393469031.36202,9710436592.54264 -2021-09-07,2032085702.2778,10494389324.3566,1860002163.99685,11864719305.4386 -2021-09-06,1179198090.10214,5896212366.45875,458518797.613576,5724705195.46833 -2021-09-05,686071883.792136,4038492919.87138,559840464.952254,3273141855.76778 -2021-09-04,733347985.70466,4025819350.65679,374257049.892911,3408125248.37688 -2021-09-03,1362280688.8959,8029815500.36917,609751787.036833,8773754975.82835 -2021-09-02,3538675125.24583,8678733013.211,777962764.994889,8747934430.01378 -2021-09-01,1236584779.41435,7503643157.30447,1659386525.31887,6715161274.40892 -2021-08-31,1017858218.93667,7538143110.8682,728591976.499734,7697894190.4378 -2021-08-30,765338780.608937,5933309201.63319,599841160.475655,5724430431.31379 -2021-08-29,611169247.125728,3860885141.67967,456912781.588571,3367708747.52647 -2021-08-28,495114875.594445,3286135108.17699,377744592.830853,2984682719.12305 -2021-08-27,824901884.96498,5847594531.22715,924272614.95901,5087933763.39915 -2021-08-26,823586099.28412,5954554947.53225,642438507.192619,5756930651.55469 -2021-08-25,854797951.410304,7716993940.93909,892580493.257672,6175542517.42457 -2021-08-24,1552694242.29095,17305406432.6781,1004260573.48498,5819173236.64359 -2021-08-23,1565522375.43873,8443029796.37711,896258757.543633,6261398424.49783 -2021-08-22,990632831.780256,4275020534.97821,1086987751.17172,4945132742.15307 -2021-08-21,881488333.540672,4728255594.31935,743212166.712212,4184626325.99146 -2021-08-20,1088545951.23406,9050235060.33999,1524595323.48083,8158741576.82278 -2021-08-19,1114545175.4354,6927626126.85137,1227978159.31751,7230194897.66985 -2021-08-18,1082349671.76621,7160580061.92269,1173295567.08682,7486140890.07537 -2021-08-17,1023471172.63891,7431312143.83049,1119770655.69584,6586201233.17791 -2021-08-16,1328228373.30465,8705865328.23661,1214340944.38776,5479094518.94275 -2021-08-15,644556567.537538,3723529124.9703,480410052.348448,3545412121.46008 -2021-08-14,932887178.866043,4971397959.52991,600244694.100314,3761391742.23466 -2021-08-13,797494220.228547,6977498193.14579,353044425.280766,6060075961.9396 -2021-08-12,2763145094.57072,6778162056.08898,1018843640.85338,6320929214.19146 -2021-08-11,909238114.030849,8053934015.48831,930543988.0234,5939554026.0355 -2021-08-10,1668910364.03694,6603829367.56996,782442216.36491,6461699590.72003 -2021-08-09,1764379331.3446,7845622909.45938,1644114190.99532,8399363738.12868 -2021-08-08,1263187090.10765,4413759585.02443,1214048214.50088,4668274159.09736 -2021-08-07,1164985171.25395,5421194390.46475,612886405.996758,6275685086.53528 -2021-08-06,968874077.259057,4130200528.07798,777427124.22461,4676096048.85322 -2021-08-05,1087579356.42449,7001338270.98389,323226276.668267,5004811972.99232 -2021-08-04,1037405886.23596,4027180664.27661,191035592.448372,4780825077.55706 -2021-08-03,1798531730.99366,4583398088.23083,343003105.541401,4954841639.52824 -2021-08-02,942462501.715839,5603541908.61822,832681357.487549,5441463568.43664 -2021-08-01,1161042390.82975,4723626836.09067,373405997.953738,4535576190.02763 -2021-07-31,2239778169.0371,4527630458.71187,455571492.75234,4148312204.53798 -2021-07-30,1043621937.71512,6065261719.21522,1018174696.09966,5538652504.01732 -2021-07-29,4810906902.93065,6153221592.19366,373223873.6529,5063777958.00561 -2021-07-28,3457924457.92027,6954277487.37716,962773397.449272,6478417305.13673 -2021-07-27,1171778056.7112,6075291403.80325,1943070515.1677,8525124964.54734 -2021-07-26,1658159277.81795,9778875382.49198,2091732428.04674,10496188082.6184 -2021-07-25,790704234.703682,3322120434.17589,738536674.910923,3854248603.46303 -2021-07-24,1675641179.23909,3959032296.8012,1417738490.88122,4277610256.32168 -2021-07-23,982354211.139159,4222423637.9647,917877891.53428,5407255202.86856 -2021-07-22,990841388.622983,5301567451.3339,682232056.296265,4834022015.91307 -2021-07-21,1152582047.21232,6039581542.38708,962431905.799981,7354880746.14719 -2021-07-20,2268655101.00458,5700012271.17896,719301322.522296,8052542362.59387 -2021-07-19,1043628836.71783,5305903478.94944,1433825381.14395,6679505895.80927 -2021-07-18,666623030.573861,2969617990.39194,288890541.63558,3650202389.71545 -2021-07-17,633412640.873535,3366543036.73154,329852372.604561,3969113451.89306 -2021-07-16,1714331829.42058,4317314807.13061,712836695.488135,7057475006.36775 -2021-07-15,1921174084.26366,5746977816.90301,6659327419.90642,9328023281.78495 -2021-07-14,1162383505.2457,5903857793.20293,1818636720.01345,6180969774.43362 -2021-07-13,1412483466.32572,7682803752.37025,1656290552.487,6851559098.85031 -2021-07-12,2505238268.88524,7173677956.57179,1010255598.82269,6830379738.44961 -2021-07-11,864638997.121625,2893216660.3361,137336383.427566,2666904092.14031 -2021-07-10,992590574.239854,3137451374.67079,222609176.221038,4626634392.61712 -2021-07-09,875170926.176999,5649094289.93897,727832355.940957,6818217893.70048 -2021-07-08,806539918.97947,6306128255.0944,732622026.296161,6523255433.15513 -2021-07-07,1870682770.46876,7230478114.44637,995778828.772256,5007126570.08426 -2021-07-06,1940251519.60841,5858309950.51541,579177432.180925,5753856891.23642 -2021-07-05,3282110784.23807,5304640948.82059,268262413.727426,4999428176.15581 -2021-07-04,1683060405.73802,3437070767.88212,357289623.32432,4260206222.6127 -2021-07-03,1033098740.65951,3617781061.28514,294622223.968039,3468530382.32728 -2021-07-02,1179530671.16061,5634129735.00685,1897159769.48632,5564934848.32082 -2021-07-01,1141951453.02971,6575667406.49111,1927926907.62107,6216454373.50742 -2021-06-30,3296681250.67054,6386414634.38232,491379752.144896,7886978456.7775 -2021-06-29,4074624791.1461,7242354153.73671,744104614.528604,10236172577.3112 -2021-06-28,1154288707.36494,7462151165.1123,1471576796.58167,11596274626.9202 -2021-06-27,932936338.795849,3520559992.67485,1021246796.60176,4284902632.06328 -2021-06-26,822192238.221211,3871498633.00369,790425078.182101,4199347372.11959 -2021-06-25,988833982.486823,5969138833.52926,1214228244.39449,9651013460.38636 -2021-06-24,993311904.726968,8815035527.41997,2996697678.9206,12921934529.9128 -2021-06-23,1535477248.55816,7038400415.84733,3027628268.93806,7333753780.95973 -2021-06-22,7171188206.43349,9473188556.626,2400417293.81005,11141152893.6387 -2021-06-21,5414829196.54965,9984758670.91185,2602976255.60659,13182246521.3784 -2021-06-20,960505929.386651,4200656444.45699,1077873060.74748,3595325053.84228 -2021-06-19,1912025333.62294,3995125982.79971,489072836.687756,4497636130.63846 -2021-06-18,2661869388.91899,6635770608.76908,1105489166.48505,7131448073.72032 -2021-06-17,2591322664.02987,6624525086.44973,1022865975.71887,5892454870.05422 -2021-06-16,1339548296.56228,6324977219.32157,859335189.940647,5987372172.16211 -2021-06-15,2528058865.5923,6947020937.93104,2048107213.49027,5226500931.98259 -2021-06-14,1567897983.1705,5483062366.56714,1149347167.39405,5923615092.98621 -2021-06-13,856084403.465014,3840826307.73955,183084919.444759,3958850698.111 -2021-06-12,1601971165.60043,3943120363.05858,273752107.966708,3971594143.44493 -2021-06-11,2519687188.44559,5917129926.77282,1210119618.82308,6131890572.86736 -2021-06-10,1172309952.21766,6334851162.02655,887677130.68624,4976051506.94376 -2021-06-09,2287687251.31258,6938993562.10332,2188266037.09509,7905712097.69297 -2021-06-08,1879067984.7413,7608200043.59342,1253022491.55276,7999984225.75543 -2021-06-07,1764604918.60303,7526529719.35394,1022792325.74212,6736928236.21726 -2021-06-06,628146790.20218,2695871326.31713,478348607.882189,2311052068.38185 -2021-06-05,1179410522.54275,4410123904.3361,252186190.770584,4141205826.16684 -2021-06-04,1516099318.47947,6725801322.76363,1799731248.37164,6704990008.40008 -2021-06-03,2052466545.99295,6706302424.61085,1175998855.36071,7654315480.58664 -2021-06-02,1679987480.70967,6093515940.16683,1395338519.34517,4702363620.37092 -2021-06-01,1998318243.21999,8504068380.7913,1365922701.29098,5405831892.00522 -2021-05-31,1107674236.88761,13990603553.9982,1333706351.66415,6101649785.97808 -2021-05-30,1370955639.94268,6361149067.68456,965699448.579417,9998658003.9821 -2021-05-29,2885147066.28035,6713908551.65196,1894194183.05817,11669177255.4494 -2021-05-28,1795104222.00813,7294135021.46097,1399847693.27668,8137749936.89341 -2021-05-27,2155302332.53429,8316380155.97756,3489259417.72748,9939637358.84602 -2021-05-26,4137089831.4904,10067444167.6387,1892420773.34177,9956003448.65535 -2021-05-25,3199630225.20924,9644122881.61618,1968618189.53696,9943075166.91402 -2021-05-24,3260184925.11593,10413809858.5463,3257743563.82756,12826744494.5096 -2021-05-23,7764187389.46212,12040410806.4439,1691874987.51982,16573929726.1532 -2021-05-22,1991443507.82015,7748975486.96312,1385871408.20368,11853561037.9348 -2021-05-21,3114880285.12248,12343307225.2772,4390470472.99914,16510513113.1034 -2021-05-20,7962180763.20853,14923584847.9367,4387168877.17955,17465194299.7751 -2021-05-19,10614876919.5996,22630770653.885,3954404722.44727,18820986596.6956 -2021-05-18,1803134921.50585,9398484140.87483,2177306735.59874,8059390609.1599 -2021-05-17,3225095685.43891,14266620778.9796,2647354789.66393,9388345339.33957 -2021-05-16,4930141570.85947,6828034194.66386,642655059.834928,6073166708.2871 -2021-05-15,1599062176.63598,6827920213.42543,735253030.030175,5830190207.11734 -2021-05-14,4084725573.79473,12377489395.5046,3068589133.59472,10404006285.9516 -2021-05-13,4441100455.49558,12845154345.7851,3050533194.43955,11442117884.9078 -2021-05-12,2478710464.68617,9716392089.69627,1783127347.47758,9292311852.27285 -2021-05-11,994012634.945119,9741912530.73543,2709956000.32779,6012371719.07536 -2021-05-10,2085691805.86004,13102947242.1916,2694594330.44349,6224043106.70857 -2021-05-09,2069750179.67996,6414102245.84244,3498823957.12624,4345076629.14035 -2021-05-08,1614218589.81453,7393688392.58686,1110580807.49392,4321971960.06161 -2021-05-07,2797664244.70093,8115895146.96804,2026178746.63249,5701072061.83816 -2021-05-06,3346669850.63558,8775350902.07045,1589380151.94912,7635345329.6438 -2021-05-05,3169592092.99078,8764071970.5569,2534972093.9961,9028893645.3016 -2021-05-04,2501624017.31125,8208851472.48297,2718987433.37931,6772585804.05686 -2021-05-03,3159316988.10425,7530004300.67268,2250883334.92514,8767786999.56267 -2021-05-02,1007276797.14004,3698948365.42004,1419206038.43439,3114985614.43086 -2021-05-01,1965061091.95335,4766604957.14309,1579798134.1954,4388262800.35498 -2021-04-30,1305370271.54616,7183781012.80162,2370572418.80866,5533778971.42965 -2021-04-29,1837920768.76303,7318155651.9557,1505650813.48191,5500392219.36782 -2021-04-28,2211092653.25049,7688088079.69574,2905441518.22442,4953126269.98837 -2021-04-27,1818184287.4073,7557853448.87339,147141592.852612,6247349585.20298 -2021-04-26,2743801236.19044,8976216695.7478,,7193348999.43803 -2021-04-25,1527686128.92083,3770445200.14132,,3100132047.42323 -2021-04-24,980220609.45577,4332506373.02716,,3752626337.04262 -2021-04-23,2666221511.02361,11607731157.8919,,7347227366.70476 -2021-04-22,1917864813.0739,7724107626.05337,,4421527536.31378 -2021-04-21,1973701041.02028,7479532286.4197,,6230858186.70419 -2021-04-20,1249752558.43228,7849209994.79876,,4962981789.70983 -2021-04-19,3505998908.44838,9390914584.66997,,8607404510.12022 -2021-04-18,2129685073.35716,9193836188.16743,,9439230020.34039 -2021-04-17,1514786085.07025,6005250973.52666,,3882201840.98336 -2021-04-16,1531203578.28153,10075167241.8419,,6582201662.08612 -2021-04-15,1754655673.3171,5695837870.3385,,3638083174.03301 -2021-04-14,1417468452.66829,8394391860.24847,,6487127510.08241 -2021-04-13,5620855703.59447,8322838732.64675,,6268045546.35926 -2021-04-12,1098001600.84633,6886336759.64591,,4768522335.61767 -2021-04-11,1278885763.49352,3295045221.51513,,2161220193.01508 -2021-04-10,939335073.947175,4522119664.29918,,2807923531.81344 -2021-04-09,763049692.340572,6931673268.21755,,3946680267.25443 -2021-04-08,1215900405.91603,6280009374.67176,,4321295549.12982 -2021-04-07,899803193.381729,9061687915.30815,,4808120867.77911 -2021-04-06,1561648552.85064,6098162794.55576,,4344370043.38028 -2021-04-05,2198646475.42627,4903562290.00291,,4067039569.81775 -2021-04-04,1737246215.30337,3431524877.38991,,2862846586.63757 -2021-04-03,1157082165.79789,4802862334.7296,,4686305376.06353 -2021-04-02,2353349516.69487,7014187056.07479,,4581403402.90425 -2021-04-01,1153225504.27775,7010168636.24701,,3883306992.92758 -2021-03-31,711142200.314837,6168912945.45178,,5014361588.62522 -2021-03-30,630087496.286026,5702210786.55746,,3606781038.74692 -2021-03-29,1121644351.08366,7262350071.519,,5656399121.25355 -2021-03-28,926006958.144035,3257850991.1779,,2606081184.43639 -2021-03-27,617356577.326792,3715995367.26044,,3900135024.07147 -2021-03-26,710925877.426646,5996235041.93547,,4163446719.63514 -2021-03-25,735305241.42262,6359644737.10426,,3738594045.78748 -2021-03-24,898697415.955741,6180280856.44364,,4138115722.44885 -2021-03-23,860534989.335731,5755241261.68204,,4689154350.76077 -2021-03-22,986745103.735344,5937546959.04865,,4012362870.53869 -2021-03-21,767634104.762926,4700478695.45039,,3077081278.40492 -2021-03-20,639791569.506987,5382975362.27074,,3070878686.28528 -2021-03-19,585410262.844447,5673080313.3023,,4419198498.44749 -2021-03-18,488212501.983629,6115506525.92924,,2476669555.48764 -2021-03-17,875159387.101089,6164292496.14711,,3422565452.76863 -2021-03-16,1123511781.51427,7366993114.50036,,4453863179.63914 -2021-03-15,1032156533.44252,8692654710.49887,,3656213692.38365 -2021-03-14,470272035.000021,4507501119.01769,,2228189863.25127 -2021-03-13,784358707.106473,4545463266.72041,,3683093701.64649 -2021-03-12,1087026497.24642,9271609257.97942,,5496995624.61376 -2021-03-11,948576578.59154,6325920806.50754,,2759193089.26543 -2021-03-10,749415218.782931,7201320373.34958,,4130087254.80774 -2021-03-09,1311740996.80603,8156415823.88339,,3950728962.46415 -2021-03-08,1037483449.87509,8823044514.44297,,5328191594.80659 -2021-03-07,2962805983.52249,6384724551.9317,,4490572121.20127 -2021-03-06,1132688563.18119,4276321241.92839,,2506095440.19493 -2021-03-05,1800188080.73072,5875259697.7049,,4428398658.19038 -2021-03-04,1769983297.73963,5414006195.8318,,3169059664.74763 -2021-03-03,1800193877.21902,5508244355.78261,,3474980018.66522 -2021-03-02,2116506353.61115,6192688755.7908,,3602186901.91906 -2021-03-01,1561707786.50212,6090201187.43751,,4408160747.05617 -2021-02-28,2692916045.61964,4431665221.8653,,3622959175.25561 -2021-02-27,827964098.35054,3349725279.99103,,2283828016.36308 -2021-02-26,1226498126.30676,6035343651.51297,,4513814153.21859 -2021-02-25,1071613446.30321,5858229905.51002,,4745064744.5727 -2021-02-24,1339152288.7562,7271641585.236,,5084199290.79487 -2021-02-23,3118618932.50271,9384094283.68205,,7027965550.29764 -2021-02-22,1423944697.2714,8660422831.08583,,5817133845.68988 -2021-02-21,566502200.111292,4430623094.61135,,2766181300.87434 -2021-02-20,1012434824.24227,5908150293.97118,,3770228022.09259 -2021-02-19,811381403.683768,6233436459.23738,,4816557421.1096 -2021-02-18,924078017.357096,6667091424.46595,,4118753664.06605 -2021-02-17,951245674.560827,6181809537.47404,,4491394866.5015 -2021-02-16,2557352536.98972,4629303023.23125,,3310804608.64887 -2021-02-15,1301707184.78318,5635607778.74594,,3124838209.62022 -2021-02-14,693539940.650414,3613350629.13917,,3001685202.0536 -2021-02-13,661842755.231354,3511324485.63083,,2951844400.77749 -2021-02-12,797540590.607597,4660404291.81775,,3262243273.32491 -2021-02-11,1326962487.09259,4376714976.83874,,2991881318.05851 -2021-02-10,847452950.449876,5958509367.21316,,3504875882.40867 -2021-02-09,1085338329.26855,8487391120.13588,,3658059497.16153 -2021-02-08,1599658888.28279,9431417917.35698,,5530574241.67227 -2021-02-07,987302929.826245,5772998732.01759,,2344871236.19642 -2021-02-06,722602551.869828,4731923502.52318,,2457095583.66651 -2021-02-05,776946127.834867,6752041769.26202,,3459678570.46459 -2021-02-04,41258994977.2036,24542626688.6431,,9374969292.16646 -2021-02-03,667762204.555955,15020058601.7389,,3766491233.30693 -2021-02-02,924645236.715338,6695846290.00727,,3246885519.6986 -2021-02-01,810093155.585882,5687714955.04519,,2532588808.06952 -2021-01-31,510829250.932742,3187734223.76653,,1896300973.60206 -2021-01-30,596461499.078267,4293982835.76321,,1585916294.49388 -2021-01-29,840070434.093391,8327796287.49599,,4415069094.1488 -2021-01-28,791626159.377342,6630041014.17317,,3344804118.68128 -2021-01-27,950122693.353738,5855521459.22693,,2439927526.60015 -2021-01-26,745277304.361538,6168744810.43635,,3220144177.49798 -2021-01-25,1037864062.33166,6104392450.59333,,3200631660.8015 -2021-01-24,1027973364.75875,3147811628.64846,,1601059158.5716 -2021-01-23,1483325426.35704,3484995779.84011,,1971111611.11381 -2021-01-22,1447398535.81432,6358015057.96711,,4727349708.79972 -2021-01-21,1212496681.15753,6279463936.26862,,3070596780.52712 -2021-01-20,810189737.207242,6135465714.28278,,2429593080.1965 -2021-01-19,1290126506.95297,7023296258.42498,,4212142477.50374 -2021-01-18,767267128.519842,3963652552.40571,,2024648435.21128 -2021-01-17,659870351.769219,3008689777.32626,,1826114694.88797 -2021-01-16,1029540274.68807,3618037540.65955,,2545111083.37576 -2021-01-15,2732534007.88839,5174192935.08796,,3836148844.51673 -2021-01-14,1569474903.54473,5748296308.35916,,3403004393.45291 -2021-01-13,977430938.827424,5820257116.71511,,2354458609.80916 -2021-01-12,753089899.230148,7331234612.73083,,3325519078.95743 -2021-01-11,2298089067.88397,8339959929.7348,,4248306574.09096 -2021-01-10,989591589.261725,4213398762.04635,,2004157862.19484 -2021-01-09,966463973.262987,4631780502.36488,,2083020971.35999 -2021-01-08,1312703788.33345,6591163461.66744,,3171522624.06782 -2021-01-07,1245046611.49436,6446845268.99275,,3883101240.17222 -2021-01-06,880427745.430905,7712978308.40386,,3295043564.71668 -2021-01-05,1115034937.50091,5710585628.42311,,2610135502.62758 -2021-01-04,3699694934.60426,6750540543.78998,,4777136920.00359 -2021-01-03,1203570714.8639,4188370094.82107,,4855111018.17212 -2021-01-02,3805558726.67436,4007211938.19048,,5823012527.526 -2021-01-01,1042479116.6737,4026636246.49589,,2418773740.80778 -2020-12-31,870668852.96535,4218602528.9978,,3110524984.91659 -2020-12-30,1311849960.78334,5335038497.71469,,3869044524.88047 -2020-12-29,632767557.150043,4804083109.78419,,2261444985.51558 -2020-12-28,775658544.866177,5201396686.8769,,1840816950.44517 -2020-12-27,1238060065.38411,3205962698.72714,,1507960316.44857 -2020-12-26,786377934.578806,2784851417.47931,,977784527.790812 -2020-12-25,368454788.103106,2686199355.09055,,952781098.992152 -2020-12-24,546296465.400708,4329179770.39878,,1669642191.67183 -2020-12-23,396389493.402262,5096216126.57026,,1585470046.64584 -2020-12-22,443008804.59263,4705675035.43737,,2015247336.25406 -2020-12-21,649965305.31777,4477596273.66617,,1688310806.16749 -2020-12-20,640645201.543457,2140273542.30765,,1068574869.41567 -2020-12-19,610337025.901337,3281577416.06906,,1674911769.41303 -2020-12-18,504551238.698294,4421633616.63579,,1875123386.36486 -2020-12-17,856245320.772788,6119215208.33408,,2178328191.6904 -2020-12-16,477318295.378558,4765236675.94864,,1647267650.25127 -2020-12-15,264773164.205435,4268582891.90326,,831418353.905078 -2020-12-14,217861110.742286,3633497951.36035,,876519087.025765 -2020-12-13,314461428.671788,1858997351.10413,,854433775.492254 -2020-12-12,614711605.137357,2094602341.01012,,1611601298.73798 -2020-12-11,663063970.0785,3468583419.92039,,1688333958.67632 -2020-12-10,384899462.49436,3052186499.74927,,1000001414.19972 -2020-12-09,673344419.270527,3777627598.85765,,1323799895.47643 -2020-12-08,320007369.952759,3523200573.56726,,1053209192.39135 -2020-12-07,349616334.18765,3319771973.67909,,1257139931.04892 -2020-12-06,3709979545.96611,1680539026.88785,,604372156.850386 -2020-12-05,345896937.547094,2048495581.90324,,824138326.679016 -2020-12-04,540276887.895542,3407873301.5125,,1125897704.67026 -2020-12-03,299509970.302166,3502786706.7217,,729618811.956542 -2020-12-02,831604666.295886,3240729540.81504,,1148286161.46074 -2020-12-01,688869191.590356,5368845851.85868,,1283950988.43709 -2020-11-30,1164146515.13918,4955201556.53423,,1482974854.45992 -2020-11-29,207638436.662779,1617874699.82957,,427172936.466704 -2020-11-28,228680423.815257,2092393441.72519,,1170744062.65835 -2020-11-27,2048671188.32271,3139399134.44214,,1510598441.74162 -2020-11-26,2020177561.77245,4757974165.26781,,1841214157.24063 -2020-11-25,307219125.558753,4039068869.18363,,1121446157.23482 -2020-11-24,387994963.595225,4416581003.03494,,1254409758.21043 -2020-11-23,397478471.510123,4377646534.92785,,1451590138.5476 -2020-11-22,393246637.377971,2480186934.05574,,1687706291.7521 -2020-11-21,1096178546.41295,2336264822.63801,,1326237057.17462 -2020-11-20,517910660.977637,3579277502.26814,,1202249065.43583 -2020-11-19,453916380.833236,3189006028.66181,,1387402921.62948 -2020-11-18,1234383377.71722,4376740227.38332,,2305349259.62255 -2020-11-17,891064703.200927,4228725171.28921,,2047749326.27098 -2020-11-16,487217309.654617,3539050166.44959,,1022876371.95035 -2020-11-15,479292770.047038,1573176894.37005,,690196197.427392 -2020-11-14,785532052.1419,1988532983.67091,,970520054.230058 -2020-11-13,329677754.365385,3002113674.34052,,1096536065.8891 -2020-11-12,343462163.512953,3425187511.33957,,907584628.419881 -2020-11-11,571207478.540364,3092945968.29708,,687859565.548839 -2020-11-10,351160558.646748,2949273582.95918,,853605483.080345 -2020-11-09,771147337.564133,3269190794.57706,,1723327050.50299 -2020-11-08,188998821.673,1491026022.3381,,437461530.788328 -2020-11-07,402370607.289834,2371253658.7184,,1136226504.11589 -2020-11-06,326637194.768342,3788297008.50671,,1405219886.07931 -2020-11-05,285173376.992229,3727153432.94054,,1407122787.25238 -2020-11-04,262404299.051546,2771849064.86509,,1009895693.39793 -2020-11-03,345239382.65063,3269137207.91577,,1047243732.78894 -2020-11-02,301611935.717296,3489265404.01164,,1552491852.62803 -2020-11-01,207717854.614644,1440454459.76,,515557614.165172 -2020-10-31,149274166.468597,1594603122.85322,,692089759.617507 -2020-10-30,444328987.717467,2908430116.70648,,981827938.777707 -2020-10-29,519964605.571401,2640702595.16694,,1276319788.97598 -2020-10-28,325964228.889405,3450385299.63544,,1572090486.38236 -2020-10-27,368789435.561733,3284388085.08125,,1409367520.10096 -2020-10-26,499445299.104612,15107996235.7149,,15287417045.0623 -2020-10-25,131949104.990413,1282034496.31683,,463545544.431128 -2020-10-24,290627130.822115,1724811943.59976,,613242190.702996 -2020-10-23,641379769.725349,2699684630.18066,,1315513780.45648 -2020-10-22,1006168433.53109,3650552403.40395,,2122427376.48635 -2020-10-21,555684502.538666,3304385086.66402,,2322373493.52654 -2020-10-20,351481806.280204,3055941200.82443,,1437436820.00626 -2020-10-19,379152330.832366,2512932454.88124,,1024540559.11923 -2020-10-18,166272330.798684,1362051178.49243,,705058119.562483 -2020-10-17,312728279.173516,1471990028.07797,,539750076.396767 -2020-10-16,410059344.918814,2636096623.78846,,871997590.975817 -2020-10-15,380510270.069438,2982568325.35434,,811010568.30342 -2020-10-14,481001026.986616,2843028121.12423,,979745549.933236 -2020-10-13,777018639.913946,2761798842.07925,,1589952124.86042 -2020-10-12,322243638.563923,2859627051.65253,,785114837.078162 -2020-10-11,319567899.554755,1957865698.74129,,1108123415.43363 -2020-10-10,307059201.043354,2555016335.5198,,1332028784.94504 -2020-10-09,545814108.614545,3234860317.47072,,1207513761.59504 -2020-10-08,241140866.966612,2843763880.73768,,1323785210.51581 -2020-10-07,215243599.405168,2398587054.45531,,1039107116.04222 -2020-10-06,455270223.663482,2943232461.8433,,1029062146.20299 -2020-10-05,258389501.627029,3548586183.2136,,1028788259.03613 -2020-10-04,244855525.468771,1250991679.33592,,553331513.453946 -2020-10-03,208606813.336852,1870967856.4316,,1000824990.3445 -2020-10-02,576305989.469408,2142227865.82991,,1333094298.69841 -2020-10-01,847167569.530513,2765472078.34891,,1266464962.12958 -2020-09-30,377108596.499142,2978057402.0579,,990800001.580167 -2020-09-29,873595530.347712,3056914261.83619,,929998790.781584 -2020-09-28,379803850.121942,4464598810.13375,,1198474867.60842 -2020-09-27,295894266.872321,2357793541.68913,,1019238528.53576 -2020-09-26,527803125.157748,2058155842.29144,,1013641020.1317 -2020-09-25,496314690.682942,3475036751.33906,,1027384550.57226 -2020-09-24,745521115.646239,3133627843.15172,,1278984780.53578 -2020-09-23,1119342426.06023,3259584188.0596,,1584649184.32504 -2020-09-22,567943930.642461,3098071843.40381,,952342566.312568 -2020-09-21,1147756305.66255,3946921055.88413,,1970425196.2254 -2020-09-20,1309310402.237,2058339791.16812,,1448770512.32467 -2020-09-19,3029299920.41271,3685780930.49258,,4066377919.12023 -2020-09-18,1341958750.46226,3435209485.10451,,1942584991.07448 -2020-09-17,1433281083.33327,3822678942.90498,,2268942903.8733 -2020-09-16,1416684082.96835,3796415602.51131,,1756732154.31077 -2020-09-15,2118929806.698,6926892138.26338,,2461880800.05501 -2020-09-14,1946093750.23001,4694359583.19079,,2894193933.40278 -2020-09-13,629459940.125008,2343599483.95209,,2102184942.02176 -2020-09-12,462668097.743929,2368865564.79601,,1474134992.03144 -2020-09-11,744593490.282546,3579774035.58086,,2394051195.82996 -2020-09-10,741802325.811396,3510581538.12526,,1762248772.94788 -2020-09-09,813703514.035211,3432305733.98022,,2235669399.31079 -2020-09-08,506662778.512757,3276767350.58279,,2148226806.7801 -2020-09-07,563757545.503048,2609166361.23156,,1566885156.3592 -2020-09-06,930447530.793985,2291388704.83284,,1668761950.24283 -2020-09-05,1769105470.1317,3382666982.5141,,2759487811.17366 -2020-09-04,1039128510.35204,4440009098.03494,,1752248806.30906 -2020-09-03,1700163728.4693,3907749773.291,,1564870953.23903 -2020-09-02,1157648536.36941,3788948998.39694,,1500054001.28297 -2020-09-01,662745564.804871,4486447247.99804,,1599867432.11359 -2020-08-31,580253618.688046,3762718669.77153,,1299226874.74522 -2020-08-30,626578390.344776,1969392450.3045,,671732146.711568 -2020-08-29,655726682.675795,2149613145.56153,,926098688.868187 -2020-08-28,399455986.387323,3201262472.85182,,1975304082.83836 -2020-08-27,327428368.737264,2817509634.16352,,964307515.538082 -2020-08-26,268315436.384074,2664221925.01747,,628402913.671879 -2020-08-25,474156456.728319,2677500711.52516,,607147370.060679 -2020-08-24,658375884.264639,2483148268.39026,,756788511.34472 -2020-08-23,339799957.014253,1445446659.87684,,438776377.878567 -2020-08-22,348960146.366621,1573682196.3085,,526167454.151106 -2020-08-21,207664840.878873,2584600757.71534,,637217150.915251 -2020-08-20,520496286.020346,6345717916.56032,,901066157.552314 -2020-08-19,415900203.485214,2606200494.78569,,720962874.525117 -2020-08-18,266706999.932927,2492443532.5994,,924108630.553404 -2020-08-17,404454296.861727,2942846990.33852,,843497075.340099 -2020-08-16,298631876.86201,1485504836.81623,,481326614.890438 -2020-08-15,336449199.121245,1841012011.12232,,592856428.098334 -2020-08-14,2929056952.7406,3389700022.35966,,2528594711.94817 -2020-08-13,588784786.438833,2852584403.878,,945727325.726555 -2020-08-12,688017143.165643,2410531318.59021,,1204390925.17796 -2020-08-11,920476074.743047,2666607057.31599,,830933636.33051 -2020-08-10,981614168.837874,4301500636.92393,,907817137.97979 -2020-08-09,358596353.268948,1129461096.6886,,321148162.756777 -2020-08-08,326147144.228446,1283586133.72823,,725504168.406256 -2020-08-07,1930804951.03717,2209625566.09226,,511543208.765666 -2020-08-06,365422184.398798,2643868468.31187,,388312900.507867 -2020-08-05,482721959.566259,2190058812.8025,,460399905.883484 -2020-08-04,589612692.259331,2652134028.52933,,571474551.508398 -2020-08-03,1051475047.01564,2503262601.6459,,800365051.085053 -2020-08-02,1002777818.08408,1758844102.08878,,589248500.509271 -2020-08-01,801190398.6493,1769704199.68794,,610019734.189969 -2020-07-31,1206090089.912,2306131949.09085,,1118320847.34184 -2020-07-30,1051103549.47672,2378358086.40453,,919096971.676341 -2020-07-29,2600848006.50713,2377905681.25826,,1005291767.60632 -2020-07-28,737710591.798317,2998309655.0573,,807807871.7675 -2020-07-27,1324118826.27108,3555429454.82145,,1309205308.72654 -2020-07-26,3060289301.97933,1691251429.24247,,1430743740.72916 -2020-07-25,1832212440.26231,1594714128.00986,,1167945851.81427 -2020-07-24,1039339893.9092,2365752503.82417,,952449142.158164 -2020-07-23,859681704.980994,2554795193.51562,,864882828.481764 -2020-07-22,1201325560.31342,2539192828.92315,,593977823.522511 -2020-07-21,543841271.35755,2161575186.94409,,674150057.963637 -2020-07-20,1136110834.46591,2481951927.16537,,782812546.096693 -2020-07-19,1085862331.55801,1173422003.49312,,880688519.559681 -2020-07-18,504526039.874633,1087603807.91272,,397935932.515481 -2020-07-17,280727473.155821,1777142978.04874,,371711438.778548 -2020-07-16,317678769.732066,1943294546.21561,,301549084.931817 -2020-07-15,198578881.429666,1920373273.67516,,325231543.855523 -2020-07-14,309870877.517936,2065438913.84144,,259959566.382675 -2020-07-13,174236708.459279,2044075682.49593,,204863001.902738 -2020-07-12,347452973.441247,1096004481.08873,,122167274.120207 -2020-07-11,400803354.724952,995736426.92085,,131608683.914069 -2020-07-10,268782761.637907,1698305364.33853,,303466985.486013 -2020-07-09,478660305.738267,1930239398.92993,,463881553.350342 -2020-07-08,1007993354.39396,2059498657.27854,,578432319.21357 -2020-07-07,830066509.581277,1750289030.10111,,490292997.376943 -2020-07-06,388603746.627248,2000614691.12072,,337162911.898644 -2020-07-05,258637406.240339,824902668.698209,,104864265.021507 -2020-07-04,350438439.845885,915060002.359619,,139058882.07701 -2020-07-03,621377895.157303,1614584976.84585,,516296043.117555 -2020-07-02,1475822995.99003,2031334903.18927,,853658836.123349 -2020-07-01,149408628.794773,1528957999.85455,,305497287.692205 -2020-06-30,184385133.356246,1597752424.64742,,438268555.107911 -2020-06-29,151027669.614743,3083988551.20636,,244909421.081816 -2020-06-28,156560933.714755,926783282.984805,,192974526.304037 -2020-06-27,111797223.022026,846110599.204021,,391379977.019199 -2020-06-26,56778226.4659574,1410563870.29233,,443226605.147979 -2020-06-25,171213909.649025,1482774356.76185,,242494392.696744 -2020-06-24,73380708.4534971,1909947721.31104,,323542005.754992 -2020-06-23,95052904.6756262,1913450970.10905,,334381464.298002 -2020-06-22,120167740.597209,2265511571.14187,,382634014.884123 -2020-06-21,157941188.877085,1373578865.6893,,459234118.161723 -2020-06-20,131144600.229261,1171983596.36401,,490079329.24464 -2020-06-19,227110803.946123,2207035147.98288,,686024019.482071 -2020-06-18,77757636.9476309,1987338567.88794,,358140414.897879 -2020-06-17,83619715.7227163,1776798750.43319,,399139040.672438 -2020-06-16,90876961.3044935,1844138074.5267,,250020518.737928 -2020-06-15,98336092.4098258,1693422266.54687,,473603273.16656 -2020-06-14,102070168.968083,693368537.058371,,89417655.3121603 -2020-06-13,19857950.2161893,777565158.119709,,69383673.5285428 -2020-06-12,38234892.7314093,1453962294.38682,,147585661.888336 -2020-06-11,95853116.2364415,1929452793.64916,,232724664.661915 -2020-06-10,34953740.5046151,1692766052.54051,,161651035.023086 -2020-06-09,38071537.8394386,1653898199.5357,,96160818.4320198 -2020-06-08,55704669.7669793,1610524297.61871,,127632484.517751 -2020-06-07,46968585.1684578,759743219.581454,,55754420.3525069 -2020-06-06,18697196.9677304,765188454.561608,,39279217.3735656 -2020-06-05,31340969.5323765,1414121354.15108,,157711040.238635 -2020-06-04,30976097.2300287,1519138912.56728,,109978927.577868 -2020-06-03,51464278.0705696,1438543726.02896,,140580250.756334 -2020-06-02,114634758.295448,2211029397.53199,,338737136.678718 -2020-06-01,99659329.6801661,1587389121.24091,,112604577.727763 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_dapp_stats.csv b/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_dapp_stats.csv deleted file mode 100644 index a63ec984e018..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_dapp_stats.csv +++ /dev/null @@ -1,48 +0,0 @@ -timeframe,fees,n_users,volume -2021-09-20,971128.408459335,748,7050 -2021-09-27,588703.487155636,617,4984 -2021-10-04,748750.544989823,646,4105 -2021-10-11,671126.179349037,660,4233 -2021-10-18,544587.085742359,628,3794 -2021-10-25,1047504.06142356,550,3246 -2021-11-01,851904.025967565,545,3199 -2021-11-08,1016698.39046912,514,3098 -2021-11-15,914313.524456732,584,3585 -2021-11-22,844123.222284278,511,3186 -2021-11-29,907963.495830892,520,3104 -2021-12-06,465022.877258617,565,3129 -2021-12-13,373827.035095027,497,2660 -2021-12-20,237897.984552777,433,2175 -2021-12-27,338424.386332529,460,2243 -2022-01-03,632744.124896926,548,2935 -2022-01-10,422800.375738491,472,2051 -2022-01-17,716326.950765755,743,3625 -2022-01-24,563906.915059515,584,3447 -2022-01-31,467942.882591503,481,2544 -2022-02-07,343161.100980691,549,2791 -2022-02-14,193537.186726091,459,2274 -2022-02-21,258402.924498461,538,2891 -2022-02-28,231332.920012526,613,3170 -2022-03-07,107379.360219845,656,3124 -2022-03-14,110841.945076548,589,2873 -2022-03-21,129460.539677929,617,2836 -2022-03-28,277589.960765738,643,2957 -2022-04-04,180779.014112563,623,2719 -2022-04-11,356645.21195269,608,3424 -2022-04-18,124905.774368535,444,2115 -2022-04-25,168294.545593294,408,2262 -2022-05-02,197472.132298427,583,2919 -2022-05-09,3816184.97104214,2221,20371 -2022-05-16,152821.867503225,653,4620 -2022-05-23,160341.602955583,633,5118 -2022-05-30,76570.848975358,277,1880 -2022-06-06,281859.794609131,1022,8292 -2022-06-13,949866.053896377,1538,18604 -2022-06-20,280758.206969026,694,8392 -2022-06-27,255340.861358492,630,7432 -2022-07-04,158798.730530248,562,6424 -2022-07-11,202236.12291037,523,6904 -2022-07-18,208600.885208027,596,7057 -2022-07-25,121446.872029091,556,6304 -2022-08-01,43570.523299292,430,3647 -2022-08-08,30.688926514,2,4 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].csv b/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].csv deleted file mode 100644 index ba30fadc5c87..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/csv/test_shroom_model/test_get_total_value_locked[0x0000000000000000000000000000000000000000-].csv +++ /dev/null @@ -1 +0,0 @@ -metric_date,symbol,amount_usd diff --git a/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py b/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py index 9ef907edeeb6..debbcaad5ebd 100644 --- a/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py +++ b/tests/openbb_terminal/cryptocurrency/onchain/test_onchain_controller.py @@ -341,27 +341,6 @@ def test_call_func_expect_queue(expected_queue, func, queue): [], dict(), ), - ( - "call_dt", - [], - "shroom_view.display_daily_transactions", - [], - dict(), - ), - ( - "call_ds", - ["uniswap-v3"], - "shroom_view.display_dapp_stats", - [], - dict(), - ), - ( - "call_tvl", - ["0xa5407eae9ba41422680e2e00537571bcc53efbfd"], - "shroom_view.display_total_value_locked", - [], - dict(), - ), ], ) def test_call_func( diff --git a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_model.py b/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_model.py deleted file mode 100644 index ed7130607802..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_model.py +++ /dev/null @@ -1,46 +0,0 @@ -import pytest - -from openbb_terminal.cryptocurrency.onchain import shroom_model - - -@pytest.fixture(scope="module") -def vcr_config(): - return { - "filter_headers": [ - ("User-Agent", None), - ("x-api-key", "MOCK_AUTHORIZATION"), - ], - } - - -@pytest.mark.vcr -@pytest.mark.parametrize( - "user_address, address_name", - [ - ("0x0000000000000000000000000000000000000000", ""), - ], -) -def test_get_total_value_locked(user_address, address_name, recorder): - df = shroom_model.get_total_value_locked( - user_address=user_address, address_name=address_name - ) - recorder.capture(df) - - -@pytest.mark.vcr -@pytest.mark.parametrize( - "symbols", - [ - ["DAI", "USDT", "BUSD", "USDC"], - ], -) -def test_get_daily_transactions(symbols, recorder): - df = shroom_model.get_daily_transactions(symbols=symbols) - recorder.capture(df) - - -@pytest.mark.vcr -@pytest.mark.skip(reason="Shroom functions broken.") -def test_get_dapp_stats(recorder): - df = shroom_model.get_dapp_stats(platform="curve") - recorder.capture(df) diff --git a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_view.py b/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_view.py deleted file mode 100644 index 77b4c62e8039..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/test_shroom_view.py +++ /dev/null @@ -1,35 +0,0 @@ -import pytest - -from openbb_terminal.cryptocurrency.onchain import shroom_view - - -@pytest.fixture(scope="module") -def vcr_config(): - return { - "filter_headers": [ - ("User-Agent", None), - ("x-api-key", "MOCK_AUTHORIZATION"), - ], - } - - -@pytest.mark.vcr -@pytest.mark.record_stdout -def test_display_daily_transactions(): - shroom_view.display_daily_transactions() - - -@pytest.mark.vcr -@pytest.mark.record_stdout -@pytest.mark.skip(reason="Shroom functions broken.") -def test_display_dapp_stats(): - shroom_view.display_dapp_stats(platform="uniswap-v3") - - -@pytest.mark.vcr -@pytest.mark.record_stdout -@pytest.mark.skip(reason="Shroom functions broken.") -def test_display_total_value_locked(): - shroom_view.display_total_value_locked( - user_address="0x0000000000000000000000000000000000000000", address_name="" - ) diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt index d1d814f29946..656a5bec7e37 100644 --- a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt +++ b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt @@ -10,9 +10,7 @@ ueat unique ethereum addresses which made a transaction [BitQuery] ttcp top traded crypto pairs on given decentralized exchange [BitQuery] baas bid, ask prices, average spread for given crypto pair [BitQuery] - dt daily transactions of eth tokens [Shroom] - ds stats of eth platform (daily users; fees) [Shroom] - tvl total value locked of ERC20 tokens [Shroom] + query flipsidecrypto query [Shroom] Ethereum address: Address type: diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_daily_transactions.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_daily_transactions.txt deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_dapp_stats.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_dapp_stats.txt deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_total_value_locked.txt b/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_total_value_locked.txt deleted file mode 100644 index 38918f82b057..000000000000 --- a/tests/openbb_terminal/cryptocurrency/onchain/txt/test_shroom_view/test_display_total_value_locked.txt +++ /dev/null @@ -1,2 +0,0 @@ -No data found. - From 3d7b934d166e642b0ffb1a1eacaa55203620feec Mon Sep 17 00:00:00 2001 From: Pratyush Shukla Date: Tue, 2 May 2023 01:53:59 +0530 Subject: [PATCH 13/70] Fixed incorrect data display using `stocks/fa/est` command (#4940) * Removed empty row in OpenBB SDK table under Installation * Revamped `get_estimates` function * Linting * Fixed bugs, tests and modified args * Fixed test --- README.md | 2 +- .../business_insider_model.py | 168 ++++++------------ .../business_insider_view.py | 6 +- .../fundamental_analysis/fa_controller.py | 4 +- .../test_get_estimates_year_estimates.csv | 34 ++-- .../test_business_insider_view.py | 2 +- .../test_fa_controller.py | 2 +- .../test_estimates.txt | 58 +++--- 8 files changed, 108 insertions(+), 168 deletions(-) diff --git a/README.md b/README.md index a21a43330506..591dfe4374c9 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ If you wish to install the OpenBB Terminal or the OpenBB SDK, please use one of |:-|:-| |[PyPI](https://docs.openbb.co/terminal/installation/pypi)|If you wish to use the OpenBB SDK in Python or Jupyter Notebooks| |[Source](https://docs.openbb.co/terminal/installation/source)|If you wish to contribute to the development of the OpenBB Terminal| -nbsp;| + ## 2. Contributing diff --git a/openbb_terminal/stocks/fundamental_analysis/business_insider_model.py b/openbb_terminal/stocks/fundamental_analysis/business_insider_model.py index bcca57968391..6fd7e28c0750 100644 --- a/openbb_terminal/stocks/fundamental_analysis/business_insider_model.py +++ b/openbb_terminal/stocks/fundamental_analysis/business_insider_model.py @@ -3,7 +3,6 @@ import json import logging -import re from typing import Tuple import pandas as pd @@ -193,120 +192,61 @@ def get_estimates(symbol: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame "lxml", ) - l_estimates_year_header = list() - l_estimates_quarter_header = list() - for estimates_header in text_soup_market_business_insider.findAll( - "th", {"class": "table__th text-right"} - ): - s_estimates_header = estimates_header.text.strip() - if s_estimates_header.isdigit(): - l_estimates_year_header.append(s_estimates_header) - elif ("in %" not in s_estimates_header) and ("Job" not in s_estimates_header): - l_estimates_quarter_header.append(s_estimates_header) - - l_estimates_year_metric = list() - for estimates_year_metric in text_soup_market_business_insider.findAll( - "td", {"class": "table__td black"} - ): - l_estimates_year_metric.append(estimates_year_metric.text) - - l_estimates_quarter_metric = list() - for estimates_quarter_metric in text_soup_market_business_insider.findAll( - "td", {"class": "table__td font-color-dim-gray"} - ): - l_estimates_quarter_metric.append(estimates_quarter_metric.text) - - d_metric_year = dict() - d_metric_quarter_earnings = dict() - d_metric_quarter_revenues = dict() - l_metrics = list() - n_metrics = 0 - b_year = True - for idx, metric_value in enumerate( - text_soup_market_business_insider.findAll( - "td", {"class": "table__td text-right"} - ) - ): - if b_year: - # YEAR metrics - l_metrics.append(metric_value.text.strip()) - - # Check if we have processed all year metrics - if n_metrics > len(l_estimates_year_metric) - 1: - b_year = False - n_metrics = 0 - l_metrics = list() - idx_y = idx - - # Add value to dictionary - if (idx + 1) % len(l_estimates_year_header) == 0: - d_metric_year[l_estimates_year_metric[n_metrics]] = l_metrics - l_metrics = list() - n_metrics += 1 - - if not b_year: - # QUARTER metrics - l_metrics.append(metric_value.text.strip()) - - # Check if we have processed all quarter metrics - if n_metrics > len(l_estimates_quarter_metric) - 1: - break - - # Add value to dictionary - if (idx - idx_y + 1) % len(l_estimates_quarter_header) == 0: - if n_metrics < 4: - d_metric_quarter_earnings[ - l_estimates_quarter_metric[n_metrics] - ] = l_metrics - else: - d_metric_quarter_revenues[ - l_estimates_quarter_metric[n_metrics - 4] - ] = l_metrics - l_metrics = list() - n_metrics += 1 - - df_year_estimates = pd.DataFrame.from_dict( - d_metric_year, orient="index", columns=l_estimates_year_header - ) - df_year_estimates.index.name = "YEARLY ESTIMATES" - df_quarter_earnings = pd.DataFrame.from_dict( - d_metric_quarter_earnings, - orient="index", - columns=l_estimates_quarter_header, + # Get all tables and convert them to list of pandas dataframes + tables = text_soup_market_business_insider.find_all("table") + list_df = pd.read_html(str(tables)) + + # Get year estimates + df_year_estimates = list_df[3] + l_year_estimates_columns = df_year_estimates.columns.tolist() + l_year_estimates_columns[0] = "YEARLY ESTIMATES" + df_year_estimates.columns = l_year_estimates_columns + df_year_estimates.set_index("YEARLY ESTIMATES", inplace=True) + + df_quarter = list_df[4] + date_row = dict() + + # Get quarter earnings estimates + df_quarter_earnings = df_quarter.iloc[0:5, :].reset_index(drop=True).copy() + df_quarter_earnings.drop(index=0, inplace=True) + l_quarter_earnings_columns = df_quarter_earnings.columns.tolist() + l_quarter_earnings_columns[0] = "QUARTER EARNINGS ESTIMATES" + date_row["QUARTER EARNINGS ESTIMATES"] = "Date" + + # Adding Date info to add to dataframe + for col in l_quarter_earnings_columns[1:]: + key = col.split("ending")[0].strip() + value = col[col.find("ending") :].strip() + date_row[key] = value + + df_quarter_earnings.columns = date_row.keys() + date_row = pd.DataFrame(date_row, index=[0]) + df_quarter_earnings = pd.concat([date_row, df_quarter_earnings]).reset_index( + drop=True ) - # df_quarter_earnings.index.name = 'Earnings' - df_quarter_revenues = pd.DataFrame.from_dict( - d_metric_quarter_revenues, - orient="index", - columns=l_estimates_quarter_header, + df_quarter_earnings.set_index("QUARTER EARNINGS ESTIMATES", inplace=True) + + # Setting date_row to empty dict object + date_row = dict() + + # Get quarter revenues estimates + df_quarter_revenues = df_quarter.iloc[5:, :].reset_index(drop=True).copy() + df_quarter_revenues.drop(index=0, inplace=True) + l_quarter_revenues_columns = df_quarter_revenues.columns.tolist() + l_quarter_revenues_columns[0] = "QUARTER REVENUES ESTIMATES" + date_row["QUARTER REVENUES ESTIMATES"] = "Date" + + # Adding Date info to add to dataframe + for col in l_quarter_revenues_columns[1:]: + key = col.split("ending")[0].strip() + value = col[col.find("ending") :].strip() + date_row[key] = value + + df_quarter_revenues.columns = date_row.keys() + date_row = pd.DataFrame(date_row, index=[0]) + df_quarter_revenues = pd.concat([date_row, df_quarter_revenues]).reset_index( + drop=True ) - # df_quarter_revenues.index.name = 'Revenues' - - if not df_quarter_earnings.empty: - l_quarter = list() - l_date = list() - for quarter_title in df_quarter_earnings.columns: - l_quarter.append(re.split(" ending", quarter_title)[0]) - if len(re.split(" ending", quarter_title)) == 2: - l_date.append( - "ending " + re.split(" ending", quarter_title)[1].strip() - ) - else: - l_date.append("-") - - df_quarter_earnings.index.name = "QUARTER EARNINGS ESTIMATES" - df_quarter_earnings.columns = l_quarter - df_quarter_earnings.loc["Date"] = l_date - df_quarter_earnings = df_quarter_earnings.reindex( - ["Date", "No. of Analysts", "Average Estimate", "Year Ago", "Publish Date"] - ) - - if not df_quarter_revenues.empty: - df_quarter_revenues.index.name = "QUARTER REVENUES ESTIMATES" - df_quarter_revenues.columns = l_quarter - df_quarter_revenues.loc["Date"] = l_date - df_quarter_revenues = df_quarter_revenues.reindex( - ["Date", "No. of Analysts", "Average Estimate", "Year Ago", "Publish Date"] - ) + df_quarter_revenues.set_index("QUARTER REVENUES ESTIMATES", inplace=True) return df_year_estimates, df_quarter_earnings, df_quarter_revenues diff --git a/openbb_terminal/stocks/fundamental_analysis/business_insider_view.py b/openbb_terminal/stocks/fundamental_analysis/business_insider_view.py index 7bb6111711b6..1aefd4fe36a3 100644 --- a/openbb_terminal/stocks/fundamental_analysis/business_insider_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/business_insider_view.py @@ -215,7 +215,7 @@ def display_estimates( df_quarter_revenues, ) = business_insider_model.get_estimates(symbol) - if estimate == "annualearnings": + if estimate == "annual_earnings": print_rich_table( df_year_estimates, headers=list(df_year_estimates.columns), @@ -231,7 +231,7 @@ def display_estimates( sheet_name, ) - elif estimate == "quarterearnings": + elif estimate == "quarter_earnings": print_rich_table( df_quarter_earnings, headers=list(df_quarter_earnings.columns), @@ -247,7 +247,7 @@ def display_estimates( sheet_name, ) - elif estimate == "annualrevenue": + elif estimate == "quarter_revenues": print_rich_table( df_quarter_revenues, headers=list(df_quarter_revenues.columns), diff --git a/openbb_terminal/stocks/fundamental_analysis/fa_controller.py b/openbb_terminal/stocks/fundamental_analysis/fa_controller.py index d3919be85aa5..9dac76cbd5d6 100644 --- a/openbb_terminal/stocks/fundamental_analysis/fa_controller.py +++ b/openbb_terminal/stocks/fundamental_analysis/fa_controller.py @@ -92,7 +92,7 @@ class FundamentalAnalysisController(StockBaseController): PATH = "/stocks/fa/" SHRS_CHOICES = ["major", "institutional", "mutualfund"] - ESTIMATE_CHOICES = ["annualrevenue", "annualearnings", "quarterearnings"] + ESTIMATE_CHOICES = ["annual_earnings", "quarter_earnings", "quarter_revenues"] CHOICES_GENERATION = True def __init__( @@ -1858,7 +1858,7 @@ def call_est(self, other_args: List[str]): help="Estimates to get", dest="estimate", choices=self.ESTIMATE_CHOICES, - default="annualearnings", + default="annual_earnings", ) ns_parser = self.parse_known_args_and_warn( parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_business_insider_model/test_get_estimates_year_estimates.csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_business_insider_model/test_get_estimates_year_estimates.csv index d9a00450d449..b345a1cfbe73 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_business_insider_model/test_get_estimates_year_estimates.csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_business_insider_model/test_get_estimates_year_estimates.csv @@ -1,28 +1,28 @@ YEARLY ESTIMATES,2023,2024,2025,2026,2027 -Revenue,"103,351","135,186","168,507",-,- +Revenue,103351,135186,168507,-,- Dividend,0.00,0.00,0.00,-,- Dividend Yield (in %),-,-,-,-,- EPS,4.08,5.65,6.91,5.83,6.98 P/E Ratio,45.95,33.21,27.13,32.17,26.86 -EBIT,"14,600","21,973","27,740","30,032","44,029" -EBITDA,"19,429","27,963","38,063","37,754","38,937" -Net Profit,"13,681","19,370","23,763","21,385","26,126" -Net Profit Adjusted,"13,713","19,366","23,746","21,385","26,126" -Pre-Tax Profit,"14,437","22,015","28,932","29,404","31,787" -Net Profit (Adjusted),"14,363","22,392","29,878","29,404","31,787" +EBIT,14600,21973,27740,30032,44029 +EBITDA,19429,27963,38063,37754,38937 +Net Profit,13681,19370,23763,21385,26126 +Net Profit Adjusted,13713,19366,23746,21385,26126 +Pre-Tax Profit,14437,22015,28932,29404,31787 +Net Profit (Adjusted),14363,22392,29878,29404,31787 EPS (Non-GAAP) ex. SOE,4.08,5.65,6.91,5.83,6.98 EPS (GAAP),3.49,5.25,6.18,5.73,6.65 -Gross Income,"23,184","32,468","40,980","37,949","42,464" -Cash Flow from Investing,"-7,935","-9,482","-10,201","-12,681",- -Cash Flow from Operations,"19,523","24,129","27,935","29,376","35,875" +Gross Income,23184,32468,40980,37949,42464 +Cash Flow from Investing,-7935,-9482,-10201,-12681,- +Cash Flow from Operations,19523,24129,27935,29376,35875 Cash Flow from Financing,-478,-810,100,-,- Cash Flow per Share,4.92,7.39,6.94,-,- -Free Cash Flow,"10,236","14,300","15,203","18,405","22,501" +Free Cash Flow,10236,14300,15203,18405,22501 Free Cash Flow per Share,2.84,4.55,4.61,6.10,- Book Value per Share,17.00,22.50,28.90,31.25,- -Net Debt,"-24,814","-36,525","-52,052",-,- -Research & Development Exp.,"3,565","4,327","4,852","5,192","5,250" -Capital Expenditure,"7,692","8,522","8,950","9,832",- -"Selling, General & Admin. Exp.","4,614","5,569","6,495","6,145","5,725" -Shareholder’s Equity,"57,825","76,028","97,431","99,807",- -Total Assets,"99,781","126,117","153,798","155,216",- +Net Debt,-24814,-36525,-52052,-,- +Research & Development Exp.,3565,4327,4852,5192,5250 +Capital Expenditure,7692,8522,8950,9832,- +"Selling, General & Admin. Exp.",4614,5569,6495,6145,5725 +Shareholder’s Equity,57825,76028,97431,99807,- +Total Assets,99781,126117,153798,155216,- diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/test_business_insider_view.py b/tests/openbb_terminal/stocks/fundamental_analysis/test_business_insider_view.py index ec7b8cbf3f21..43749382f9fc 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/test_business_insider_view.py +++ b/tests/openbb_terminal/stocks/fundamental_analysis/test_business_insider_view.py @@ -83,5 +83,5 @@ def test_price_target_from_analysts_plt(): @pytest.mark.record_stdout def test_estimates(): business_insider_view.display_estimates( - symbol="TSLA", estimate="annualearnings", export=None + symbol="TSLA", estimate="annual_earnings", export=None ) diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/test_fa_controller.py b/tests/openbb_terminal/stocks/fundamental_analysis/test_fa_controller.py index b940d1d34bb2..ca4fccfd322b 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/test_fa_controller.py +++ b/tests/openbb_terminal/stocks/fundamental_analysis/test_fa_controller.py @@ -575,7 +575,7 @@ def test_call_func_expect_queue(expected_queue, queue, func): [], { "symbol": "TSLA", - "estimate": "annualearnings", + "estimate": "annual_earnings", "export": "", "sheet_name": None, }, diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_estimates.txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_estimates.txt index ab4e18a244f5..eb1148c34567 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_estimates.txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_estimates.txt @@ -1,29 +1,29 @@ - 2023 2024 2025 2026 2027 -YEARLY ESTIMATES -Revenue 103,418 135,351 168,507 194,661 295,169 -Dividend 0.00 0.00 0.00 - - -Dividend Yield (in %) - - - - - -EPS 4.07 5.65 6.91 5.83 6.89 -P/E Ratio 50.51 36.42 29.74 35.29 29.83 -EBIT 14,555 21,972 27,741 30,025 43,704 -EBITDA 19,519 27,962 38,066 37,741 38,504 -Net Profit 13,506 19,372 23,768 21,372 25,801 -Net Profit Adjusted 13,533 19,368 23,752 21,372 25,801 -Pre-Tax Profit 14,454 22,034 28,932 29,404 31,787 -Net Profit (Adjusted) 14,363 22,392 29,878 29,404 31,787 -EPS (Non-GAAP) ex. SOE 4.07 5.65 6.91 5.83 6.89 -EPS (GAAP) 3.47 5.25 6.18 5.72 6.54 -Gross Income 23,115 32,466 40,982 37,942 41,972 -Cash Flow from Investing -7,935 -9,482 -10,201 -12,681 - -Cash Flow from Operations 19,523 24,129 27,935 29,376 35,875 -Cash Flow from Financing -478 -810 100 - - -Cash Flow per Share 4.92 7.39 6.94 - - -Free Cash Flow 10,541 14,300 15,203 18,405 22,501 -Free Cash Flow per Share 2.84 4.55 4.61 6.10 - -Book Value per Share 17.00 22.50 28.90 31.25 - -Net Debt -24,814 -36,525 -52,052 - - -Research & Development Exp. 3,555 4,325 4,846 5,179 5,162 -Capital Expenditure 7,672 8,522 8,950 9,832 - -Selling, General & Admin. Exp. 4,618 5,572 6,500 6,160 5,755 -Shareholder’s Equity 57,825 76,028 97,431 99,807 - -Total Assets 99,781 126,117 153,798 155,216 - + 2023 2024 2025 2026 2027 +YEARLY ESTIMATES +Revenue 103418 135351 168507 194661 295169 +Dividend 0.00 0.00 0.00 - - +Dividend Yield (in %) - - - - - +EPS 4.07 5.65 6.91 5.83 6.89 +P/E Ratio 50.51 36.42 29.74 35.29 29.83 +EBIT 14555 21972 27741 30025 43704 +EBITDA 19519 27962 38066 37741 38504 +Net Profit 13506 19372 23768 21372 25801 +Net Profit Adjusted 13533 19368 23752 21372 25801 +Pre-Tax Profit 14454 22034 28932 29404 31787 +Net Profit (Adjusted) 14363 22392 29878 29404 31787 +EPS (Non-GAAP) ex. SOE 4.07 5.65 6.91 5.83 6.89 +EPS (GAAP) 3.47 5.25 6.18 5.72 6.54 +Gross Income 23115 32466 40982 37942 41972 +Cash Flow from Investing -7935 -9482 -10201 -12681 - +Cash Flow from Operations 19523 24129 27935 29376 35875 +Cash Flow from Financing -478 -810 100 - - +Cash Flow per Share 4.92 7.39 6.94 - - +Free Cash Flow 10541 14300 15203 18405 22501 +Free Cash Flow per Share 2.84 4.55 4.61 6.10 - +Book Value per Share 17.00 22.50 28.90 31.25 - +Net Debt -24814 -36525 -52052 - - +Research & Development Exp. 3555 4325 4846 5179 5162 +Capital Expenditure 7672 8522 8950 9832 - +Selling, General & Admin. Exp. 4618 5572 6500 6160 5755 +Shareholder’s Equity 57825 76028 97431 99807 - +Total Assets 99781 126117 153798 155216 - From 25b8bd92c1a3981bd69d50cf081e9c3744c82816 Mon Sep 17 00:00:00 2001 From: Henrique Joaquim Date: Mon, 1 May 2023 21:29:30 +0100 Subject: [PATCH 14/70] adds type to the version on the SystemModel (#4944) --- openbb_terminal/core/models/system_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openbb_terminal/core/models/system_model.py b/openbb_terminal/core/models/system_model.py index 214184b63650..01a811436b2a 100644 --- a/openbb_terminal/core/models/system_model.py +++ b/openbb_terminal/core/models/system_model.py @@ -27,7 +27,7 @@ class SystemModel(BaseModel): PLATFORM: str = str(platform.platform()) # OpenBB section - VERSION = "3.0.0" + VERSION: str = "3.0.0" # Logging section LOGGING_APP_ID: str = "REPLACE_ME" From 845564c5597df055e25b6c97043d8d22849ed9dc Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Mon, 1 May 2023 13:33:54 -0700 Subject: [PATCH 15/70] Adds options helper function for DTE, updates SDK trail map to not use yFinance. (#4937) * adds options helper function for DTE * removes logging decorator * More decorators --------- Co-authored-by: James Maslek --- .../sdk/controllers/stocks_sdk_controller.py | 2 +- .../core/sdk/models/stocks_sdk_model.py | 4 ++-- openbb_terminal/core/sdk/sdk_init.py | 1 + openbb_terminal/core/sdk/trail_map.csv | 2 +- openbb_terminal/stocks/options/op_helpers.py | 19 ++++++++++++++++--- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py index 6153e6da712f..e59f1e8dfdb8 100644 --- a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py +++ b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py @@ -260,7 +260,7 @@ def options(self): Attributes: `chains`: Get Option Chain For A Stock. No greek data is returned\n - `dte`: Gets days to expiration from yfinance option date\n + `dte`: Returns a new column containing the DTE as an integer, including 0.\n `eodchain`: Get full EOD option date across all expirations\n `expirations`: Get Option Chain Expirations\n `generate_data`: Gets x values, and y values before and after premiums\n diff --git a/openbb_terminal/core/sdk/models/stocks_sdk_model.py b/openbb_terminal/core/sdk/models/stocks_sdk_model.py index e1fe2fee3767..54c967b6918c 100644 --- a/openbb_terminal/core/sdk/models/stocks_sdk_model.py +++ b/openbb_terminal/core/sdk/models/stocks_sdk_model.py @@ -449,7 +449,7 @@ class StocksOptions(Category): Attributes: `chains`: Get Option Chain For A Stock. No greek data is returned\n - `dte`: Gets days to expiration from yfinance option date\n + `dte`: Returns a new column containing the DTE as an integer, including 0.\n `eodchain`: Get full EOD option date across all expirations\n `expirations`: Get Option Chain Expirations\n `generate_data`: Gets x values, and y values before and after premiums\n @@ -477,7 +477,7 @@ class StocksOptions(Category): def __init__(self): super().__init__() self.chains = lib.stocks_options_sdk_helper.get_full_option_chain - self.dte = lib.stocks_options_yfinance_model.get_dte + self.dte = lib.stocks_options_helpers.get_dte self.eodchain = lib.stocks_options_intrinio_model.get_full_chain_eod self.expirations = lib.stocks_options_sdk_helper.get_option_expirations self.generate_data = lib.stocks_options_yfinance_model.generate_data diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py index 2fff36da3312..97e14106038f 100644 --- a/openbb_terminal/core/sdk/sdk_init.py +++ b/openbb_terminal/core/sdk/sdk_init.py @@ -472,6 +472,7 @@ intrinio_model as stocks_options_intrinio_model, intrinio_view as stocks_options_intrinio_view, nasdaq_model as stocks_options_nasdaq_model, + op_helpers as stocks_options_helpers, options_sdk_helper as stocks_options_sdk_helper, options_view as stocks_options_view, tradier_model as stocks_options_tradier_model, diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index d1eeeba203e8..4a312a04d245 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -503,7 +503,7 @@ stocks.ins.stats,stocks_insider_sdk_helper.stats, stocks.load,stocks_helper.load, stocks.news,common_ultima_newsmonitor_model.get_news, stocks.options.chains,stocks_options_sdk_helper.get_full_option_chain, -stocks.options.dte,stocks_options_yfinance_model.get_dte, +stocks.options.dte,stocks_options_helpers.get_dte, stocks.options.eodchain,stocks_options_intrinio_model.get_full_chain_eod, stocks.options.expirations,stocks_options_sdk_helper.get_option_expirations, stocks.options.generate_data,stocks_options_yfinance_model.generate_data, diff --git a/openbb_terminal/stocks/options/op_helpers.py b/openbb_terminal/stocks/options/op_helpers.py index 9b8a1dbb175d..55b205d74739 100644 --- a/openbb_terminal/stocks/options/op_helpers.py +++ b/openbb_terminal/stocks/options/op_helpers.py @@ -19,7 +19,6 @@ # pylint: disable=too-many-arguments -@log_start_end(log=logger) def get_strikes( min_sp: float, max_sp: float, current_price: float ) -> Tuple[float, float]: @@ -58,7 +57,6 @@ def get_loss_at_strike(strike: float, chain: pd.DataFrame) -> float: return loss -@log_start_end(log=logger) def calculate_max_pain(chain: pd.DataFrame) -> Union[int, float]: """Returns the max pain for a given call/put dataframe @@ -104,7 +102,6 @@ def convert(orig: str, to: str) -> float: raise ValueError("Invalid to format, please use '%' or ','.") -@log_start_end(log=logger) def rn_payoff(x: str, df: pd.DataFrame, put: bool, delta: int, rf: float) -> float: """The risk neutral payoff for a stock Parameters @@ -594,3 +591,19 @@ def Vomma(self, change): * norm.pdf(self.d1) / self._sigma ) + + +def get_dte(chain: pd.DataFrame) -> pd.DataFrame: + """ + Returns a new column containing the DTE as an integer, including 0. + Requires the chain to have the column labeled as, expiration. + """ + if "expiration" not in chain.columns: + raise ValueError("No column labeled 'expiration' was found.") + + now = datetime.now() + temp = pd.DatetimeIndex(chain.expiration) + temp_ = (temp - now).days + 1 + chain["dte"] = temp_ + + return chain From 5e92dbe636911408033104eb60cfba49050fba6a Mon Sep 17 00:00:00 2001 From: northern-64bit <75195383+northern-64bit@users.noreply.github.com> Date: Mon, 1 May 2023 22:41:23 +0200 Subject: [PATCH 16/70] Fix error in the SDK portfolio intro documentation (#4945) --- website/content/sdk/usage/intros/portfolio/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/sdk/usage/intros/portfolio/index.md b/website/content/sdk/usage/intros/portfolio/index.md index f07493b8663a..75dc74e75e87 100644 --- a/website/content/sdk/usage/intros/portfolio/index.md +++ b/website/content/sdk/usage/intros/portfolio/index.md @@ -71,7 +71,7 @@ Note that the Excel sheet requires the following columns: country, sector or industry. -This is also illustrated int the table beThe table below illustrates the required column titles: +The table below illustrates the required column titles: | Date | Type | Ticker | Side | Price | Quantity | Fees | Investment | Currency | Sector | Industry | Country | Region | |:-----------|:-------|:---------|:-------|--------:|-----------:|-------:|-------------:|:-----------|:-----------------------|:-------------------------------|:--------------|:--------------| From 6a4b7065e76a04ba65dab321750f76c59a836c30 Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Mon, 1 May 2023 13:51:22 -0700 Subject: [PATCH 17/70] Hotfix/docs Updates Terminal Intro for Options, Creates Terminal Intro for Mutual Funds (#4917) * updates Terminal Intro Guide for Equity Options * adds the images. * grammar * makes changes * adds Terminal Intro Guide for Mutual Funds * adds screenshots to mutual funds intro * html correction * Translate Swedish description into English for Codespell * remove unusual options table * updates some links in Terminal FAQ --- .../terminal/faqs/general_operation.md | 20 +- .../terminal/usage/intros/mutualfunds.md | 129 ++++++ .../usage/intros/stocks/options/index.md | 367 ++++++------------ .../usage/intros/stocks/options/pricing.md | 60 --- 4 files changed, 261 insertions(+), 315 deletions(-) create mode 100644 website/content/terminal/usage/intros/mutualfunds.md delete mode 100644 website/content/terminal/usage/intros/stocks/options/pricing.md diff --git a/website/content/terminal/faqs/general_operation.md b/website/content/terminal/faqs/general_operation.md index 3c411363b46e..ded11219fb95 100644 --- a/website/content/terminal/faqs/general_operation.md +++ b/website/content/terminal/faqs/general_operation.md @@ -45,7 +45,7 @@ From the Windows Security menu, click on the Firewall & Network Protection tab,
Why does a specific menu or command not exist? -It could be that you are running an outdated version in which the menu or command is not yet available. Please check the [installation guide](https://my.openbb.co/app/sdk/installation) to download the most recent release. +It could be that you are running an outdated version in which the menu or command is not yet available. Please check the [installation guide](https://docs.openbb.co/terminal/installation) to download the most recent release. Do note that it is also possible that the menu or command has been deprecated. If this is oversight, please reach out to us [here](https://openbb.co/support). @@ -91,15 +91,13 @@ See the guide [here](https://docs.openbb.co/sdk/guides/intros/portfolio) for mor
How do I change the chart styles? -Place style sheets in this folder: `OpenBBUserData/styles/user` - -SDK users can refer to the documentation [here](https://docs.openbb.co/sdk/guides/advanced/chart-styling) for syntax. A sample Matplotlib configuration file can be copied from [here](https://matplotlib.org/stable/tutorials/introductory/customizing.html#the-default-matplotlibrc-file). +See the guide [here](https://docs.openbb.co/terminal/usage/guides/customizing-the-terminal#styles). The theme can be toggled between light and dark mode, directly on the individual chart. See the [Terminal Basics page](https://docs.openbb.co/terminal/usage/basics#charts) for more information on working with the charts.
Can I change the colors of the text in the Terminal? -Yes, follow the directions on this page: [https://openbb.co/products/terminal?customizeMenu=true#terminal](https://openbb.co/products/terminal?customizeMenu=true#terminal) +Yes, use the `colors` command under the `/settings` menu: [https://docs.openbb.co/terminal/usage/guides/customizing-the-terminal](https://docs.openbb.co/terminal/usage/guides/customizing-the-terminal)
@@ -125,3 +123,15 @@ rnn -d SPY ```
+ +
How do I find stocks from India, or another country? + +Use the `search` command from the `/stocks` menu. Refer to the menu's introduction guide [here](https://docs.openbb.co/terminal/usage/intros/stocks#search). + +As an example, try this: + +```console +search --country india --exchange-country india --limit 1000 +``` + +
diff --git a/website/content/terminal/usage/intros/mutualfunds.md b/website/content/terminal/usage/intros/mutualfunds.md new file mode 100644 index 000000000000..635d2a8c63c8 --- /dev/null +++ b/website/content/terminal/usage/intros/mutualfunds.md @@ -0,0 +1,129 @@ +--- +title: Mutual Funds +keywords: [mutual funds, funds, morningstar, morning star, blackrock, vanguard, countries, global, search, holdings] +description: An introduction to the Mutual Funds menu - search and analyze the global mutual funds universe by country. +--- +import HeadTitle from '@site/src/components/General/HeadTitle.tsx'; + + + +## Overview + +The Mutual Funds menu provides a global view of the mutual funds universe. Enter the menu by typing, `/funds`. + +## The Mutual Funds Menu + +Commands in the Mutual Funds menu are grouped according to the workflow. + +| Function Key | Description | +| :----------- | ------------------------------------------------------------: | +| country | Set the target country. | +| search | Search for a mutual fund within the target country. | +| load | Load a mutual fund for analysis. | +| plot | Plot the historical price performance. | +| sector | A chart of the sector weightings against the benchmark index. | +| holdings | Current holdings of the fund. | +| carbon | Carbon metrics for the fund. | +| exclusion | The fund's policy for excluding investment types. | +| alswe | Display the fund's allocation data (Sweden-only). | +| infoswe | Get fund information (Sweden only). | + +### Select a Country + +To use the menu, a country must be selected, and the default is `united_states`. To select a different one, type `country`, followed by the `spacebar`. This will bring up a list that can be picked from using the up/down arrow keys. + +![Mutual Funds Menu](https://user-images.githubusercontent.com/85772166/235046797-0541dfbf-8f2a-41a0-a70b-d6fb890aa61d.png) + +Refresh the screen, by typing `?`, to verify the choice has been made. + +![Selecting a Country](https://user-images.githubusercontent.com/85772166/235046837-4bc9ad55-a4ca-411d-a3b4-800fe2e03db1.png) + +### Search + +The most effective way to sift through a vast quantity of funds is to use the `search` function broadly, then narrow the focus using the built-in filters on the displayed table. In the example below, there are 668 results returned for `RBC` and `Canada`. Filtering for money market funds gets it down to only ten funds. + +```console +/funds/country canada/search rbc --limit 1000 +``` + +![Search Funds](https://user-images.githubusercontent.com/85772166/235046894-6cae803b-6b42-4e24-9d16-a02be06599e9.png) + +### Load + +A mutual fund is loaded by using the ID number, which is the column labeled, `SECID`, on the left side of the table. + +```console +load F0CAN05LTL +``` + +```console +The fund RBC Premium Money Market Fund A - 52.8.RBF447 (F0CAN05LTL) was successfully loaded. +``` + +## Examples + +### holdings + +With a fund loaded, get the weighting of the portfolio using the `holdings` command. + +:::note +The holdings data returned will vary by country. Some will only return the top ten, while others will publish the entire portfolio. +::: + +```console +/funds/country canada/load F00000U48G/holdings +``` + +![Holdings](https://user-images.githubusercontent.com/85772166/235046949-e4aa2a5c-149d-4733-80a2-e1a703741cd3.png) + +In contrast, the iShares Developed Real Estate Index Fund Investor A Shares, from the United States, returns 449 results. + +```console +funds/country united_states/load F00000VW8Z/holdings +``` + +![Holdings](https://user-images.githubusercontent.com/85772166/235047003-7e4e0e0f-7a72-416e-a40a-8f9d30027c35.png) + +### plot + +Plot historical performance of the fund against its benchmark index or the broad category. + +```console +/funds/country united_states/load F00000VW8Z --start 2000-01-01/plot -c both +``` + +![Plot Performance](https://user-images.githubusercontent.com/85772166/235047052-0f7cd672-534f-4a03-b6af-a5ec53ff1718.png) + +### sector + +The `sector` command displays a breakdown of sector weightings, compared against the benchmark index and broad category. + +```console +/funds/country united_states/load F00000ZAFI/sector +``` + +![Sector Breakdown](https://user-images.githubusercontent.com/85772166/235047206-01cfd8c3-d65f-4bfa-ae47-ba0869a0c38e.png) + +### infoswe + +Use the `infoswe` command when the target country is, `sweden`, and a loaded fund is issued by Avanza. + +```console +/funds/country sweden/load F00000OW3P/infoswe +``` + +**The description below has been translated into English in this documentation because of the spelling checkers working in the repository are expecting English.** + +```console +The fund Avanza 100 - SE0004841526 (F00000OW3P) was successfully loaded. + +Swedish Description: + +The fund is a mutual fund and aims to provide a positive return in the long term, taking into account the fund's risk level. The underlying funds must be cost-effective and have broad market exposure. The fund mainly invests in global, Swedish and growth market-oriented equity funds. The share exposed to shares in the fund is normally between 80 and 100 percent. + +The fund is managed by: + - Peter Stengård since 2012-10-19 + - Hampus Ernstsson since 2023-02-27 +from Avanza. +Fund currency is SEK and it the fund started 2012-10-19. It is not a index fund. The fund manages 764173863.0 SEK. The standard deviation of the fund is 13.200000000000001 and the sharpe ratio is 1.08. +``` diff --git a/website/content/terminal/usage/intros/stocks/options/index.md b/website/content/terminal/usage/intros/stocks/options/index.md index a339af6bdf07..0ba5f1ea6410 100644 --- a/website/content/terminal/usage/intros/stocks/options/index.md +++ b/website/content/terminal/usage/intros/stocks/options/index.md @@ -1,268 +1,135 @@ --- title: Options keywords: [Options, stocks, derivatives, puts, calls, oi, vol, greeks, voi, volatility, vsurf, chains, parity, binom, screen, pricing, hedge, pcr, info, hist, grhist, plot, parity, how to, example, navigation] -excerpt: This guide introduces the user to Options submenu, within the Stocks menu. +excerpt: This guide introduces the Options sub-menu, within the Stocks menu, and provides examples for use. --- -The Options menu provides the user with a comprehensive set of tools for analyzing equity options. This guide provides an overview of the menu and demonstrates commands in context. Using this menu correctly will require understanding terminology and math specific to the asset class. Wikipedia is a great resource for definitions and for learning about the mechanics of derivatives, read it here. These are complex, leveraged, financial instruments requiring specialized knoweledge and a different frame-of-mind than the approach of an equities long-only investor. Always conduct thorough due diligence.
+## Overview + +The Options menu provides the user with tools for analyzing equity options. Wikipedia is a great resource for definitions and for learning about the mechanics of derivatives, read it [here](https://en.wikipedia.org/wiki/Option_(finance)). These are complex, leveraged, financial instruments requiring specialized knowledge and a different frame-of-mind than the approach taken by an equities long-only investor. Always conduct thorough due diligence. + +### The Options Menu + +Navigate to the menu by typing `options`, from the `Stocks` menu, and then pressing enter. Alternatively, absolute path navigation can jump straight there, from anywhere. `/stocks/options`. The source for the options data can be defined using the `load` command, or a default preference can be defined using the `/sources` menu. The chains data returned will vary by source. The following sources are currently available to use: + +- YahooFinance +- Nasdaq +- Tradier (requires API key) +- Intrinio (requires API key) + +The menu can be entered without a ticker symbol loaded. If one is already loaded from the stocks menu, it will automatically fetch the chains data from the default source. The commands displayed above the currently active Ticker and Expiry do not require any data to be loaded, while the functions below do. + +| Function Key | Description | +| :----------- | ----------: | +|calc |A basic payoff diagram for a single call or put. | +|chains |Display options chains and Greeks. | +|eodchain |Gets the option chain for a ticker, on a specific date. | +|exp |Select a target expiration date. | +|greeks |Shows or recalculates the Greeks for an expiration date. | +|grhist |Plot the historical Greeks of an individual contract. | +|hedge |A calculator for weighting a position to neutralize delta. | +|hist |Historical prices of an individual contract. | +|info |Basic stats for the options chain. | +|load |Load a new ticker. | +|oi |Plot the open interest. | +|plot |Plot x vs. y as defined by the user. | +|pcr |Display historical rolling put/call ratios for a ticker over a selectable window. | +|screen |An options screener. | +|unu |Unusual options activity for S&P 500 stocks. | +|voi |Plot the volume and open interest together. | +|vol |Plot the volume. | +|vsurf |3-D volatility surface chart. | -### How to use +### Examples -Navigate to the menu by typing `options`, from the `Stocks` menu, and then pressing enter. Alternatively, absolute path navigation can jump straight there, from anywhere. `/stocks/options` +The examples here will start by entering the Options menu without a ticker symbol loaded. -image +```console +/stocks/options +``` -By default, the Terminal loads a ticker using Tradier as the source. Sign up for a free developer account and then enter that token using the `Keys menu`. Alternatively, there is a choice to use yFinance data sets by attaching the argument as shown below. Help dialogues are displayed for any command by adding `-h` to the string. It is worth noting that this load command is different than the load command elsewhere. +#### unu -```` -(🦋) /stocks/options/ $ load -h -usage: load [-t TICKER] [-h] [--source {YahooFinance,Tradier,Nasdaq,Intrinio}] +Unusual options are described as those having a very high volume/open interest ratio. This function is built using the data provided by [fdscanner.com](https://fdscanner.com). By default, the top 20 options with the highest vol/OI ratio are returned as a table. -Load a ticker into option menu +```console +unu +``` -optional arguments: - -t TICKER, --ticker TICKER - Stock ticker (default: None) - -h, --help show this help message (default: False) - --source {YahooFinance,Tradier,Nasdaq,Intrinio} - Data source to select from (default: YahooFinance) +With the new interactive tables, it may be better to remove the limit and utilize the table's built-in filtering. -For more information and examples, use 'about load' to access the related guide. -```` +```console +unu -l 500 +``` -### Examples +This returned over 500 results which can then be filtered, for example, by June/23 expirations. There were thirty-four results. + +![Unusual Options](https://user-images.githubusercontent.com/85772166/234757578-da79b032-416b-4e0a-b759-a05f651f28a2.png) + +#### load + +Let's take a look at one of these tickers, GM. The default source will be `YahooFinance`. Select a different source by attaching `--source` to the command. + +```console +load gm +``` + +:::note +**This obtains the data for all the expirations, very long chains - like SPY - may take a few moments to load.** +::: + +```console +Getting Option Chain ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00 +Loaded option chain from YahooFinance +``` + +#### pcr + +The `pcr` command plots a rolling put/call ratio (ten years max) over a selectable window of time (default is 30 days). + +```console +pcr -l 90 -s 2010-04-01 +``` -To begin, a ticker must be loaded with an expiration date selected. Enter these commands to display the list of expiration dates for AAPL options chains. - -```` -(🦋) /stocks/options/ $ load aapl - -(🦋) /stocks/options/ $ exp - - Available expiry dates -┏━━━━━━━━━━━━┳━━━━━━━━━━━━┓ -┃ Identifier ┃ Date ┃ -┡━━━━━━━━━━━━╇━━━━━━━━━━━━┩ -│ 0 │ 2022-05-20 │ -├────────────┼────────────┤ -│ 1 │ 2022-05-27 │ -├────────────┼────────────┤ -│ 2 │ 2022-06-03 │ -├────────────┼────────────┤ -│ 3 │ 2022-06-10 │ -├────────────┼────────────┤ -│ 4 │ 2022-06-17 │ -├────────────┼────────────┤ -│ 5 │ 2022-06-24 │ -├────────────┼────────────┤ -│ 6 │ 2022-07-01 │ -├────────────┼────────────┤ -│ 7 │ 2022-07-15 │ -├────────────┼────────────┤ -│ 8 │ 2022-08-19 │ -├────────────┼────────────┤ -│ 9 │ 2022-09-16 │ -├────────────┼────────────┤ -│ 10 │ 2022-10-21 │ -├────────────┼────────────┤ -│ 11 │ 2022-11-18 │ -├────────────┼────────────┤ -│ 12 │ 2022-12-16 │ -├────────────┼────────────┤ -│ 13 │ 2023-01-20 │ -├────────────┼────────────┤ -│ 14 │ 2023-03-17 │ -├────────────┼────────────┤ -│ 15 │ 2023-06-16 │ -├────────────┼────────────┤ -│ 16 │ 2023-09-15 │ -├────────────┼────────────┤ -│ 17 │ 2024-01-19 │ -├────────────┼────────────┤ -│ 18 │ 2024-06-21 │ -└────────────┴────────────┘ -```` - -Choose an expiration date with the corresponding Identifier value on the left, for example setting the expiration date to `2023-09-15` is done with the following: - -```` -(🦋) /stocks/options/ $ exp 16 -Expiration set to 2023-09-15 -```` - -The `info` command displays a table of statistics regarding the chosen option expiration date. -```` -(🦋) /stocks/options/ $ info - - Options Information -┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓ -┃ Info ┃ Value ┃ -┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩ -│ Implied Volatility │ 38.07% ( -1.48%) │ -├───────────────────────┼─────────────────────────┤ -│ Historical Volatility │ 42.90% │ -├───────────────────────┼─────────────────────────┤ -│ IV Percentile │ 95% │ -├───────────────────────┼─────────────────────────┤ -│ IV Rank │ 78.41% │ -├───────────────────────┼─────────────────────────┤ -│ IV High │ 43.37% on 04/26/22 │ -├───────────────────────┼─────────────────────────┤ -│ IV Low │ 18.80% on 06/11/21 │ -├───────────────────────┼─────────────────────────┤ -│ Put/Call Vol Ratio │ 0.81 │ -├───────────────────────┼─────────────────────────┤ -│ Today's Volume │ 2,045,793 │ -├───────────────────────┼─────────────────────────┤ -│ Volume Avg (30-Day) │ 1,293,501 │ -├───────────────────────┼─────────────────────────┤ -│ Put/Call OI Ratio │ 0.88 │ -├───────────────────────┼─────────────────────────┤ -│ Today's Open Interest │ 8,226,541 │ -├───────────────────────┼─────────────────────────┤ -│ Open Int (30-Day) │ 7,576,733 │ -└───────────────────────┴─────────────────────────┘ -```` -An adjustable-period put/call ratio chart is called according to the timeline selected by the user. - -```` -(🦋) /stocks/options/ $ pcr 180 -```` -![180 day window for put/call ratio](https://user-images.githubusercontent.com/85772166/172721035-2c1b3191-430a-4bb4-86be-f932abb87215.png) - -The chain's open interest and current volume can be visualized with the `voi` command: - -```` -(🦋) /stocks/options/ $ voi -```` - -![Volume & Open Interest](https://user-images.githubusercontent.com/85772166/172721788-cc801a19-9625-4180-b948-46d4a51da343.png) - -The `chains` command will display pricing, volume, open interest, and greeks data as a snapshot. Here, a maximum strike price of 175 is selected. +![GM 90-Day P/C Ratio](https://user-images.githubusercontent.com/85772166/234757627-8250700b-1586-4535-948e-33d6ff18c4a2.png) +Adding in an overlay from an exported CSV file adds more context to the story. + +```console +/stocks/load GM --start 2013-04-01 --monthly --export gm_monthly.csv ``` -(🦋) /stocks/options/ $ chains -M 175 - - Yahoo Option Chain (15 min delayed) for 2024-06-21 (Greeks calculated by OpenBB) -┏━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ -┃ Strike ┃ Price ┃ Bid Call ┃ Ask Call ┃ Volume ┃ Interest ┃ Volatil… ┃ Delta ┃ Gamma ┃ Theta ┃ Price ┃ Bid Put ┃ Ask Put ┃ Volume ┃ Interest ┃ Volatili… ┃ Delta ┃ Gamma Put ┃ Theta ┃ -┃ ┃ Call ┃ ┃ ┃ Call ┃ Call ┃ Call ┃ Call ┃ Call ┃ Call ┃ Put ┃ ┃ ┃ Put ┃ Put ┃ Put ┃ Put ┃ ┃ Put ┃ -┡━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ -│ 115.00 │ 49.35 │ 50.05 │ 50.95 │ 1 │ 1022 │ 0.47009… │ 1.0 │ 1.61407… │ -0.00945… │ 8.43 │ 7.9 │ 8.7 │ 3.0 │ 3235.0 │ 0.331976… │ 0.0 │ 2.2e-322 │ -7.5e-3… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 120.00 │ 47.1 │ 46.6 │ 47.55 │ 1 │ 1435 │ 0.45880… │ 1.0 │ 1.93929… │ -0.00986… │ 9.67 │ 9.15 │ 9.85 │ 3.0 │ 5514.0 │ 0.320929… │ 0.0 │ 1.423479… │ -4.4927… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 125.00 │ 44.75 │ 43.3 │ 44.3 │ 1 │ 806 │ 0.44867… │ 1.0 │ 2.75836… │ -0.01027… │ 11.2 │ 10.7 │ 11.25 │ 1.0 │ 2029.0 │ 0.312323… │ 0.0 │ 2.467386… │ -7.3753… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 130.00 │ 39.65 │ 40.15 │ 41.05 │ 1 │ 4410 │ 0.43720… │ 1.0 │ 5.12764… │ -0.01068… │ 12.9 │ 12.15 │ 12.8 │ 4.0 │ 5554.0 │ 0.304023… │ 0.0 │ 3.558185… │ -1.0077… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 135.00 │ 36.45 │ 37.15 │ 37.95 │ 6 │ 5523 │ 0.42670… │ 1.0 │ 7.62752… │ -0.01109… │ 14.65 │ 13.95 │ 14.45 │ 1.0 │ 3335.0 │ 0.295173… │ 0.0 │ 6.454222… │ -1.7229… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 140.00 │ 33.75 │ 34.25 │ 35.0 │ 2 │ 3779 │ 0.41705… │ 0.999999… │ 3.84130… │ -0.01150… │ 15.9 │ 15.65 │ 16.3 │ 33.0 │ 7545.0 │ 0.287085… │ 0.0 │ 2.688352… │ -6.7879… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 145.00 │ 31.0 │ 31.45 │ 32.35 │ 12 │ 2869 │ 0.41022… │ 0.999885… │ 0.00035… │ -0.01375… │ 18.05 │ 17.7 │ 18.35 │ 26.0 │ 4960.0 │ 0.279639… │ -3.3249… │ 2.152284… │ -5.1540… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 150.00 │ 29.2 │ 28.9 │ 29.7 │ 22 │ 15214 │ 0.40189… │ 0.367976… │ 0.30451… │ -1.51185… │ 20.52 │ 19.95 │ 20.6 │ 4.0 │ 4687.0 │ 0.272620… │ -0.6916… │ 0.419246… │ -0.9464… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 155.00 │ 26.03 │ 26.45 │ 27.15 │ 1 │ 2860 │ 0.39346… │ 5.613864… │ 2.13140… │ -0.00010… │ 23.45 │ 22.15 │ 22.95 │ 3.0 │ 1934.0 │ 0.264625… │ -0.9999… │ 2.627570… │ 0.01273… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 160.00 │ 24.0 │ 24.2 │ 24.75 │ 65 │ 5716 │ 0.38562… │ 1.123975… │ 8.13455… │ -3.70871… │ 25.3 │ 24.75 │ 25.4 │ 27.0 │ 5716.0 │ 0.255592… │ -1.0 │ 1.377216… │ 0.01315… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 165.00 │ 21.67 │ 21.9 │ 22.6 │ 61 │ 3091 │ 0.37961… │ 1.947764… │ 2.10427… │ -9.29595… │ 28.85 │ 27.45 │ 28.0 │ 9.0 │ 2460.0 │ 0.246040… │ -1.0 │ 1.795921… │ 0.01356… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 170.00 │ 19.7 │ 20.0 │ 20.7 │ 67 │ 6149 │ 0.37543… │ 7.562013… │ 1.08657… │ -4.69467… │ 30.75 │ 30.4 │ 31.0 │ 69.0 │ 2698.0 │ 0.239265… │ -1.0 │ 1.560715… │ 0.01397… │ -├────────┼───────────┼──────────┼──────────┼───────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┼─────────┼─────────┼───────────┼──────────┼───────────┼──────────┼───────────┼──────────┤ -│ 175.00 │ 19.0 │ 17.85 │ 18.6 │ 21 │ 7927 │ 0.36707… │ 4.383630… │ 8.07112… │ -3.33350… │ 33.85 │ 33.45 │ 34.15 │ 42.0 │ 2940.0 │ 0.231849… │ -1.0 │ 9.418782… │ 0.01438… │ -└────────┴───────────┴──────────┴──────────┴───────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┴─────────┴─────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┘ + +![GM 90-Day P/C Ratio Against Share Price](https://user-images.githubusercontent.com/85772166/234757705-0bc63a89-0cb8-4d32-a403-2a8aa7b0337a.png) + +#### exp + +After loading, select an expiration date for the chain using the `exp` command. To display the list of available expirations, use the function with no arguments. The date can be selected by entering a number - with `0` being the nearest expiry - or by entering the date, formatted as `YYYY-MM-DD`. + +```console +exp 2023-06-02 ``` -Additional Greeks are accessible through the command, `greeks`. Here the minimum and maximum strike price is defined. - -```` -(🦋) /stocks/options/ $ greeks -m 135 -M 160 - - Greeks -┏━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┓ -┃ Strike ┃ Implied Vol ┃ Delta ┃ Gamma ┃ Vega ┃ Theta ┃ -┡━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━┩ -│ 135.0 │ 0.4286 │ 1.000000 │ 0.000000 │ 0.000000 │ -0.010815 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┤ -│ 140.0 │ 0.4211 │ 1.000000 │ 0.000000 │ 0.000000 │ -0.011215 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┤ -│ 145.0 │ 0.4100 │ 0.999900 │ 0.000315 │ 0.000012 │ -0.013239 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┤ -│ 150.0 │ 0.4016 │ 0.373409 │ 0.307522 │ 0.011610 │ -1.525272 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┤ -│ 155.0 │ 0.3953 │ 0.000006 │ 0.000023 │ 0.000001 │ -0.000110 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┤ -│ 160.0 │ 0.3847 │ 0.000000 │ 0.000000 │ 0.000000 │ -0.000000 │ -└────────┴─────────────┴──────────┴──────────┴──────────┴───────────┘ -```` - -See the effects of monetary policy by adjusting for the risk-free rate of return, and factor in dividend payments. - -```` -(🦋) /stocks/options/ $ greeks -d 0.67 -r 1 -m 140 -M 170 -a - - Greeks -┏━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓ -┃ Strike ┃ Implied Vol ┃ Delta ┃ Gamma ┃ Vega ┃ Theta ┃ Rho ┃ Phi ┃ Charm ┃ Vanna ┃ Vomma ┃ -┡━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━┩ -│ 140.0 │ 0.4214 │ 0.999720 │ 0.000000 │ 0.000000 │ -0.108943 │ 0.000585 │ -0.000625 │ 0.001835 │ -0.000000 │ -0.000000 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┼──────────┼───────────┼───────────┼───────────┼───────────┤ -│ 145.0 │ 0.4096 │ 0.999620 │ 0.000317 │ 0.000012 │ -0.124250 │ 0.000606 │ -0.000625 │ 0.006614 │ -0.000036 │ -0.000036 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┼──────────┼───────────┼───────────┼───────────┼───────────┤ -│ 150.0 │ 0.4019 │ 0.368105 │ 0.306648 │ 0.011523 │ -1.566906 │ 0.000229 │ -0.000230 │ -0.466694 │ 0.003233 │ 0.003233 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┼──────────┼───────────┼───────────┼───────────┼───────────┤ -│ 155.0 │ 0.3955 │ 0.000005 │ 0.000021 │ 0.000001 │ -0.000101 │ 0.000000 │ -0.000000 │ -0.000368 │ 0.000003 │ 0.000003 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┼──────────┼───────────┼───────────┼───────────┼───────────┤ -│ 160.0 │ 0.3850 │ 0.000000 │ 0.000000 │ 0.000000 │ -0.000000 │ 0.000000 │ -0.000000 │ -0.000000 │ 0.000000 │ 0.000000 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┼──────────┼───────────┼───────────┼───────────┼───────────┤ -│ 165.0 │ 0.3796 │ 0.000000 │ 0.000000 │ 0.000000 │ -0.000000 │ 0.000000 │ -0.000000 │ -0.000000 │ 0.000000 │ 0.000000 │ -├────────┼─────────────┼──────────┼──────────┼──────────┼───────────┼──────────┼───────────┼───────────┼───────────┼───────────┤ -│ 170.0 │ 0.3708 │ 0.000000 │ 0.000000 │ 0.000000 │ -0.000000 │ 0.000000 │ -0.000000 │ -0.000000 │ 0.000000 │ 0.000000 │ -└────────┴─────────────┴──────────┴──────────┴──────────┴───────────┴──────────┴───────────┴───────────┴───────────┴───────────┘ -```` - -The `binom` command will calculate options values using binomial pricing models. Display a probabilities distribution chart using the optional argument `--plot` - -```` -(🦋) /stocks/options/ $ binom --plot -```` - -![Probabilities distribution using binomial pricing, for AAPL options expiring Sep/23](https://user-images.githubusercontent.com/85772166/172722694-9a4b782e-9ec5-4b47-a31a-e5b9dd04eeba.png) - -Visualize the volume of puts and calls in a chain with `vol` -```` -(🦋) /stocks/options/ $ vol -m 0 -M 250 -```` -![Puts and calls volume for AAPL 09/23 expiration](https://user-images.githubusercontent.com/85772166/172722818-1cdf1d8c-2a8a-4ede-a455-041b3066dcb3.png) - -Plot the open interest in a similar fashion with `oi` -```` -(🦋) /stocks/options/ $ oi -```` -![Open interest for AAPL expiring 2023-09-15](https://user-images.githubusercontent.com/85772166/172722959-edab3c32-a3f3-47db-80be-a33e382ddd9a.png) - -Historical OHLC pricing for individual contracts can be viewed with `hist` -```` -(🦋) /stocks/options/ $ hist -p -s 70 -```` -![Price history for AAPL $70 put expiring 2023-09-15](https://user-images.githubusercontent.com/85772166/172723074-cd013225-9fc9-4eeb-adeb-ccc8a99f661a.png) - -Plot the hisotorical greek data with, `grhist` -```` -(🦋) /stocks/options/ $ grhist -s 70 -p -g rho -```` -![Historical Rho for $70 09/23 AAPL Put](https://user-images.githubusercontent.com/85772166/172723243-71b7e323-c3c4-4c7e-a463-f56d916a87fe.png) - -`plot` gives the user flexibility to chart different variables. -```` -(🦋) /stocks/options/ $ plot -p -x ltd -y s -```` -![Stike vs Last Trade Date for Apple puts expiring Sep/23](https://user-images.githubusercontent.com/85772166/172723361-e57c656a-2202-4822-abc0-080c5f99d3e4.png) - -Show the volatility surface of the entire chain using the command, `vsurf` -```` -(🦋) /stocks/options/ $ vsurf -```` -![Volatility surface of QQQ](https://user-images.githubusercontent.com/85772166/172723670-f1e3bc37-2655-4414-b0cb-3e173b48825d.png) +```console +Expiration set to 2023-06-02 +``` + +#### plot + +Use the `plot` function to draw the volatility smile for the selected expiration date. + +```console +plot -c smile +``` + +![Volatility Smile](https://user-images.githubusercontent.com/85772166/234757758-537ada39-cf47-49e3-a861-b97c4b7a9919.png) + +#### greeks + +Calculate the second order Greeks - Rho, Phi, Charm, Vanna, Vomma - with the `greeks` command. + +```console +greeks --risk-free 4.8 --all +``` + +![Greeks Command](https://user-images.githubusercontent.com/85772166/234757813-c6a7b04f-3a20-4c7b-841b-1cd3fec7c088.png) + +![Second Order Greeks](https://user-images.githubusercontent.com/85772166/234757864-749ff78e-00c3-465a-b1b1-f4d0d2991c84.png) diff --git a/website/content/terminal/usage/intros/stocks/options/pricing.md b/website/content/terminal/usage/intros/stocks/options/pricing.md deleted file mode 100644 index 00d88ee6d5fa..000000000000 --- a/website/content/terminal/usage/intros/stocks/options/pricing.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Options Pricing -keywords: [Options, stocks, derivatives, puts, calls, oi, vol, greeks, hedge, gamme, delta, theta, rho, vanna, vomma, phi, charm, iv, volatility, implied, realized, price, last, bid, ask, expiry, expiration, chains, chain, put, call, how to, example, pricing] -description: This guide introduces the user to the Options Pricing submenu, within the Options menu. ---- - -This set of features is for composing hypothetical outcomes through user-defined inputs. There are two columns of inputs: the price for the underlying at the close on expiration and the statistical probability of the outcome. - -The Pricing submenu is accessible after selecting anexpiration date for the options chain. Type, `pricing`, and press enter for access. - -image - -## How to use - -Use the `add` command to build the list, and use the `rmv` command to take away any entries. `show` will print a table of the inputs. Multiple price points can be added, assuming that probability always sums at 100%. - -``` -(🦋) /stocks/options/pricing/ $ add -p 125 -c 1 - - -(🦋) /stocks/options/pricing/ $ show - -Estimated price(s) of MSFT at 2023-02-17 -┏━━━━━━━━┳━━━━━━━━┓ -┃ Price ┃ Chance ┃ -┡━━━━━━━━╇━━━━━━━━┩ -│ 125.00 │ 1.00 │ -└────────┴────────┘ -``` - -## Examples - -Adding the optional argument, `-p`, will calculate the puts in the chain. - -``` -(🦋) /stocks/options/pricing/ $ rnval -p -m 70 -M 150 -r 1.25 - - Risk Neutral Values -┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━┓ -┃ Strike ┃ Last Price ┃ Value ┃ Difference ┃ -┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━┩ -│ 110.00 │ 0.02 │ 0.00 │ 0.02 │ -├────────┼────────────┼───────┼────────────┤ -│ 115.00 │ 0.01 │ 0.00 │ 0.01 │ -├────────┼────────────┼───────┼────────────┤ -│ 120.00 │ 0.01 │ 0.00 │ 0.01 │ -├────────┼────────────┼───────┼────────────┤ -│ 125.00 │ 0.02 │ 0.00 │ 0.02 │ -├────────┼────────────┼───────┼────────────┤ -│ 130.00 │ 0.01 │ 4.98 │ -4.97 │ -├────────┼────────────┼───────┼────────────┤ -│ 135.00 │ 0.01 │ 9.96 │ -9.95 │ -├────────┼────────────┼───────┼────────────┤ -│ 140.00 │ 0.01 │ 14.93 │ -14.92 │ -├────────┼────────────┼───────┼────────────┤ -│ 145.00 │ 0.01 │ 19.91 │ -19.90 │ -├────────┼────────────┼───────┼────────────┤ -│ 150.00 │ 0.01 │ 24.89 │ -24.88 │ -└────────┴────────────┴───────┴────────────┘ -``` From 7a194249cf5f31d621fc60a5c4cb0a2b2f6d69e9 Mon Sep 17 00:00:00 2001 From: northern-64bit <75195383+northern-64bit@users.noreply.github.com> Date: Tue, 2 May 2023 03:29:25 +0200 Subject: [PATCH 18/70] Fix `--std` argument in bbands command (#4866) * Fix type check of std argument in bbands * Fix std input handling * Fix chart legend * Fix linting * Fix int display in legend --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> --- .../core/plots/plotly_ta/plugins/volatility_plugin.py | 7 +++---- openbb_terminal/helper_funcs.py | 2 +- openbb_terminal/stocks/technical_analysis/ta_controller.py | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py b/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py index f010b156e27e..f2d37e9c98f0 100644 --- a/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py +++ b/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py @@ -84,11 +84,10 @@ def plot_bbands(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int secondary_y=self.show_volume, ) bbands_text = ( - columns_regex(df_ta, "BBL")[0] - .replace("BBL_", "BB") - .replace("_", ",") - .split(".")[0] + columns_regex(df_ta, "BBL")[0].replace("BBL_", "BB").replace("_", ",") ) + if float(bbands_text.split(",")[1]) % 1 == 0: + bbands_text = bbands_text.split(".")[0] fig.add_annotation( xref="paper", yref="paper", diff --git a/openbb_terminal/helper_funcs.py b/openbb_terminal/helper_funcs.py index a4eee4f0ab00..925c5eed0102 100644 --- a/openbb_terminal/helper_funcs.py +++ b/openbb_terminal/helper_funcs.py @@ -612,7 +612,7 @@ def check_indicator_parameters(args: str, _help: bool = False) -> str: def check_positive_float(value) -> float: - """Argparse type to check positive int.""" + """Argparse type to check positive float.""" new_value = float(value) if new_value <= 0: log_and_raise( diff --git a/openbb_terminal/stocks/technical_analysis/ta_controller.py b/openbb_terminal/stocks/technical_analysis/ta_controller.py index b09dc5150eda..7e24ce6a1819 100644 --- a/openbb_terminal/stocks/technical_analysis/ta_controller.py +++ b/openbb_terminal/stocks/technical_analysis/ta_controller.py @@ -30,6 +30,7 @@ EXPORT_ONLY_RAW_DATA_ALLOWED, check_indicator_parameters, check_positive, + check_positive_float, check_positive_list, valid_date, ) @@ -1159,7 +1160,7 @@ def call_bbands(self, other_args: List[str]): "--std", action="store", dest="n_std", - type=check_positive, + type=check_positive_float, default=2, help="std", ) From 3c41eb6830c81f78872714199848f7e43dc550cb Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Tue, 2 May 2023 08:28:21 -0700 Subject: [PATCH 19/70] Enhances `stocks/quote` to allow for multiple tickers (#4928) * enhances stocks/quote to allow for multiple tickers * fix for MyPy type error * fix pylint * formats index string as title * adds test for multi-ticker quote and for bad tickers * adds integration test for multi-ticker quote * updates docstrings and adds 'openbb.stocks.quote_chart' to SDK * updates syntax in equity report for quote_data * ruff * gets rid of empty lines that got created. * adds logic to handle input as string when not a list * re-records tests * decorators --- .../sdk/controllers/stocks_sdk_controller.py | 1 + .../core/sdk/models/stocks_sdk_model.py | 2 + openbb_terminal/core/sdk/sdk_helpers.py | 50 +---------- openbb_terminal/core/sdk/sdk_init.py | 2 - openbb_terminal/core/sdk/trail_map.csv | 2 +- .../stocks/test_stocks.openbb | 1 + .../reports/templates/equity.ipynb | 2 +- openbb_terminal/sdk.py | 3 +- openbb_terminal/stocks/stocks_controller.py | 6 +- openbb_terminal/stocks/stocks_model.py | 62 ++++++++----- openbb_terminal/stocks/stocks_view.py | 27 ++++-- .../test_stocks_helper/test_multi_quote.yaml | 90 +++++++++++++++++++ .../test_stocks_helper/test_quote.yaml | 22 ++--- .../test_quote_bad_ticker.yaml | 74 +++++++++++++++ .../test_load[60-YahooFinance].csv | 30 +++---- .../stocks/test_stocks_helper.py | 12 ++- .../test_stocks_helper/test_multi_quote.txt | 22 +++++ .../txt/test_stocks_helper/test_quote.txt | 22 +++++ .../test_quote_bad_ticker.txt | 22 +++++ 19 files changed, 341 insertions(+), 111 deletions(-) create mode 100644 tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_multi_quote.yaml create mode 100644 tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote_bad_ticker.yaml create mode 100644 tests/openbb_terminal/stocks/txt/test_stocks_helper/test_multi_quote.txt create mode 100644 tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote.txt create mode 100644 tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote_bad_ticker.txt diff --git a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py index e59f1e8dfdb8..ca9df5489831 100644 --- a/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py +++ b/openbb_terminal/core/sdk/controllers/stocks_sdk_controller.py @@ -27,6 +27,7 @@ class StocksController(model.StocksRoot): `news`: Get news for a given term and source. [Source: Ultima Insights News Monitor]\n `process_candle`: Process DataFrame into candle style plot.\n `quote`: Gets ticker quote from FMP\n + `quote_chart`: Financial Modeling Prep ticker(s) quote.\n `search`: Search selected query for tickers.\n `tob`: Get top of book bid and ask for ticker on exchange [CBOE.com]\n """ diff --git a/openbb_terminal/core/sdk/models/stocks_sdk_model.py b/openbb_terminal/core/sdk/models/stocks_sdk_model.py index 54c967b6918c..0ae58032c5f3 100644 --- a/openbb_terminal/core/sdk/models/stocks_sdk_model.py +++ b/openbb_terminal/core/sdk/models/stocks_sdk_model.py @@ -14,6 +14,7 @@ class StocksRoot(Category): `news`: Get news for a given term and source. [Source: Ultima Insights News Monitor]\n `process_candle`: Process DataFrame into candle style plot.\n `quote`: Gets ticker quote from FMP\n + `quote_chart`: Financial Modeling Prep ticker(s) quote.\n `search`: Search selected query for tickers.\n `tob`: Get top of book bid and ask for ticker on exchange [CBOE.com]\n """ @@ -27,6 +28,7 @@ def __init__(self): self.news = lib.common_ultima_newsmonitor_model.get_news self.process_candle = lib.stocks_helper.process_candle self.quote = lib.stocks_model.get_quote + self.quote_chart = lib.stocks_view.display_quote self.search = lib.stocks_helper.search self.tob = lib.stocks_cboe_model.get_top_of_book diff --git a/openbb_terminal/core/sdk/sdk_helpers.py b/openbb_terminal/core/sdk/sdk_helpers.py index 8587c6a81177..85bcc78c7a67 100644 --- a/openbb_terminal/core/sdk/sdk_helpers.py +++ b/openbb_terminal/core/sdk/sdk_helpers.py @@ -147,9 +147,7 @@ def __repr__(self): def __getattribute__(self, name: str): """We override the __getattribute__ method and wrap all callable - attributes with a wrapper that logs the call and the result. - """ attr = super().__getattribute__(name) @@ -258,39 +256,21 @@ def __log_method_info( @staticmethod def __merge_function_args(func: Callable, args: tuple, kwargs: dict) -> dict: """ - Merge user input args and kwargs with signature defaults into a dictionary. - - Parameters - ---------- - - - func : Callable - Function to get the args from - args : tuple - Positional args - kwargs : dict - Keyword args - - Returns - - ---------- - + ------- dict - Merged user args and signature defaults - """ import inspect # pylint: disable=C0415 @@ -316,33 +296,19 @@ def __merge_function_args(func: Callable, args: tuple, kwargs: dict) -> dict: @staticmethod def __remove_key_and_log_state(func_module: str, function_args: dict) -> dict: """ - Remove API key from the function args and log state of keys. - - Parameters - ---------- - func_module : str - Module of the function - function_args : dict - Function args - - Returns - - ---------- - + ------- dict - Function args with API key removed - """ if func_module == "openbb_terminal.keys_model": @@ -435,16 +401,12 @@ def get_sdk_imports_text() -> str: import logging - - import openbb_terminal.config_terminal as cfg from openbb_terminal import helper_funcs as helper # noqa: F401 from openbb_terminal.core.plots.plotly_helper import theme # noqa: F401 - - from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model import Coin from openbb_terminal.dashboards.dashboards_controller import DashboardsController @@ -455,16 +417,12 @@ def get_sdk_imports_text() -> str: from openbb_terminal.reports.reports_controller import ReportController - - import openbb_terminal.core.sdk.sdk_init as lib from openbb_terminal.core.sdk import ( - controllers as ctrl, models as model, - ) from openbb_terminal.core.session.current_system import get_current_system @@ -473,12 +431,8 @@ def get_sdk_imports_text() -> str: from openbb_terminal.terminal_helper import is_auth_enabled - - cfg.setup_config_terminal(is_sdk=True) - - logger = logging.getLogger(__name__) cfg.theme.applyMPLstyle() diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py index 97e14106038f..b03ab34ff3e0 100644 --- a/openbb_terminal/core/sdk/sdk_init.py +++ b/openbb_terminal/core/sdk/sdk_init.py @@ -2,7 +2,6 @@ # noqa: F401 - # Session from openbb_terminal.core.session import sdk_session @@ -581,7 +580,6 @@ from openbb_terminal.portfolio import portfolio_model, portfolio_view - try: # pylint: disable=W0611 # noqa: F401 # pyright: reportMissingImports=false diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index 4a312a04d245..477bcfbb544a 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -526,7 +526,7 @@ stocks.qa.beta,stocks_qa_beta_model.beta_model,stocks_qa_beta_view.beta_view stocks.qa.capm,stocks_qa_factors_model.capm_information, stocks.qa.fama_raw,stocks_qa_factors_model.get_fama_raw, stocks.qa.historical_5,stocks_qa_factors_model.get_historical_5, -stocks.quote,stocks_model.get_quote, +stocks.quote,stocks_model.get_quote,stocks_view.display_quote stocks.screener.screener_data,stocks_screener_finviz_model.get_screener_data,stocks_screener_finviz_view.screener stocks.search,stocks_helper.search, stocks.ta.recom,stocks_ta_tradingview_model.get_tradingview_recommendation,stocks_ta_tradingview_view.print_recommendation diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb index 714286bbfdf3..20a59d4adc61 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/stocks/test_stocks.openbb @@ -3,6 +3,7 @@ search -c United States -s Consumer Cyclical -i Specialty Retail -e USA -l 5 load ${ticker=aapl} -i 5 load ${ticker=aapl} -s 2022-10-01 quote +quote --ticker AAPL,MSFT,GOOG,META,AMZN,NFLX tob tob -e EDGX candle diff --git a/openbb_terminal/reports/templates/equity.ipynb b/openbb_terminal/reports/templates/equity.ipynb index ec53d2cbd8b4..b2992ffe43fa 100644 --- a/openbb_terminal/reports/templates/equity.ipynb +++ b/openbb_terminal/reports/templates/equity.ipynb @@ -222,7 +222,7 @@ "metadata": {}, "outputs": [], "source": [ - "quote_data = openbb.stocks.quote(symbol)\n", + "quote_data = openbb.stocks.quote([symbol])\n", "quote_data" ] }, diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index c074ac350e07..e47632c4b176 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -36,7 +36,7 @@ class OpenBBSDK: Attributes: `login`: Login and load user info.\n `logout`: Logout and clear session.\n - `news`: Get news for a given term and source. [Source: Ultima Insights News Monitor]\n + `news`: Get news for a given term and source. [Source: Feedparser]\n `whoami`: Display user info.\n """ @@ -518,6 +518,7 @@ def stocks(self): `news`: Get news for a given term and source. [Source: Ultima Insights News Monitor]\n `process_candle`: Process DataFrame into candle style plot.\n `quote`: Gets ticker quote from FMP\n + `quote_chart`: Financial Modeling Prep ticker(s) quote.\n `search`: Search selected query for tickers.\n `tob`: Get top of book bid and ask for ticker on exchange [CBOE.com]\n """ diff --git a/openbb_terminal/stocks/stocks_controller.py b/openbb_terminal/stocks/stocks_controller.py index 6572379ccf46..f78cb1cf6a4b 100644 --- a/openbb_terminal/stocks/stocks_controller.py +++ b/openbb_terminal/stocks/stocks_controller.py @@ -332,6 +332,7 @@ def call_quote(self, other_args: List[str]): action="store", dest="s_ticker", required=False, + default=self.ticker, help=translate("stocks/QUOTE_ticker"), ) @@ -342,12 +343,13 @@ def call_quote(self, other_args: List[str]): parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED ) if ns_parser: - if ns_parser.s_ticker: + tickers = ns_parser.s_ticker.split(",") + if ns_parser.s_ticker and len(tickers) == 1: self.ticker = ns_parser.s_ticker self.custom_load_wrapper([self.ticker]) stocks_view.display_quote( - self.ticker, + tickers, ns_parser.export, " ".join(ns_parser.sheet_name) if ns_parser.sheet_name else None, ) diff --git a/openbb_terminal/stocks/stocks_model.py b/openbb_terminal/stocks/stocks_model.py index 3eb2fc81cb2e..cbf33ee8fbc5 100644 --- a/openbb_terminal/stocks/stocks_model.py +++ b/openbb_terminal/stocks/stocks_model.py @@ -286,20 +286,33 @@ def load_stock_polygon( @log_start_end(log=logger) @check_api_key(["API_KEY_FINANCIALMODELINGPREP"]) -def get_quote(symbol: str) -> pd.DataFrame: +def get_quote(symbols: list[str]) -> pd.DataFrame: """Gets ticker quote from FMP Parameters ---------- - symbol : str - Stock ticker symbol + symbols : List[str] + A list of Stock ticker symbols Returns ------- pd.DataFrame Dataframe of ticker quote + + Examples + -------- + + A single ticker must be entered as a list. + + >>> df = openbb.stocks.quote(["AAPL"]) + + Multiple tickers can be retrieved. + + >>> df = openbb.stocks.quote(["AAPL","MSFT","GOOG","NFLX","META","AMZN","NVDA"]) """ + symbol = symbols if isinstance(symbols, list) is False else ",".join(symbols) + df_fa = pd.DataFrame() try: @@ -315,25 +328,30 @@ def get_quote(symbol: str) -> pd.DataFrame: if not df_fa.empty: clean_df_index(df_fa) - df_fa.loc["Market cap"][0] = lambda_long_number_format( - df_fa.loc["Market cap"][0] - ) - df_fa.loc["Shares outstanding"][0] = lambda_long_number_format( - df_fa.loc["Shares outstanding"][0] - ) - df_fa.loc["Volume"][0] = lambda_long_number_format(df_fa.loc["Volume"][0]) - # Check if there is a valid earnings announcement - if df_fa.loc["Earnings announcement"][0]: - earning_announcement = datetime.strptime( - df_fa.loc["Earnings announcement"][0][0:19], "%Y-%m-%dT%H:%M:%S" + for c in df_fa.columns: + df_fa.loc["Market cap"][c] = lambda_long_number_format( + df_fa.loc["Market cap"][c] + ) + df_fa.loc["Shares outstanding"][c] = lambda_long_number_format( + df_fa.loc["Shares outstanding"][c] ) - df_fa.loc["Earnings announcement"][ - 0 - ] = f"{earning_announcement.date()} {earning_announcement.time()}" - # Check if there is a valid timestamp and convert it to a readable format - if "Timestamp" in df_fa.index and df_fa.loc["Timestamp"][0]: - df_fa.loc["Timestamp"][0] = datetime.fromtimestamp( - df_fa.loc["Timestamp"][0] - ).strftime("%Y-%m-%d %H:%M:%S") + df_fa.loc["Volume"][c] = lambda_long_number_format(df_fa.loc["Volume"][c]) + # Check if there is a valid earnings announcement + if df_fa.loc["Earnings announcement"][c]: + earning_announcement = datetime.strptime( + df_fa.loc["Earnings announcement"][c][0:19], "%Y-%m-%dT%H:%M:%S" + ) + df_fa.loc["Earnings announcement"][ + c + ] = f"{earning_announcement.date()} {earning_announcement.time()}" + # Check if there is a valid timestamp and convert it to a readable format + if "Timestamp" in df_fa.index and df_fa.loc["Timestamp"][c]: + df_fa.loc["Timestamp"][c] = datetime.fromtimestamp( + df_fa.loc["Timestamp"][c] + ).strftime("%Y-%m-%d %H:%M:%S") + + df_fa.columns = df_fa.loc["Symbol"][:] + df_fa = df_fa.drop("Symbol", axis=0) + df_fa.index = df_fa.index.str.title() return df_fa diff --git a/openbb_terminal/stocks/stocks_view.py b/openbb_terminal/stocks/stocks_view.py index 5e0e4af3a1f9..0a34065cde52 100644 --- a/openbb_terminal/stocks/stocks_view.py +++ b/openbb_terminal/stocks/stocks_view.py @@ -12,27 +12,40 @@ @log_start_end(log=logger) @check_api_key(["API_KEY_FINANCIALMODELINGPREP"]) -def display_quote(symbol: str, export: str = "", sheet_name: Optional[str] = None): - """Financial Modeling Prep ticker quote +def display_quote( + symbols: list[str], export: str = "", sheet_name: Optional[str] = None +): + """Financial Modeling Prep ticker(s) quote. Parameters ---------- - symbol : str - Fundamental analysis ticker symbol + symbols : list[str] + A list of ticker symbols. sheet_name: str Optionally specify the name of the sheet the data is exported to. export: str Format to export data + + Examples + -------- + This end point displays the results as an interactive table. + + >>> from openbb_terminal.sdk import openbb + >>> openbb.stocks.quote_chart(["MSFT"]) + + Multiple tickers are retrieved at once using a comma-separated list. + + >>> openbb.stocks.quote_chart(["MSFT","AAPL"]) """ - quote = stocks_model.get_quote(symbol) + quote = stocks_model.get_quote(symbols) if quote.empty: console.print("[red]Data not found[/red]\n") return print_rich_table( quote, - headers=["Value"], - title=f"{symbol.upper()} Quote", + headers=quote.columns, + title="Quote", index_name="Info", show_index=True, export=bool(export), diff --git a/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_multi_quote.yaml b/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_multi_quote.yaml new file mode 100644 index 000000000000..eb3583a2a30c --- /dev/null +++ b/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_multi_quote.yaml @@ -0,0 +1,90 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - financialmodelingprep.com + User-Agent: + - Python-urllib/3.10 + method: GET + uri: https://financialmodelingprep.com/api/v3/quote/AAPL,MSFT,AMZN,TSLA,BTCUSD?apikey=MOCK_API_KEY + response: + body: + string: "[\n {\n \"symbol\": \"AAPL\",\n \"name\": \"Apple Inc.\",\n + \ \"price\": 169.59,\n \"changesPercentage\": -0.053,\n \"change\": + -0.09,\n \"dayLow\": 168.64,\n \"dayHigh\": 170.45,\n \"yearHigh\": + 176.15,\n \"yearLow\": 124.17,\n \"marketCap\": 2683235983012,\n \"priceAvg50\": + 157.903,\n \"priceAvg200\": 150.89626,\n \"exchange\": \"NASDAQ\",\n + \ \"volume\": 47584395,\n \"avgVolume\": 61989696,\n \"open\": 169.28,\n + \ \"previousClose\": 169.68,\n \"eps\": 5.89,\n \"pe\": 28.79,\n \"earningsAnnouncement\": + \"2023-05-04T20:00:00.000+0000\",\n \"sharesOutstanding\": 15821899776,\n + \ \"timestamp\": 1682971204\n },\n {\n \"symbol\": \"MSFT\",\n \"name\": + \"Microsoft Corporation\",\n \"price\": 305.56,\n \"changesPercentage\": + -0.5533,\n \"change\": -1.7,\n \"dayLow\": 305.15,\n \"dayHigh\": + 308.6,\n \"yearHigh\": 308.93,\n \"yearLow\": 213.43,\n \"marketCap\": + 2271988260844,\n \"priceAvg50\": 272.9444,\n \"priceAvg200\": 256.1089,\n + \ \"exchange\": \"NASDAQ\",\n \"volume\": 20749354,\n \"avgVolume\": + 31388708,\n \"open\": 306.97,\n \"previousClose\": 307.26,\n \"eps\": + 9.22,\n \"pe\": 33.14,\n \"earningsAnnouncement\": \"2023-07-24T10:59:00.000+0000\",\n + \ \"sharesOutstanding\": 7435489792,\n \"timestamp\": 1682971204\n },\n + \ {\n \"symbol\": \"AMZN\",\n \"name\": \"Amazon.com, Inc.\",\n \"price\": + 102.05,\n \"changesPercentage\": -3.2243,\n \"change\": -3.4,\n \"dayLow\": + 101.82,\n \"dayHigh\": 105.23,\n \"yearHigh\": 146.57,\n \"yearLow\": + 81.43,\n \"marketCap\": 1046828886938,\n \"priceAvg50\": 98.942,\n \"priceAvg200\": + 106.82795,\n \"exchange\": \"NASDAQ\",\n \"volume\": 71685223,\n \"avgVolume\": + 64279718,\n \"open\": 104.95,\n \"previousClose\": 105.45,\n \"eps\": + -0.26,\n \"pe\": -392.5,\n \"earningsAnnouncement\": \"2023-07-26T10:59:00.000+0000\",\n + \ \"sharesOutstanding\": 10257999872,\n \"timestamp\": 1682971204\n },\n + \ {\n \"symbol\": \"TSLA\",\n \"name\": \"Tesla, Inc.\",\n \"price\": + 161.83,\n \"changesPercentage\": -1.5093,\n \"change\": -2.48,\n \"dayLow\": + 158.83,\n \"dayHigh\": 163.27,\n \"yearHigh\": 318.5,\n \"yearLow\": + 101.81,\n \"marketCap\": 512920169464,\n \"priceAvg50\": 186.3808,\n + \ \"priceAvg200\": 210.43953,\n \"exchange\": \"NASDAQ\",\n \"volume\": + 108089884,\n \"avgVolume\": 153783115,\n \"open\": 163.17,\n \"previousClose\": + 164.31,\n \"eps\": 3.48,\n \"pe\": 46.5,\n \"earningsAnnouncement\": + \"2023-07-18T20:00:00.000+0000\",\n \"sharesOutstanding\": 3169499904,\n + \ \"timestamp\": 1682971204\n },\n {\n \"symbol\": \"BTCUSD\",\n \"name\": + \"Bitcoin USD\",\n \"price\": 28009.943,\n \"changesPercentage\": -4.6604,\n + \ \"change\": -1369.1914,\n \"dayLow\": 27680.793,\n \"dayHigh\": + 29325.674,\n \"yearHigh\": 39902.95,\n \"yearLow\": 15599.047,\n \"marketCap\": + 542320281443,\n \"priceAvg50\": 28050.547,\n \"priceAvg200\": 21765.43,\n + \ \"exchange\": \"CRYPTO\",\n \"volume\": 18651375616,\n \"avgVolume\": + 23774151613,\n \"open\": 29248.242,\n \"previousClose\": 29248.242,\n + \ \"eps\": null,\n \"pe\": null,\n \"earningsAnnouncement\": null,\n + \ \"sharesOutstanding\": 19361706,\n \"timestamp\": 1682981820\n }\n]" + headers: + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Headers: + - X-Requested-With, content-type, auth-token, Authorization, stripe-signature, + APPS + Access-Control-Allow-Methods: + - GET, POST, OPTIONS + Access-Control-Allow-Origin: + - '*' + Access-Control-Max-Age: + - '3600' + Connection: + - close + Content-Length: + - '3018' + Content-Type: + - application/json; charset=utf-8 + Date: + - Mon, 01 May 2023 22:58:54 GMT + ETag: + - W/"bca-t18O6Ptklma9u9zVacTGRlZOKjg" + Server: + - nginx/1.14.0 (Ubuntu) + Vary: + - Accept-Encoding + X-Frame-Options: + - SAMEORIGIN + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote.yaml b/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote.yaml index dd4216b98415..010f2a0173f8 100644 --- a/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote.yaml +++ b/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote.yaml @@ -13,14 +13,14 @@ interactions: response: body: string: "[\n {\n \"symbol\": \"GME\",\n \"name\": \"GameStop Corp.\",\n - \ \"price\": 18.06,\n \"changesPercentage\": -3.1635,\n \"change\": - -0.59,\n \"dayLow\": 18.06,\n \"dayHigh\": 18.835,\n \"yearHigh\": - 49.8525,\n \"yearLow\": 15.41,\n \"marketCap\": 5500678391,\n \"priceAvg50\": - 19.9016,\n \"priceAvg200\": 27.140675,\n \"exchange\": \"NYSE\",\n \"volume\": - 2366114,\n \"avgVolume\": 4727827,\n \"open\": 18.54,\n \"previousClose\": - 18.65,\n \"eps\": -1.64,\n \"pe\": -11.01,\n \"earningsAnnouncement\": - \"2023-03-15T10:59:00.000+0000\",\n \"sharesOutstanding\": 304577984,\n - \ \"timestamp\": 1678222802\n }\n]" + \ \"price\": 18.55,\n \"changesPercentage\": -3.8362,\n \"change\": + -0.74,\n \"dayLow\": 18.46,\n \"dayHigh\": 19.25,\n \"yearHigh\": + 47.99,\n \"yearLow\": 15.41,\n \"marketCap\": 5651721398,\n \"priceAvg50\": + 20.2712,\n \"priceAvg200\": 25.07525,\n \"exchange\": \"NYSE\",\n \"volume\": + 2337859,\n \"avgVolume\": 4985721,\n \"open\": 19.16,\n \"previousClose\": + 19.29,\n \"eps\": -1.05,\n \"pe\": -17.67,\n \"earningsAnnouncement\": + \"2023-05-30T10:59:00.000+0000\",\n \"sharesOutstanding\": 304675008,\n + \ \"timestamp\": 1682971202\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -36,13 +36,13 @@ interactions: Connection: - close Content-Length: - - '594' + - '590' Content-Type: - application/json; charset=utf-8 Date: - - Wed, 08 Mar 2023 14:01:23 GMT + - Mon, 01 May 2023 22:58:54 GMT ETag: - - W/"252-3YV8k360rN54CWWpVAM/bjKtIxg" + - W/"24e-XRtJPSt+45Q/tN8/AO8qQev8aT8" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote_bad_ticker.yaml b/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote_bad_ticker.yaml new file mode 100644 index 000000000000..5a1d68244606 --- /dev/null +++ b/tests/openbb_terminal/stocks/cassettes/test_stocks_helper/test_quote_bad_ticker.yaml @@ -0,0 +1,74 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - financialmodelingprep.com + User-Agent: + - Python-urllib/3.10 + method: GET + uri: https://financialmodelingprep.com/api/v3/quote/F,GM,RIVN,VW,69420?apikey=MOCK_API_KEY + response: + body: + string: "[\n {\n \"symbol\": \"F\",\n \"name\": \"Ford Motor Company\",\n + \ \"price\": 12.06,\n \"changesPercentage\": 1.5152,\n \"change\": + 0.18,\n \"dayLow\": 11.99,\n \"dayHigh\": 12.29,\n \"yearHigh\": + 16.68,\n \"yearLow\": 10.61,\n \"marketCap\": 47218880379,\n \"priceAvg50\": + 12.1882,\n \"priceAvg200\": 13.11915,\n \"exchange\": \"NYSE\",\n \"volume\": + 55959087,\n \"avgVolume\": 69625791,\n \"open\": 12.005,\n \"previousClose\": + 11.88,\n \"eps\": -0.49,\n \"pe\": -24.61,\n \"earningsAnnouncement\": + \"2023-05-02T20:05:00.000+0000\",\n \"sharesOutstanding\": 3915330048,\n + \ \"timestamp\": 1682971388\n },\n {\n \"symbol\": \"GM\",\n \"name\": + \"General Motors Company\",\n \"price\": 33.48,\n \"changesPercentage\": + 1.3317,\n \"change\": 0.44,\n \"dayLow\": 33.435,\n \"dayHigh\": + 34.2796,\n \"yearHigh\": 43.63,\n \"yearLow\": 30.33,\n \"marketCap\": + 46541215457,\n \"priceAvg50\": 36.261,\n \"priceAvg200\": 37.10095,\n + \ \"exchange\": \"NYSE\",\n \"volume\": 16839357,\n \"avgVolume\": + 14667721,\n \"open\": 34,\n \"previousClose\": 33.04,\n \"eps\": + 6.53,\n \"pe\": 5.13,\n \"earningsAnnouncement\": \"2023-07-25T12:30:00.000+0000\",\n + \ \"sharesOutstanding\": 1390119936,\n \"timestamp\": 1682971202\n },\n + \ {\n \"symbol\": \"RIVN\",\n \"name\": \"Rivian Automotive, Inc.\",\n + \ \"price\": 12.65,\n \"changesPercentage\": -1.3261,\n \"change\": + -0.17,\n \"dayLow\": 12.37,\n \"dayHigh\": 12.83,\n \"yearHigh\": + 40.86,\n \"yearLow\": 11.68,\n \"marketCap\": 11628702554,\n \"priceAvg50\": + 14.7598,\n \"priceAvg200\": 25.518675,\n \"exchange\": \"NASDAQ\",\n + \ \"volume\": 12487673,\n \"avgVolume\": 29025515,\n \"open\": 12.805,\n + \ \"previousClose\": 12.82,\n \"eps\": -7.49,\n \"pe\": -1.69,\n \"earningsAnnouncement\": + \"2023-05-09T20:00:00.000+0000\",\n \"sharesOutstanding\": 919265024,\n + \ \"timestamp\": 1682971204\n }\n]" + headers: + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Headers: + - X-Requested-With, content-type, auth-token, Authorization, stripe-signature, + APPS + Access-Control-Allow-Methods: + - GET, POST, OPTIONS + Access-Control-Allow-Origin: + - '*' + Access-Control-Max-Age: + - '3600' + Connection: + - close + Content-Length: + - '1792' + Content-Type: + - application/json; charset=utf-8 + Date: + - Mon, 01 May 2023 22:58:55 GMT + ETag: + - W/"700-IpaNmdmCYQhRNNWUZgdju/Q/0zE" + Server: + - nginx/1.14.0 (Ubuntu) + Vary: + - Accept-Encoding + X-Frame-Options: + - SAMEORIGIN + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/stocks/csv/test_stocks_helper/test_load[60-YahooFinance].csv b/tests/openbb_terminal/stocks/csv/test_stocks_helper/test_load[60-YahooFinance].csv index 208168362de7..6afb728415a8 100644 --- a/tests/openbb_terminal/stocks/csv/test_stocks_helper/test_load[60-YahooFinance].csv +++ b/tests/openbb_terminal/stocks/csv/test_stocks_helper/test_load[60-YahooFinance].csv @@ -1,15 +1,15 @@ -date,Open,High,Low,Close,Adj Close,Volume -2021-12-01 09:30:00,199.39999389648438,200.10499572753906,194.8800048828125,195.67999267578125,195.67999267578125,290211 -2021-12-01 10:30:00,195.47000122070312,196.2899932861328,192.27999877929688,193.30149841308594,193.30149841308594,171312 -2021-12-01 11:30:00,193.4499969482422,193.4499969482422,190.6199951171875,190.77499389648438,190.77499389648438,116741 -2021-12-01 12:30:00,190.64999389648438,191.08999633789062,184.0,188.35000610351562,188.35000610351562,387586 -2021-12-01 13:30:00,188.3699951171875,189.0,182.3000030517578,185.83999633789062,185.83999633789062,327882 -2021-12-01 14:30:00,185.5399932861328,186.27999877929688,177.00999450683594,179.80499267578125,179.80499267578125,535512 -2021-12-01 15:30:00,179.8000030517578,183.22000122070312,178.16000366210938,179.7100067138672,179.7100067138672,471727 -2021-12-02 09:30:00,185.0,187.42999267578125,177.50010681152344,178.1199951171875,178.1199951171875,667373 -2021-12-02 10:30:00,178.1199951171875,182.5,173.07000732421875,181.5399932861328,181.5399932861328,497901 -2021-12-02 11:30:00,181.6199951171875,184.99899291992188,179.89999389648438,183.55999755859375,183.55999755859375,213772 -2021-12-02 12:30:00,184.14480590820312,184.91000366210938,179.00999450683594,179.21299743652344,179.21299743652344,223252 -2021-12-02 13:30:00,179.1300048828125,181.42269897460938,177.94000244140625,181.22000122070312,181.22000122070312,155763 -2021-12-02 14:30:00,181.33999633789062,183.35989379882812,180.25,180.92999267578125,180.92999267578125,132262 -2021-12-02 15:30:00,180.9499969482422,181.86000061035156,180.24000549316406,181.7100067138672,181.7100067138672,162508 +date,Open,High,Low,Close,Adj Close,Volume +2021-12-01 09:30:00,199.39999389648438,200.10499572753906,194.8800048828125,195.67999267578125,195.67999267578125,290211 +2021-12-01 10:30:00,195.47000122070312,196.2899932861328,192.27999877929688,193.30149841308594,193.30149841308594,171312 +2021-12-01 11:30:00,193.4499969482422,193.4499969482422,190.6199951171875,190.77499389648438,190.77499389648438,116741 +2021-12-01 12:30:00,190.64999389648438,191.08999633789062,184.0,188.35000610351562,188.35000610351562,387586 +2021-12-01 13:30:00,188.3699951171875,189.0,182.3000030517578,185.83999633789062,185.83999633789062,327882 +2021-12-01 14:30:00,185.5399932861328,186.27999877929688,177.00999450683594,179.80499267578125,179.80499267578125,535512 +2021-12-01 15:30:00,179.8000030517578,183.22000122070312,178.16000366210938,179.7100067138672,179.7100067138672,471727 +2021-12-02 09:30:00,185.0,187.42999267578125,177.50010681152344,178.1199951171875,178.1199951171875,667373 +2021-12-02 10:30:00,178.1199951171875,182.5,173.07000732421875,181.5399932861328,181.5399932861328,497901 +2021-12-02 11:30:00,181.6199951171875,184.99899291992188,179.89999389648438,183.55999755859375,183.55999755859375,213772 +2021-12-02 12:30:00,184.14480590820312,184.91000366210938,179.00999450683594,179.21299743652344,179.21299743652344,223252 +2021-12-02 13:30:00,179.1300048828125,181.42269897460938,177.94000244140625,181.22000122070312,181.22000122070312,155763 +2021-12-02 14:30:00,181.33999633789062,183.35989379882812,180.25,180.92999267578125,180.92999267578125,132262 +2021-12-02 15:30:00,180.9499969482422,181.86000061035156,180.24000549316406,181.7100067138672,181.7100067138672,162508 diff --git a/tests/openbb_terminal/stocks/test_stocks_helper.py b/tests/openbb_terminal/stocks/test_stocks_helper.py index c9b29cd5a377..44a738b8cd00 100644 --- a/tests/openbb_terminal/stocks/test_stocks_helper.py +++ b/tests/openbb_terminal/stocks/test_stocks_helper.py @@ -30,7 +30,17 @@ def vcr_config(): @pytest.mark.vcr def test_quote(): - stocks_view.display_quote("GME") + stocks_view.display_quote(["GME"]) + + +@pytest.mark.vcr +def test_multi_quote() -> None: + stocks_view.display_quote(["AAPL", "MSFT", "AMZN", "TSLA", "BTCUSD"]) + + +@pytest.mark.vcr +def test_quote_bad_ticker() -> None: + stocks_view.display_quote(["F", "GM", "RIVN", "VW", "69420"]) @pytest.mark.default_cassette("test_search") diff --git a/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_multi_quote.txt b/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_multi_quote.txt new file mode 100644 index 000000000000..28fca7a5eb96 --- /dev/null +++ b/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_multi_quote.txt @@ -0,0 +1,22 @@ +Symbol AAPL MSFT AMZN TSLA BTCUSD +Name Apple Inc. Microsoft Corporation Amazon.com, Inc. Tesla, Inc. Bitcoin USD +Price 169.59 305.56 102.05 161.83 28009.943 +Changes Percentage -0.053 -0.5533 -3.2243 -1.5093 -4.6604 +Change -0.09 -1.7 -3.4 -2.48 -1369.1914 +Day Low 168.64 305.15 101.82 158.83 27680.793 +Day High 170.45 308.6 105.23 163.27 29325.674 +Year High 176.15 308.93 146.57 318.5 39902.95 +Year Low 124.17 213.43 81.43 101.81 15599.047 +Market Cap 2.683 T 2.272 T 1.047 T 512.920 B 542.320 B +Price Avg50 157.903 272.9444 98.942 186.3808 28050.547 +Price Avg200 150.89626 256.1089 106.82795 210.43953 21765.43 +Exchange NASDAQ NASDAQ NASDAQ NASDAQ CRYPTO +Volume 47.584 M 20.749 M 71.685 M 108.090 M 18.651 B +Avg Volume 61989696 31388708 64279718 153783115 23774151613 +Open 169.28 306.97 104.95 163.17 29248.242 +Previous Close 169.68 307.26 105.45 164.31 29248.242 +Eps 5.89 9.22 -0.26 3.48 NaN +Pe 28.79 33.14 -392.5 46.5 NaN +Earnings Announcement 2023-05-04 20:00:00 2023-07-24 10:59:00 2023-07-26 10:59:00 2023-07-18 20:00:00 None +Shares Outstanding 15.822 B 7.435 B 10.258 B 3.169 B 19.362 M +Timestamp 2023-05-01 13:00:04 2023-05-01 13:00:04 2023-05-01 13:00:04 2023-05-01 13:00:04 2023-05-01 15:57:00 diff --git a/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote.txt b/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote.txt new file mode 100644 index 000000000000..60692c28d377 --- /dev/null +++ b/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote.txt @@ -0,0 +1,22 @@ +Symbol GME +Name GameStop Corp. +Price 18.55 +Changes Percentage -3.8362 +Change -0.74 +Day Low 18.46 +Day High 19.25 +Year High 47.99 +Year Low 15.41 +Market Cap 5.652 B +Price Avg50 20.2712 +Price Avg200 25.07525 +Exchange NYSE +Volume 2.338 M +Avg Volume 4985721 +Open 19.16 +Previous Close 19.29 +Eps -1.05 +Pe -17.67 +Earnings Announcement 2023-05-30 10:59:00 +Shares Outstanding 304.675 M +Timestamp 2023-05-01 13:00:02 diff --git a/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote_bad_ticker.txt b/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote_bad_ticker.txt new file mode 100644 index 000000000000..ac4c7cc136f5 --- /dev/null +++ b/tests/openbb_terminal/stocks/txt/test_stocks_helper/test_quote_bad_ticker.txt @@ -0,0 +1,22 @@ +Symbol F GM RIVN +Name Ford Motor Company General Motors Company Rivian Automotive, Inc. +Price 12.06 33.48 12.65 +Changes Percentage 1.5152 1.3317 -1.3261 +Change 0.18 0.44 -0.17 +Day Low 11.99 33.435 12.37 +Day High 12.29 34.2796 12.83 +Year High 16.68 43.63 40.86 +Year Low 10.61 30.33 11.68 +Market Cap 47.219 B 46.541 B 11.629 B +Price Avg50 12.1882 36.261 14.7598 +Price Avg200 13.11915 37.10095 25.518675 +Exchange NYSE NYSE NASDAQ +Volume 55.959 M 16.839 M 12.488 M +Avg Volume 69625791 14667721 29025515 +Open 12.005 34.0 12.805 +Previous Close 11.88 33.04 12.82 +Eps -0.49 6.53 -7.49 +Pe -24.61 5.13 -1.69 +Earnings Announcement 2023-05-02 20:05:00 2023-07-25 12:30:00 2023-05-09 20:00:00 +Shares Outstanding 3.915 B 1.390 B 919.265 M +Timestamp 2023-05-01 13:03:08 2023-05-01 13:00:02 2023-05-01 13:00:04 From d78a3648ce6dd40a5c22e6db1044aa932fae6259 Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Tue, 2 May 2023 18:35:38 +0200 Subject: [PATCH 20/70] Fix Index not showing for FMP (#4948) * Fix index * Update unit tests --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> --- .../stocks/fundamental_analysis/fmp_view.py | 12 +- ...e-display_balance_sheet-kwargs_dict4].yaml | 230 ++++++++--------- ...False-display_cash_flow-kwargs_dict5].yaml | 243 +++++++++--------- ...ay_discounted_cash_flow-kwargs_dict2].yaml | 12 +- ...alse-display_enterprise-kwargs_dict1].yaml | 127 ++++----- ...isplay_financial_ratios-kwargs_dict7].yaml | 213 +++++++-------- ...ancial_statement_growth-kwargs_dict8].yaml | 68 ++--- ...isplay_income_statement-kwargs_dict3].yaml | 166 ++++++------ ...lse-display_key_metrics-kwargs_dict6].yaml | 159 ++++++------ ...t[False-display_profile-kwargs_dict0].yaml | 22 +- ...e-display_balance_sheet-kwargs_dict4].yaml | 230 ++++++++--------- ...[True-display_cash_flow-kwargs_dict5].yaml | 243 +++++++++--------- ...ay_discounted_cash_flow-kwargs_dict2].yaml | 12 +- ...True-display_enterprise-kwargs_dict1].yaml | 127 ++++----- ...isplay_financial_ratios-kwargs_dict7].yaml | 213 +++++++-------- ...ancial_statement_growth-kwargs_dict8].yaml | 68 ++--- ...isplay_income_statement-kwargs_dict3].yaml | 166 ++++++------ ...rue-display_key_metrics-kwargs_dict6].yaml | 159 ++++++------ ...ut[True-display_profile-kwargs_dict0].yaml | 22 +- ...se-display_balance_sheet-kwargs_dict4].txt | 80 +++--- ...[False-display_cash_flow-kwargs_dict5].txt | 16 +- ...lay_discounted_cash_flow-kwargs_dict2].txt | 6 +- ...display_financial_ratios-kwargs_dict7].txt | 82 +++--- ...nancial_statement_growth-kwargs_dict8].txt | 24 +- ...display_income_statement-kwargs_dict3].txt | 24 +- ...alse-display_key_metrics-kwargs_dict6].txt | 92 +++---- ...ut[False-display_profile-kwargs_dict0].txt | 26 +- ...ue-display_balance_sheet-kwargs_dict4].txt | 80 +++--- ...t[True-display_cash_flow-kwargs_dict5].txt | 16 +- ...lay_discounted_cash_flow-kwargs_dict2].txt | 6 +- ...display_financial_ratios-kwargs_dict7].txt | 82 +++--- ...nancial_statement_growth-kwargs_dict8].txt | 24 +- ...display_income_statement-kwargs_dict3].txt | 24 +- ...True-display_key_metrics-kwargs_dict6].txt | 92 +++---- ...put[True-display_profile-kwargs_dict0].txt | 26 +- 35 files changed, 1585 insertions(+), 1607 deletions(-) diff --git a/openbb_terminal/stocks/fundamental_analysis/fmp_view.py b/openbb_terminal/stocks/fundamental_analysis/fmp_view.py index 057f7104e9af..a8a255cd1ee9 100644 --- a/openbb_terminal/stocks/fundamental_analysis/fmp_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/fmp_view.py @@ -84,17 +84,19 @@ def display_profile(symbol: str, export: str = "", sheet_name: Optional[str] = N profile = fmp_model.get_profile(symbol) if not profile.empty: + console.print(f"\nImage: {profile.loc['image'][0]}") + console.print(f"\nDescription: {profile.loc['description'][0]}") + + profile.drop(index=["description", "image"], inplace=True) + profile.columns = [" "] + print_rich_table( - profile.drop(index=["description", "image"]), - headers=[""], + profile, title=f"{symbol.upper()} Profile", show_index=True, export=bool(export), ) - console.print(f"\nImage: {profile.loc['image'][0]}") - console.print(f"\nDescription: {profile.loc['description'][0]}") - export_data( export, os.path.dirname(os.path.abspath(__file__)), diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].yaml index 316144395118..b8257d1dcff7 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].yaml @@ -23,44 +23,19 @@ interactions: 3931000000,\n \"totalNonCurrentAssets\": 42062000000,\n \"otherAssets\": 0,\n \"totalAssets\": 61681000000,\n \"accountPayables\": 4076000000,\n \ \"shortTermDebt\": 8248000000,\n \"taxPayables\": 8480000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 19088000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 15012000000,\n \"totalCurrentLiabilities\": 27336000000,\n \"longTermDebt\": 34875000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1956000000,\n \"otherNonCurrentLiabilities\": - 3825000000,\n \"totalNonCurrentLiabilities\": 40656000000,\n \"otherLiabilities\": + 28332000000,\n \"totalNonCurrentLiabilities\": 40656000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 67992000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 34289000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9559000000,\n - \ \"othertotalStockholdersEquity\": 0,\n \"totalStockholdersEquity\": + \ \"othertotalStockholdersEquity\": -33687000000,\n \"totalStockholdersEquity\": -8957000000,\n \"totalEquity\": -8957000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 67992000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 67992000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 43123000000,\n + 59035000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 59035000000,\n \"totalInvestments\": 4431000000,\n \"totalDebt\": 43123000000,\n \ \"netDebt\": 39916000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n - \ },\n {\n \"date\": \"2022-09-30\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": - \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2022-10-27\",\n - \ \"acceptedDate\": \"2022-10-27 08:17:59\",\n \"calendarYear\": \"2022\",\n - \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 5368000000,\n \"shortTermInvestments\": - 0,\n \"cashAndShortTermInvestments\": 5368000000,\n \"netReceivables\": - 0,\n \"inventory\": 0,\n \"otherCurrentAssets\": 0,\n \"totalCurrentAssets\": - 5368000000,\n \"propertyPlantEquipmentNet\": 5610000000,\n \"goodwill\": - 6127000000,\n \"intangibleAssets\": 2224000000,\n \"goodwillAndIntangibleAssets\": - 8351000000,\n \"longTermInvestments\": 4087000000,\n \"taxAssets\": - 0,\n \"otherNonCurrentAssets\": 0,\n \"totalNonCurrentAssets\": 18048000000,\n - \ \"otherAssets\": 17301000000,\n \"totalAssets\": 40717000000,\n \"accountPayables\": - 0,\n \"shortTermDebt\": 2818000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 0,\n \"totalCurrentLiabilities\": - 2818000000,\n \"longTermDebt\": 21762000000,\n \"deferredRevenueNonCurrent\": - 0,\n \"deferredTaxLiabilitiesNonCurrent\": 923000000,\n \"otherNonCurrentLiabilities\": - 22617000000,\n \"totalNonCurrentLiabilities\": 45302000000,\n \"otherLiabilities\": - 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 48120000000,\n - \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": - 0,\n \"accumulatedOtherComprehensiveIncomeLoss\": 0,\n \"othertotalStockholdersEquity\": - 0,\n \"totalStockholdersEquity\": -9137000000,\n \"totalEquity\": -9137000000,\n - \ \"totalLiabilitiesAndStockholdersEquity\": 38983000000,\n \"minorityInterest\": - 0,\n \"totalLiabilitiesAndTotalEquity\": 38983000000,\n \"totalInvestments\": - 0,\n \"totalDebt\": 24580000000,\n \"netDebt\": 19212000000,\n \"link\": - \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/0001413329-22-000114-index.htm\",\n - \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/pm-20220930.htm\"\n \ },\n {\n \"date\": \"2021-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2022-02-11\",\n \ \"acceptedDate\": \"2022-02-11 08:29:22\",\n \"calendarYear\": \"2021\",\n @@ -74,17 +49,17 @@ interactions: 2549000000,\n \"totalNonCurrentAssets\": 23573000000,\n \"otherAssets\": 0,\n \"totalAssets\": 41290000000,\n \"accountPayables\": 3331000000,\n \ \"shortTermDebt\": 3023000000,\n \"taxPayables\": 7349000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 16232000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 12901000000,\n \"totalCurrentLiabilities\": 19255000000,\n \"longTermDebt\": 24783000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 726000000,\n \"otherNonCurrentLiabilities\": - 4734000000,\n \"totalNonCurrentLiabilities\": 30243000000,\n \"otherLiabilities\": + 23889000000,\n \"totalNonCurrentLiabilities\": 30243000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 49498000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 33082000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9577000000,\n - \ \"othertotalStockholdersEquity\": 0,\n \"totalStockholdersEquity\": + \ \"othertotalStockholdersEquity\": -33611000000,\n \"totalStockholdersEquity\": -10106000000,\n \"totalEquity\": -10106000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 49498000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 49498000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27806000000,\n + 41290000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 41290000000,\n \"totalInvestments\": 4463000000,\n \"totalDebt\": 27806000000,\n \ \"netDebt\": 23310000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n \ },\n {\n \"date\": \"2020-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -92,7 +67,7 @@ interactions: \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 7280000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 7280000000,\n \"netReceivables\": - 3761000000,\n \"inventory\": 9591000000,\n \"otherCurrentAssets\": 860000000,\n + 3761000000,\n \"inventory\": 9591000000,\n \"otherCurrentAssets\": 14212000000,\n \ \"totalCurrentAssets\": 21492000000,\n \"propertyPlantEquipmentNet\": 6365000000,\n \"goodwill\": 5964000000,\n \"intangibleAssets\": 2019000000,\n \ \"goodwillAndIntangibleAssets\": 7983000000,\n \"longTermInvestments\": @@ -100,17 +75,17 @@ interactions: 2767000000,\n \"totalNonCurrentAssets\": 23323000000,\n \"otherAssets\": 0,\n \"totalAssets\": 44815000000,\n \"accountPayables\": 2780000000,\n \ \"shortTermDebt\": 3368000000,\n \"taxPayables\": 7494000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 5973000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 13467000000,\n \"totalCurrentLiabilities\": 19615000000,\n \"longTermDebt\": 28168000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 684000000,\n \"otherNonCurrentLiabilities\": - 6979000000,\n \"totalNonCurrentLiabilities\": 35831000000,\n \"otherLiabilities\": + 29683000000,\n \"totalNonCurrentLiabilities\": 35831000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 55446000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 31638000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -11181000000,\n \ \"othertotalStockholdersEquity\": -33024000000,\n \"totalStockholdersEquity\": -12567000000,\n \"totalEquity\": -12567000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 42879000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 42879000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31536000000,\n + 44815000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 44815000000,\n \"totalInvestments\": 4798000000,\n \"totalDebt\": 31536000000,\n \ \"netDebt\": 24256000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/pm-20201231.htm\"\n \ },\n {\n \"date\": \"2019-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -118,25 +93,25 @@ interactions: \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 6861000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 6861000000,\n \"netReceivables\": - 3717000000,\n \"inventory\": 9235000000,\n \"otherCurrentAssets\": 701000000,\n + 3717000000,\n \"inventory\": 9235000000,\n \"otherCurrentAssets\": 13653000000,\n \ \"totalCurrentAssets\": 20514000000,\n \"propertyPlantEquipmentNet\": 6631000000,\n \"goodwill\": 5858000000,\n \"intangibleAssets\": 2113000000,\n \ \"goodwillAndIntangibleAssets\": 7971000000,\n \"longTermInvestments\": 4635000000,\n \"taxAssets\": 1153000000,\n \"otherNonCurrentAssets\": 1971000000,\n \"totalNonCurrentAssets\": 22361000000,\n \"otherAssets\": 0,\n \"totalAssets\": 42875000000,\n \"accountPayables\": 2299000000,\n - \ \"shortTermDebt\": 4389000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 4389000000,\n \"taxPayables\": 6633000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 12145000000,\n \"totalCurrentLiabilities\": 18833000000,\n \"longTermDebt\": 26656000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 908000000,\n \"otherNonCurrentLiabilities\": - 6077000000,\n \"totalNonCurrentLiabilities\": 33641000000,\n \"otherLiabilities\": + 26953000000,\n \"totalNonCurrentLiabilities\": 33641000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 52474000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 30987000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9363000000,\n \ \"othertotalStockholdersEquity\": -33201000000,\n \"totalStockholdersEquity\": -11577000000,\n \"totalEquity\": -11577000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 40897000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 40897000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31045000000,\n + 42875000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 42875000000,\n \"totalInvestments\": 4635000000,\n \"totalDebt\": 31045000000,\n \ \"netDebt\": 24184000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/pm123119form10kwrapinc.htm\"\n \ },\n {\n \"date\": \"2018-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -151,7 +126,7 @@ interactions: 1269000000,\n \"taxAssets\": 977000000,\n \"otherNonCurrentAssets\": 1445000000,\n \"totalNonCurrentAssets\": 20359000000,\n \"otherAssets\": 0,\n \"totalAssets\": 39801000000,\n \"accountPayables\": 2068000000,\n - \ \"shortTermDebt\": 4784000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 4784000000,\n \"taxPayables\": 5664000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10339000000,\n \"totalCurrentLiabilities\": 17191000000,\n \"longTermDebt\": 26975000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 898000000,\n \"otherNonCurrentLiabilities\": @@ -161,8 +136,8 @@ interactions: 31014000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -10111000000,\n \ \"othertotalStockholdersEquity\": -33362000000,\n \"totalStockholdersEquity\": -12459000000,\n \"totalEquity\": -12459000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 38081000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 38081000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31759000000,\n + 39801000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 39801000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31759000000,\n \ \"netDebt\": 25166000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/0001413329-19-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2017-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -177,7 +152,7 @@ interactions: 1074000000,\n \"taxAssets\": 1007000000,\n \"otherNonCurrentAssets\": 1924000000,\n \"totalNonCurrentAssets\": 21374000000,\n \"otherAssets\": 0,\n \"totalAssets\": 42968000000,\n \"accountPayables\": 2242000000,\n - \ \"shortTermDebt\": 3005000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 3005000000,\n \"taxPayables\": 6136000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10715000000,\n \"totalCurrentLiabilities\": 15962000000,\n \"longTermDebt\": 31334000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 799000000,\n \"otherNonCurrentLiabilities\": @@ -187,8 +162,8 @@ interactions: 29859000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -8535000000,\n \ \"othertotalStockholdersEquity\": -33410000000,\n \"totalStockholdersEquity\": -12086000000,\n \"totalEquity\": -12086000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 41112000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 41112000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 34339000000,\n + 42968000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 42968000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 34339000000,\n \ \"netDebt\": 25892000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/0001413329-18-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/pm123117form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2016-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -203,7 +178,7 @@ interactions: 1011000000,\n \"taxAssets\": 859000000,\n \"otherNonCurrentAssets\": 1515000000,\n \"totalNonCurrentAssets\": 19243000000,\n \"otherAssets\": 0,\n \"totalAssets\": 36851000000,\n \"accountPayables\": 1666000000,\n - \ \"shortTermDebt\": 3216000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 3216000000,\n \"taxPayables\": 7036000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 11585000000,\n \"totalCurrentLiabilities\": 16467000000,\n \"longTermDebt\": 25851000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1897000000,\n \"otherNonCurrentLiabilities\": @@ -213,8 +188,8 @@ interactions: 30397000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9559000000,\n \ \"othertotalStockholdersEquity\": -33526000000,\n \"totalStockholdersEquity\": -12688000000,\n \"totalEquity\": -12688000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 35063000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 35063000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29067000000,\n + 36851000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 36851000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29067000000,\n \ \"netDebt\": 24828000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/0001413329-17-000014-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/pm123116form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2015-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -229,17 +204,18 @@ interactions: 890000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1503000000,\n \ \"totalNonCurrentAssets\": 18152000000,\n \"otherAssets\": 0,\n \"totalAssets\": 33956000000,\n \"accountPayables\": 1289000000,\n \"shortTermDebt\": - 3230000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 10867000000,\n \"totalCurrentLiabilities\": 15386000000,\n \"longTermDebt\": - 25250000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1543000000,\n \"otherNonCurrentLiabilities\": 3253000000,\n \"totalNonCurrentLiabilities\": - 30046000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 45432000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 29842000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -9402000000,\n \"othertotalStockholdersEquity\": -33684000000,\n \"totalStockholdersEquity\": + 3230000000,\n \"taxPayables\": 6091000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 10867000000,\n \"totalCurrentLiabilities\": + 15386000000,\n \"longTermDebt\": 25250000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1543000000,\n \"otherNonCurrentLiabilities\": + 3253000000,\n \"totalNonCurrentLiabilities\": 30046000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 45432000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 29842000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9402000000,\n + \ \"othertotalStockholdersEquity\": -33684000000,\n \"totalStockholdersEquity\": -13244000000,\n \"totalEquity\": -13244000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 32188000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 32188000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 28480000000,\n + 33956000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 33956000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 28480000000,\n \ \"netDebt\": 25063000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/0001413329-16-000076-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/pm123115form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2014-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -254,17 +230,18 @@ interactions: 1083000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1176000000,\n \ \"totalNonCurrentAssets\": 19703000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35187000000,\n \"accountPayables\": 1242000000,\n \"shortTermDebt\": - 2526000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 11344000000,\n \"totalCurrentLiabilities\": 15112000000,\n \"longTermDebt\": - 26929000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1549000000,\n \"otherNonCurrentLiabilities\": 2800000000,\n \"totalNonCurrentLiabilities\": - 31278000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 46390000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 29249000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -6826000000,\n \"othertotalStockholdersEquity\": -35052000000,\n \"totalStockholdersEquity\": + 2526000000,\n \"taxPayables\": 6568000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 11344000000,\n \"totalCurrentLiabilities\": + 15112000000,\n \"longTermDebt\": 26929000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1549000000,\n \"otherNonCurrentLiabilities\": + 2800000000,\n \"totalNonCurrentLiabilities\": 31278000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 46390000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 29249000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -6826000000,\n + \ \"othertotalStockholdersEquity\": -35052000000,\n \"totalStockholdersEquity\": -12629000000,\n \"totalEquity\": -12629000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33761000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33761000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29455000000,\n + 35187000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35187000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29455000000,\n \ \"netDebt\": 27773000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/0001413329-15-000016-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/pm12312014form10kwrapinclf.htm\"\n \ },\n {\n \"date\": \"2013-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -279,17 +256,18 @@ interactions: 1536000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 939000000,\n \ \"totalNonCurrentAssets\": 21316000000,\n \"otherAssets\": 0,\n \"totalAssets\": 38168000000,\n \"accountPayables\": 1274000000,\n \"shortTermDebt\": - 3655000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 12137000000,\n \"totalCurrentLiabilities\": 17066000000,\n \"longTermDebt\": - 24023000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1477000000,\n \"otherNonCurrentLiabilities\": 1876000000,\n \"totalNonCurrentLiabilities\": - 27376000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 44442000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 27843000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -4190000000,\n \"othertotalStockholdersEquity\": -31419000000,\n \"totalStockholdersEquity\": + 3655000000,\n \"taxPayables\": 7684000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 12137000000,\n \"totalCurrentLiabilities\": + 17066000000,\n \"longTermDebt\": 24023000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1477000000,\n \"otherNonCurrentLiabilities\": + 1876000000,\n \"totalNonCurrentLiabilities\": 27376000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 44442000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 27843000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -4190000000,\n + \ \"othertotalStockholdersEquity\": -31419000000,\n \"totalStockholdersEquity\": -7766000000,\n \"totalEquity\": -7766000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 36676000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 36676000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27678000000,\n + 38168000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 38168000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27678000000,\n \ \"netDebt\": 25524000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/0001413329-14-000012-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/pm1231201310-k.htm\"\n \ },\n {\n \"date\": \"2012-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -301,20 +279,20 @@ interactions: \ \"totalCurrentAssets\": 16590000000,\n \"propertyPlantEquipmentNet\": 6645000000,\n \"goodwill\": 9900000000,\n \"intangibleAssets\": 3619000000,\n \ \"goodwillAndIntangibleAssets\": 13519000000,\n \"longTermInvestments\": - 24000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 892000000,\n - \ \"totalNonCurrentAssets\": 21080000000,\n \"otherAssets\": 0,\n \"totalAssets\": - 37670000000,\n \"accountPayables\": 1103000000,\n \"shortTermDebt\": - 5200000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 916000000,\n \"totalNonCurrentAssets\": + 21080000000,\n \"otherAssets\": 0,\n \"totalAssets\": 37670000000,\n + \ \"accountPayables\": 1103000000,\n \"shortTermDebt\": 5200000000,\n + \ \"taxPayables\": 6806000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10713000000,\n \"totalCurrentLiabilities\": 17016000000,\n \"longTermDebt\": 17639000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1875000000,\n \"otherNonCurrentLiabilities\": 4294000000,\n \"totalNonCurrentLiabilities\": - 23808000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 40824000000,\n \"preferredStock\": 0,\n \"commonStock\": + 1875000000,\n \"otherNonCurrentLiabilities\": 2993000000,\n \"totalNonCurrentLiabilities\": + 22507000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": + 0,\n \"totalLiabilities\": 39523000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 25076000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -3604000000,\n \"othertotalStockholdersEquity\": -24948000000,\n \"totalStockholdersEquity\": -3476000000,\n \"totalEquity\": -3476000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 37348000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 37348000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 22839000000,\n + 37670000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 37670000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 22839000000,\n \ \"netDebt\": 19856000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n \ },\n {\n \"date\": \"2011-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -329,7 +307,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 754000000,\n \"totalNonCurrentAssets\": 20629000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35488000000,\n \ \"accountPayables\": 1031000000,\n \"shortTermDebt\": 3717000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 6243000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10046000000,\n \"totalCurrentLiabilities\": 14794000000,\n \"longTermDebt\": 14828000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1976000000,\n \"otherNonCurrentLiabilities\": 2127000000,\n \"totalNonCurrentLiabilities\": @@ -338,8 +316,8 @@ interactions: 0,\n \"retainedEarnings\": 21757000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -2863000000,\n \"othertotalStockholdersEquity\": -18665000000,\n \"totalStockholdersEquity\": 229000000,\n \"totalEquity\": 229000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33954000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33954000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 18545000000,\n + 35488000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35488000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 18545000000,\n \ \"netDebt\": 15995000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/0001193125-12-076983-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/d258717d10k.htm\"\n \ },\n {\n \"date\": \"2010-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -354,7 +332,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 761000000,\n \"totalNonCurrentAssets\": 21294000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35050000000,\n \ \"accountPayables\": 835000000,\n \"shortTermDebt\": 3132000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 5485000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8837000000,\n \"totalCurrentLiabilities\": 12804000000,\n \"longTermDebt\": 13370000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 2027000000,\n \"otherNonCurrentLiabilities\": 1728000000,\n \"totalNonCurrentLiabilities\": @@ -363,8 +341,8 @@ interactions: 0,\n \"retainedEarnings\": 18133000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -1140000000,\n \"othertotalStockholdersEquity\": -13487000000,\n \"totalStockholdersEquity\": 3506000000,\n \"totalEquity\": 3506000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33435000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33435000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 16502000000,\n + 35050000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35050000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 16502000000,\n \ \"netDebt\": 14799000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/0001193125-11-046772-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/d10k.htm\"\n \ },\n {\n \"date\": \"2009-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -379,7 +357,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 822000000,\n \"totalNonCurrentAssets\": 19870000000,\n \"otherAssets\": 0,\n \"totalAssets\": 34552000000,\n \ \"accountPayables\": 670000000,\n \"shortTermDebt\": 1744000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 5324000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8764000000,\n \"totalCurrentLiabilities\": 11178000000,\n \"longTermDebt\": 13672000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1688000000,\n \"otherNonCurrentLiabilities\": 1869000000,\n \"totalNonCurrentLiabilities\": @@ -388,8 +366,8 @@ interactions: 0,\n \"retainedEarnings\": 15358000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -817000000,\n \"othertotalStockholdersEquity\": -8825000000,\n \"totalStockholdersEquity\": 5716000000,\n \"totalEquity\": 5716000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 34123000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 34123000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 15416000000,\n + 34552000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 34552000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 15416000000,\n \ \"netDebt\": 13876000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/0001193125-10-041735-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/d10k.htm\"\n \ },\n {\n \"date\": \"2008-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -404,7 +382,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 586000000,\n \"totalNonCurrentAssets\": 18033000000,\n \"otherAssets\": 0,\n \"totalAssets\": 32972000000,\n \ \"accountPayables\": 1013000000,\n \"shortTermDebt\": 584000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 4990000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8547000000,\n \"totalCurrentLiabilities\": 10144000000,\n \"longTermDebt\": 11377000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1401000000,\n \"otherNonCurrentLiabilities\": 2550000000,\n \"totalNonCurrentLiabilities\": @@ -419,7 +397,7 @@ interactions: \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1656000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1656000000,\n \"netReceivables\": 3497000000,\n \"inventory\": 9332000000,\n \"otherCurrentAssets\": 567000000,\n @@ -429,9 +407,9 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 725000000,\n \"totalNonCurrentAssets\": 16991000000,\n \"otherAssets\": 0,\n \"totalAssets\": 32043000000,\n \ \"accountPayables\": 852000000,\n \"shortTermDebt\": 729000000,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 6970000000,\n - \ \"totalCurrentLiabilities\": 8551000000,\n \"longTermDebt\": 5578000000,\n - \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": + 5001000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + 6970000000,\n \"totalCurrentLiabilities\": 8551000000,\n \"longTermDebt\": + 5578000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1240000000,\n \"otherNonCurrentLiabilities\": 1273000000,\n \"totalNonCurrentLiabilities\": 8091000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 16642000000,\n \"preferredStock\": 0,\n \"commonStock\": @@ -440,10 +418,10 @@ interactions: 15401000000,\n \"totalEquity\": 15401000000,\n \"totalLiabilitiesAndStockholdersEquity\": 32043000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 32043000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 6307000000,\n - \ \"netDebt\": 4651000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 4651000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2006-12-31\",\n - \ \"acceptedDate\": \"2006-12-30 19:00:00\",\n \"calendarYear\": \"2006\",\n + \ \"acceptedDate\": \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1676000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1676000000,\n \"netReceivables\": 2160000000,\n \"inventory\": 7075000000,\n \"otherCurrentAssets\": 1014000000,\n @@ -452,22 +430,22 @@ interactions: \ \"goodwillAndIntangibleAssets\": 7824000000,\n \"longTermInvestments\": 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1133000000,\n \"totalNonCurrentAssets\": 14195000000,\n \"otherAssets\": 0,\n \"totalAssets\": 26120000000,\n - \ \"accountPayables\": 672000000,\n \"shortTermDebt\": 0,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 6317000000,\n + \ \"accountPayables\": 672000000,\n \"shortTermDebt\": 564000000,\n \"taxPayables\": + 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 5753000000,\n \ \"totalCurrentLiabilities\": 6989000000,\n \"longTermDebt\": 2222000000,\n \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1166000000,\n \"otherNonCurrentLiabilities\": 1476000000,\n \"totalNonCurrentLiabilities\": 4864000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 11853000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 13002000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -4224000000,\n \"othertotalStockholdersEquity\": 5489000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 1265000000,\n \"totalStockholdersEquity\": 14267000000,\n \"totalEquity\": 14267000000,\n \"totalLiabilitiesAndStockholdersEquity\": 26120000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 26120000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 2786000000,\n - \ \"netDebt\": 1110000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 1110000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2005-12-31\",\n - \ \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": \"2005\",\n + \ \"acceptedDate\": \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1209000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1209000000,\n \"netReceivables\": 1898000000,\n \"inventory\": 5420000000,\n \"otherCurrentAssets\": 1498000000,\n @@ -476,22 +454,22 @@ interactions: \ \"goodwillAndIntangibleAssets\": 6970000000,\n \"longTermInvestments\": 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1537000000,\n \"totalNonCurrentAssets\": 13110000000,\n \"otherAssets\": 0,\n \"totalAssets\": 23135000000,\n - \ \"accountPayables\": 669000000,\n \"shortTermDebt\": 0,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 5665000000,\n + \ \"accountPayables\": 669000000,\n \"shortTermDebt\": 768000000,\n \"taxPayables\": + 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 4897000000,\n \ \"totalCurrentLiabilities\": 6334000000,\n \"longTermDebt\": 4141000000,\n \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1024000000,\n \"otherNonCurrentLiabilities\": 1329000000,\n \"totalNonCurrentLiabilities\": 6494000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 12828000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 9042000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -3515000000,\n \"othertotalStockholdersEquity\": 4780000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 1265000000,\n \"totalStockholdersEquity\": 10307000000,\n \"totalEquity\": 10307000000,\n \"totalLiabilitiesAndStockholdersEquity\": 23135000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 23135000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 4909000000,\n - \ \"netDebt\": 3700000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 3700000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2003-12-31\",\n - \ \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": \"2003\",\n + \ \"acceptedDate\": \"2003-12-31 00:00:00\",\n \"calendarYear\": \"2003\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 3161000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 3161000000,\n \"netReceivables\": 0,\n \"inventory\": 4274000000,\n \"otherCurrentAssets\": 3618000000,\n @@ -503,15 +481,15 @@ interactions: \ \"accountPayables\": 0,\n \"shortTermDebt\": 0,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 0,\n \"totalCurrentLiabilities\": 0,\n \"longTermDebt\": 0,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 0,\n \"otherNonCurrentLiabilities\": 0,\n \"totalNonCurrentLiabilities\": - 0,\n \"otherLiabilities\": 7139000000,\n \"capitalLeaseObligations\": + 0,\n \"otherNonCurrentLiabilities\": 7139000000,\n \"totalNonCurrentLiabilities\": + 7139000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 7139000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 0,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -2826000000,\n \"othertotalStockholdersEquity\": 13317000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 10491000000,\n \"totalStockholdersEquity\": 10491000000,\n \"totalEquity\": 10491000000,\n \"totalLiabilitiesAndStockholdersEquity\": 17630000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 17630000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 0,\n \"netDebt\": - -3161000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n }\n]" + -3161000000,\n \"link\": null,\n \"finalLink\": null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -527,13 +505,13 @@ interactions: Connection: - close Content-Length: - - '40478' + - '38675' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:45 GMT + - Tue, 02 May 2023 14:20:56 GMT ETag: - - W/"9e1e-Epa6BAZgAYXgsPxNZuNLZ4YHwl8" + - W/"9713-q9IViGvCzbJvc/D93XuPyx+gGTM" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].yaml index ca956855f234..fa024ce91dbf 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].yaml @@ -17,16 +17,16 @@ interactions: 1189000000,\n \"deferredIncomeTax\": -234000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 162000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1287000000,\n \"accountsPayables\": 719000000,\n - \ \"otherWorkingCapital\": 1601000000,\n \"otherNonCashItems\": 252000000,\n + \ \"otherWorkingCapital\": 730000000,\n \"otherNonCashItems\": 159000000,\n \ \"netCashProvidedByOperatingActivities\": 10803000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -13996000000,\n \"purchasesOfInvestments\": + -1077000000,\n \"acquisitionsNet\": -13996000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -890000000,\n \"netCashUsedForInvestingActivites\": -15679000000,\n \"debtRepayment\": + -1683000000,\n \"netCashUsedForInvestingActivites\": -15679000000,\n \"debtRepayment\": -7519000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -209000000,\n \"dividendsPaid\": -7812000000,\n \"otherFinancingActivites\": - -2349000000,\n \"netCashUsedProvidedByFinancingActivities\": 3806000000,\n + 19346000000,\n \"netCashUsedProvidedByFinancingActivities\": 3806000000,\n \ \"effectOfForexChangesOnCash\": -213000000,\n \"netChangeInCash\": - 3806000000,\n \"cashAtEndOfPeriod\": 3217000000,\n \"cashAtBeginningOfPeriod\": + -1283000000,\n \"cashAtEndOfPeriod\": 3217000000,\n \"cashAtBeginningOfPeriod\": 4500000000,\n \"operatingCashFlow\": 10803000000,\n \"capitalExpenditure\": -1077000000,\n \"freeCashFlow\": 9726000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n @@ -37,30 +37,30 @@ interactions: 998000000,\n \"deferredIncomeTax\": -17000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1367000000,\n \"accountsReceivables\": 0,\n \"inventory\": 549000000,\n \"accountsPayables\": 653000000,\n - \ \"otherWorkingCapital\": 363000000,\n \"otherNonCashItems\": -69000000,\n + \ \"otherWorkingCapital\": 165000000,\n \"otherNonCashItems\": -91000000,\n \ \"netCashProvidedByOperatingActivities\": 11967000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -2145000000,\n \"purchasesOfInvestments\": + -748000000,\n \"acquisitionsNet\": -2145000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 69000000,\n \"netCashUsedForInvestingActivites\": -2358000000,\n \"debtRepayment\": + -213000000,\n \"netCashUsedForInvestingActivites\": -2358000000,\n \"debtRepayment\": -3042000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -775000000,\n \"dividendsPaid\": -7580000000,\n \"otherFinancingActivites\": -580000000,\n \"netCashUsedProvidedByFinancingActivities\": -11977000000,\n \ \"effectOfForexChangesOnCash\": -417000000,\n \"netChangeInCash\": - -11977000000,\n \"cashAtEndOfPeriod\": 4500000000,\n \"cashAtBeginningOfPeriod\": + -2785000000,\n \"cashAtEndOfPeriod\": 4500000000,\n \"cashAtBeginningOfPeriod\": 7285000000,\n \"operatingCashFlow\": 11967000000,\n \"capitalExpenditure\": -748000000,\n \"freeCashFlow\": 11219000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n \ },\n {\n \"date\": \"2020-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2021-02-09\",\n \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8056000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8592000000,\n \"depreciationAndAmortization\": 981000000,\n \"deferredIncomeTax\": -143000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 128000000,\n \"accountsReceivables\": 0,\n \"inventory\": -165000000,\n \"accountsPayables\": 406000000,\n - \ \"otherWorkingCapital\": -139000000,\n \"otherNonCashItems\": 790000000,\n + \ \"otherWorkingCapital\": -113000000,\n \"otherNonCashItems\": 254000000,\n \ \"netCashProvidedByOperatingActivities\": 9812000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -47000000,\n \"purchasesOfInvestments\": 0,\n - \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -602000000,\n \"acquisitionsNet\": -47000000,\n \"purchasesOfInvestments\": + 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": -1107000000,\n \"netCashUsedForInvestingActivites\": -1154000000,\n \"debtRepayment\": -4114000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -7364000000,\n \"otherFinancingActivites\": @@ -73,15 +73,15 @@ interactions: \ },\n {\n \"date\": \"2019-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2020-02-07\",\n \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7185000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7728000000,\n \"depreciationAndAmortization\": 964000000,\n \"deferredIncomeTax\": -141000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 755000000,\n \"accountsReceivables\": -331000000,\n \"inventory\": -548000000,\n \"accountsPayables\": 451000000,\n - \ \"otherWorkingCapital\": 1183000000,\n \"otherNonCashItems\": 1327000000,\n + \ \"otherWorkingCapital\": 1183000000,\n \"otherNonCashItems\": 784000000,\n \ \"netCashProvidedByOperatingActivities\": 10090000000,\n \"investmentsInPropertyPlantAndEquipment\": - -852000000,\n \"acquisitionsNet\": -1346000000,\n \"purchasesOfInvestments\": + -852000000,\n \"acquisitionsNet\": -1377000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 387000000,\n \"netCashUsedForInvestingActivites\": -1811000000,\n \"debtRepayment\": + -434000000,\n \"netCashUsedForInvestingActivites\": -1811000000,\n \"debtRepayment\": -5351000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -7161000000,\n \"otherFinancingActivites\": 4451000000,\n \"netCashUsedProvidedByFinancingActivities\": -8061000000,\n @@ -93,15 +93,15 @@ interactions: \ },\n {\n \"date\": \"2018-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2019-02-07\",\n \ \"acceptedDate\": \"2019-02-07 15:09:20\",\n \"calendarYear\": \"2018\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7911000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8286000000,\n \"depreciationAndAmortization\": 989000000,\n \"deferredIncomeTax\": -100000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 164000000,\n \"accountsReceivables\": 53000000,\n \"inventory\": -613000000,\n \"accountsPayables\": -51000000,\n - \ \"otherWorkingCapital\": 775000000,\n \"otherNonCashItems\": 514000000,\n + \ \"otherWorkingCapital\": 775000000,\n \"otherNonCashItems\": 139000000,\n \ \"netCashProvidedByOperatingActivities\": 9478000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1436000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 438000000,\n \"netCashUsedForInvestingActivites\": -998000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -63000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -935000000,\n \"netCashUsedForInvestingActivites\": -998000000,\n \"debtRepayment\": -2484000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6885000000,\n \"otherFinancingActivites\": -282000000,\n \"netCashUsedProvidedByFinancingActivities\": -9651000000,\n @@ -113,15 +113,15 @@ interactions: \ },\n {\n \"date\": \"2017-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2018-02-13\",\n \ \"acceptedDate\": \"2018-02-13 08:07:16\",\n \"calendarYear\": \"2017\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6035000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 6341000000,\n \"depreciationAndAmortization\": 875000000,\n \"deferredIncomeTax\": -501000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1879000000,\n \"accountsReceivables\": -92000000,\n \"inventory\": 730000000,\n \"accountsPayables\": 425000000,\n - \ \"otherWorkingCapital\": 816000000,\n \"otherNonCashItems\": 624000000,\n + \ \"otherWorkingCapital\": 816000000,\n \"otherNonCashItems\": 318000000,\n \ \"netCashProvidedByOperatingActivities\": 8912000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1548000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -111000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -1466000000,\n \"netCashUsedForInvestingActivites\": -3014000000,\n \"debtRepayment\": + -2903000000,\n \"netCashUsedForInvestingActivites\": -3014000000,\n \"debtRepayment\": -4312000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6520000000,\n \"otherFinancingActivites\": 8063000000,\n \"netCashUsedProvidedByFinancingActivities\": -2769000000,\n @@ -133,15 +133,15 @@ interactions: \ },\n {\n \"date\": \"2016-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2017-02-14\",\n \ \"acceptedDate\": \"2017-02-14 08:22:52\",\n \"calendarYear\": \"2016\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6967000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7250000000,\n \"depreciationAndAmortization\": 743000000,\n \"deferredIncomeTax\": 182000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -63000000,\n \"accountsReceivables\": -1009000000,\n \"inventory\": -695000000,\n \"accountsPayables\": 373000000,\n - \ \"otherWorkingCapital\": 1268000000,\n \"otherNonCashItems\": 248000000,\n + \ \"otherWorkingCapital\": 1268000000,\n \"otherNonCashItems\": -35000000,\n \ \"netCashProvidedByOperatingActivities\": 8077000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1172000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 204000000,\n \"netCashUsedForInvestingActivites\": -968000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -41000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -927000000,\n \"netCashUsedForInvestingActivites\": -968000000,\n \"debtRepayment\": -2405000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6378000000,\n \"otherFinancingActivites\": 3370000000,\n \"netCashUsedProvidedByFinancingActivities\": -5413000000,\n @@ -153,15 +153,15 @@ interactions: \ },\n {\n \"date\": \"2015-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2016-02-17\",\n \ \"acceptedDate\": \"2016-02-17 10:25:14\",\n \"calendarYear\": \"2015\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6873000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7032000000,\n \"depreciationAndAmortization\": 754000000,\n \"deferredIncomeTax\": -18000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 66000000,\n \"accountsReceivables\": 647000000,\n \"inventory\": -841000000,\n \"accountsPayables\": 310000000,\n - \ \"otherWorkingCapital\": -50000000,\n \"otherNonCashItems\": 190000000,\n + \ \"otherWorkingCapital\": -50000000,\n \"otherNonCashItems\": 31000000,\n \ \"netCashProvidedByOperatingActivities\": 7865000000,\n \"investmentsInPropertyPlantAndEquipment\": - -960000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 252000000,\n \"netCashUsedForInvestingActivites\": -708000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -55000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -653000000,\n \"netCashUsedForInvestingActivites\": -708000000,\n \"debtRepayment\": -1495000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -48000000,\n \"dividendsPaid\": -6250000000,\n \"otherFinancingActivites\": 3057000000,\n \"netCashUsedProvidedByFinancingActivities\": -4736000000,\n @@ -173,15 +173,15 @@ interactions: \ },\n {\n \"date\": \"2014-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2015-02-20\",\n \ \"acceptedDate\": \"2015-02-20 08:39:54\",\n \"calendarYear\": \"2014\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7493000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7658000000,\n \"depreciationAndAmortization\": 889000000,\n \"deferredIncomeTax\": -62000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -918000000,\n \"accountsReceivables\": -463000000,\n \"inventory\": 105000000,\n \"accountsPayables\": 177000000,\n - \ \"otherWorkingCapital\": -737000000,\n \"otherNonCashItems\": 337000000,\n + \ \"otherWorkingCapital\": -737000000,\n \"otherNonCashItems\": 172000000,\n \ \"netCashProvidedByOperatingActivities\": 7739000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1153000000,\n \"acquisitionsNet\": -110000000,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -139000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 267000000,\n \"netCashUsedForInvestingActivites\": -996000000,\n \"debtRepayment\": + -857000000,\n \"netCashUsedForInvestingActivites\": -996000000,\n \"debtRepayment\": -3327000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -3833000000,\n \"dividendsPaid\": -6035000000,\n \"otherFinancingActivites\": 6356000000,\n \"netCashUsedProvidedByFinancingActivities\": -6839000000,\n @@ -193,15 +193,15 @@ interactions: \ },\n {\n \"date\": \"2013-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2014-02-21\",\n \ \"acceptedDate\": \"2014-02-21 08:40:56\",\n \"calendarYear\": \"2013\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8576000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8850000000,\n \"depreciationAndAmortization\": 882000000,\n \"deferredIncomeTax\": -28000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -210000000,\n \"accountsReceivables\": -449000000,\n \"inventory\": -1413000000,\n \"accountsPayables\": 103000000,\n - \ \"otherWorkingCapital\": 1549000000,\n \"otherNonCashItems\": 915000000,\n + \ \"otherWorkingCapital\": 1549000000,\n \"otherNonCashItems\": 641000000,\n \ \"netCashProvidedByOperatingActivities\": 10135000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1200000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -1418000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -1480000000,\n \"netCashUsedForInvestingActivites\": -2680000000,\n \"debtRepayment\": + -1262000000,\n \"netCashUsedForInvestingActivites\": -2680000000,\n \"debtRepayment\": -4686000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -5963000000,\n \"dividendsPaid\": -5720000000,\n \"otherFinancingActivites\": 8154000000,\n \"netCashUsedProvidedByFinancingActivities\": -8215000000,\n @@ -213,35 +213,34 @@ interactions: \ },\n {\n \"date\": \"2012-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2013-02-22\",\n \ \"acceptedDate\": \"2013-02-22 12:13:08\",\n \"calendarYear\": \"2012\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8800000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 9154000000,\n \"depreciationAndAmortization\": 898000000,\n \"deferredIncomeTax\": -248000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -661000000,\n \"accountsReceivables\": -398000000,\n \"inventory\": -728000000,\n \"accountsPayables\": 10000000,\n - \ \"otherWorkingCapital\": 455000000,\n \"otherNonCashItems\": 632000000,\n + \ \"otherWorkingCapital\": 455000000,\n \"otherNonCashItems\": 278000000,\n \ \"netCashProvidedByOperatingActivities\": 9421000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1056000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 64000000,\n \"netCashUsedForInvestingActivites\": -992000000,\n \"debtRepayment\": - -3457000000,\n \"commonStockIssued\": 1000000,\n \"commonStockRepurchased\": - -6525000000,\n \"dividendsPaid\": -5404000000,\n \"otherFinancingActivites\": - 7285000000,\n \"netCashUsedProvidedByFinancingActivities\": -8100000000,\n - \ \"effectOfForexChangesOnCash\": 104000000,\n \"netChangeInCash\": 433000000,\n - \ \"cashAtEndOfPeriod\": 2983000000,\n \"cashAtBeginningOfPeriod\": 2550000000,\n - \ \"operatingCashFlow\": 9421000000,\n \"capitalExpenditure\": -1056000000,\n - \ \"freeCashFlow\": 8365000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n + 0,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -992000000,\n \"netCashUsedForInvestingActivites\": + -992000000,\n \"debtRepayment\": -3457000000,\n \"commonStockIssued\": + 1000000,\n \"commonStockRepurchased\": -6525000000,\n \"dividendsPaid\": + -5404000000,\n \"otherFinancingActivites\": 7285000000,\n \"netCashUsedProvidedByFinancingActivities\": + -8100000000,\n \"effectOfForexChangesOnCash\": 104000000,\n \"netChangeInCash\": + 433000000,\n \"cashAtEndOfPeriod\": 2983000000,\n \"cashAtBeginningOfPeriod\": + 2550000000,\n \"operatingCashFlow\": 9421000000,\n \"capitalExpenditure\": + -1056000000,\n \"freeCashFlow\": 8365000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n \ },\n {\n \"date\": \"2011-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2012-02-24\",\n \ \"acceptedDate\": \"2012-02-24 09:29:03\",\n \"calendarYear\": \"2011\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8591000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8879000000,\n \"depreciationAndAmortization\": 993000000,\n \"deferredIncomeTax\": 15000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 834000000,\n \"accountsReceivables\": 0,\n \"inventory\": -36000000,\n \"accountsPayables\": 199000000,\n - \ \"otherWorkingCapital\": 65000000,\n \"otherNonCashItems\": 96000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -192000000,\n \ \"netCashProvidedByOperatingActivities\": 10529000000,\n \"investmentsInPropertyPlantAndEquipment\": - -897000000,\n \"acquisitionsNet\": -80000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -55000000,\n \"netCashUsedForInvestingActivites\": -1032000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -80000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -952000000,\n \"netCashUsedForInvestingActivites\": -1032000000,\n \"debtRepayment\": -2630000000,\n \"commonStockIssued\": 75000000,\n \"commonStockRepurchased\": -5372000000,\n \"dividendsPaid\": -4788000000,\n \"otherFinancingActivites\": 4377000000,\n \"netCashUsedProvidedByFinancingActivities\": -8338000000,\n @@ -253,15 +252,15 @@ interactions: \ },\n {\n \"date\": \"2010-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2011-02-25\",\n \ \"acceptedDate\": \"2011-02-25 12:11:25\",\n \"calendarYear\": \"2010\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7259000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7498000000,\n \"depreciationAndAmortization\": 932000000,\n \"deferredIncomeTax\": 101000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1255000000,\n \"accountsReceivables\": 0,\n \"inventory\": 1071000000,\n \"accountsPayables\": -72000000,\n - \ \"otherWorkingCapital\": 952000000,\n \"otherNonCashItems\": -110000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -349000000,\n \ \"netCashProvidedByOperatingActivities\": 9437000000,\n \"investmentsInPropertyPlantAndEquipment\": - -713000000,\n \"acquisitionsNet\": -83000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 86000000,\n \"netCashUsedForInvestingActivites\": -710000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -83000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -627000000,\n \"netCashUsedForInvestingActivites\": -710000000,\n \"debtRepayment\": -183000000,\n \"commonStockIssued\": 229000000,\n \"commonStockRepurchased\": -5030000000,\n \"dividendsPaid\": -4423000000,\n \"otherFinancingActivites\": 829000000,\n \"netCashUsedProvidedByFinancingActivities\": -8578000000,\n @@ -273,15 +272,15 @@ interactions: \ },\n {\n \"date\": \"2009-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2010-02-26\",\n \ \"acceptedDate\": \"2010-02-26 08:23:45\",\n \"calendarYear\": \"2009\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6342000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 6552000000,\n \"depreciationAndAmortization\": 853000000,\n \"deferredIncomeTax\": 129000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 552000000,\n \"accountsReceivables\": 0,\n \"inventory\": 660000000,\n \"accountsPayables\": -116000000,\n - \ \"otherWorkingCapital\": 3504000000,\n \"otherNonCashItems\": 8000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -202000000,\n \ \"netCashProvidedByOperatingActivities\": 7884000000,\n \"investmentsInPropertyPlantAndEquipment\": - -715000000,\n \"acquisitionsNet\": -429000000,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -429000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 46000000,\n \"netCashUsedForInvestingActivites\": -1098000000,\n \"debtRepayment\": + -669000000,\n \"netCashUsedForInvestingActivites\": -1098000000,\n \"debtRepayment\": -101000000,\n \"commonStockIssued\": 177000000,\n \"commonStockRepurchased\": -5625000000,\n \"dividendsPaid\": -4327000000,\n \"otherFinancingActivites\": 2965000000,\n \"netCashUsedProvidedByFinancingActivities\": -6911000000,\n @@ -297,82 +296,80 @@ interactions: 842000000,\n \"deferredIncomeTax\": 5000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -133000000,\n \"accountsReceivables\": 0,\n \"inventory\": -914000000,\n \"accountsPayables\": -90000000,\n - \ \"otherWorkingCapital\": 4795000000,\n \"otherNonCashItems\": 331000000,\n - \ \"netCashProvidedByOperatingActivities\": 7935000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1099000000,\n \"acquisitionsNet\": -1663000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -399000000,\n \"netCashUsedForInvestingActivites\": -3161000000,\n \"debtRepayment\": - -5736000000,\n \"commonStockIssued\": 118000000,\n \"commonStockRepurchased\": - -5256000000,\n \"dividendsPaid\": -5079000000,\n \"otherFinancingActivites\": - 11775000000,\n \"netCashUsedProvidedByFinancingActivities\": -4178000000,\n - \ \"effectOfForexChangesOnCash\": -566000000,\n \"netChangeInCash\": + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": 331000000,\n \"netCashProvidedByOperatingActivities\": + 7935000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": + -1663000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -1498000000,\n \"netCashUsedForInvestingActivites\": + -3161000000,\n \"debtRepayment\": -5736000000,\n \"commonStockIssued\": + 118000000,\n \"commonStockRepurchased\": -5256000000,\n \"dividendsPaid\": + -5079000000,\n \"otherFinancingActivites\": 11775000000,\n \"netCashUsedProvidedByFinancingActivities\": + -4178000000,\n \"effectOfForexChangesOnCash\": -566000000,\n \"netChangeInCash\": 30000000,\n \"cashAtEndOfPeriod\": 1531000000,\n \"cashAtBeginningOfPeriod\": 1501000000,\n \"operatingCashFlow\": 7935000000,\n \"capitalExpenditure\": -1099000000,\n \"freeCashFlow\": 6836000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/0001193125-09-038765-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"netIncome\": 6026000000,\n \"depreciationAndAmortization\": 748000000,\n \"deferredIncomeTax\": -21000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -1547000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1264000000,\n \"accountsPayables\": 38000000,\n - \ \"otherWorkingCapital\": 6501000000,\n \"otherNonCashItems\": 383000000,\n - \ \"netCashProvidedByOperatingActivities\": 5589000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1072000000,\n \"acquisitionsNet\": -1432000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -82000000,\n \"netCashUsedForInvestingActivites\": -2586000000,\n \"debtRepayment\": - -3381000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -6560000000,\n \"otherFinancingActivites\": - 6572000000,\n \"netCashUsedProvidedByFinancingActivities\": -3369000000,\n - \ \"effectOfForexChangesOnCash\": 346000000,\n \"netChangeInCash\": -20000000,\n - \ \"cashAtEndOfPeriod\": 1656000000,\n \"cashAtBeginningOfPeriod\": 1676000000,\n - \ \"operatingCashFlow\": 5589000000,\n \"capitalExpenditure\": -1072000000,\n - \ \"freeCashFlow\": 4517000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": 383000000,\n \"netCashProvidedByOperatingActivities\": + 5589000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": + -1432000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -1154000000,\n \"netCashUsedForInvestingActivites\": + -2586000000,\n \"debtRepayment\": -3381000000,\n \"commonStockIssued\": + 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6560000000,\n + \ \"otherFinancingActivites\": 6572000000,\n \"netCashUsedProvidedByFinancingActivities\": + -3369000000,\n \"effectOfForexChangesOnCash\": 346000000,\n \"netChangeInCash\": + -20000000,\n \"cashAtEndOfPeriod\": 1656000000,\n \"cashAtBeginningOfPeriod\": + 1676000000,\n \"operatingCashFlow\": 5589000000,\n \"capitalExpenditure\": + -1072000000,\n \"freeCashFlow\": 4517000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2006-12-31\",\n \"acceptedDate\": \"2006-12-30 19:00:00\",\n \"calendarYear\": + \"2006-12-31\",\n \"acceptedDate\": \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": \"FY\",\n \"netIncome\": 6146000000,\n \"depreciationAndAmortization\": 658000000,\n \"deferredIncomeTax\": 226000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -730000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1077000000,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 4936000000,\n \"otherNonCashItems\": -64000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": -64000000,\n \"netCashProvidedByOperatingActivities\": 6236000000,\n \"investmentsInPropertyPlantAndEquipment\": -886000000,\n - \ \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": - 0,\n \"otherInvestingActivites\": 447000000,\n \"netCashUsedForInvestingActivites\": - -439000000,\n \"debtRepayment\": 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -2780000000,\n \"otherFinancingActivites\": - -2637000000,\n \"netCashUsedProvidedByFinancingActivities\": -5417000000,\n - \ \"effectOfForexChangesOnCash\": 87000000,\n \"netChangeInCash\": 467000000,\n - \ \"cashAtEndOfPeriod\": 1676000000,\n \"cashAtBeginningOfPeriod\": 1209000000,\n - \ \"operatingCashFlow\": 6236000000,\n \"capitalExpenditure\": -886000000,\n - \ \"freeCashFlow\": 5350000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n + \ \"acquisitionsNet\": 516000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -69000000,\n \"netCashUsedForInvestingActivites\": -439000000,\n \"debtRepayment\": + 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": + -2780000000,\n \"otherFinancingActivites\": -2637000000,\n \"netCashUsedProvidedByFinancingActivities\": + -5417000000,\n \"effectOfForexChangesOnCash\": 87000000,\n \"netChangeInCash\": + 467000000,\n \"cashAtEndOfPeriod\": 1676000000,\n \"cashAtBeginningOfPeriod\": + 1209000000,\n \"operatingCashFlow\": 6236000000,\n \"capitalExpenditure\": + -886000000,\n \"freeCashFlow\": 5350000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2005-12-31\",\n \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": + \"2005-12-31\",\n \"acceptedDate\": \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \"period\": \"FY\",\n \"netIncome\": 5620000000,\n \"depreciationAndAmortization\": 527000000,\n \"deferredIncomeTax\": -746000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -370000000,\n \"accountsReceivables\": 0,\n \"inventory\": -441000000,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 3691000000,\n \"otherNonCashItems\": 127000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": 127000000,\n \"netCashProvidedByOperatingActivities\": 5158000000,\n \"investmentsInPropertyPlantAndEquipment\": -736000000,\n - \ \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": - 0,\n \"otherInvestingActivites\": -4886000000,\n \"netCashUsedForInvestingActivites\": - -5622000000,\n \"debtRepayment\": 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -7682000000,\n \"otherFinancingActivites\": - 4718000000,\n \"netCashUsedProvidedByFinancingActivities\": -2964000000,\n - \ \"effectOfForexChangesOnCash\": -359000000,\n \"netChangeInCash\": + \ \"acquisitionsNet\": -4932000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + 46000000,\n \"netCashUsedForInvestingActivites\": -5622000000,\n \"debtRepayment\": + 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": + -7682000000,\n \"otherFinancingActivites\": 4718000000,\n \"netCashUsedProvidedByFinancingActivities\": + -2964000000,\n \"effectOfForexChangesOnCash\": -359000000,\n \"netChangeInCash\": -3787000000,\n \"cashAtEndOfPeriod\": 1209000000,\n \"cashAtBeginningOfPeriod\": 4996000000,\n \"operatingCashFlow\": 5158000000,\n \"capitalExpenditure\": - -736000000,\n \"freeCashFlow\": 4422000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n + -736000000,\n \"freeCashFlow\": 4422000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2003-12-31\",\n \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": - \"2003\",\n \"period\": \"FY\",\n \"netIncome\": 3975000000,\n \"depreciationAndAmortization\": + \"2003-12-31\",\n \"acceptedDate\": \"2003-12-31 00:00:00\",\n \"calendarYear\": + \"2003\",\n \"period\": \"FY\",\n \"netIncome\": 0,\n \"depreciationAndAmortization\": 370000000,\n \"deferredIncomeTax\": 0,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 0,\n \"accountsReceivables\": 0,\n \ \"inventory\": 0,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 11053000000,\n \"otherNonCashItems\": 285000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": 4260000000,\n \"netCashProvidedByOperatingActivities\": 4630000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": -1509000000,\n \"netCashUsedForInvestingActivites\": @@ -381,8 +378,8 @@ interactions: \ \"netCashUsedProvidedByFinancingActivities\": -2601000000,\n \"effectOfForexChangesOnCash\": 0,\n \"netChangeInCash\": 0,\n \"cashAtEndOfPeriod\": 0,\n \"cashAtBeginningOfPeriod\": 0,\n \"operatingCashFlow\": 4630000000,\n \"capitalExpenditure\": -586000000,\n - \ \"freeCashFlow\": 4044000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n }\n]" + \ \"freeCashFlow\": 4044000000,\n \"link\": null,\n \"finalLink\": + null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -398,13 +395,13 @@ interactions: Connection: - close Content-Length: - - '30135' + - '30063' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:46 GMT + - Tue, 02 May 2023 14:20:57 GMT ETag: - - W/"75b7-WgWMx6yP1zFZWeWdPEMX/vvnLmI" + - W/"756f-qjF0ESNSYTQO+i04uPiGLXDNmlM" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].yaml index c811912146db..549d219eb247 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].yaml @@ -10,8 +10,8 @@ interactions: uri: https://financialmodelingprep.com/api/v3/discounted-cash-flow/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2023-03-07\",\n \"dcf\": - 100.55973025048169,\n \"Stock Price\": 98.5\n }\n]" + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2023-05-02\",\n \"dcf\": + 99.0397302504817,\n \"Stock Price\": 96.98\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -27,13 +27,13 @@ interactions: Connection: - close Content-Length: - - '112' + - '111' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:43 GMT + - Tue, 02 May 2023 14:20:54 GMT ETag: - - W/"70-fGZ/iCdoviIneRkO6Cg8Dcw0Yew" + - W/"6f-W1oPBl8KYlXloKT8kc/ps1NqhcA" Server: - nginx/1.14.0 (Ubuntu) X-Frame-Options: @@ -96,7 +96,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:43 GMT + - Tue, 02 May 2023 14:20:55 GMT ETag: - W/"684-KUHB5l+xWU/bXUHG5KRXSaS5M+4" Server: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_enterprise-kwargs_dict1].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_enterprise-kwargs_dict1].yaml index 272541155ff6..9b5f268b3465 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_enterprise-kwargs_dict1].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_enterprise-kwargs_dict1].yaml @@ -11,64 +11,73 @@ interactions: response: body: string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"stockPrice\": - 103.83,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": - 161663310000,\n \"minusCashAndCashEquivalents\": 3207000000,\n \"addTotalDebt\": - 43123000000,\n \"enterpriseValue\": 201579310000\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2022-09-30\",\n \"stockPrice\": 92.5299988,\n - \ \"numberOfShares\": 0,\n \"marketCapitalization\": 0,\n \"minusCashAndCashEquivalents\": - 5368000000,\n \"addTotalDebt\": 24580000000,\n \"enterpriseValue\": - 19212000000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n - \ \"stockPrice\": 103.5199966,\n \"numberOfShares\": 1558000000,\n \"marketCapitalization\": - 161284154702.8,\n \"minusCashAndCashEquivalents\": 4496000000,\n \"addTotalDebt\": - 27806000000,\n \"enterpriseValue\": 184594154702.8\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2020-12-31\",\n \"stockPrice\": 79.6500015,\n - \ \"numberOfShares\": 1557000000,\n \"marketCapitalization\": 124015052335.5,\n - \ \"minusCashAndCashEquivalents\": 7280000000,\n \"addTotalDebt\": 31536000000,\n - \ \"enterpriseValue\": 148271052335.5\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2019-12-31\",\n \"stockPrice\": 84.3300018,\n \"numberOfShares\": - 1555000000,\n \"marketCapitalization\": 131133152799.00002,\n \"minusCashAndCashEquivalents\": + 101.21,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": + 157583970000,\n \"minusCashAndCashEquivalents\": 3207000000,\n \"addTotalDebt\": + 43123000000,\n \"enterpriseValue\": 197499970000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2021-12-31\",\n \"stockPrice\": 95,\n \"numberOfShares\": + 1558000000,\n \"marketCapitalization\": 148010000000,\n \"minusCashAndCashEquivalents\": + 4496000000,\n \"addTotalDebt\": 27806000000,\n \"enterpriseValue\": + 171320000000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n + \ \"stockPrice\": 82.79,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": + 128904030000.00002,\n \"minusCashAndCashEquivalents\": 7280000000,\n \"addTotalDebt\": + 31536000000,\n \"enterpriseValue\": 153160030000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2019-12-31\",\n \"stockPrice\": 85.09,\n \"numberOfShares\": + 1555000000,\n \"marketCapitalization\": 132314950000,\n \"minusCashAndCashEquivalents\": 6861000000,\n \"addTotalDebt\": 31045000000,\n \"enterpriseValue\": - 155317152799\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n - \ \"stockPrice\": 74.4800034,\n \"numberOfShares\": 1555000000,\n \"marketCapitalization\": - 115816405287,\n \"minusCashAndCashEquivalents\": 6593000000,\n \"addTotalDebt\": - 31759000000,\n \"enterpriseValue\": 140982405287\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2017-12-31\",\n \"stockPrice\": 107.9400024,\n - \ \"numberOfShares\": 1552000000,\n \"marketCapitalization\": 167522883724.8,\n - \ \"minusCashAndCashEquivalents\": 8447000000,\n \"addTotalDebt\": 34339000000,\n - \ \"enterpriseValue\": 193414883724.8\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2016-12-31\",\n \"stockPrice\": 95.9599991,\n \"numberOfShares\": - 1551000000,\n \"marketCapitalization\": 148833958604.1,\n \"minusCashAndCashEquivalents\": - 4239000000,\n \"addTotalDebt\": 29067000000,\n \"enterpriseValue\": - 173661958604.1\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n - \ \"stockPrice\": 90.0100021,\n \"numberOfShares\": 1549000000,\n \"marketCapitalization\": - 139425493252.9,\n \"minusCashAndCashEquivalents\": 3417000000,\n \"addTotalDebt\": - 28480000000,\n \"enterpriseValue\": 164488493252.9\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2014-12-31\",\n \"stockPrice\": 80.2399979,\n - \ \"numberOfShares\": 1566000000,\n \"marketCapitalization\": 125655836711.40001,\n - \ \"minusCashAndCashEquivalents\": 1682000000,\n \"addTotalDebt\": 29455000000,\n - \ \"enterpriseValue\": 153428836711.40002\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2013-12-31\",\n \"stockPrice\": 79.0899963,\n \"numberOfShares\": - 1622000000,\n \"marketCapitalization\": 128283973998.59999,\n \"minusCashAndCashEquivalents\": + 156498950000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n + \ \"stockPrice\": 66.76,\n \"numberOfShares\": 1555000000,\n \"marketCapitalization\": + 103811800000.00002,\n \"minusCashAndCashEquivalents\": 6593000000,\n \"addTotalDebt\": + 31759000000,\n \"enterpriseValue\": 128977800000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2017-12-31\",\n \"stockPrice\": 105.65,\n \"numberOfShares\": + 1552000000,\n \"marketCapitalization\": 163968800000,\n \"minusCashAndCashEquivalents\": + 8447000000,\n \"addTotalDebt\": 34339000000,\n \"enterpriseValue\": + 189860800000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n + \ \"stockPrice\": 91.49,\n \"numberOfShares\": 1551000000,\n \"marketCapitalization\": + 141900990000,\n \"minusCashAndCashEquivalents\": 4239000000,\n \"addTotalDebt\": + 29067000000,\n \"enterpriseValue\": 166728990000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2015-12-31\",\n \"stockPrice\": 87.91,\n \"numberOfShares\": + 1549000000,\n \"marketCapitalization\": 136172590000,\n \"minusCashAndCashEquivalents\": + 3417000000,\n \"addTotalDebt\": 28480000000,\n \"enterpriseValue\": + 161235590000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n + \ \"stockPrice\": 81.45,\n \"numberOfShares\": 1566000000,\n \"marketCapitalization\": + 127550700000,\n \"minusCashAndCashEquivalents\": 1682000000,\n \"addTotalDebt\": + 29455000000,\n \"enterpriseValue\": 155323700000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2013-12-31\",\n \"stockPrice\": 87.13,\n \"numberOfShares\": + 1622000000,\n \"marketCapitalization\": 141324860000,\n \"minusCashAndCashEquivalents\": 2154000000,\n \"addTotalDebt\": 27678000000,\n \"enterpriseValue\": - 153807973998.59998\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n - \ \"stockPrice\": 87.6500015,\n \"numberOfShares\": 1692000000,\n \"marketCapitalization\": - 148303802538,\n \"minusCashAndCashEquivalents\": 2983000000,\n \"addTotalDebt\": - 22839000000,\n \"enterpriseValue\": 168159802538\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2011-12-31\",\n \"stockPrice\": 74.9000015,\n - \ \"numberOfShares\": 1725908666,\n \"marketCapitalization\": 129270561672.263,\n - \ \"minusCashAndCashEquivalents\": 2550000000,\n \"addTotalDebt\": 18545000000,\n - \ \"enterpriseValue\": 145265561672.263\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2010-12-31\",\n \"stockPrice\": 56.5999985,\n \"numberOfShares\": - 1839000000,\n \"marketCapitalization\": 104087397241.5,\n \"minusCashAndCashEquivalents\": - 1703000000,\n \"addTotalDebt\": 16502000000,\n \"enterpriseValue\": - 118886397241.5\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n - \ \"stockPrice\": 45.5099983,\n \"numberOfShares\": 1943000000,\n \"marketCapitalization\": - 88425926696.9,\n \"minusCashAndCashEquivalents\": 1540000000,\n \"addTotalDebt\": - 15416000000,\n \"enterpriseValue\": 102301926696.9\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2008-12-31\",\n \"stockPrice\": 37.1500015,\n - \ \"numberOfShares\": 2068000000,\n \"marketCapitalization\": 76826203102,\n - \ \"minusCashAndCashEquivalents\": 1531000000,\n \"addTotalDebt\": 11961000000,\n - \ \"enterpriseValue\": 87256203102\n }\n]" + 166848860000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n + \ \"stockPrice\": 83.64,\n \"numberOfShares\": 1692000000,\n \"marketCapitalization\": + 141518880000,\n \"minusCashAndCashEquivalents\": 2983000000,\n \"addTotalDebt\": + 22839000000,\n \"enterpriseValue\": 161374880000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2011-12-31\",\n \"stockPrice\": 78.48,\n \"numberOfShares\": + 1725908666,\n \"marketCapitalization\": 135449312107.68001,\n \"minusCashAndCashEquivalents\": + 2550000000,\n \"addTotalDebt\": 18545000000,\n \"enterpriseValue\": + 151444312107\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n + \ \"stockPrice\": 58.53,\n \"numberOfShares\": 1839000000,\n \"marketCapitalization\": + 107636670000,\n \"minusCashAndCashEquivalents\": 1703000000,\n \"addTotalDebt\": + 16502000000,\n \"enterpriseValue\": 122435670000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2009-12-31\",\n \"stockPrice\": 48.19,\n \"numberOfShares\": + 1943000000,\n \"marketCapitalization\": 93633170000,\n \"minusCashAndCashEquivalents\": + 1540000000,\n \"addTotalDebt\": 15416000000,\n \"enterpriseValue\": + 107509170000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n + \ \"stockPrice\": 43.51,\n \"numberOfShares\": 2068000000,\n \"marketCapitalization\": + 89978680000,\n \"minusCashAndCashEquivalents\": 1531000000,\n \"addTotalDebt\": + 11961000000,\n \"enterpriseValue\": 100408680000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2007-12-31\",\n \"stockPrice\": 24.3858204516,\n + \ \"numberOfShares\": 2101000000,\n \"marketCapitalization\": 51234608768.8116,\n + \ \"minusCashAndCashEquivalents\": 1656000000,\n \"addTotalDebt\": 6307000000,\n + \ \"enterpriseValue\": 55885608768\n },\n {\n \"symbol\": \"PM\",\n + \ \"date\": \"2006-12-31\",\n \"stockPrice\": 24.3858204516,\n \"numberOfShares\": + 2109313033,\n \"marketCapitalization\": 51437328898.957825,\n \"minusCashAndCashEquivalents\": + 1676000000,\n \"addTotalDebt\": 2786000000,\n \"enterpriseValue\": 52547328898\n + \ },\n {\n \"symbol\": \"PM\",\n \"date\": \"2005-12-31\",\n \"stockPrice\": + 24.3858204516,\n \"numberOfShares\": 2109313033,\n \"marketCapitalization\": + 51437328898.957825,\n \"minusCashAndCashEquivalents\": 1209000000,\n \"addTotalDebt\": + 4909000000,\n \"enterpriseValue\": 55137328898\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2003-12-31\",\n \"stockPrice\": 24.3858204516,\n + \ \"numberOfShares\": 2028000000,\n \"marketCapitalization\": 49454443875.8448,\n + \ \"minusCashAndCashEquivalents\": 3161000000,\n \"addTotalDebt\": 0,\n + \ \"enterpriseValue\": 46293443875\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -84,13 +93,13 @@ interactions: Connection: - close Content-Length: - - '4474' + - '5220' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:42 GMT + - Tue, 02 May 2023 14:20:54 GMT ETag: - - W/"117a-pnWpP1iblLh3xBbpIxvyqkWL/xQ" + - W/"1464-t0NuVW6Xkzoda4bq7fkXt6hdXrM" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].yaml index 018f0a1a5024..2b3ef8254464 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].yaml @@ -10,51 +10,53 @@ interactions: uri: https://financialmodelingprep.com/api/v3/ratios/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-09-30\",\n \"period\": - \"FY\",\n \"currentRatio\": 1.9048970901348474,\n \"quickRatio\": 1.9048970901348474,\n - \ \"cashRatio\": 1.9048970901348474,\n \"daysOfSalesOutstanding\": 0,\n - \ \"daysOfInventoryOutstanding\": 0,\n \"operatingCycle\": 0,\n \"daysOfPayablesOutstanding\": - 0,\n \"cashConversionCycle\": 0,\n \"grossProfitMargin\": 0.6410175681632139,\n - \ \"operatingProfitMargin\": 0.384799445878723,\n \"pretaxProfitMargin\": - 0.3662867577608463,\n \"netProfitMargin\": 0.2848687110383477,\n \"effectiveTaxRate\": - 0.1928829293450232,\n \"returnOnAssets\": 0.222216764496402,\n \"returnOnEquity\": - -0.9902593849184634,\n \"returnOnCapitalEmployed\": 0.32248872001899787,\n - \ \"netIncomePerEBT\": 0.777720474471377,\n \"ebtPerEbit\": 0.9518900343642611,\n - \ \"ebitPerRevenue\": 0.384799445878723,\n \"debtRatio\": 1.1818159491121645,\n - \ \"debtEquityRatio\": -5.26649885082631,\n \"longTermDebtToCapitalization\": - 1.7237227722772277,\n \"totalDebtToCapitalization\": 1.5916596516220942,\n - \ \"interestCoverage\": 15.9140625,\n \"cashFlowToDebtRatio\": 0.43950366151342557,\n - \ \"companyEquityMultiplier\": -4.456276677246361,\n \"receivablesTurnover\": - 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": 0,\n \"fixedAssetTurnover\": - 5.6616755793226385,\n \"assetTurnover\": 0.7800672937593635,\n \"operatingCashFlowPerShare\": - 6.938342967244702,\n \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": - 3.447655748233783,\n \"payoutRatio\": 0.863395225464191,\n \"operatingCashFlowSalesRatio\": + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": + \"FY\",\n \"currentRatio\": 0.7176982733391865,\n \"quickRatio\": 0.291300848697688,\n + \ \"cashRatio\": 0.11731782265144863,\n \"daysOfSalesOutstanding\": 54.65461872678043,\n + \ \"daysOfInventoryOutstanding\": 316.4699175583231,\n \"operatingCycle\": + 371.12453628510355,\n \"daysOfPayablesOutstanding\": 130.48061743553762,\n + \ \"cashConversionCycle\": 240.64391884956592,\n \"grossProfitMargin\": + 0.6410175681632139,\n \"operatingProfitMargin\": 0.38555506580190163,\n + \ \"pretaxProfitMargin\": 0.3662867577608463,\n \"netProfitMargin\": + 0.2848687110383477,\n \"effectiveTaxRate\": 0.1928829293450232,\n \"returnOnAssets\": + 0.14669022875764012,\n \"returnOnEquity\": -1.0101596516690856,\n \"returnOnCapitalEmployed\": + 0.3565584510117921,\n \"netIncomePerEBT\": 0.777720474471377,\n \"ebtPerEbit\": + 0.9500244977951985,\n \"ebitPerRevenue\": 0.38555506580190163,\n \"debtRatio\": + 1.1023167588074123,\n \"debtEquityRatio\": -4.814446801384392,\n \"longTermDebtToCapitalization\": + 1.3455899374951772,\n \"totalDebtToCapitalization\": 1.2621612129017152,\n + \ \"interestCoverage\": 15.9453125,\n \"cashFlowToDebtRatio\": 0.25051596595784154,\n + \ \"companyEquityMultiplier\": -6.886345874734844,\n \"receivablesTurnover\": + 6.678301093355761,\n \"payablesTurnover\": 2.797350343473994,\n \"inventoryTurnover\": + 1.1533481691280598,\n \"fixedAssetTurnover\": 4.733532041728763,\n \"assetTurnover\": + 0.5149397707559864,\n \"operatingCashFlowPerShare\": 6.938342967244702,\n + \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 2.0597302504816954,\n + \ \"payoutRatio\": 0.863395225464191,\n \"operatingCashFlowSalesRatio\": 0.3401234179207858,\n \"freeCashFlowOperatingCashFlowRatio\": 0.9003054707025826,\n - \ \"cashFlowCoverageRatios\": 0.43950366151342557,\n \"shortTermCoverageRatios\": - 3.833569907735983,\n \"capitalExpenditureCoverageRatio\": -10.030640668523677,\n + \ \"cashFlowCoverageRatios\": 0.25051596595784154,\n \"shortTermCoverageRatios\": + 1.309772065955383,\n \"capitalExpenditureCoverageRatio\": -10.030640668523677,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.6040089086859688,\n \"dividendPayoutRatio\": - 0.8633952254641911,\n \"priceBookValueRatio\": -14.145405494144688,\n \"priceToBookRatio\": - -14.145405494144688,\n \"priceToSalesRatio\": 4.069220137270953,\n \"priceEarningsRatio\": - 14.284545755968171,\n \"priceToFreeCashFlowsRatio\": 13.28876927822332,\n - \ \"priceToOperatingCashFlowsRatio\": 11.963951680088865,\n \"priceCashFlowRatio\": - 11.963951680088865,\n \"priceEarningsToGrowthRatio\": -41.63945087864626,\n - \ \"priceSalesRatio\": 4.069220137270953,\n \"dividendYield\": 0.06044260981161821,\n - \ \"enterpriseValueMultiple\": 10.923299977926568,\n \"priceFairValue\": - -14.145405494144688\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n + 0.8633952254641911,\n \"priceBookValueRatio\": -17.593387294853187,\n \"priceToBookRatio\": + -17.593387294853187,\n \"priceToSalesRatio\": 4.961399471066054,\n \"priceEarningsRatio\": + 17.416442307692307,\n \"priceToFreeCashFlowsRatio\": 16.202341147439853,\n + \ \"priceToOperatingCashFlowsRatio\": 14.587056373229657,\n \"priceCashFlowRatio\": + 14.587056373229657,\n \"priceEarningsToGrowthRatio\": -25.471546874999976,\n + \ \"priceSalesRatio\": 4.961399471066054,\n \"dividendYield\": 0.04957357020514207,\n + \ \"enterpriseValueMultiple\": 14.906783153445543,\n \"priceFairValue\": + -17.593387294853187\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 0.9201246429498832,\n \"quickRatio\": 0.4381199688392625,\n \"cashRatio\": 0.2334977927810958,\n \"daysOfSalesOutstanding\": 45.79207132622194,\n \"daysOfInventoryOutstanding\": 317.3280159521436,\n \ \"operatingCycle\": 363.12008727836553,\n \"daysOfPayablesOutstanding\": 121.21784646061815,\n \"cashConversionCycle\": 241.90224081774738,\n \"grossProfitMargin\": - 0.6806241044419679,\n \"operatingProfitMargin\": 0.40948893488298044,\n + 0.6806241044419679,\n \"operatingProfitMargin\": 0.4131507721700366,\n \ \"pretaxProfitMargin\": 0.38949211908931697,\n \"netProfitMargin\": 0.29004935519821684,\n \"effectiveTaxRate\": 0.2183616742969261,\n \"returnOnAssets\": 0.22061031726810365,\n \"returnOnEquity\": -0.9013457352068078,\n \"returnOnCapitalEmployed\": - 0.5836169729975039,\n \"netIncomePerEBT\": 0.7446860693263571,\n \"ebtPerEbit\": - 0.9511664074650078,\n \"ebitPerRevenue\": 0.40948893488298044,\n \"debtRatio\": - 1.198789053039477,\n \"debtEquityRatio\": -4.897882446071641,\n \"longTermDebtToCapitalization\": + 0.5888359428182437,\n \"netIncomePerEBT\": 0.7446860693263571,\n \"ebtPerEbit\": + 0.9427360308285164,\n \"ebitPerRevenue\": 0.4131507721700366,\n \"debtRatio\": + 1.198789053039477,\n \"debtEquityRatio\": -2.7514347912131405,\n \"longTermDebtToCapitalization\": 1.6885603324930163,\n \"totalDebtToCapitalization\": 1.5709604519774012,\n - \ \"interestCoverage\": 17.44911804613297,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 17.605156037991858,\n \"cashFlowToDebtRatio\": 0.4303747392649069,\n \"companyEquityMultiplier\": -4.085691668315852,\n \ \"receivablesTurnover\": 7.970812182741117,\n \"payablesTurnover\": 3.01110777544281,\n \"inventoryTurnover\": 1.150229357798165,\n \"fixedAssetTurnover\": @@ -69,9 +71,9 @@ interactions: -14.645754997031466,\n \"priceToSalesRatio\": 4.712943798758159,\n \"priceEarningsRatio\": 16.24876495773411,\n \"priceToFreeCashFlowsRatio\": 13.192797932079507,\n \ \"priceToOperatingCashFlowsRatio\": 12.368179159354893,\n \"priceCashFlowRatio\": - 12.368179159354893,\n \"priceEarningsToGrowthRatio\": 1.2513974206254928,\n + 12.368179159354893,\n \"priceEarningsToGrowthRatio\": 1.215125031621856,\n \ \"priceSalesRatio\": 4.712943798758159,\n \"dividendYield\": 0.05121275589487197,\n - \ \"enterpriseValueMultiple\": 12.266055702727858,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 12.676285608583056,\n \"priceFairValue\": -14.645754997031466\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.0956920723935764,\n \"quickRatio\": 0.562885546775427,\n \"cashRatio\": 0.3711445322457303,\n \"daysOfSalesOutstanding\": @@ -84,9 +86,9 @@ interactions: -0.6410440041378213,\n \"returnOnCapitalEmployed\": 0.463015873015873,\n \ \"netIncomePerEBT\": 0.7355062539943394,\n \"ebtPerEbit\": 0.9387212889955434,\n \ \"ebitPerRevenue\": 0.4066355335610232,\n \"debtRatio\": 1.2372196809104095,\n - \ \"debtEquityRatio\": -4.412031511100501,\n \"longTermDebtToCapitalization\": + \ \"debtEquityRatio\": -2.5094294581045595,\n \"longTermDebtToCapitalization\": 1.805525286840587,\n \"totalDebtToCapitalization\": 1.6625019769096947,\n - \ \"interestCoverage\": 16.02747252747253,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 18.880258899676374,\n \"cashFlowToDebtRatio\": 0.31113647894469815,\n \"companyEquityMultiplier\": -3.5660857802180312,\n \ \"receivablesTurnover\": 7.6293538952406275,\n \"payablesTurnover\": 3.442086330935252,\n \"inventoryTurnover\": 0.9977061828797831,\n \"fixedAssetTurnover\": @@ -103,7 +105,7 @@ interactions: \ \"priceToOperatingCashFlowsRatio\": 13.137385854056259,\n \"priceCashFlowRatio\": 13.137385854056259,\n \"priceEarningsToGrowthRatio\": 1.3411744567572454,\n \ \"priceSalesRatio\": 4.49236878789991,\n \"dividendYield\": 0.05712777172288562,\n - \ \"enterpriseValueMultiple\": 12.614069346071487,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 13.15355805565098,\n \"priceFairValue\": -10.25734304129864\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2019-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.0892582169595921,\n \"quickRatio\": 0.5616736579408486,\n \"cashRatio\": 0.3643073328731482,\n \"daysOfSalesOutstanding\": @@ -116,9 +118,9 @@ interactions: 0.1675801749271137,\n \"returnOnEquity\": -0.6206271054677378,\n \"returnOnCapitalEmployed\": 0.4380251227019383,\n \"netIncomePerEBT\": 0.7278160453808752,\n \"ebtPerEbit\": 0.9374228468331592,\n \"ebitPerRevenue\": 0.3533299781915786,\n \"debtRatio\": - 1.2238833819241983,\n \"debtEquityRatio\": -4.5326077567590914,\n \"longTermDebtToCapitalization\": + 1.2238833819241983,\n \"debtEquityRatio\": -2.6816100889695087,\n \"longTermDebtToCapitalization\": 1.7677564825253664,\n \"totalDebtToCapitalization\": 1.5946681734127799,\n - \ \"interestCoverage\": 13.229899497487438,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 18.475438596491227,\n \"cashFlowToDebtRatio\": 0.3250120792398132,\n \"companyEquityMultiplier\": -3.70346376436037,\n \ \"receivablesTurnover\": 8.018563357546409,\n \"payablesTurnover\": 4.572857764245324,\n \"inventoryTurnover\": 1.1383865728207905,\n \"fixedAssetTurnover\": @@ -133,9 +135,9 @@ interactions: -11.429122397857821,\n \"priceToSalesRatio\": 4.439354135212213,\n \"priceEarningsRatio\": 18.41544189283229,\n \"priceToFreeCashFlowsRatio\": 14.322899978350293,\n \ \"priceToOperatingCashFlowsRatio\": 13.113473736372647,\n \"priceCashFlowRatio\": - 13.113473736372647,\n \"priceEarningsToGrowthRatio\": -1.9904349960763426,\n + 13.113473736372647,\n \"priceEarningsToGrowthRatio\": -1.9528041507190927,\n \ \"priceSalesRatio\": 4.439354135212213,\n \"dividendYield\": 0.054120868427944085,\n - \ \"enterpriseValueMultiple\": 13.925872041288486,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 14.893314617434335,\n \"priceFairValue\": -11.429122397857821\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.130940608457914,\n \"quickRatio\": 0.5908324123087663,\n \"cashRatio\": 0.383514629748124,\n \"daysOfSalesOutstanding\": @@ -148,7 +150,7 @@ interactions: 0.19876385015451872,\n \"returnOnEquity\": -0.6349626775824705,\n \"returnOnCapitalEmployed\": 0.5031844316674038,\n \"netIncomePerEBT\": 0.7413550745009839,\n \"ebtPerEbit\": 0.9379449767073921,\n \"ebitPerRevenue\": 0.3840337552742616,\n \"debtRatio\": - 1.2698173412728324,\n \"debtEquityRatio\": -4.056505337507023,\n \"longTermDebtToCapitalization\": + 1.2698173412728324,\n \"debtEquityRatio\": -2.5490809856328758,\n \"longTermDebtToCapitalization\": 1.8582942959492974,\n \"totalDebtToCapitalization\": 1.6455440414507772,\n \ \"interestCoverage\": 13.306432748538011,\n \"cashFlowToDebtRatio\": 0.29843508926603485,\n \"companyEquityMultiplier\": -3.1945581507344087,\n @@ -165,7 +167,7 @@ interactions: -8.332273858255077,\n \"priceToSalesRatio\": 3.5041957805907176,\n \"priceEarningsRatio\": 13.12246239413475,\n \"priceToFreeCashFlowsRatio\": 12.908704302412337,\n \ \"priceToOperatingCashFlowsRatio\": 10.952922557501584,\n \"priceCashFlowRatio\": - 10.952922557501584,\n \"priceEarningsToGrowthRatio\": 0.42429295074369017,\n + 10.952922557501584,\n \"priceEarningsToGrowthRatio\": 0.4253864892765349,\n \ \"priceSalesRatio\": 3.5041957805907176,\n \"dividendYield\": 0.06632194028039201,\n \ \"enterpriseValueMultiple\": 10.571950819672132,\n \"priceFairValue\": -8.332273858255077\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2017-12-31\",\n @@ -180,7 +182,7 @@ interactions: 0.14045336064047664,\n \"returnOnEquity\": -0.49933807711401623,\n \"returnOnCapitalEmployed\": 0.4259423831741095,\n \"netIncomePerEBT\": 0.5699310605345169,\n \"ebtPerEbit\": 0.9205424671824741,\n \"ebitPerRevenue\": 0.40013218310839016,\n \"debtRatio\": - 1.2380841556507167,\n \"debtEquityRatio\": -4.401621711070661,\n \"longTermDebtToCapitalization\": + 1.2380841556507167,\n \"debtEquityRatio\": -2.84122124772464,\n \"longTermDebtToCapitalization\": 1.6279093931837074,\n \"totalDebtToCapitalization\": 1.5431177818721071,\n \ \"interestCoverage\": 10.495437956204379,\n \"cashFlowToDebtRatio\": 0.2595299804886572,\n \"companyEquityMultiplier\": -3.555187820618898,\n @@ -197,7 +199,7 @@ interactions: -13.566837663412212,\n \"priceToSalesRatio\": 5.703659385000695,\n \"priceEarningsRatio\": 27.169643744821872,\n \"priceToFreeCashFlowsRatio\": 22.266268332428027,\n \ \"priceToOperatingCashFlowsRatio\": 18.398653500897666,\n \"priceCashFlowRatio\": - 18.398653500897666,\n \"priceEarningsToGrowthRatio\": -2.0286667329466983,\n + 18.398653500897666,\n \"priceEarningsToGrowthRatio\": -2.03319500690417,\n \ \"priceSalesRatio\": 5.703659385000695,\n \"dividendYield\": 0.03976366235527735,\n \ \"enterpriseValueMultiple\": 15.419540323235605,\n \"priceFairValue\": -13.566837663412212\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n @@ -212,7 +214,7 @@ interactions: 0.18905864155653848,\n \"returnOnEquity\": -0.5491015132408575,\n \"returnOnCapitalEmployed\": 0.5305631868131868,\n \"netIncomePerEBT\": 0.7020354695687223,\n \"ebtPerEbit\": 0.9176144244105409,\n \"ebitPerRevenue\": 0.4052838673412029,\n \"debtRatio\": - 1.2957857317304822,\n \"debtEquityRatio\": -3.7634773013871374,\n \"longTermDebtToCapitalization\": + 1.2957857317304822,\n \"debtEquityRatio\": -2.290904791929382,\n \"longTermDebtToCapitalization\": 1.9639140013674694,\n \"totalDebtToCapitalization\": 1.774650467061481,\n \ \"interestCoverage\": 10.116931711880262,\n \"cashFlowToDebtRatio\": 0.27787525372415456,\n \"companyEquityMultiplier\": -2.9043978562421184,\n @@ -229,7 +231,7 @@ interactions: -11.183873738965952,\n \"priceToSalesRatio\": 5.31763125351321,\n \"priceEarningsRatio\": 20.367588632122864,\n \"priceToFreeCashFlowsRatio\": 20.55046922519913,\n \ \"priceToOperatingCashFlowsRatio\": 17.568526680698277,\n \"priceCashFlowRatio\": - 17.568526680698277,\n \"priceEarningsToGrowthRatio\": 15.004123625663718,\n + 17.568526680698277,\n \"priceEarningsToGrowthRatio\": 18.086418705325165,\n \ \"priceSalesRatio\": 5.31763125351321,\n \"dividendYield\": 0.044946832294827536,\n \ \"enterpriseValueMultiple\": 14.439160820992466,\n \"priceFairValue\": -11.183873738965952\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n @@ -244,7 +246,7 @@ interactions: 0.20240899988220049,\n \"returnOnEquity\": -0.5189519782543038,\n \"returnOnCapitalEmployed\": 0.5720516962843296,\n \"netIncomePerEBT\": 0.7148205928237129,\n \"ebtPerEbit\": 0.9051115504094889,\n \"ebitPerRevenue\": 0.3964693588116743,\n \"debtRatio\": - 1.3379667805395217,\n \"debtEquityRatio\": -3.4303835699184537,\n \"longTermDebtToCapitalization\": + 1.3379667805395217,\n \"debtEquityRatio\": -2.1504077318030808,\n \"longTermDebtToCapitalization\": 2.1031151091121107,\n \"totalDebtToCapitalization\": 1.8692570228406407,\n \ \"interestCoverage\": 9.384275618374557,\n \"cashFlowToDebtRatio\": 0.27615870786516855,\n \"companyEquityMultiplier\": -2.5638779824826337,\n @@ -261,7 +263,7 @@ interactions: -10.281832527937178,\n \"priceToSalesRatio\": 5.0822045980443376,\n \"priceEarningsRatio\": 19.812685872253745,\n \"priceToFreeCashFlowsRatio\": 19.72086748732802,\n \ \"priceToOperatingCashFlowsRatio\": 17.313743165924983,\n \"priceCashFlowRatio\": - 17.313743165924983,\n \"priceEarningsToGrowthRatio\": -2.7737760221155257,\n + 17.313743165924983,\n \"priceEarningsToGrowthRatio\": -2.7854305432168514,\n \ \"priceSalesRatio\": 5.0822045980443376,\n \"dividendYield\": 0.045897636227672546,\n \ \"enterpriseValueMultiple\": 14.08540141521796,\n \"priceFairValue\": -10.281832527937178\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n @@ -276,7 +278,7 @@ interactions: 0.21294796373660727,\n \"returnOnEquity\": -0.5933169688811466,\n \"returnOnCapitalEmployed\": 0.5829140722291407,\n \"netIncomePerEBT\": 0.7035680751173709,\n \"ebtPerEbit\": 0.9101008374636814,\n \"ebitPerRevenue\": 0.39311989787348406,\n \"debtRatio\": - 1.3183846306874698,\n \"debtEquityRatio\": -3.6732916303745347,\n \"longTermDebtToCapitalization\": + 1.3183846306874698,\n \"debtEquityRatio\": -2.332330350779951,\n \"longTermDebtToCapitalization\": 1.8831468531468532,\n \"totalDebtToCapitalization\": 1.750564602401046,\n \ \"interestCoverage\": 10.001709401709402,\n \"cashFlowToDebtRatio\": 0.26273977253437447,\n \"companyEquityMultiplier\": -2.7862063504632197,\n @@ -293,7 +295,7 @@ interactions: -10.099825797767046,\n \"priceToSalesRatio\": 4.284969933147446,\n \"priceEarningsRatio\": 17.022647804617645,\n \"priceToFreeCashFlowsRatio\": 19.366945034922562,\n \ \"priceToOperatingCashFlowsRatio\": 16.48154800361804,\n \"priceCashFlowRatio\": - 16.48154800361804,\n \"priceEarningsToGrowthRatio\": -1.7907825490457763,\n + 16.48154800361804,\n \"priceEarningsToGrowthRatio\": -1.7656824879691642,\n \ \"priceSalesRatio\": 4.284969933147446,\n \"dividendYield\": 0.04731451885407136,\n \ \"enterpriseValueMultiple\": 12.279524073049252,\n \"priceFairValue\": -10.099825797767046\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2013-12-31\",\n @@ -308,7 +310,7 @@ interactions: -1.1043007983517898,\n \"returnOnCapitalEmployed\": 0.6404606198464601,\n \ \"netIncomePerEBT\": 0.6837824908308084,\n \"ebtPerEbit\": 0.9280059193488717,\n \ \"ebitPerRevenue\": 0.432937181663837,\n \"debtRatio\": 1.164378536994341,\n - \ \"debtEquityRatio\": -5.72263713623487,\n \"longTermDebtToCapitalization\": + \ \"debtEquityRatio\": -3.563996909605975,\n \"longTermDebtToCapitalization\": 1.4777019130220828,\n \"totalDebtToCapitalization\": 1.3900160707111289,\n \ \"interestCoverage\": 12.241847826086957,\n \"cashFlowToDebtRatio\": 0.36617530168364765,\n \"companyEquityMultiplier\": -4.914756631470513,\n @@ -325,7 +327,7 @@ interactions: -18.19789595673448,\n \"priceToSalesRatio\": 4.527176218086299,\n \"priceEarningsRatio\": 16.479111473880597,\n \"priceToFreeCashFlowsRatio\": 15.816996082820369,\n \ \"priceToOperatingCashFlowsRatio\": 13.944238776517018,\n \"priceCashFlowRatio\": - 13.944238776517018,\n \"priceEarningsToGrowthRatio\": 9.466334035551425,\n + 13.944238776517018,\n \"priceEarningsToGrowthRatio\": 9.521264407131026,\n \ \"priceSalesRatio\": 4.527176218086299,\n \"dividendYield\": 0.040474124651529816,\n \ \"enterpriseValueMultiple\": 11.723500562113546,\n \"priceFairValue\": -18.19789595673448\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n @@ -340,7 +342,7 @@ interactions: 0.23360764534112025,\n \"returnOnEquity\": -2.5316455696202533,\n \"returnOnCapitalEmployed\": 0.6703786191536748,\n \"netIncomePerEBT\": 0.6776006776006775,\n \"ebtPerEbit\": 0.9379604217824643,\n \"ebitPerRevenue\": 0.44127864359244034,\n \"debtRatio\": - 1.0837271037961242,\n \"debtEquityRatio\": -11.744533947065593,\n \"longTermDebtToCapitalization\": + 1.0491903371383065,\n \"debtEquityRatio\": -6.5704833141542,\n \"longTermDebtToCapitalization\": 1.245428228482666,\n \"totalDebtToCapitalization\": 1.1795176367298457,\n \ \"interestCoverage\": 13.749751737835155,\n \"cashFlowToDebtRatio\": 0.412496168834012,\n \"companyEquityMultiplier\": -10.83716915995397,\n @@ -357,7 +359,7 @@ interactions: -40.713141542002305,\n \"priceToSalesRatio\": 4.510274404818817,\n \"priceEarningsRatio\": 16.08169090909091,\n \"priceToFreeCashFlowsRatio\": 16.917977286312013,\n \ \"priceToOperatingCashFlowsRatio\": 15.021641014754273,\n \"priceCashFlowRatio\": - 15.021641014754273,\n \"priceEarningsToGrowthRatio\": 4.162038465989692,\n + 15.021641014754273,\n \"priceEarningsToGrowthRatio\": 3.640310033057856,\n \ \"priceSalesRatio\": 4.510274404818817,\n \"dividendYield\": 0.03818571769363918,\n \ \"enterpriseValueMultiple\": 11.100211858577522,\n \"priceFairValue\": -40.713141542002305\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2011-12-31\",\n @@ -372,7 +374,7 @@ interactions: 0.24208183047790802,\n \"returnOnEquity\": 37.51528384279476,\n \"returnOnCapitalEmployed\": 0.6442447086111917,\n \"netIncomePerEBT\": 0.6855250558570061,\n \"ebtPerEbit\": 0.93999399939994,\n \"ebitPerRevenue\": 0.4287230279448178,\n \"debtRatio\": - 0.9503212353471596,\n \"debtEquityRatio\": 147.2707423580786,\n \"longTermDebtToCapitalization\": + 0.9503212353471596,\n \"debtEquityRatio\": 80.9825327510917,\n \"longTermDebtToCapitalization\": 0.9847911270505413,\n \"totalDebtToCapitalization\": 0.9878022797485885,\n \ \"interestCoverage\": 14.274089935760172,\n \"cashFlowToDebtRatio\": 0.5677541116203828,\n \"companyEquityMultiplier\": 154.96943231441048,\n @@ -389,7 +391,7 @@ interactions: 591.4817122606114,\n \"priceToSalesRatio\": 4.355703511839727,\n \"priceEarningsRatio\": 15.766419754124083,\n \"priceToFreeCashFlowsRatio\": 14.062428582607975,\n \ \"priceToOperatingCashFlowsRatio\": 12.864404227151677,\n \"priceCashFlowRatio\": - 12.864404227151677,\n \"priceEarningsToGrowthRatio\": 0.5914281015904622,\n + 12.864404227151677,\n \"priceEarningsToGrowthRatio\": 0.6046345439688361,\n \ \"priceSalesRatio\": 4.355703511839727,\n \"dividendYield\": 0.03534901673176175,\n \ \"enterpriseValueMultiple\": 10.686917797451132,\n \"priceFairValue\": 591.4817122606114\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n @@ -404,7 +406,7 @@ interactions: \ \"returnOnEquity\": 2.0704506560182545,\n \"returnOnCapitalEmployed\": 0.5034612964128382,\n \"netIncomePerEBT\": 0.7031189461449051,\n \"ebtPerEbit\": 0.9217857142857143,\n \"ebitPerRevenue\": 0.4116436342252279,\n \"debtRatio\": - 0.8538944365192582,\n \"debtEquityRatio\": 8.53650884198517,\n \"longTermDebtToCapitalization\": + 0.8538944365192582,\n \"debtEquityRatio\": 4.706788362806617,\n \"longTermDebtToCapitalization\": 0.7922493481867742,\n \"totalDebtToCapitalization\": 0.8247700919632147,\n \ \"interestCoverage\": 11.498973305954825,\n \"cashFlowToDebtRatio\": 0.5718700763543813,\n \"companyEquityMultiplier\": 9.997147746719909,\n @@ -421,7 +423,7 @@ interactions: 30.700704506560182,\n \"priceToSalesRatio\": 3.9560669655983536,\n \"priceEarningsRatio\": 14.828030031684804,\n \"priceToFreeCashFlowsRatio\": 12.337995185694636,\n \ \"priceToOperatingCashFlowsRatio\": 11.405814347780016,\n \"priceCashFlowRatio\": - 11.405814347780016,\n \"priceEarningsToGrowthRatio\": 0.7086926118084648,\n + 11.405814347780016,\n \"priceEarningsToGrowthRatio\": 0.7005706942506149,\n \ \"priceSalesRatio\": 3.9560669655983536,\n \"dividendYield\": 0.04109194385147738,\n \ \"enterpriseValueMultiple\": 10.21063047285464,\n \"priceFairValue\": 30.700704506560182\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n @@ -436,7 +438,7 @@ interactions: 0.18354943273905996,\n \"returnOnEquity\": 1.109517144856543,\n \"returnOnCapitalEmployed\": 0.42953709249593564,\n \"netIncomePerEBT\": 0.6861408633560532,\n \"ebtPerEbit\": 0.9206175298804781,\n \"ebitPerRevenue\": 0.4010385460355502,\n \"debtRatio\": - 0.8221521185459597,\n \"debtEquityRatio\": 4.969734079776067,\n \"longTermDebtToCapitalization\": + 0.8221521185459597,\n \"debtEquityRatio\": 2.696990902729181,\n \"longTermDebtToCapitalization\": 0.7051784609036518,\n \"totalDebtToCapitalization\": 0.7295097482491009,\n \ \"interestCoverage\": 12.59723964868256,\n \"cashFlowToDebtRatio\": 0.51141670991178,\n \"companyEquityMultiplier\": 6.044786564030791,\n \"receivablesTurnover\": @@ -453,7 +455,7 @@ interactions: 16.380890482855143,\n \"priceToSalesRatio\": 3.740090673057719,\n \"priceEarningsRatio\": 14.763981393882055,\n \"priceToFreeCashFlowsRatio\": 13.060841121495327,\n \ \"priceToOperatingCashFlowsRatio\": 11.876353373921866,\n \"priceCashFlowRatio\": - 11.876353373921866,\n \"priceEarningsToGrowthRatio\": -6.1455072552034,\n + 11.876353373921866,\n \"priceEarningsToGrowthRatio\": -7.023436863089578,\n \ \"priceSalesRatio\": 3.740090673057719,\n \"dividendYield\": 0.0462122557636359,\n \ \"enterpriseValueMultiple\": 10.063574838528503,\n \"priceFairValue\": 16.380890482855143\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n @@ -468,7 +470,7 @@ interactions: \ \"returnOnEquity\": 0.9186666666666666,\n \"returnOnCapitalEmployed\": 0.4489223760294375,\n \"netIncomePerEBT\": 0.6933682197846432,\n \"ebtPerEbit\": 0.9696526151444185,\n \"ebitPerRevenue\": 0.39867730013616026,\n \"debtRatio\": - 0.7725342715030935,\n \"debtEquityRatio\": 3.3962666666666665,\n \"longTermDebtToCapitalization\": + 0.7725342715030935,\n \"debtEquityRatio\": 1.5948,\n \"longTermDebtToCapitalization\": 0.6026911055782169,\n \"totalDebtToCapitalization\": 0.614613843070757,\n \ \"interestCoverage\": 19.40909090909091,\n \"cashFlowToDebtRatio\": 0.6634060697266115,\n \"companyEquityMultiplier\": 4.3962666666666665,\n @@ -500,7 +502,7 @@ interactions: 0.1880597946509378,\n \"returnOnEquity\": 0.3912732939419518,\n \"returnOnCapitalEmployed\": 0.3777030478460753,\n \"netIncomePerEBT\": 0.6799052239647975,\n \"ebtPerEbit\": 0.9988729854615125,\n \"ebitPerRevenue\": 0.3892008070883411,\n \"debtRatio\": - 0.5193646038136255,\n \"debtEquityRatio\": 1.080579183169924,\n \"longTermDebtToCapitalization\": + 0.5193646038136255,\n \"debtEquityRatio\": 0.40951886241153174,\n \"longTermDebtToCapitalization\": 0.26588493255159923,\n \"totalDebtToCapitalization\": 0.2905380504882992,\n \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 0.8861582368796576,\n \ \"companyEquityMultiplier\": 2.080579183169924,\n \"receivablesTurnover\": @@ -517,7 +519,7 @@ interactions: 3.326706627414558,\n \"priceToSalesRatio\": 2.2473290976757436,\n \"priceEarningsRatio\": 8.502258341986659,\n \"priceToFreeCashFlowsRatio\": 11.342618722340402,\n \ \"priceToOperatingCashFlowsRatio\": 9.167043973664628,\n \"priceCashFlowRatio\": - 9.167043973664628,\n \"priceEarningsToGrowthRatio\": -5.663141555074171,\n + 9.167043973664628,\n \"priceEarningsToGrowthRatio\": -6.185392943795289,\n \ \"priceSalesRatio\": 2.2473290976757436,\n \"dividendYield\": 0.1280384520861866,\n \ \"enterpriseValueMultiple\": 5.984751420947911,\n \"priceFairValue\": 3.326706627414558\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2006-12-31\",\n @@ -532,9 +534,9 @@ interactions: 0.23529862174578867,\n \"returnOnEquity\": 0.4307843274689844,\n \"returnOnCapitalEmployed\": 0.4374052584809994,\n \"netIncomePerEBT\": 0.7471432044736203,\n \"ebtPerEbit\": 0.9830305927342257,\n \"ebitPerRevenue\": 0.17339411520928305,\n \"debtRatio\": - 0.45379019908116386,\n \"debtEquityRatio\": 0.8307983458330412,\n \"longTermDebtToCapitalization\": - 0.13475650433622416,\n \"totalDebtToCapitalization\": 0.13475650433622416,\n - \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 2.8064806480648063,\n + 0.45379019908116386,\n \"debtEquityRatio\": 0.1952758113128198,\n \"longTermDebtToCapitalization\": + 0.13475650433622416,\n \"totalDebtToCapitalization\": 0.16337301354600364,\n + \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 2.2383345297918162,\n \ \"companyEquityMultiplier\": 1.8307983458330412,\n \"receivablesTurnover\": 22.34259259259259,\n \"payablesTurnover\": 53.004464285714285,\n \"inventoryTurnover\": 5.034487632508834,\n \"fixedAssetTurnover\": 9.21344024436808,\n \"assetTurnover\": @@ -542,31 +544,31 @@ interactions: \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n \ \"payoutRatio\": 0.4523267165636186,\n \"operatingCashFlowSalesRatio\": 0.12921674264401162,\n \"freeCashFlowOperatingCashFlowRatio\": 0.8579217447081462,\n - \ \"cashFlowCoverageRatios\": 2.8064806480648063,\n \"shortTermCoverageRatios\": - 0,\n \"capitalExpenditureCoverageRatio\": -7.038374717832957,\n \"dividendPaidAndCapexCoverageRatio\": - 3.2925026399155226,\n \"dividendPayoutRatio\": 0.4523267165636186,\n \"priceBookValueRatio\": - 3.6053360131042145,\n \"priceToBookRatio\": 3.6053360131042145,\n \"priceToSalesRatio\": - 1.065837731018604,\n \"priceEarningsRatio\": 8.369236722902349,\n \"priceToFreeCashFlowsRatio\": - 9.614453999805201,\n \"priceToOperatingCashFlowsRatio\": 8.248449149929094,\n - \ \"priceCashFlowRatio\": 8.248449149929094,\n \"priceEarningsToGrowthRatio\": - 0.8942047998389124,\n \"priceSalesRatio\": 1.065837731018604,\n \"dividendYield\": - 0.05404635231858483,\n \"enterpriseValueMultiple\": 6.086798204443163,\n - \ \"priceFairValue\": 3.6053360131042145\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2005-12-31\",\n \"period\": \"FY\",\n \"currentRatio\": - 1.582728133880644,\n \"quickRatio\": 0.4905273129144301,\n \"cashRatio\": - 0.1908746447742343,\n \"daysOfSalesOutstanding\": 15.296988164635223,\n - \ \"daysOfInventoryOutstanding\": 60.09416767922236,\n \"operatingCycle\": - 75.39115584385758,\n \"daysOfPayablesOutstanding\": 7.417527339003645,\n - \ \"cashConversionCycle\": 67.97362850485393,\n \"grossProfitMargin\": + \ \"cashFlowCoverageRatios\": 2.2383345297918162,\n \"shortTermCoverageRatios\": + 11.056737588652481,\n \"capitalExpenditureCoverageRatio\": -7.038374717832957,\n + \ \"dividendPaidAndCapexCoverageRatio\": 3.2925026399155226,\n \"dividendPayoutRatio\": + 0.4523267165636186,\n \"priceBookValueRatio\": 3.6053360131042145,\n \"priceToBookRatio\": + 3.6053360131042145,\n \"priceToSalesRatio\": 1.065837731018604,\n \"priceEarningsRatio\": + 8.369236722902349,\n \"priceToFreeCashFlowsRatio\": 9.614453999805201,\n + \ \"priceToOperatingCashFlowsRatio\": 8.248449149929094,\n \"priceCashFlowRatio\": + 8.248449149929094,\n \"priceEarningsToGrowthRatio\": 0.89048678731681,\n + \ \"priceSalesRatio\": 1.065837731018604,\n \"dividendYield\": 0.05404635231858483,\n + \ \"enterpriseValueMultiple\": 6.086798204443163,\n \"priceFairValue\": + 3.6053360131042145\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2005-12-31\",\n + \ \"period\": \"FY\",\n \"currentRatio\": 1.582728133880644,\n \"quickRatio\": + 0.4905273129144301,\n \"cashRatio\": 0.1908746447742343,\n \"daysOfSalesOutstanding\": + 15.296988164635223,\n \"daysOfInventoryOutstanding\": 60.09416767922236,\n + \ \"operatingCycle\": 75.39115584385758,\n \"daysOfPayablesOutstanding\": + 7.417527339003645,\n \"cashConversionCycle\": 67.97362850485393,\n \"grossProfitMargin\": 0.2730966260378025,\n \"operatingProfitMargin\": 0.1707957957957958,\n \ \"pretaxProfitMargin\": 0.16872019077901432,\n \"netProfitMargin\": 0.12409468291821232,\n \"effectiveTaxRate\": 0.24015181258997514,\n \"returnOnAssets\": 0.24292197968446078,\n \"returnOnEquity\": 0.5452605025710682,\n \"returnOnCapitalEmployed\": 0.46038926254389617,\n \"netIncomePerEBT\": 0.7355058238450465,\n \"ebtPerEbit\": 0.9878474466709761,\n \"ebitPerRevenue\": 0.1707957957957958,\n \"debtRatio\": - 0.5544845472228226,\n \"debtEquityRatio\": 1.2445910546230716,\n \"longTermDebtToCapitalization\": - 0.2866140642303433,\n \"totalDebtToCapitalization\": 0.2866140642303433,\n - \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 1.2455928519681236,\n + 0.5544845472228226,\n \"debtEquityRatio\": 0.4762782574949064,\n \"longTermDebtToCapitalization\": + 0.2866140642303433,\n \"totalDebtToCapitalization\": 0.3226209253417455,\n + \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 1.0507231615400285,\n \ \"companyEquityMultiplier\": 2.2445910546230716,\n \"receivablesTurnover\": 23.8609062170706,\n \"payablesTurnover\": 49.20777279521674,\n \"inventoryTurnover\": 6.07380073800738,\n \"fixedAssetTurnover\": 9.838800782098632,\n \"assetTurnover\": @@ -574,19 +576,20 @@ interactions: \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n \ \"payoutRatio\": 1.3669039145907473,\n \"operatingCashFlowSalesRatio\": 0.11389330506977566,\n \"freeCashFlowOperatingCashFlowRatio\": 0.8573090345094998,\n - \ \"cashFlowCoverageRatios\": 1.2455928519681236,\n \"shortTermCoverageRatios\": - 0,\n \"capitalExpenditureCoverageRatio\": -7.008152173913044,\n \"dividendPaidAndCapexCoverageRatio\": - 0.7425856608119781,\n \"dividendPayoutRatio\": 1.3669039145907473,\n \"priceBookValueRatio\": - 4.990523808960689,\n \"priceToBookRatio\": 4.990523808960689,\n \"priceToSalesRatio\": - 1.1357827437501729,\n \"priceEarningsRatio\": 9.15254962614908,\n \"priceToFreeCashFlowsRatio\": - 11.63214131591086,\n \"priceToOperatingCashFlowsRatio\": 9.972339840821602,\n - \ \"priceCashFlowRatio\": 9.972339840821602,\n \"priceEarningsToGrowthRatio\": - 0,\n \"priceSalesRatio\": 1.1357827437501729,\n \"dividendYield\": 0.14934679083142757,\n - \ \"enterpriseValueMultiple\": 6.9077084563966205,\n \"priceFairValue\": - 4.990523808960689\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n - \ \"period\": \"FY\",\n \"currentRatio\": 0,\n \"quickRatio\": 0,\n - \ \"cashRatio\": 0,\n \"daysOfSalesOutstanding\": 0,\n \"daysOfInventoryOutstanding\": - 65.4888543721926,\n \"operatingCycle\": 65.4888543721926,\n \"daysOfPayablesOutstanding\": + \ \"cashFlowCoverageRatios\": 1.0507231615400285,\n \"shortTermCoverageRatios\": + 6.716145833333333,\n \"capitalExpenditureCoverageRatio\": -7.008152173913044,\n + \ \"dividendPaidAndCapexCoverageRatio\": 0.7425856608119781,\n \"dividendPayoutRatio\": + 1.3669039145907473,\n \"priceBookValueRatio\": 4.990523808960689,\n \"priceToBookRatio\": + 4.990523808960689,\n \"priceToSalesRatio\": 1.1357827437501729,\n \"priceEarningsRatio\": + 9.15254962614908,\n \"priceToFreeCashFlowsRatio\": 11.63214131591086,\n + \ \"priceToOperatingCashFlowsRatio\": 9.972339840821602,\n \"priceCashFlowRatio\": + 9.972339840821602,\n \"priceEarningsToGrowthRatio\": 0,\n \"priceSalesRatio\": + 1.1357827437501729,\n \"dividendYield\": 0.14934679083142757,\n \"enterpriseValueMultiple\": + 6.9077084563966205,\n \"priceFairValue\": 4.990523808960689\n },\n {\n + \ \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n \"period\": \"FY\",\n + \ \"currentRatio\": 0,\n \"quickRatio\": 0,\n \"cashRatio\": 0,\n + \ \"daysOfSalesOutstanding\": 0,\n \"daysOfInventoryOutstanding\": 65.4888543721926,\n + \ \"operatingCycle\": 65.4888543721926,\n \"daysOfPayablesOutstanding\": 0,\n \"cashConversionCycle\": 65.4888543721926,\n \"grossProfitMargin\": 0.2865614423912067,\n \"operatingProfitMargin\": 0.18557009793644613,\n \ \"pretaxProfitMargin\": 0.1860792476564138,\n \"netProfitMargin\": @@ -594,7 +597,7 @@ interactions: 0.22546795235394215,\n \"returnOnEquity\": 0.3788961967400629,\n \"returnOnCapitalEmployed\": 0.3514463981849121,\n \"netIncomePerEBT\": 0.6397875422501207,\n \"ebtPerEbit\": 1.0027437056165267,\n \"ebitPerRevenue\": 0.18557009793644613,\n \"debtRatio\": - 0.40493477027793534,\n \"debtEquityRatio\": 0.6804880373653608,\n \"longTermDebtToCapitalization\": + 0.40493477027793534,\n \"debtEquityRatio\": 0,\n \"longTermDebtToCapitalization\": 0,\n \"totalDebtToCapitalization\": 0,\n \"interestCoverage\": 0,\n \ \"cashFlowToDebtRatio\": 0,\n \"companyEquityMultiplier\": 1.6804880373653608,\n \ \"receivablesTurnover\": 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": @@ -628,13 +631,13 @@ interactions: Connection: - close Content-Length: - - '48884' + - '49023' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:47 GMT + - Tue, 02 May 2023 14:20:58 GMT ETag: - - W/"bef4-tAZceiPJNFujsf6YEZSiMFtDngg" + - W/"bf7f-1Ztpn2VggnRQs/Ltq1tUwFimb2s" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].yaml index cc9e29ebfbb0..02f796a22b1f 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].yaml @@ -12,9 +12,9 @@ interactions: body: string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.011367616621557077,\n \"grossProfitGrowth\": - -0.04748538011695906,\n \"ebitgrowth\": -0.049611197511664075,\n \"operatingIncomeGrowth\": - -0.049611197511664075,\n \"netIncomeGrowth\": -0.0066966736194972,\n \"epsgrowth\": - -0.003430531732418604,\n \"epsdilutedGrowth\": -0.003430531732418604,\n + -0.04748538011695906,\n \"ebitgrowth\": -0.056184971098265896,\n \"operatingIncomeGrowth\": + -0.056184971098265896,\n \"netIncomeGrowth\": -0.0066966736194972,\n \"epsgrowth\": + -0.006837606837606844,\n \"epsdilutedGrowth\": -0.005136986301369906,\n \ \"weightedAverageSharesGrowth\": -0.0006418485237483953,\n \"weightedAverageSharesDilutedGrowth\": -0.0012828736369467607,\n \"dividendsperShareGrowth\": 0.03126877850138039,\n \ \"operatingCashFlowGrowth\": -0.09726748558535973,\n \"freeCashFlowGrowth\": @@ -24,19 +24,19 @@ interactions: \ \"fiveYOperatingCFGrowthPerShare\": 0.20829311996900549,\n \"threeYOperatingCFGrowthPerShare\": 0.06928873281124993,\n \"tenYNetIncomeGrowthPerShare\": 0.1173305307409352,\n \ \"fiveYNetIncomeGrowthPerShare\": 0.4944397884530347,\n \"threeYNetIncomeGrowthPerShare\": - 0.2576726025505395,\n \"tenYShareholdersEquityGrowthPerShare\": -1.856509043016689,\n - \ \"fiveYShareholdersEquityGrowthPerShare\": 0.246429065259241,\n \"threeYShareholdersEquityGrowthPerShare\": - 0.21177651145281812,\n \"tenYDividendperShareGrowthPerShare\": 0.5709365359849053,\n + 0.2576726025505395,\n \"tenYShareholdersEquityGrowthPerShare\": -1.8002354709752093,\n + \ \"fiveYShareholdersEquityGrowthPerShare\": 0.2612745033957558,\n \"threeYShareholdersEquityGrowthPerShare\": + 0.2273046090711274,\n \"tenYDividendperShareGrowthPerShare\": 0.5709365359849053,\n \ \"fiveYDividendperShareGrowthPerShare\": 0.19431185503032025,\n \"threeYDividendperShareGrowthPerShare\": - 0.0895077947101069,\n \"receivablesGrowth\": -1,\n \"inventoryGrowth\": - -1,\n \"assetGrowth\": -0.01387745216759506,\n \"bookValueperShareGrowth\": - 0.0953029550223,\n \"debtGrowth\": -0.11601812558440625,\n \"rdexpenseGrowth\": + 0.0895077947101069,\n \"receivablesGrowth\": 0.20710659898477157,\n \"inventoryGrowth\": + 0.13371559633027522,\n \"assetGrowth\": 0.4938483894405425,\n \"bookValueperShareGrowth\": + 0.1131255957244982,\n \"debtGrowth\": 0.5508523340286269,\n \"rdexpenseGrowth\": 0,\n \"sgaexpensesGrowth\": -0.033376885615868865\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.0944796821635185,\n \"grossProfitGrowth\": 0.11764705882352941,\n \"ebitgrowth\": - 0.10215975317106617,\n \"operatingIncomeGrowth\": 0.10215975317106617,\n - \ \"netIncomeGrowth\": 0.1307100297914598,\n \"epsgrowth\": 0.12984496124031006,\n - \ \"epsdilutedGrowth\": 0.12984496124031006,\n \"weightedAverageSharesGrowth\": + 0.11201576962632842,\n \"operatingIncomeGrowth\": 0.11201576962632842,\n + \ \"netIncomeGrowth\": 0.1307100297914598,\n \"epsgrowth\": 0.13372093023255804,\n + \ \"epsdilutedGrowth\": 0.13178294573643404,\n \"weightedAverageSharesGrowth\": 0.0006422607578676942,\n \"weightedAverageSharesDilutedGrowth\": 0.0006418485237483953,\n \ \"dividendsperShareGrowth\": 0.028671209694457717,\n \"operatingCashFlowGrowth\": 0.21962902568283735,\n \"freeCashFlowGrowth\": 0.21813246471226927,\n \"tenYRevenueGrowthPerShare\": @@ -79,7 +79,7 @@ interactions: 0.0060759493670886075,\n \"grossProfitGrowth\": 0.022526103779085174,\n \ \"ebitgrowth\": -0.07436055199085875,\n \"operatingIncomeGrowth\": -0.07436055199085875,\n \"netIncomeGrowth\": -0.09177095183921123,\n \"epsgrowth\": - -0.09251968503937003,\n \"epsdilutedGrowth\": -0.09251968503937003,\n \"weightedAverageSharesGrowth\": + -0.09430255402750483,\n \"epsdilutedGrowth\": -0.09430255402750483,\n \"weightedAverageSharesGrowth\": 0,\n \"weightedAverageSharesDilutedGrowth\": 0.0006430868167202572,\n \"dividendsperShareGrowth\": 0.04008714596949895,\n \"operatingCashFlowGrowth\": 0.06457058451150031,\n \ \"freeCashFlowGrowth\": 0.14871922407361352,\n \"tenYRevenueGrowthPerShare\": @@ -100,7 +100,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": 0.030506470015305414,\n \"grossProfitGrowth\": 0.03008298755186722,\n \"ebitgrowth\": -0.010953664261497001,\n \"operatingIncomeGrowth\": -0.010953664261497001,\n \"netIncomeGrowth\": 0.3108533554266777,\n \"epsgrowth\": - 0.309278350515464,\n \"epsdilutedGrowth\": 0.309278350515464,\n \"weightedAverageSharesGrowth\": + 0.3084832904884318,\n \"epsdilutedGrowth\": 0.3084832904884318,\n \"weightedAverageSharesGrowth\": 0.0019329896907216496,\n \"weightedAverageSharesDilutedGrowth\": 0.00128783000643915,\n \ \"dividendsperShareGrowth\": 0.05394433156451575,\n \"operatingCashFlowGrowth\": 0.06350987432675045,\n \"freeCashFlowGrowth\": 0.09206952743074416,\n \"tenYRevenueGrowthPerShare\": @@ -121,8 +121,8 @@ interactions: \"PM\",\n \"date\": \"2017-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.07730934982199737,\n \"grossProfitGrowth\": 0.05909564010639528,\n \"ebitgrowth\": 0.06361534905224225,\n \"operatingIncomeGrowth\": 0.06361534905224225,\n - \ \"netIncomeGrowth\": -0.13377350366011195,\n \"epsgrowth\": -0.13392857142857154,\n - \ \"epsdilutedGrowth\": -0.13392857142857154,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": -0.13377350366011195,\n \"epsgrowth\": -0.133630289532294,\n + \ \"epsdilutedGrowth\": -0.133630289532294,\n \"weightedAverageSharesGrowth\": 0.0006447453255963894,\n \"weightedAverageSharesDilutedGrowth\": 0.0012894906511927789,\n \ \"dividendsperShareGrowth\": 0.021605357333359332,\n \"operatingCashFlowGrowth\": 0.10337996780983039,\n \"freeCashFlowGrowth\": 0.0664735698769008,\n \"tenYRevenueGrowthPerShare\": @@ -143,7 +143,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.004068074942151228,\n \"grossProfitGrowth\": -0.007745711171036777,\n \"ebitgrowth\": 0.018073990398192602,\n \"operatingIncomeGrowth\": 0.018073990398192602,\n \"netIncomeGrowth\": 0.013676705950822057,\n \"epsgrowth\": - 0.013574660633484276,\n \"epsdilutedGrowth\": 0.013574660633484276,\n \"weightedAverageSharesGrowth\": + 0.01126126126126122,\n \"epsdilutedGrowth\": 0.01126126126126122,\n \"weightedAverageSharesGrowth\": 0.0012911555842479018,\n \"weightedAverageSharesDilutedGrowth\": 0.0012911555842479018,\n \ \"dividendsperShareGrowth\": 0.019164100580270755,\n \"operatingCashFlowGrowth\": 0.02695486331849968,\n \"freeCashFlowGrowth\": 0,\n \"tenYRevenueGrowthPerShare\": @@ -164,7 +164,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.09987570127994087,\n \"grossProfitGrowth\": -0.0983911851430345,\n \"ebitgrowth\": -0.09220646043411383,\n \"operatingIncomeGrowth\": -0.09220646043411383,\n \"netIncomeGrowth\": -0.08274389430134793,\n \"epsgrowth\": - -0.0714285714285714,\n \"epsdilutedGrowth\": -0.0714285714285714,\n \"weightedAverageSharesGrowth\": + -0.07112970711297067,\n \"epsdilutedGrowth\": -0.07112970711297067,\n \"weightedAverageSharesGrowth\": -0.010855683269476373,\n \"weightedAverageSharesDilutedGrowth\": -0.010855683269476373,\n \ \"dividendsperShareGrowth\": 0.04699132401212418,\n \"operatingCashFlowGrowth\": 0.01628117327820132,\n \"freeCashFlowGrowth\": 0.04843607652596417,\n \"tenYRevenueGrowthPerShare\": @@ -185,7 +185,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.04644905019700804,\n \"grossProfitGrowth\": -0.07093766520882396,\n \"ebitgrowth\": -0.13414724380318166,\n \"operatingIncomeGrowth\": -0.13414724380318166,\n \"netIncomeGrowth\": -0.12628264925373134,\n \"epsgrowth\": - -0.09505703422053233,\n \"epsdilutedGrowth\": -0.09505703422053233,\n \"weightedAverageSharesGrowth\": + -0.09640831758034023,\n \"epsdilutedGrowth\": -0.09640831758034023,\n \"weightedAverageSharesGrowth\": -0.0345252774352651,\n \"weightedAverageSharesDilutedGrowth\": -0.0345252774352651,\n \ \"dividendsperShareGrowth\": 0.09279912297153681,\n \"operatingCashFlowGrowth\": -0.2364084854464726,\n \"freeCashFlowGrowth\": -0.26289871292669276,\n @@ -207,7 +207,7 @@ interactions: -0.005099276540140868,\n \"grossProfitGrowth\": -0.009379165873167016,\n \ \"ebitgrowth\": -0.02390582117579084,\n \"operatingIncomeGrowth\": -0.02390582117579084,\n \"netIncomeGrowth\": -0.025454545454545455,\n \"epsgrowth\": - 0.017408123791102487,\n \"epsdilutedGrowth\": 0.017408123791102487,\n \"weightedAverageSharesGrowth\": + 0.01730769230769228,\n \"epsdilutedGrowth\": 0.01730769230769228,\n \"weightedAverageSharesGrowth\": -0.041371158392434985,\n \"weightedAverageSharesDilutedGrowth\": -0.041371158392434985,\n \ \"dividendsperShareGrowth\": 0.10415539112919045,\n \"operatingCashFlowGrowth\": 0.07578813289459718,\n \"freeCashFlowGrowth\": 0.06814106395696354,\n \"tenYRevenueGrowthPerShare\": @@ -227,8 +227,8 @@ interactions: \"PM\",\n \"date\": \"2012-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.009004083995240698,\n \"grossProfitGrowth\": 0.02864978696312258,\n \"ebitgrowth\": 0.03855385538553855,\n \"operatingIncomeGrowth\": 0.03855385538553855,\n - \ \"netIncomeGrowth\": 0.024327784891165175,\n \"epsgrowth\": 0.0386389771274419,\n - \ \"epsdilutedGrowth\": 0.0386389771274419,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.024327784891165175,\n \"epsgrowth\": 0.04417670682730918,\n + \ \"epsdilutedGrowth\": 0.04417670682730918,\n \"weightedAverageSharesGrowth\": -0.019646848450322343,\n \"weightedAverageSharesDilutedGrowth\": -0.019646848450322343,\n \ \"dividendsperShareGrowth\": 0.15127387408928147,\n \"operatingCashFlowGrowth\": -0.10523316554278658,\n \"freeCashFlowGrowth\": -0.13154069767441862,\n @@ -249,8 +249,8 @@ interactions: \"PM\",\n \"date\": \"2011-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.1429359012055278,\n \"grossProfitGrowth\": 0.1671334667047728,\n \"ebitgrowth\": 0.19035714285714286,\n \"operatingIncomeGrowth\": 0.19035714285714286,\n - \ \"netIncomeGrowth\": 0.1834963493594159,\n \"epsgrowth\": 0.26658218829516545,\n - \ \"epsdilutedGrowth\": 0.2698132653061226,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.1834963493594159,\n \"epsgrowth\": 0.26075949367088613,\n + \ \"epsdilutedGrowth\": 0.2639593908629443,\n \"weightedAverageSharesGrowth\": -0.06149610331702012,\n \"weightedAverageSharesDilutedGrowth\": -0.06302461129207383,\n \ \"dividendsperShareGrowth\": 0.15345623831942803,\n \"operatingCashFlowGrowth\": 0.11571473985376708,\n \"freeCashFlowGrowth\": 0.10408069692801467,\n \"tenYRevenueGrowthPerShare\": @@ -270,8 +270,8 @@ interactions: \"PM\",\n \"date\": \"2010-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.08679848212502496,\n \"grossProfitGrowth\": 0.09254980328483108,\n \"ebitgrowth\": 0.11553784860557768,\n \"operatingIncomeGrowth\": 0.11553784860557768,\n - \ \"netIncomeGrowth\": 0.1445916114790287,\n \"epsgrowth\": 0.20923076923076928,\n - \ \"epsdilutedGrowth\": 0.20987654320987645,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.1445916114790287,\n \"epsgrowth\": 0.21165644171779155,\n + \ \"epsdilutedGrowth\": 0.21230769230769228,\n \"weightedAverageSharesGrowth\": -0.05352547606793618,\n \"weightedAverageSharesDilutedGrowth\": -0.055384615384615386,\n \ \"dividendsperShareGrowth\": 0.07999343500282076,\n \"operatingCashFlowGrowth\": 0.19698122780314561,\n \"freeCashFlowGrowth\": 0.21690612358766914,\n \"tenYRevenueGrowthPerShare\": @@ -292,7 +292,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.026064967905076834,\n \"grossProfitGrowth\": -0.022226292971850765,\n \"ebitgrowth\": -0.02029664324746292,\n \"operatingIncomeGrowth\": -0.02029664324746292,\n \"netIncomeGrowth\": -0.0795355587808418,\n \"epsgrowth\": - -0.024024024024024045,\n \"epsdilutedGrowth\": -0.024096385542168565,\n + -0.021021021021021106,\n \"epsdilutedGrowth\": -0.021084337349397544,\n \ \"weightedAverageSharesGrowth\": -0.06044487427466151,\n \"weightedAverageSharesDilutedGrowth\": -0.061597690086621755,\n \"dividendsperShareGrowth\": -0.0932523969962195,\n \ \"operatingCashFlowGrowth\": -0.006427221172022685,\n \"freeCashFlowGrowth\": @@ -334,8 +334,8 @@ interactions: \"PM\",\n \"date\": \"2007-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": -0.5276004973062578,\n \"grossProfitGrowth\": 0.11367771537061941,\n \"ebitgrowth\": 0.06034894837476099,\n \"operatingIncomeGrowth\": 0.06034894837476099,\n - \ \"netIncomeGrowth\": -0.019524894240156198,\n \"epsgrowth\": -0.015013324776190065,\n - \ \"epsdilutedGrowth\": -0.021877343418864704,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": -0.019524894240156198,\n \"epsgrowth\": -0.013745704467353964,\n + \ \"epsdilutedGrowth\": -0.020618556701030945,\n \"weightedAverageSharesGrowth\": -0.003941109199982837,\n \"weightedAverageSharesDilutedGrowth\": 0.003170210820007767,\n \ \"dividendsperShareGrowth\": 1.3690489106728898,\n \"operatingCashFlowGrowth\": -0.10375240538806928,\n \"freeCashFlowGrowth\": -0.15570093457943926,\n @@ -356,8 +356,8 @@ interactions: \"PM\",\n \"date\": \"2006-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.06562444797738916,\n \"grossProfitGrowth\": 0.022073091849935316,\n \"ebitgrowth\": 0.08183581124757595,\n \"operatingIncomeGrowth\": 0.08183581124757595,\n - \ \"netIncomeGrowth\": 0.09359430604982207,\n \"epsgrowth\": 0.09359418250058639,\n - \ \"epsdilutedGrowth\": 0.09359418250058639,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.09359430604982207,\n \"epsgrowth\": 0.09398496240601503,\n + \ \"epsdilutedGrowth\": 0.09398496240601503,\n \"weightedAverageSharesGrowth\": 0,\n \"weightedAverageSharesDilutedGrowth\": 0,\n \"dividendsperShareGrowth\": -0.6381150741994273,\n \"operatingCashFlowGrowth\": 0.20899573478092284,\n \ \"freeCashFlowGrowth\": 0.20985979194934418,\n \"tenYRevenueGrowthPerShare\": @@ -423,13 +423,13 @@ interactions: Connection: - close Content-Length: - - '33828' + - '33860' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:49 GMT + - Tue, 02 May 2023 14:20:59 GMT ETag: - - W/"8424-C/vFWHx5CFs6M1QkgSRsuyviOjQ" + - W/"8444-Gyc8jekMEKMwMU+1li7/akYxrUA" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].yaml index 5973b107e75a..b2be72b941d0 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].yaml @@ -15,16 +15,16 @@ interactions: \ \"acceptedDate\": \"2023-02-10 08:20:35\",\n \"calendarYear\": \"2022\",\n \ \"period\": \"FY\",\n \"revenue\": 31762000000,\n \"costOfRevenue\": 11402000000,\n \"grossProfit\": 20360000000,\n \"grossProfitRatio\": - 0.6410175681632139,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 0.6410175682,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 8138000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 8138000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 8138000000,\n \ \"costAndExpenses\": 19540000000,\n \"interestIncome\": 180000000,\n \ \"interestExpense\": 768000000,\n \"depreciationAndAmortization\": - 1189000000,\n \"ebitda\": 13591000000,\n \"ebitdaratio\": 0.42790126566337133,\n - \ \"operatingIncome\": 12222000000,\n \"operatingIncomeRatio\": 0.3662867577608463,\n - \ \"totalOtherIncomeExpensesNet\": 0,\n \"incomeBeforeTax\": 11634000000,\n - \ \"incomeBeforeTaxRatio\": 0.3662867577608463,\n \"incomeTaxExpense\": - 2244000000,\n \"netIncome\": 9048000000,\n \"netIncomeRatio\": 0.2848687110383477,\n + 1003000000,\n \"ebitda\": 13249000000,\n \"ebitdaratio\": 0.4171336818,\n + \ \"operatingIncome\": 12246000000,\n \"operatingIncomeRatio\": 0.3855550658,\n + \ \"totalOtherIncomeExpensesNet\": -612000000,\n \"incomeBeforeTax\": + 11634000000,\n \"incomeBeforeTaxRatio\": 0.3662867578,\n \"incomeTaxExpense\": + 2244000000,\n \"netIncome\": 9048000000,\n \"netIncomeRatio\": 0.284868711,\n \ \"eps\": 5.81,\n \"epsdiluted\": 5.81,\n \"weightedAverageShsOut\": 1557000000,\n \"weightedAverageShsOutDil\": 1557000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n @@ -34,17 +34,17 @@ interactions: \ \"acceptedDate\": \"2022-02-11 08:29:22\",\n \"calendarYear\": \"2021\",\n \ \"period\": \"FY\",\n \"revenue\": 31405000000,\n \"costOfRevenue\": 10030000000,\n \"grossProfit\": 21375000000,\n \"grossProfitRatio\": - 0.6806241044419679,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 0.6806241044,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 8419000000,\n \"sellingAndMarketingExpenses\": 8304000000,\n \"sellingGeneralAndAdministrativeExpenses\": - 8419000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 8515000000,\n - \ \"costAndExpenses\": 18545000000,\n \"interestIncome\": 109000000,\n - \ \"interestExpense\": 737000000,\n \"depreciationAndAmortization\": - 998000000,\n \"ebitda\": 13967000000,\n \"ebitdaratio\": 0.44473809902881706,\n - \ \"operatingIncome\": 12860000000,\n \"operatingIncomeRatio\": 0.38949211908931697,\n - \ \"totalOtherIncomeExpensesNet\": 0,\n \"incomeBeforeTax\": 12232000000,\n - \ \"incomeBeforeTaxRatio\": 0.38949211908931697,\n \"incomeTaxExpense\": - 2671000000,\n \"netIncome\": 9109000000,\n \"netIncomeRatio\": 0.29004935519821684,\n - \ \"eps\": 5.83,\n \"epsdiluted\": 5.83,\n \"weightedAverageShsOut\": + 8419000000,\n \"otherExpenses\": 96000000,\n \"operatingExpenses\": + 8515000000,\n \"costAndExpenses\": 18545000000,\n \"interestIncome\": + 109000000,\n \"interestExpense\": 737000000,\n \"depreciationAndAmortization\": + 540000000,\n \"ebitda\": 13515000000,\n \"ebitdaratio\": 0.4303454864,\n + \ \"operatingIncome\": 12975000000,\n \"operatingIncomeRatio\": 0.4131507722,\n + \ \"totalOtherIncomeExpensesNet\": -743000000,\n \"incomeBeforeTax\": + 12232000000,\n \"incomeBeforeTaxRatio\": 0.3894921191,\n \"incomeTaxExpense\": + 2671000000,\n \"netIncome\": 9109000000,\n \"netIncomeRatio\": 0.2900493552,\n + \ \"eps\": 5.85,\n \"epsdiluted\": 5.84,\n \"weightedAverageShsOut\": 1558000000,\n \"weightedAverageShsOutDil\": 1559000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n @@ -53,16 +53,16 @@ interactions: \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n \ \"period\": \"FY\",\n \"revenue\": 28694000000,\n \"costOfRevenue\": 9569000000,\n \"grossProfit\": 19125000000,\n \"grossProfitRatio\": - 0.666515647870635,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 97000000,\n \"sellingAndMarketingExpenses\": 7384000000,\n \"sellingGeneralAndAdministrativeExpenses\": + 0.6665156479,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 7481000000,\n \"sellingAndMarketingExpenses\": 7384000000,\n \"sellingGeneralAndAdministrativeExpenses\": 7481000000,\n \"otherExpenses\": 73000000,\n \"operatingExpenses\": 7554000000,\n \"costAndExpenses\": 17123000000,\n \"interestIncome\": - 110000000,\n \"interestExpense\": 728000000,\n \"depreciationAndAmortization\": - 981000000,\n \"ebitda\": 12142000000,\n \"ebitdaratio\": 0.42315466648079736,\n - \ \"operatingIncome\": 11668000000,\n \"operatingIncomeRatio\": 0.4066355335610232,\n + 110000000,\n \"interestExpense\": 618000000,\n \"depreciationAndAmortization\": + -24000000,\n \"ebitda\": 11644000000,\n \"ebitdaratio\": 0.4057991218,\n + \ \"operatingIncome\": 11668000000,\n \"operatingIncomeRatio\": 0.4066355336,\n \ \"totalOtherIncomeExpensesNet\": -715000000,\n \"incomeBeforeTax\": - 10953000000,\n \"incomeBeforeTaxRatio\": 0.38171743221579424,\n \"incomeTaxExpense\": - 2377000000,\n \"netIncome\": 8056000000,\n \"netIncomeRatio\": 0.28075555865337704,\n + 10953000000,\n \"incomeBeforeTaxRatio\": 0.3817174322,\n \"incomeTaxExpense\": + 2377000000,\n \"netIncome\": 8056000000,\n \"netIncomeRatio\": 0.2807555587,\n \ \"eps\": 5.16,\n \"epsdiluted\": 5.16,\n \"weightedAverageShsOut\": 1557000000,\n \"weightedAverageShsOutDil\": 1558000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm\",\n @@ -72,16 +72,16 @@ interactions: \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n \ \"period\": \"FY\",\n \"revenue\": 29805000000,\n \"costOfRevenue\": 10513000000,\n \"grossProfit\": 19292000000,\n \"grossProfitRatio\": - 0.6472739473242745,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 8784000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": + 0.6472739473,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 8784000000,\n \"sellingAndMarketingExpenses\": 8695000000,\n \"sellingGeneralAndAdministrativeExpenses\": 8784000000,\n \"otherExpenses\": 66000000,\n \"operatingExpenses\": 8850000000,\n \"costAndExpenses\": 19363000000,\n \"interestIncome\": - 226000000,\n \"interestExpense\": 796000000,\n \"depreciationAndAmortization\": - 964000000,\n \"ebitda\": 11238000000,\n \"ebitdaratio\": 0.3770508303975843,\n - \ \"operatingIncome\": 10531000000,\n \"operatingIncomeRatio\": 0.3533299781915786,\n + 226000000,\n \"interestExpense\": 570000000,\n \"depreciationAndAmortization\": + -23000000,\n \"ebitda\": 10508000000,\n \"ebitdaratio\": 0.3525582956,\n + \ \"operatingIncome\": 10531000000,\n \"operatingIncomeRatio\": 0.3533299782,\n \ \"totalOtherIncomeExpensesNet\": -659000000,\n \"incomeBeforeTax\": - 9872000000,\n \"incomeBeforeTaxRatio\": 0.3312195940278477,\n \"incomeTaxExpense\": - 2293000000,\n \"netIncome\": 7185000000,\n \"netIncomeRatio\": 0.24106693507800706,\n + 9872000000,\n \"incomeBeforeTaxRatio\": 0.331219594,\n \"incomeTaxExpense\": + 2293000000,\n \"netIncome\": 7185000000,\n \"netIncomeRatio\": 0.2410669351,\n \ \"eps\": 4.61,\n \"epsdiluted\": 4.61,\n \"weightedAverageShsOut\": 1555000000,\n \"weightedAverageShsOutDil\": 1556000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm\",\n @@ -92,16 +92,16 @@ interactions: \ \"period\": \"FY\",\n \"revenue\": 29625000000,\n \"costOfRevenue\": 10758000000,\n \"grossProfit\": 18867000000,\n \"grossProfitRatio\": 0.6368607594936709,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 7449000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": + 7449000000,\n \"sellingAndMarketingExpenses\": 7408000000,\n \"sellingGeneralAndAdministrativeExpenses\": 7449000000,\n \"otherExpenses\": 82000000,\n \"operatingExpenses\": 7531000000,\n \"costAndExpenses\": 18289000000,\n \"interestIncome\": 190000000,\n \"interestExpense\": 855000000,\n \"depreciationAndAmortization\": 989000000,\n \"ebitda\": 12200000000,\n \"ebitdaratio\": 0.4118143459915612,\n \ \"operatingIncome\": 11377000000,\n \"operatingIncomeRatio\": 0.3840337552742616,\n - \ \"totalOtherIncomeExpensesNet\": -706000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -41000000,\n \"incomeBeforeTax\": 10671000000,\n \"incomeBeforeTaxRatio\": 0.36020253164556965,\n \"incomeTaxExpense\": 2445000000,\n \"netIncome\": 7911000000,\n \"netIncomeRatio\": 0.2670379746835443,\n - \ \"eps\": 5.08,\n \"epsdiluted\": 5.08,\n \"weightedAverageShsOut\": + \ \"eps\": 5.09,\n \"epsdiluted\": 5.09,\n \"weightedAverageShsOut\": 1555000000,\n \"weightedAverageShsOutDil\": 1555000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/0001413329-19-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm\"\n @@ -120,7 +120,7 @@ interactions: \ \"totalOtherIncomeExpensesNet\": -914000000,\n \"incomeBeforeTax\": 10589000000,\n \"incomeBeforeTaxRatio\": 0.36833866703770696,\n \"incomeTaxExpense\": 4307000000,\n \"netIncome\": 6035000000,\n \"netIncomeRatio\": 0.20992764714067066,\n - \ \"eps\": 3.88,\n \"epsdiluted\": 3.88,\n \"weightedAverageShsOut\": + \ \"eps\": 3.89,\n \"epsdiluted\": 3.89,\n \"weightedAverageShsOut\": 1552000000,\n \"weightedAverageShsOutDil\": 1553000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/0001413329-18-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/pm123117form10kwrapinclfsm.htm\"\n @@ -139,7 +139,7 @@ interactions: \ \"totalOtherIncomeExpensesNet\": -891000000,\n \"incomeBeforeTax\": 9924000000,\n \"incomeBeforeTaxRatio\": 0.37189432265317596,\n \"incomeTaxExpense\": 2768000000,\n \"netIncome\": 6967000000,\n \"netIncomeRatio\": 0.2610830054337643,\n - \ \"eps\": 4.48,\n \"epsdiluted\": 4.48,\n \"weightedAverageShsOut\": + \ \"eps\": 4.49,\n \"epsdiluted\": 4.49,\n \"weightedAverageShsOut\": 1551000000,\n \"weightedAverageShsOutDil\": 1551000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/0001413329-17-000014-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/pm123116form10kwrapinclfsm.htm\"\n @@ -155,10 +155,10 @@ interactions: 124000000,\n \"interestExpense\": 1132000000,\n \"depreciationAndAmortization\": 754000000,\n \"ebitda\": 11447000000,\n \"ebitdaratio\": 0.42722251250279913,\n \ \"operatingIncome\": 10623000000,\n \"operatingIncomeRatio\": 0.3964693588116743,\n - \ \"totalOtherIncomeExpensesNet\": -1008000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -68000000,\n \"incomeBeforeTax\": 9615000000,\n \"incomeBeforeTaxRatio\": 0.3588489960438904,\n \"incomeTaxExpense\": 2688000000,\n \"netIncome\": 6873000000,\n \"netIncomeRatio\": 0.256512652086288,\n - \ \"eps\": 4.42,\n \"epsdiluted\": 4.42,\n \"weightedAverageShsOut\": + \ \"eps\": 4.44,\n \"epsdiluted\": 4.44,\n \"weightedAverageShsOut\": 1549000000,\n \"weightedAverageShsOutDil\": 1549000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/0001413329-16-000076-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/pm123115form10kwrapinclfsm.htm\"\n @@ -174,10 +174,10 @@ interactions: 118000000,\n \"interestExpense\": 1170000000,\n \"depreciationAndAmortization\": 889000000,\n \"ebitda\": 12649000000,\n \"ebitdaratio\": 0.42493365135888733,\n \ \"operatingIncome\": 11702000000,\n \"operatingIncomeRatio\": 0.39311989787348406,\n - \ \"totalOtherIncomeExpensesNet\": -1052000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -535000000,\n \"incomeBeforeTax\": 10650000000,\n \"incomeBeforeTaxRatio\": 0.35777874827829476,\n \"incomeTaxExpense\": 3097000000,\n \"netIncome\": 7493000000,\n \"netIncomeRatio\": 0.25172170524406223,\n - \ \"eps\": 4.76,\n \"epsdiluted\": 4.76,\n \"weightedAverageShsOut\": + \ \"eps\": 4.78,\n \"epsdiluted\": 4.78,\n \"weightedAverageShsOut\": 1566000000,\n \"weightedAverageShsOutDil\": 1566000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/0001413329-15-000016-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/pm12312014form10kwrapinclf.htm\"\n @@ -193,10 +193,10 @@ interactions: 131000000,\n \"interestExpense\": 1104000000,\n \"depreciationAndAmortization\": 882000000,\n \"ebitda\": 14232000000,\n \"ebitdaratio\": 0.45590543614056445,\n \ \"operatingIncome\": 13515000000,\n \"operatingIncomeRatio\": 0.432937181663837,\n - \ \"totalOtherIncomeExpensesNet\": -973000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -309000000,\n \"incomeBeforeTax\": 12542000000,\n \"incomeBeforeTaxRatio\": 0.4017682672902585,\n \"incomeTaxExpense\": 3670000000,\n \"netIncome\": 8576000000,\n \"netIncomeRatio\": 0.274722106544511,\n - \ \"eps\": 5.26,\n \"epsdiluted\": 5.26,\n \"weightedAverageShsOut\": + \ \"eps\": 5.29,\n \"epsdiluted\": 5.29,\n \"weightedAverageShsOut\": 1622000000,\n \"weightedAverageShsOutDil\": 1622000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/0001413329-14-000012-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/pm1231201310-k.htm\"\n @@ -212,10 +212,10 @@ interactions: 148000000,\n \"interestExpense\": 1007000000,\n \"depreciationAndAmortization\": 898000000,\n \"ebitda\": 14538000000,\n \"ebitdaratio\": 0.4633330146285496,\n \ \"operatingIncome\": 13846000000,\n \"operatingIncomeRatio\": 0.44127864359244034,\n - \ \"totalOtherIncomeExpensesNet\": -859000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -83000000,\n \"incomeBeforeTax\": 12987000000,\n \"incomeBeforeTaxRatio\": 0.41390190266755905,\n \"incomeTaxExpense\": 3833000000,\n \"netIncome\": 8800000000,\n \"netIncomeRatio\": 0.2804602097077477,\n - \ \"eps\": 5.17,\n \"epsdiluted\": 5.17,\n \"weightedAverageShsOut\": + \ \"eps\": 5.2,\n \"epsdiluted\": 5.2,\n \"weightedAverageShsOut\": 1692000000,\n \"weightedAverageShsOutDil\": 1692000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n @@ -231,10 +231,10 @@ interactions: 134000000,\n \"interestExpense\": 934000000,\n \"depreciationAndAmortization\": 993000000,\n \"ebitda\": 14171000000,\n \"ebitdaratio\": 0.4557031224876998,\n \ \"operatingIncome\": 13332000000,\n \"operatingIncomeRatio\": 0.4287230279448178,\n - \ \"totalOtherIncomeExpensesNet\": -800000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -109000000,\n \"incomeBeforeTax\": 12532000000,\n \"incomeBeforeTaxRatio\": 0.40299707367270154,\n \"incomeTaxExpense\": 3653000000,\n \"netIncome\": 8591000000,\n \"netIncomeRatio\": 0.27626459143968873,\n - \ \"eps\": 4.977668,\n \"epsdiluted\": 4.977668,\n \"weightedAverageShsOut\": + \ \"eps\": 4.98,\n \"epsdiluted\": 4.98,\n \"weightedAverageShsOut\": 1725908666,\n \"weightedAverageShsOutDil\": 1725908666,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/0001193125-12-076983-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/d258717d10k.htm\"\n @@ -250,10 +250,10 @@ interactions: 98000000,\n \"interestExpense\": 974000000,\n \"depreciationAndAmortization\": 932000000,\n \"ebitda\": 11991000000,\n \"ebitdaratio\": 0.4407159658923846,\n \ \"operatingIncome\": 11200000000,\n \"operatingIncomeRatio\": 0.4116436342252279,\n - \ \"totalOtherIncomeExpensesNet\": -876000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -47000000,\n \"incomeBeforeTax\": 10324000000,\n \"incomeBeforeTaxRatio\": 0.379447221405469,\n \"incomeTaxExpense\": 2826000000,\n \"netIncome\": 7259000000,\n \"netIncomeRatio\": 0.26679653043222584,\n - \ \"eps\": 3.93,\n \"epsdiluted\": 3.92,\n \"weightedAverageShsOut\": + \ \"eps\": 3.95,\n \"epsdiluted\": 3.94,\n \"weightedAverageShsOut\": 1839000000,\n \"weightedAverageShsOutDil\": 1842000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/0001193125-11-046772-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/d10k.htm\"\n @@ -269,10 +269,10 @@ interactions: 0,\n \"interestExpense\": 797000000,\n \"depreciationAndAmortization\": 853000000,\n \"ebitda\": 10683000000,\n \"ebitdaratio\": 0.4267225883762732,\n \ \"operatingIncome\": 10040000000,\n \"operatingIncomeRatio\": 0.4010385460355502,\n - \ \"totalOtherIncomeExpensesNet\": -797000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -29000000,\n \"incomeBeforeTax\": 9243000000,\n \"incomeBeforeTaxRatio\": 0.36920311563810665,\n \"incomeTaxExpense\": 2691000000,\n \"netIncome\": 6342000000,\n \"netIncomeRatio\": 0.25332534451767524,\n - \ \"eps\": 3.25,\n \"epsdiluted\": 3.24,\n \"weightedAverageShsOut\": + \ \"eps\": 3.26,\n \"epsdiluted\": 3.25,\n \"weightedAverageShsOut\": 1943000000,\n \"weightedAverageShsOutDil\": 1950000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/0001193125-10-041735-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/d10k.htm\"\n @@ -288,7 +288,7 @@ interactions: 217000000,\n \"interestExpense\": 528000000,\n \"depreciationAndAmortization\": 842000000,\n \"ebitda\": 11047000000,\n \"ebitdaratio\": 0.4297607469363937,\n \ \"operatingIncome\": 10248000000,\n \"operatingIncomeRatio\": 0.39867730013616026,\n - \ \"totalOtherIncomeExpensesNet\": -311000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -84000000,\n \"incomeBeforeTax\": 9937000000,\n \"incomeBeforeTaxRatio\": 0.386578486675744,\n \"incomeTaxExpense\": 2787000000,\n \"netIncome\": 6890000000,\n \"netIncomeRatio\": 0.26804123711340205,\n \ \"eps\": 3.33,\n \"epsdiluted\": 3.32,\n \"weightedAverageShsOut\": @@ -297,7 +297,7 @@ interactions: \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"revenue\": 22798000000,\n \"costOfRevenue\": 8720000000,\n \"grossProfit\": 14078000000,\n \"grossProfitRatio\": 0.6175103079217475,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": @@ -307,51 +307,51 @@ interactions: 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 748000000,\n \ \"ebitda\": 9338000000,\n \"ebitdaratio\": 0.40959733309939467,\n \"operatingIncome\": 8873000000,\n \"operatingIncomeRatio\": 0.3892008070883411,\n \"totalOtherIncomeExpensesNet\": - -10000000,\n \"incomeBeforeTax\": 8863000000,\n \"incomeBeforeTaxRatio\": + -156000000,\n \"incomeBeforeTax\": 8863000000,\n \"incomeBeforeTaxRatio\": 0.38876217212036146,\n \"incomeTaxExpense\": 2564000000,\n \"netIncome\": 6026000000,\n \"netIncomeRatio\": 0.2643214317045355,\n \"eps\": 2.87,\n \ \"epsdiluted\": 2.85,\n \"weightedAverageShsOut\": 2101000000,\n \"weightedAverageShsOutDil\": - 2116000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n },\n {\n \"date\": + 2116000000,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2006-12-31\",\n \"acceptedDate\": - \"2006-12-30 19:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": + \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": \"FY\",\n \"revenue\": 48260000000,\n \"costOfRevenue\": 35619000000,\n \ \"grossProfit\": 12641000000,\n \"grossProfitRatio\": 0.26193535018648983,\n \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": - 4574000000,\n \"otherExpenses\": -301000000,\n \"operatingExpenses\": - 4273000000,\n \"costAndExpenses\": 39892000000,\n \"interestIncome\": - 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 658000000,\n - \ \"ebitda\": 8633000000,\n \"ebitdaratio\": 0.17888520513883133,\n \"operatingIncome\": - 8368000000,\n \"operatingIncomeRatio\": 0.17339411520928305,\n \"totalOtherIncomeExpensesNet\": - -142000000,\n \"incomeBeforeTax\": 8226000000,\n \"incomeBeforeTaxRatio\": + 4574000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 4574000000,\n + \ \"costAndExpenses\": 39892000000,\n \"interestIncome\": 0,\n \"interestExpense\": + 0,\n \"depreciationAndAmortization\": 658000000,\n \"ebitda\": 8633000000,\n + \ \"ebitdaratio\": 0.17888520513883133,\n \"operatingIncome\": 8368000000,\n + \ \"operatingIncomeRatio\": 0.17339411520928305,\n \"totalOtherIncomeExpensesNet\": + 301000000,\n \"incomeBeforeTax\": 8226000000,\n \"incomeBeforeTaxRatio\": 0.17045171985080812,\n \"incomeTaxExpense\": 1829000000,\n \"netIncome\": - 6146000000,\n \"netIncomeRatio\": 0.12735184417737255,\n \"eps\": 2.913745,\n - \ \"epsdiluted\": 2.913745,\n \"weightedAverageShsOut\": 2109313033,\n - \ \"weightedAverageShsOutDil\": 2109313033,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n - \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2005-12-31\",\n \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": - \"2005\",\n \"period\": \"FY\",\n \"revenue\": 45288000000,\n \"costOfRevenue\": - 32920000000,\n \"grossProfit\": 12368000000,\n \"grossProfitRatio\": - 0.2730966260378025,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 6146000000,\n \"netIncomeRatio\": 0.12735184417737255,\n \"eps\": 2.91,\n + \ \"epsdiluted\": 2.91,\n \"weightedAverageShsOut\": 2109313033,\n \"weightedAverageShsOutDil\": + 2109313033,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": + \"2005-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n + \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2005-12-31\",\n \"acceptedDate\": + \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \"period\": + \"FY\",\n \"revenue\": 45288000000,\n \"costOfRevenue\": 32920000000,\n + \ \"grossProfit\": 12368000000,\n \"grossProfitRatio\": 0.2730966260378025,\n + \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 4543000000,\n \"otherExpenses\": 90000000,\n \"operatingExpenses\": 4633000000,\n \"costAndExpenses\": 37553000000,\n \"interestIncome\": 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 527000000,\n \ \"ebitda\": 7982000000,\n \"ebitdaratio\": 0.17624977919095566,\n \"operatingIncome\": 7735000000,\n \"operatingIncomeRatio\": 0.1707957957957958,\n \"totalOtherIncomeExpensesNet\": - -94000000,\n \"incomeBeforeTax\": 7641000000,\n \"incomeBeforeTaxRatio\": + -90000000,\n \"incomeBeforeTax\": 7641000000,\n \"incomeBeforeTaxRatio\": 0.16872019077901432,\n \"incomeTaxExpense\": 1835000000,\n \"netIncome\": - 5620000000,\n \"netIncomeRatio\": 0.12409468291821232,\n \"eps\": 2.664375,\n - \ \"epsdiluted\": 2.664375,\n \"weightedAverageShsOut\": 2109313033,\n - \ \"weightedAverageShsOutDil\": 2109313033,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n - \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2003-12-31\",\n \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": - \"2003\",\n \"period\": \"FY\",\n \"revenue\": 33389000000,\n \"costOfRevenue\": - 23821000000,\n \"grossProfit\": 9568000000,\n \"grossProfitRatio\": - 0.2865614423912067,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 5620000000,\n \"netIncomeRatio\": 0.12409468291821232,\n \"eps\": 2.66,\n + \ \"epsdiluted\": 2.66,\n \"weightedAverageShsOut\": 2109313033,\n \"weightedAverageShsOutDil\": + 2109313033,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": + \"2003-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n + \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2003-12-31\",\n \"acceptedDate\": + \"2003-12-31 00:00:00\",\n \"calendarYear\": \"2003\",\n \"period\": + \"FY\",\n \"revenue\": 33389000000,\n \"costOfRevenue\": 23821000000,\n + \ \"grossProfit\": 9568000000,\n \"grossProfitRatio\": 0.2865614423912067,\n + \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 3372000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 3372000000,\n \ \"costAndExpenses\": 27193000000,\n \"interestIncome\": 0,\n \"interestExpense\": @@ -362,7 +362,7 @@ interactions: 0.1860792476564138,\n \"incomeTaxExpense\": 2090000000,\n \"netIncome\": 3975000000,\n \"netIncomeRatio\": 0.11905118452184851,\n \"eps\": 1.96,\n \ \"epsdiluted\": 1.95,\n \"weightedAverageShsOut\": 2028000000,\n \"weightedAverageShsOutDil\": - 2038000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n }\n]" + 2038000000,\n \"link\": null,\n \"finalLink\": null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -378,13 +378,13 @@ interactions: Connection: - close Content-Length: - - '27901' + - '27789' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:44 GMT + - Tue, 02 May 2023 14:20:55 GMT ETag: - - W/"6cfd-4PEYPFcfGFtjPUhmx+H6jpfUIm0" + - W/"6c8d-dyok+KH8DbFv/5YYI3EX3gmW7OE" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].yaml index 477726b0c870..5e6d75cca978 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].yaml @@ -10,36 +10,37 @@ interactions: uri: https://financialmodelingprep.com/api/v3/key-metrics/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-09-30\",\n \"period\": + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": \"FY\",\n \"revenuePerShare\": 20.399486191393706,\n \"netIncomePerShare\": 5.8111753371868975,\n \"operatingCashFlowPerShare\": 6.938342967244702,\n - \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 3.447655748233783,\n - \ \"bookValuePerShare\": -5.868336544637122,\n \"tangibleBookValuePerShare\": - -10.118175979447656,\n \"shareholdersEquityPerShare\": -5.868336544637122,\n - \ \"interestDebtPerShare\": 16.280025690430314,\n \"marketCap\": 129246570000.00002,\n - \ \"enterpriseValue\": 148458570000,\n \"peRatio\": 14.284545755968171,\n - \ \"priceToSalesRatio\": 4.069220137270953,\n \"pocfratio\": 11.963951680088865,\n - \ \"pfcfRatio\": 13.28876927822332,\n \"pbRatio\": -14.145405494144688,\n - \ \"ptbRatio\": -14.145405494144688,\n \"evToSales\": 4.674093885775455,\n - \ \"enterpriseValueOverEBITDA\": 10.923299977926568,\n \"evToOperatingCashFlow\": - 13.742346570397112,\n \"evToFreeCashFlow\": 15.264093152375077,\n \"earningsYield\": - 0.07000572626414765,\n \"freeCashFlowYield\": 0.07525151344441867,\n \"debtToEquity\": - -5.26649885082631,\n \"debtToAssets\": 1.1818159491121645,\n \"netDebtToEBITDA\": - 1.41358251784269,\n \"currentRatio\": 1.9048970901348474,\n \"interestCoverage\": - 15.9140625,\n \"incomeQuality\": 1.1339351317308701,\n \"dividendYield\": - 0.06044260981161821,\n \"payoutRatio\": 0.863395225464191,\n \"salesGeneralAndAdministrativeToRevenue\": + \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 2.0597302504816954,\n + \ \"bookValuePerShare\": -5.752729608220938,\n \"tangibleBookValuePerShare\": + -21.000642260757868,\n \"shareholdersEquityPerShare\": -5.752729608220938,\n + \ \"interestDebtPerShare\": 28.18946692357097,\n \"marketCap\": 157583970000,\n + \ \"enterpriseValue\": 197499970000,\n \"peRatio\": 17.416442307692307,\n + \ \"priceToSalesRatio\": 4.961399471066054,\n \"pocfratio\": 14.587056373229657,\n + \ \"pfcfRatio\": 16.202341147439853,\n \"pbRatio\": -17.593387294853187,\n + \ \"ptbRatio\": -17.593387294853187,\n \"evToSales\": 6.218121339965997,\n + \ \"enterpriseValueOverEBITDA\": 14.906783153445543,\n \"evToOperatingCashFlow\": + 18.281955938165325,\n \"evToFreeCashFlow\": 20.306392144766605,\n \"earningsYield\": + 0.05741700758014917,\n \"freeCashFlowYield\": 0.061719475654789,\n \"debtToEquity\": + -7.5909344646645085,\n \"debtToAssets\": 1.1023167588074123,\n \"netDebtToEBITDA\": + 3.012755679673938,\n \"currentRatio\": 0.7176982733391865,\n \"interestCoverage\": + 15.9453125,\n \"incomeQuality\": 1.1339351317308701,\n \"dividendYield\": + 0.04957357020514207,\n \"payoutRatio\": 0.863395225464191,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2562181222844909,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": - 0.20509860746125697,\n \"capexToOperatingCashFlow\": -0.09969452929741739,\n + 0.42779786319936447,\n \"capexToOperatingCashFlow\": -0.09969452929741739,\n \ \"capexToRevenue\": -0.03390844405264152,\n \"capexToDepreciation\": -0.9058031959629941,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 27.700062878383978,\n \"roic\": 0.32248872001899787,\n \"returnOnTangibleAssets\": - 0.27955261694370637,\n \"grahamNetNet\": -27.457931920359666,\n \"workingCapital\": - 2550000000,\n \"tangibleAssetValue\": -15754000000,\n \"netCurrentAssetValue\": - -42752000000,\n \"investedCapital\": -2.6901608843165152,\n \"averageReceivables\": - 1970000000,\n \"averagePayables\": 1665500000,\n \"averageInventory\": - 4360000000,\n \"daysSalesOutstanding\": 0,\n \"daysPayablesOutstanding\": - 0,\n \"daysOfInventoryOnHand\": 0,\n \"receivablesTurnover\": 0,\n \"payablesTurnover\": - 0,\n \"inventoryTurnover\": 0,\n \"roe\": -0.9902593849184634,\n \"capexPerShare\": + 27.425858408953456,\n \"roic\": 0.19307994856988234,\n \"returnOnTangibleAssets\": + 0.2563608545361818,\n \"grahamNetNet\": -36.143224149004496,\n \"workingCapital\": + -7717000000,\n \"tangibleAssetValue\": -32698000000,\n \"netCurrentAssetValue\": + -48373000000,\n \"investedCapital\": -4.814446801384392,\n \"averageReceivables\": + 4348000000,\n \"averagePayables\": 3703500000,\n \"averageInventory\": + 9303000000,\n \"daysSalesOutstanding\": 54.65461872678043,\n \"daysPayablesOutstanding\": + 130.48061743553762,\n \"daysOfInventoryOnHand\": 316.4699175583231,\n \"receivablesTurnover\": + 6.678301093355761,\n \"payablesTurnover\": 2.797350343473994,\n \"inventoryTurnover\": + 1.1533481691280598,\n \"roe\": -1.0101596516690856,\n \"capexPerShare\": -0.6917148362235067\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \ \"period\": \"FY\",\n \"revenuePerShare\": 20.157252888318357,\n \"netIncomePerShare\": 5.846598202824134,\n \"operatingCashFlowPerShare\": 7.681001283697047,\n @@ -51,18 +52,18 @@ interactions: \ \"priceToSalesRatio\": 4.712943798758159,\n \"pocfratio\": 12.368179159354893,\n \ \"pfcfRatio\": 13.192797932079507,\n \"pbRatio\": -14.645754997031466,\n \ \"ptbRatio\": -14.645754997031466,\n \"evToSales\": 5.455182295812769,\n - \ \"enterpriseValueOverEBITDA\": 12.266055702727858,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 12.676285608583056,\n \"evToOperatingCashFlow\": 14.316035765020473,\n \"evToFreeCashFlow\": 15.270523219538283,\n \"earningsYield\": 0.061543138977096144,\n \"freeCashFlowYield\": 0.0757989325045605,\n \"debtToEquity\": -4.897882446071641,\n \"debtToAssets\": 1.198789053039477,\n \"netDebtToEBITDA\": - 1.6689339156583376,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": - 17.44911804613297,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": + 1.7247502774694783,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": + 17.605156037991858,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": 0.05121275589487197,\n \"payoutRatio\": 0.8321440333735866,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2680783314758796,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23003148462097361,\n \"capexToOperatingCashFlow\": -0.06250522269574664,\n \ \"capexToRevenue\": -0.023817863397548163,\n \"capexToDepreciation\": -0.749498997995992,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.211160012690573,\n \"roic\": 0.5836169729975039,\n \"returnOnTangibleAssets\": + 29.211160012690573,\n \"roic\": 0.35011417392195887,\n \"returnOnTangibleAssets\": 0.2865186210367388,\n \"grahamNetNet\": -24.189345314505776,\n \"workingCapital\": -1538000000,\n \"tangibleAssetValue\": -17706000000,\n \"netCurrentAssetValue\": -31781000000,\n \"investedCapital\": -2.7514347912131405,\n \"averageReceivables\": @@ -77,23 +78,23 @@ interactions: \ \"freeCashFlowPerShare\": 5.9152215799614645,\n \"cashPerShare\": 4.675658317276814,\n \ \"bookValuePerShare\": -8.071290944123314,\n \"tangibleBookValuePerShare\": -11.955041746949261,\n \"shareholdersEquityPerShare\": -8.071290944123314,\n - \ \"interestDebtPerShare\": 20.72190109184329,\n \"marketCap\": 128904030000.00002,\n + \ \"interestDebtPerShare\": 20.65125240847784,\n \"marketCap\": 128904030000.00002,\n \ \"enterpriseValue\": 153160030000,\n \"peRatio\": 16.000996772591858,\n \ \"priceToSalesRatio\": 4.49236878789991,\n \"pocfratio\": 13.137385854056259,\n \ \"pfcfRatio\": 13.996094462540718,\n \"pbRatio\": -10.25734304129864,\n \ \"ptbRatio\": -10.25734304129864,\n \"evToSales\": 5.33770230710253,\n - \ \"enterpriseValueOverEBITDA\": 12.614069346071487,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 13.15355805565098,\n \"evToOperatingCashFlow\": 15.60946086424786,\n \"evToFreeCashFlow\": 16.629753528773072,\n \"earningsYield\": 0.062496106599615235,\n \"freeCashFlowYield\": 0.0714485032004042,\n \"debtToEquity\": -4.412031511100501,\n \"debtToAssets\": 1.2372196809104095,\n \"netDebtToEBITDA\": - 1.9976939548674024,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": - 16.02747252747253,\n \"incomeQuality\": 1.217974180734856,\n \"dividendYield\": + 2.0831329440054964,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": + 18.880258899676374,\n \"incomeQuality\": 1.1419925512104283,\n \"dividendYield\": 0.05712777172288562,\n \"payoutRatio\": 0.9141012909632572,\n \"salesGeneralAndAdministrativeToRevenue\": - 0.0033804976650170767,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.26071652610301804,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.17813232176726543,\n \"capexToOperatingCashFlow\": -0.06135344476151651,\n \ \"capexToRevenue\": -0.020979995817941032,\n \"capexToDepreciation\": -0.6136595310907238,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 30.65336685433772,\n \"roic\": 0.463015873015873,\n \"returnOnTangibleAssets\": + 30.65336685433772,\n \"roic\": 0.3325143588533254,\n \"returnOnTangibleAssets\": 0.2187228496959166,\n \"grahamNetNet\": -26.043513166345537,\n \"workingCapital\": 1877000000,\n \"tangibleAssetValue\": -18614000000,\n \"netCurrentAssetValue\": -33954000000,\n \"investedCapital\": -2.5094294581045595,\n \"averageReceivables\": @@ -108,23 +109,23 @@ interactions: \ \"freeCashFlowPerShare\": 5.940836012861737,\n \"cashPerShare\": 4.412218649517685,\n \ \"bookValuePerShare\": -7.445016077170418,\n \"tangibleBookValuePerShare\": -11.29903536977492,\n \"shareholdersEquityPerShare\": -7.445016077170418,\n - \ \"interestDebtPerShare\": 20.47652733118971,\n \"marketCap\": 132314950000,\n + \ \"interestDebtPerShare\": 20.331189710610932,\n \"marketCap\": 132314950000,\n \ \"enterpriseValue\": 156498950000,\n \"peRatio\": 18.41544189283229,\n \ \"priceToSalesRatio\": 4.439354135212213,\n \"pocfratio\": 13.113473736372647,\n \ \"pfcfRatio\": 14.322899978350293,\n \"pbRatio\": -11.429122397857821,\n \ \"ptbRatio\": -11.429122397857821,\n \"evToSales\": 5.250761617178326,\n - \ \"enterpriseValueOverEBITDA\": 13.925872041288486,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 14.893314617434335,\n \"evToOperatingCashFlow\": 15.510302279484637,\n \"evToFreeCashFlow\": 16.9407826369344,\n \"earningsYield\": 0.0543022538269485,\n \"freeCashFlowYield\": 0.06981826316678501,\n \"debtToEquity\": -4.5326077567590914,\n \"debtToAssets\": 1.2238833819241983,\n \"netDebtToEBITDA\": - 2.1519843388503292,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": - 13.229899497487438,\n \"incomeQuality\": 1.4043145441892833,\n \"dividendYield\": + 2.301484583174724,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": + 18.475438596491227,\n \"incomeQuality\": 1.3056418219461698,\n \"dividendYield\": 0.054120868427944085,\n \"payoutRatio\": 0.9966597077244259,\n \"salesGeneralAndAdministrativeToRevenue\": 0.29471565173628583,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.1859125364431487,\n \"capexToOperatingCashFlow\": -0.0844400396432111,\n \ \"capexToRevenue\": -0.028585807750377452,\n \"capexToDepreciation\": -0.8838174273858921,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 27.82097004066496,\n \"roic\": 0.4380251227019383,\n \"returnOnTangibleAssets\": + 27.82097004066496,\n \"roic\": 0.301069934832196,\n \"returnOnTangibleAssets\": 0.20585033234013295,\n \"grahamNetNet\": -24.57090032154341,\n \"workingCapital\": 1681000000,\n \"tangibleAssetValue\": -17570000000,\n \"netCurrentAssetValue\": -31960000000,\n \"investedCapital\": -2.6816100889695087,\n \"averageReceivables\": @@ -149,13 +150,13 @@ interactions: 0.076205209812372,\n \"freeCashFlowYield\": 0.07746710874871642,\n \"debtToEquity\": -4.056505337507023,\n \"debtToAssets\": 1.2698173412728324,\n \"netDebtToEBITDA\": 2.0627868852459015,\n \"currentRatio\": 1.130940608457914,\n \"interestCoverage\": - 13.306432748538011,\n \"incomeQuality\": 1.1980786246997852,\n \"dividendYield\": + 13.306432748538011,\n \"incomeQuality\": 1.1438571083755733,\n \"dividendYield\": 0.06632194028039201,\n \"payoutRatio\": 0.8703071672354948,\n \"salesGeneralAndAdministrativeToRevenue\": 0.25144303797468354,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23785834526770683,\n \"capexToOperatingCashFlow\": -0.15150875712175566,\n \ \"capexToRevenue\": -0.04847257383966245,\n \"capexToDepreciation\": -1.4519716885743175,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 30.284342617274454,\n \"roic\": 0.5031844316674038,\n \"returnOnTangibleAssets\": + 30.284342617274454,\n \"roic\": 0.3572834675767127,\n \"returnOnTangibleAssets\": 0.260796466011736,\n \"grahamNetNet\": -23.711897106109326,\n \"workingCapital\": 2251000000,\n \"tangibleAssetValue\": -20206000000,\n \"netCurrentAssetValue\": -31098000000,\n \"investedCapital\": -2.5490809856328758,\n \"averageReceivables\": @@ -180,13 +181,13 @@ interactions: 0.03680578256351208,\n \"freeCashFlowYield\": 0.044910983065070915,\n \"debtToEquity\": -4.401621711070661,\n \"debtToAssets\": 1.2380841556507167,\n \"netDebtToEBITDA\": 2.102818159668643,\n \"currentRatio\": 1.3528379902267886,\n \"interestCoverage\": - 10.495437956204379,\n \"incomeQuality\": 1.4767191383595692,\n \"dividendYield\": + 10.495437956204379,\n \"incomeQuality\": 1.405456552594228,\n \"dividendYield\": 0.03976366235527735,\n \"payoutRatio\": 1.0803645401822701,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2339293168220398,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23501210202941725,\n \"capexToOperatingCashFlow\": -0.1736983842010772,\n \ \"capexToRevenue\": -0.05384722415472381,\n \"capexToDepreciation\": -1.7691428571428571,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 26.102341921297114,\n \"roic\": 0.4259423831741095,\n \"returnOnTangibleAssets\": + 26.102341921297114,\n \"roic\": 0.28634764343891045,\n \"returnOnTangibleAssets\": 0.18360206875570428,\n \"grahamNetNet\": -24.19104381443299,\n \"workingCapital\": 5632000000,\n \"tangibleAssetValue\": -20328000000,\n \"netCurrentAssetValue\": -31604000000,\n \"investedCapital\": -2.84122124772464,\n \"averageReceivables\": @@ -211,13 +212,13 @@ interactions: 0.04909761376576725,\n \"freeCashFlowYield\": 0.04866068940040517,\n \"debtToEquity\": -3.7634773013871374,\n \"debtToAssets\": 1.2957857317304822,\n \"netDebtToEBITDA\": 2.150168875032476,\n \"currentRatio\": 1.0692900953421995,\n \"interestCoverage\": - 10.116931711880262,\n \"incomeQuality\": 1.1593225204535669,\n \"dividendYield\": + 10.116931711880262,\n \"incomeQuality\": 1.1140689655172413,\n \"dividendYield\": 0.044946832294827536,\n \"payoutRatio\": 0.9154585904980623,\n \"salesGeneralAndAdministrativeToRevenue\": 0.24002248454187747,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.26577297766682045,\n \"capexToOperatingCashFlow\": -0.14510337996780984,\n \ \"capexToRevenue\": -0.0439198051339704,\n \"capexToDepreciation\": -1.5773889636608345,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 28.754045226644966,\n \"roic\": 0.5305631868131868,\n \"returnOnTangibleAssets\": + 28.754045226644966,\n \"roic\": 0.2920014403245321,\n \"returnOnTangibleAssets\": 0.2574934397752892,\n \"grahamNetNet\": -23.45535138620245,\n \"workingCapital\": 1141000000,\n \"tangibleAssetValue\": -20694000000,\n \"netCurrentAssetValue\": -30143000000,\n \"investedCapital\": -2.290904791929382,\n \"averageReceivables\": @@ -242,13 +243,13 @@ interactions: 0.05047271260684695,\n \"freeCashFlowYield\": 0.05070770850433263,\n \"debtToEquity\": -3.4303835699184537,\n \"debtToAssets\": 1.3379667805395217,\n \"netDebtToEBITDA\": 2.1894819603389535,\n \"currentRatio\": 1.0271675549200572,\n \"interestCoverage\": - 9.384275618374557,\n \"incomeQuality\": 1.1443328968427178,\n \"dividendYield\": + 9.384275618374557,\n \"incomeQuality\": 1.1184584755403868,\n \"dividendYield\": 0.045897636227672546,\n \"payoutRatio\": 0.9093554488578496,\n \"salesGeneralAndAdministrativeToRevenue\": 0.24841382399044562,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.2956178584049947,\n \"capexToOperatingCashFlow\": -0.12205975842339478,\n \ \"capexToRevenue\": -0.035828916921698886,\n \"capexToDepreciation\": -1.273209549071618,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.216124012545766,\n \"roic\": 0.5720516962843296,\n \"returnOnTangibleAssets\": + 29.216124012545766,\n \"roic\": 0.29625673797129565,\n \"returnOnTangibleAssets\": 0.28735680240822814,\n \"grahamNetNet\": -23.043899289864427,\n \"workingCapital\": 418000000,\n \"tangibleAssetValue\": -21514000000,\n \"netCurrentAssetValue\": -29628000000,\n \"investedCapital\": -2.1504077318030808,\n \"averageReceivables\": @@ -273,13 +274,13 @@ interactions: 0.05874526756811213,\n \"freeCashFlowYield\": 0.0516343697055367,\n \"debtToEquity\": -3.6732916303745347,\n \"debtToAssets\": 1.3183846306874698,\n \"netDebtToEBITDA\": 2.195667641710807,\n \"currentRatio\": 1.024616199047115,\n \"interestCoverage\": - 10.001709401709402,\n \"incomeQuality\": 1.0328306419324702,\n \"dividendYield\": + 10.001709401709402,\n \"incomeQuality\": 1.0105771741969183,\n \"dividendYield\": 0.04731451885407136,\n \"payoutRatio\": 0.805418390497798,\n \"salesGeneralAndAdministrativeToRevenue\": 0.23519333490106495,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3232159604399352,\n \"capexToOperatingCashFlow\": -0.14898565706163586,\n \ \"capexToRevenue\": -0.03873416871031679,\n \"capexToDepreciation\": -1.296962879640045,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.465366628493165,\n \"roic\": 0.5829140722291407,\n \"returnOnTangibleAssets\": + 29.465366628493165,\n \"roic\": 0.27138028107605555,\n \"returnOnTangibleAssets\": 0.31464684639287815,\n \"grahamNetNet\": -23.8882503192848,\n \"workingCapital\": 372000000,\n \"tangibleAssetValue\": -22576000000,\n \"netCurrentAssetValue\": -30906000000,\n \"investedCapital\": -2.332330350779951,\n \"averageReceivables\": @@ -304,13 +305,13 @@ interactions: 0.06068288339362232,\n \"freeCashFlowYield\": 0.06322313002822008,\n \"debtToEquity\": -5.72263713623487,\n \"debtToAssets\": 1.164378536994341,\n \"netDebtToEBITDA\": 1.7934232715008431,\n \"currentRatio\": 0.9874604476737373,\n \"interestCoverage\": - 12.241847826086957,\n \"incomeQuality\": 1.181786380597015,\n \"dividendYield\": + 12.241847826086957,\n \"incomeQuality\": 1.1451977401129942,\n \"dividendYield\": 0.040474124651529816,\n \"payoutRatio\": 0.6669776119402985,\n \"salesGeneralAndAdministrativeToRevenue\": 0.22071307300509338,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.31665269335569063,\n \"capexToOperatingCashFlow\": -0.11840157868771584,\n \ \"capexToRevenue\": -0.038440593266489416,\n \"capexToDepreciation\": -1.3605442176870748,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 23.86610178353917,\n \"roic\": 0.6404606198464601,\n \"returnOnTangibleAssets\": + 23.86610178353917,\n \"roic\": 0.29338623477188086,\n \"returnOnTangibleAssets\": 0.3288091404033433,\n \"grahamNetNet\": -21.254778051787916,\n \"workingCapital\": -214000000,\n \"tangibleAssetValue\": -18360000000,\n \"netCurrentAssetValue\": -27590000000,\n \"investedCapital\": -3.563996909605975,\n \"averageReceivables\": @@ -324,7 +325,7 @@ interactions: 5.200945626477542,\n \"operatingCashFlowPerShare\": 5.567966903073286,\n \ \"freeCashFlowPerShare\": 4.943853427895981,\n \"cashPerShare\": 1.7630023640661938,\n \ \"bookValuePerShare\": -2.054373522458629,\n \"tangibleBookValuePerShare\": - -9.85401891252955,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n + -9.085106382978724,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n \ \"interestDebtPerShare\": 14.09338061465721,\n \"marketCap\": 141518880000,\n \ \"enterpriseValue\": 161374880000,\n \"peRatio\": 16.08169090909091,\n \ \"priceToSalesRatio\": 4.510274404818817,\n \"pocfratio\": 15.021641014754273,\n @@ -333,18 +334,18 @@ interactions: \ \"enterpriseValueOverEBITDA\": 11.100211858577522,\n \"evToOperatingCashFlow\": 17.129272900965926,\n \"evToFreeCashFlow\": 19.29167722653915,\n \"earningsYield\": 0.06218251585936803,\n \"freeCashFlowYield\": 0.059108721041319714,\n \"debtToEquity\": - -11.744533947065593,\n \"debtToAssets\": 1.0837271037961242,\n \"netDebtToEBITDA\": + -11.370253164556962,\n \"debtToAssets\": 1.0491903371383065,\n \"netDebtToEBITDA\": 1.3657999724858991,\n \"currentRatio\": 0.9749647390691114,\n \"interestCoverage\": - 13.749751737835155,\n \"incomeQuality\": 1.0705681818181818,\n \"dividendYield\": + 13.749751737835155,\n \"incomeQuality\": 1.0291675770155124,\n \"dividendYield\": 0.03818571769363918,\n \"payoutRatio\": 0.6140909090909091,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2223921981068936,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.35887974515529597,\n \"capexToOperatingCashFlow\": -0.11209001167604288,\n \ \"capexToRevenue\": -0.03365522516492973,\n \"capexToDepreciation\": -1.175946547884187,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 15.505012486373738,\n \"roic\": 0.6703786191536748,\n \"returnOnTangibleAssets\": - 0.3643741459980953,\n \"grahamNetNet\": -18.12928486997636,\n \"workingCapital\": - -426000000,\n \"tangibleAssetValue\": -16673000000,\n \"netCurrentAssetValue\": - -24234000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": + 15.505012486373738,\n \"roic\": 0.31892662421076523,\n \"returnOnTangibleAssets\": + 0.3643741459980953,\n \"grahamNetNet\": -17.36037234042553,\n \"workingCapital\": + -426000000,\n \"tangibleAssetValue\": -15372000000,\n \"netCurrentAssetValue\": + -22933000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": 3395000000,\n \"averagePayables\": 1067000000,\n \"averageInventory\": 8534500000,\n \"daysSalesOutstanding\": 41.74984861522771,\n \"daysPayablesOutstanding\": 38.811819145859445,\n \"daysOfInventoryOnHand\": 314.8929914200328,\n \"receivablesTurnover\": @@ -366,13 +367,13 @@ interactions: 0.06342594042242382,\n \"freeCashFlowYield\": 0.07111147225570785,\n \"debtToEquity\": 147.2707423580786,\n \"debtToAssets\": 0.9503212353471596,\n \"netDebtToEBITDA\": 1.1287135699668336,\n \"currentRatio\": 1.0043936731107206,\n \"interestCoverage\": - 14.274089935760172,\n \"incomeQuality\": 1.22558491444535,\n \"dividendYield\": + 14.274089935760172,\n \"incomeQuality\": 1.1858317378083116,\n \"dividendYield\": 0.03534901673176175,\n \"payoutRatio\": 0.5573274356885113,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3839325969341749,\n \"capexToOperatingCashFlow\": -0.08519327571469275,\n \ \"capexToRevenue\": -0.02884522622761038,\n \"capexToDepreciation\": -0.9033232628398792,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 3.854899412847063,\n \"roic\": 0.6442447086111917,\n \"returnOnTangibleAssets\": + 3.854899412847063,\n \"roic\": 0.3217564798601053,\n \"returnOnTangibleAssets\": 0.3929469880620226,\n \"grahamNetNet\": -14.319558437167034,\n \"workingCapital\": 65000000,\n \"tangibleAssetValue\": -11862000000,\n \"netCurrentAssetValue\": -18866000000,\n \"investedCapital\": 80.9825327510917,\n \"averageReceivables\": @@ -397,13 +398,13 @@ interactions: 0.0674398418308556,\n \"freeCashFlowYield\": 0.08105044498310846,\n \"debtToEquity\": 8.53650884198517,\n \"debtToAssets\": 0.8538944365192582,\n \"netDebtToEBITDA\": 1.2341756317237929,\n \"currentRatio\": 1.0743517650734145,\n \"interestCoverage\": - 11.498973305954825,\n \"incomeQuality\": 1.3000413280066125,\n \"dividendYield\": + 11.498973305954825,\n \"incomeQuality\": 1.258602293945052,\n \"dividendYield\": 0.04109194385147738,\n \"payoutRatio\": 0.6093125774900124,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.40039942938659057,\n \"capexToOperatingCashFlow\": -0.0755536717177069,\n \ \"capexToRevenue\": -0.02620552778594531,\n \"capexToDepreciation\": -0.7650214592274678,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 13.012294500971974,\n \"roic\": 0.5034612964128382,\n \"returnOnTangibleAssets\": + 13.012294500971974,\n \"roic\": 0.2640206285797149,\n \"returnOnTangibleAssets\": 0.34540350209364296,\n \"grahamNetNet\": -11.860114192495923,\n \"workingCapital\": 952000000,\n \"tangibleAssetValue\": -8913000000,\n \"netCurrentAssetValue\": -16173000000,\n \"investedCapital\": 4.706788362806617,\n \"averageReceivables\": @@ -428,13 +429,13 @@ interactions: 0.06773240722278227,\n \"freeCashFlowYield\": 0.07656474730055599,\n \"debtToEquity\": 4.969734079776067,\n \"debtToAssets\": 0.8221521185459597,\n \"netDebtToEBITDA\": 1.298886080688945,\n \"currentRatio\": 1.3134728931830382,\n \"interestCoverage\": - 12.59723964868256,\n \"incomeQuality\": 1.2431409649952696,\n \"dividendYield\": + 12.59723964868256,\n \"incomeQuality\": 1.2032967032967032,\n \"dividendYield\": 0.0462122557636359,\n \"payoutRatio\": 0.6822768842636392,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.36634637647603613,\n \"capexToOperatingCashFlow\": -0.09069000507356671,\n \ \"capexToRevenue\": -0.028560015977631317,\n \"capexToDepreciation\": -0.8382180539273154,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 14.69865807645513,\n \"roic\": 0.42953709249593564,\n \"returnOnTangibleAssets\": + 14.69865807645513,\n \"roic\": 0.23105519204325875,\n \"returnOnTangibleAssets\": 0.2896684023020005,\n \"grahamNetNet\": -10.262480699948533,\n \"workingCapital\": 3504000000,\n \"tangibleAssetValue\": -6513000000,\n \"netCurrentAssetValue\": -13725000000,\n \"investedCapital\": 2.696990902729181,\n \"averageReceivables\": @@ -465,7 +466,7 @@ interactions: 0.33661894941162196,\n \"capexToOperatingCashFlow\": -0.13850031505986138,\n \ \"capexToRevenue\": -0.04275432795176036,\n \"capexToDepreciation\": -1.3052256532066508,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 16.488493116541544,\n \"roic\": 0.4489223760294375,\n \"returnOnTangibleAssets\": + 16.488493116541544,\n \"roic\": 0.25517440499432686,\n \"returnOnTangibleAssets\": 0.31500022859232846,\n \"grahamNetNet\": -8.207446808510639,\n \"workingCapital\": 4795000000,\n \"tangibleAssetValue\": -3599000000,\n \"netCurrentAssetValue\": -10533000000,\n \"investedCapital\": 1.5948,\n \"averageReceivables\": @@ -496,7 +497,7 @@ interactions: 0.3068064787941204,\n \"capexToOperatingCashFlow\": -0.19180533190195026,\n \ \"capexToRevenue\": -0.04702166856741819,\n \"capexToDepreciation\": -1.4331550802139037,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 21.749748065768344,\n \"roic\": 0.3777030478460753,\n \"returnOnTangibleAssets\": + 21.749748065768344,\n \"roic\": 0.2261955979179331,\n \"returnOnTangibleAssets\": 0.27129479560597874,\n \"grahamNetNet\": -3.663612565445026,\n \"workingCapital\": 6501000000,\n \"tangibleAssetValue\": 5570000000,\n \"netCurrentAssetValue\": -1590000000,\n \"investedCapital\": 0.40951886241153174,\n \"averageReceivables\": @@ -511,7 +512,7 @@ interactions: \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n \ \"bookValuePerShare\": 6.763813515013729,\n \"tangibleBookValuePerShare\": 3.0545489925866303,\n \"shareholdersEquityPerShare\": 6.763813515013729,\n - \ \"interestDebtPerShare\": 1.0534235389612747,\n \"marketCap\": 51437328898.957825,\n + \ \"interestDebtPerShare\": 1.3208091717129213,\n \"marketCap\": 51437328898.957825,\n \ \"enterpriseValue\": 52547328898.957825,\n \"peRatio\": 8.369236722902349,\n \ \"priceToSalesRatio\": 1.065837731018604,\n \"pocfratio\": 8.248449149929094,\n \ \"pfcfRatio\": 9.614453999805201,\n \"pbRatio\": 3.6053360131042145,\n @@ -527,10 +528,10 @@ interactions: 0.2995405819295559,\n \"capexToOperatingCashFlow\": -0.14207825529185375,\n \ \"capexToRevenue\": -0.018358889349357647,\n \"capexToDepreciation\": -1.3465045592705167,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 21.05779199835815,\n \"roic\": 0.4374052584809994,\n \"returnOnTangibleAssets\": + 21.05779199835815,\n \"roic\": 0.2945070230858761,\n \"returnOnTangibleAssets\": 0.3359204197638828,\n \"grahamNetNet\": -2.379684722689522,\n \"workingCapital\": 4936000000,\n \"tangibleAssetValue\": 6443000000,\n \"netCurrentAssetValue\": - 72000000,\n \"investedCapital\": 0.15574402467232074,\n \"averageReceivables\": + 72000000,\n \"investedCapital\": 0.1952758113128198,\n \"averageReceivables\": 2029000000,\n \"averagePayables\": 670500000,\n \"averageInventory\": 6247500000,\n \"daysSalesOutstanding\": 16.336510567757976,\n \"daysPayablesOutstanding\": 6.886212414722479,\n \"daysOfInventoryOnHand\": 72.49992981274039,\n \"receivablesTurnover\": @@ -542,7 +543,7 @@ interactions: \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n \ \"bookValuePerShare\": 4.88642502973621,\n \"tangibleBookValuePerShare\": 1.5820316604472429,\n \"shareholdersEquityPerShare\": 4.88642502973621,\n - \ \"interestDebtPerShare\": 1.9631984135187392,\n \"marketCap\": 51437328898.957825,\n + \ \"interestDebtPerShare\": 2.327297998542258,\n \"marketCap\": 51437328898.957825,\n \ \"enterpriseValue\": 55137328898.957825,\n \"peRatio\": 9.15254962614908,\n \ \"priceToSalesRatio\": 1.1357827437501729,\n \"pocfratio\": 9.972339840821602,\n \ \"pfcfRatio\": 11.63214131591086,\n \"pbRatio\": 4.990523808960689,\n @@ -558,10 +559,10 @@ interactions: 0.30127512427058567,\n \"capexToOperatingCashFlow\": -0.1426909654905002,\n \ \"capexToRevenue\": -0.016251545663310368,\n \"capexToDepreciation\": -1.396584440227704,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 17.115300112514333,\n \"roic\": 0.46038926254389617,\n \"returnOnTangibleAssets\": + 17.115300112514333,\n \"roic\": 0.29316768403913324,\n \"returnOnTangibleAssets\": 0.34766470770182495,\n \"grahamNetNet\": -3.5487857339759774,\n \"workingCapital\": 3691000000,\n \"tangibleAssetValue\": 3337000000,\n \"netCurrentAssetValue\": - -2803000000,\n \"investedCapital\": 0.401765790239643,\n \"averageReceivables\": + -2803000000,\n \"investedCapital\": 0.4762782574949064,\n \"averageReceivables\": null,\n \"averagePayables\": null,\n \"averageInventory\": null,\n \"daysSalesOutstanding\": 15.296988164635223,\n \"daysPayablesOutstanding\": 7.417527339003645,\n \ \"daysOfInventoryOnHand\": 60.09416767922236,\n \"receivablesTurnover\": @@ -582,13 +583,13 @@ interactions: 11.447439138438378,\n \"earningsYield\": 0.08037700332813817,\n \"freeCashFlowYield\": 0.08177222678213604,\n \"debtToEquity\": 0.6804880373653608,\n \"debtToAssets\": 0.40493477027793534,\n \"netDebtToEBITDA\": -0.49121989121989124,\n \"currentRatio\": - 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 1.1647798742138364,\n - \ \"dividendYield\": 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 0,\n \"dividendYield\": + 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.11435053885422575,\n \"capexToOperatingCashFlow\": -0.1265658747300216,\n \ \"capexToRevenue\": -0.01755069034712031,\n \"capexToDepreciation\": -1.5837837837837838,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 15.104290103817597,\n \"roic\": 0.3514463981849121,\n \"returnOnTangibleAssets\": + 15.104290103817597,\n \"roic\": 0.3636114834130041,\n \"returnOnTangibleAssets\": 0.2545792237735366,\n \"grahamNetNet\": -0.9077909270216963,\n \"workingCapital\": 11053000000,\n \"tangibleAssetValue\": 8475000000,\n \"netCurrentAssetValue\": 3914000000,\n \"investedCapital\": 0,\n \"averageReceivables\": null,\n @@ -612,13 +613,13 @@ interactions: Connection: - close Content-Length: - - '47462' + - '47546' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:46 GMT + - Tue, 02 May 2023 14:20:58 GMT ETag: - - W/"b966-DCLrmoHRm0eA8tVwl0Qnr8SL0Ss" + - W/"b9ba-+6l4HNSh+dGdsg15OMtMT0CCF5Y" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].yaml index 0b0495debba5..b1e74bfc55c0 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].yaml @@ -10,9 +10,9 @@ interactions: uri: https://financialmodelingprep.com/api/v3/profile/PM?apikey=MOCK_API_KEY response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"price\": 98.5,\n \"beta\": - 0.709205,\n \"volAvg\": 4480064,\n \"mktCap\": 152697656576,\n \"lastDiv\": - 5.04,\n \"range\": \"82.85-109.81\",\n \"changes\": -1.6,\n \"companyName\": + string: "[\n {\n \"symbol\": \"PM\",\n \"price\": 96.98,\n \"beta\": + 0.704152,\n \"volAvg\": 4389060,\n \"mktCap\": 150532349793,\n \"lastDiv\": + 5.08,\n \"range\": \"82.85-109.81\",\n \"changes\": -2.37,\n \"companyName\": \"Philip Morris International Inc.\",\n \"currency\": \"USD\",\n \"cik\": \"0001413329\",\n \"isin\": \"US7181721090\",\n \"cusip\": \"718172109\",\n \ \"exchange\": \"New York Stock Exchange\",\n \"exchangeShortName\": @@ -32,11 +32,11 @@ interactions: U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York.\",\n \"ceo\": - \"Mr. Andre Calantzopoulos\",\n \"sector\": \"Consumer Defensive\",\n - \ \"country\": \"US\",\n \"fullTimeEmployees\": \"69600\",\n \"phone\": - \"917 663 2000\",\n \"address\": \"120 Park Avenue\",\n \"city\": \"New - York\",\n \"state\": \"NY\",\n \"zip\": \"10017-5592\",\n \"dcfDiff\": - 3.97239,\n \"dcf\": 99.7876,\n \"image\": \"https://financialmodelingprep.com/image-stock/PM.png\",\n + \"Mr. Jacek Olczak\",\n \"sector\": \"Consumer Defensive\",\n \"country\": + \"US\",\n \"fullTimeEmployees\": \"79800\",\n \"phone\": \"917 663 2000\",\n + \ \"address\": \"120 Park Avenue\",\n \"city\": \"New York\",\n \"state\": + \"NY\",\n \"zip\": \"10017-5592\",\n \"dcfDiff\": 3.97239,\n \"dcf\": + 99.7876,\n \"image\": \"https://financialmodelingprep.com/image-stock/PM.png\",\n \ \"ipoDate\": \"2008-03-17\",\n \"defaultImage\": false,\n \"isEtf\": false,\n \"isActivelyTrading\": true,\n \"isAdr\": false,\n \"isFund\": false\n }\n]" @@ -55,13 +55,13 @@ interactions: Connection: - close Content-Length: - - '2159' + - '2153' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:41 GMT + - Tue, 02 May 2023 14:20:53 GMT ETag: - - W/"86f-vfRG1blo/5jJ3j+zinFHJHEokF0" + - W/"869-9MDyS+mCQLyvG/K05lEDSltDdJQ" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].yaml index a4a32ac01600..ff50334c572c 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].yaml @@ -23,44 +23,19 @@ interactions: 3931000000,\n \"totalNonCurrentAssets\": 42062000000,\n \"otherAssets\": 0,\n \"totalAssets\": 61681000000,\n \"accountPayables\": 4076000000,\n \ \"shortTermDebt\": 8248000000,\n \"taxPayables\": 8480000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 19088000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 15012000000,\n \"totalCurrentLiabilities\": 27336000000,\n \"longTermDebt\": 34875000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1956000000,\n \"otherNonCurrentLiabilities\": - 3825000000,\n \"totalNonCurrentLiabilities\": 40656000000,\n \"otherLiabilities\": + 28332000000,\n \"totalNonCurrentLiabilities\": 40656000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 67992000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 34289000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9559000000,\n - \ \"othertotalStockholdersEquity\": 0,\n \"totalStockholdersEquity\": + \ \"othertotalStockholdersEquity\": -33687000000,\n \"totalStockholdersEquity\": -8957000000,\n \"totalEquity\": -8957000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 67992000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 67992000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 43123000000,\n + 59035000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 59035000000,\n \"totalInvestments\": 4431000000,\n \"totalDebt\": 43123000000,\n \ \"netDebt\": 39916000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n - \ },\n {\n \"date\": \"2022-09-30\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": - \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2022-10-27\",\n - \ \"acceptedDate\": \"2022-10-27 08:17:59\",\n \"calendarYear\": \"2022\",\n - \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 5368000000,\n \"shortTermInvestments\": - 0,\n \"cashAndShortTermInvestments\": 5368000000,\n \"netReceivables\": - 0,\n \"inventory\": 0,\n \"otherCurrentAssets\": 0,\n \"totalCurrentAssets\": - 5368000000,\n \"propertyPlantEquipmentNet\": 5610000000,\n \"goodwill\": - 6127000000,\n \"intangibleAssets\": 2224000000,\n \"goodwillAndIntangibleAssets\": - 8351000000,\n \"longTermInvestments\": 4087000000,\n \"taxAssets\": - 0,\n \"otherNonCurrentAssets\": 0,\n \"totalNonCurrentAssets\": 18048000000,\n - \ \"otherAssets\": 17301000000,\n \"totalAssets\": 40717000000,\n \"accountPayables\": - 0,\n \"shortTermDebt\": 2818000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 0,\n \"totalCurrentLiabilities\": - 2818000000,\n \"longTermDebt\": 21762000000,\n \"deferredRevenueNonCurrent\": - 0,\n \"deferredTaxLiabilitiesNonCurrent\": 923000000,\n \"otherNonCurrentLiabilities\": - 22617000000,\n \"totalNonCurrentLiabilities\": 45302000000,\n \"otherLiabilities\": - 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 48120000000,\n - \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": - 0,\n \"accumulatedOtherComprehensiveIncomeLoss\": 0,\n \"othertotalStockholdersEquity\": - 0,\n \"totalStockholdersEquity\": -9137000000,\n \"totalEquity\": -9137000000,\n - \ \"totalLiabilitiesAndStockholdersEquity\": 38983000000,\n \"minorityInterest\": - 0,\n \"totalLiabilitiesAndTotalEquity\": 38983000000,\n \"totalInvestments\": - 0,\n \"totalDebt\": 24580000000,\n \"netDebt\": 19212000000,\n \"link\": - \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/0001413329-22-000114-index.htm\",\n - \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/pm-20220930.htm\"\n \ },\n {\n \"date\": \"2021-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2022-02-11\",\n \ \"acceptedDate\": \"2022-02-11 08:29:22\",\n \"calendarYear\": \"2021\",\n @@ -74,17 +49,17 @@ interactions: 2549000000,\n \"totalNonCurrentAssets\": 23573000000,\n \"otherAssets\": 0,\n \"totalAssets\": 41290000000,\n \"accountPayables\": 3331000000,\n \ \"shortTermDebt\": 3023000000,\n \"taxPayables\": 7349000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 16232000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 12901000000,\n \"totalCurrentLiabilities\": 19255000000,\n \"longTermDebt\": 24783000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 726000000,\n \"otherNonCurrentLiabilities\": - 4734000000,\n \"totalNonCurrentLiabilities\": 30243000000,\n \"otherLiabilities\": + 23889000000,\n \"totalNonCurrentLiabilities\": 30243000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 49498000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 33082000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9577000000,\n - \ \"othertotalStockholdersEquity\": 0,\n \"totalStockholdersEquity\": + \ \"othertotalStockholdersEquity\": -33611000000,\n \"totalStockholdersEquity\": -10106000000,\n \"totalEquity\": -10106000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 49498000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 49498000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27806000000,\n + 41290000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 41290000000,\n \"totalInvestments\": 4463000000,\n \"totalDebt\": 27806000000,\n \ \"netDebt\": 23310000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n \ },\n {\n \"date\": \"2020-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -92,7 +67,7 @@ interactions: \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 7280000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 7280000000,\n \"netReceivables\": - 3761000000,\n \"inventory\": 9591000000,\n \"otherCurrentAssets\": 860000000,\n + 3761000000,\n \"inventory\": 9591000000,\n \"otherCurrentAssets\": 14212000000,\n \ \"totalCurrentAssets\": 21492000000,\n \"propertyPlantEquipmentNet\": 6365000000,\n \"goodwill\": 5964000000,\n \"intangibleAssets\": 2019000000,\n \ \"goodwillAndIntangibleAssets\": 7983000000,\n \"longTermInvestments\": @@ -100,17 +75,17 @@ interactions: 2767000000,\n \"totalNonCurrentAssets\": 23323000000,\n \"otherAssets\": 0,\n \"totalAssets\": 44815000000,\n \"accountPayables\": 2780000000,\n \ \"shortTermDebt\": 3368000000,\n \"taxPayables\": 7494000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 5973000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 13467000000,\n \"totalCurrentLiabilities\": 19615000000,\n \"longTermDebt\": 28168000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 684000000,\n \"otherNonCurrentLiabilities\": - 6979000000,\n \"totalNonCurrentLiabilities\": 35831000000,\n \"otherLiabilities\": + 29683000000,\n \"totalNonCurrentLiabilities\": 35831000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 55446000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 31638000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -11181000000,\n \ \"othertotalStockholdersEquity\": -33024000000,\n \"totalStockholdersEquity\": -12567000000,\n \"totalEquity\": -12567000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 42879000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 42879000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31536000000,\n + 44815000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 44815000000,\n \"totalInvestments\": 4798000000,\n \"totalDebt\": 31536000000,\n \ \"netDebt\": 24256000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/pm-20201231.htm\"\n \ },\n {\n \"date\": \"2019-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -118,25 +93,25 @@ interactions: \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 6861000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 6861000000,\n \"netReceivables\": - 3717000000,\n \"inventory\": 9235000000,\n \"otherCurrentAssets\": 701000000,\n + 3717000000,\n \"inventory\": 9235000000,\n \"otherCurrentAssets\": 13653000000,\n \ \"totalCurrentAssets\": 20514000000,\n \"propertyPlantEquipmentNet\": 6631000000,\n \"goodwill\": 5858000000,\n \"intangibleAssets\": 2113000000,\n \ \"goodwillAndIntangibleAssets\": 7971000000,\n \"longTermInvestments\": 4635000000,\n \"taxAssets\": 1153000000,\n \"otherNonCurrentAssets\": 1971000000,\n \"totalNonCurrentAssets\": 22361000000,\n \"otherAssets\": 0,\n \"totalAssets\": 42875000000,\n \"accountPayables\": 2299000000,\n - \ \"shortTermDebt\": 4389000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 4389000000,\n \"taxPayables\": 6633000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 12145000000,\n \"totalCurrentLiabilities\": 18833000000,\n \"longTermDebt\": 26656000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 908000000,\n \"otherNonCurrentLiabilities\": - 6077000000,\n \"totalNonCurrentLiabilities\": 33641000000,\n \"otherLiabilities\": + 26953000000,\n \"totalNonCurrentLiabilities\": 33641000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 52474000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 30987000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9363000000,\n \ \"othertotalStockholdersEquity\": -33201000000,\n \"totalStockholdersEquity\": -11577000000,\n \"totalEquity\": -11577000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 40897000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 40897000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31045000000,\n + 42875000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 42875000000,\n \"totalInvestments\": 4635000000,\n \"totalDebt\": 31045000000,\n \ \"netDebt\": 24184000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/pm123119form10kwrapinc.htm\"\n \ },\n {\n \"date\": \"2018-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -151,7 +126,7 @@ interactions: 1269000000,\n \"taxAssets\": 977000000,\n \"otherNonCurrentAssets\": 1445000000,\n \"totalNonCurrentAssets\": 20359000000,\n \"otherAssets\": 0,\n \"totalAssets\": 39801000000,\n \"accountPayables\": 2068000000,\n - \ \"shortTermDebt\": 4784000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 4784000000,\n \"taxPayables\": 5664000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10339000000,\n \"totalCurrentLiabilities\": 17191000000,\n \"longTermDebt\": 26975000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 898000000,\n \"otherNonCurrentLiabilities\": @@ -161,8 +136,8 @@ interactions: 31014000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -10111000000,\n \ \"othertotalStockholdersEquity\": -33362000000,\n \"totalStockholdersEquity\": -12459000000,\n \"totalEquity\": -12459000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 38081000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 38081000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31759000000,\n + 39801000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 39801000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31759000000,\n \ \"netDebt\": 25166000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/0001413329-19-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2017-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -177,7 +152,7 @@ interactions: 1074000000,\n \"taxAssets\": 1007000000,\n \"otherNonCurrentAssets\": 1924000000,\n \"totalNonCurrentAssets\": 21374000000,\n \"otherAssets\": 0,\n \"totalAssets\": 42968000000,\n \"accountPayables\": 2242000000,\n - \ \"shortTermDebt\": 3005000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 3005000000,\n \"taxPayables\": 6136000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10715000000,\n \"totalCurrentLiabilities\": 15962000000,\n \"longTermDebt\": 31334000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 799000000,\n \"otherNonCurrentLiabilities\": @@ -187,8 +162,8 @@ interactions: 29859000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -8535000000,\n \ \"othertotalStockholdersEquity\": -33410000000,\n \"totalStockholdersEquity\": -12086000000,\n \"totalEquity\": -12086000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 41112000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 41112000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 34339000000,\n + 42968000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 42968000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 34339000000,\n \ \"netDebt\": 25892000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/0001413329-18-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/pm123117form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2016-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -203,7 +178,7 @@ interactions: 1011000000,\n \"taxAssets\": 859000000,\n \"otherNonCurrentAssets\": 1515000000,\n \"totalNonCurrentAssets\": 19243000000,\n \"otherAssets\": 0,\n \"totalAssets\": 36851000000,\n \"accountPayables\": 1666000000,\n - \ \"shortTermDebt\": 3216000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 3216000000,\n \"taxPayables\": 7036000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 11585000000,\n \"totalCurrentLiabilities\": 16467000000,\n \"longTermDebt\": 25851000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1897000000,\n \"otherNonCurrentLiabilities\": @@ -213,8 +188,8 @@ interactions: 30397000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9559000000,\n \ \"othertotalStockholdersEquity\": -33526000000,\n \"totalStockholdersEquity\": -12688000000,\n \"totalEquity\": -12688000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 35063000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 35063000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29067000000,\n + 36851000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 36851000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29067000000,\n \ \"netDebt\": 24828000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/0001413329-17-000014-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/pm123116form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2015-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -229,17 +204,18 @@ interactions: 890000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1503000000,\n \ \"totalNonCurrentAssets\": 18152000000,\n \"otherAssets\": 0,\n \"totalAssets\": 33956000000,\n \"accountPayables\": 1289000000,\n \"shortTermDebt\": - 3230000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 10867000000,\n \"totalCurrentLiabilities\": 15386000000,\n \"longTermDebt\": - 25250000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1543000000,\n \"otherNonCurrentLiabilities\": 3253000000,\n \"totalNonCurrentLiabilities\": - 30046000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 45432000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 29842000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -9402000000,\n \"othertotalStockholdersEquity\": -33684000000,\n \"totalStockholdersEquity\": + 3230000000,\n \"taxPayables\": 6091000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 10867000000,\n \"totalCurrentLiabilities\": + 15386000000,\n \"longTermDebt\": 25250000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1543000000,\n \"otherNonCurrentLiabilities\": + 3253000000,\n \"totalNonCurrentLiabilities\": 30046000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 45432000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 29842000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9402000000,\n + \ \"othertotalStockholdersEquity\": -33684000000,\n \"totalStockholdersEquity\": -13244000000,\n \"totalEquity\": -13244000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 32188000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 32188000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 28480000000,\n + 33956000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 33956000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 28480000000,\n \ \"netDebt\": 25063000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/0001413329-16-000076-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/pm123115form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2014-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -254,17 +230,18 @@ interactions: 1083000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1176000000,\n \ \"totalNonCurrentAssets\": 19703000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35187000000,\n \"accountPayables\": 1242000000,\n \"shortTermDebt\": - 2526000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 11344000000,\n \"totalCurrentLiabilities\": 15112000000,\n \"longTermDebt\": - 26929000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1549000000,\n \"otherNonCurrentLiabilities\": 2800000000,\n \"totalNonCurrentLiabilities\": - 31278000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 46390000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 29249000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -6826000000,\n \"othertotalStockholdersEquity\": -35052000000,\n \"totalStockholdersEquity\": + 2526000000,\n \"taxPayables\": 6568000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 11344000000,\n \"totalCurrentLiabilities\": + 15112000000,\n \"longTermDebt\": 26929000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1549000000,\n \"otherNonCurrentLiabilities\": + 2800000000,\n \"totalNonCurrentLiabilities\": 31278000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 46390000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 29249000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -6826000000,\n + \ \"othertotalStockholdersEquity\": -35052000000,\n \"totalStockholdersEquity\": -12629000000,\n \"totalEquity\": -12629000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33761000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33761000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29455000000,\n + 35187000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35187000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29455000000,\n \ \"netDebt\": 27773000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/0001413329-15-000016-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/pm12312014form10kwrapinclf.htm\"\n \ },\n {\n \"date\": \"2013-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -279,17 +256,18 @@ interactions: 1536000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 939000000,\n \ \"totalNonCurrentAssets\": 21316000000,\n \"otherAssets\": 0,\n \"totalAssets\": 38168000000,\n \"accountPayables\": 1274000000,\n \"shortTermDebt\": - 3655000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 12137000000,\n \"totalCurrentLiabilities\": 17066000000,\n \"longTermDebt\": - 24023000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1477000000,\n \"otherNonCurrentLiabilities\": 1876000000,\n \"totalNonCurrentLiabilities\": - 27376000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 44442000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 27843000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -4190000000,\n \"othertotalStockholdersEquity\": -31419000000,\n \"totalStockholdersEquity\": + 3655000000,\n \"taxPayables\": 7684000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 12137000000,\n \"totalCurrentLiabilities\": + 17066000000,\n \"longTermDebt\": 24023000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1477000000,\n \"otherNonCurrentLiabilities\": + 1876000000,\n \"totalNonCurrentLiabilities\": 27376000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 44442000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 27843000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -4190000000,\n + \ \"othertotalStockholdersEquity\": -31419000000,\n \"totalStockholdersEquity\": -7766000000,\n \"totalEquity\": -7766000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 36676000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 36676000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27678000000,\n + 38168000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 38168000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27678000000,\n \ \"netDebt\": 25524000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/0001413329-14-000012-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/pm1231201310-k.htm\"\n \ },\n {\n \"date\": \"2012-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -301,20 +279,20 @@ interactions: \ \"totalCurrentAssets\": 16590000000,\n \"propertyPlantEquipmentNet\": 6645000000,\n \"goodwill\": 9900000000,\n \"intangibleAssets\": 3619000000,\n \ \"goodwillAndIntangibleAssets\": 13519000000,\n \"longTermInvestments\": - 24000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 892000000,\n - \ \"totalNonCurrentAssets\": 21080000000,\n \"otherAssets\": 0,\n \"totalAssets\": - 37670000000,\n \"accountPayables\": 1103000000,\n \"shortTermDebt\": - 5200000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 916000000,\n \"totalNonCurrentAssets\": + 21080000000,\n \"otherAssets\": 0,\n \"totalAssets\": 37670000000,\n + \ \"accountPayables\": 1103000000,\n \"shortTermDebt\": 5200000000,\n + \ \"taxPayables\": 6806000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10713000000,\n \"totalCurrentLiabilities\": 17016000000,\n \"longTermDebt\": 17639000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1875000000,\n \"otherNonCurrentLiabilities\": 4294000000,\n \"totalNonCurrentLiabilities\": - 23808000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 40824000000,\n \"preferredStock\": 0,\n \"commonStock\": + 1875000000,\n \"otherNonCurrentLiabilities\": 2993000000,\n \"totalNonCurrentLiabilities\": + 22507000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": + 0,\n \"totalLiabilities\": 39523000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 25076000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -3604000000,\n \"othertotalStockholdersEquity\": -24948000000,\n \"totalStockholdersEquity\": -3476000000,\n \"totalEquity\": -3476000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 37348000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 37348000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 22839000000,\n + 37670000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 37670000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 22839000000,\n \ \"netDebt\": 19856000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n \ },\n {\n \"date\": \"2011-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -329,7 +307,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 754000000,\n \"totalNonCurrentAssets\": 20629000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35488000000,\n \ \"accountPayables\": 1031000000,\n \"shortTermDebt\": 3717000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 6243000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10046000000,\n \"totalCurrentLiabilities\": 14794000000,\n \"longTermDebt\": 14828000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1976000000,\n \"otherNonCurrentLiabilities\": 2127000000,\n \"totalNonCurrentLiabilities\": @@ -338,8 +316,8 @@ interactions: 0,\n \"retainedEarnings\": 21757000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -2863000000,\n \"othertotalStockholdersEquity\": -18665000000,\n \"totalStockholdersEquity\": 229000000,\n \"totalEquity\": 229000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33954000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33954000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 18545000000,\n + 35488000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35488000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 18545000000,\n \ \"netDebt\": 15995000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/0001193125-12-076983-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/d258717d10k.htm\"\n \ },\n {\n \"date\": \"2010-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -354,7 +332,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 761000000,\n \"totalNonCurrentAssets\": 21294000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35050000000,\n \ \"accountPayables\": 835000000,\n \"shortTermDebt\": 3132000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 5485000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8837000000,\n \"totalCurrentLiabilities\": 12804000000,\n \"longTermDebt\": 13370000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 2027000000,\n \"otherNonCurrentLiabilities\": 1728000000,\n \"totalNonCurrentLiabilities\": @@ -363,8 +341,8 @@ interactions: 0,\n \"retainedEarnings\": 18133000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -1140000000,\n \"othertotalStockholdersEquity\": -13487000000,\n \"totalStockholdersEquity\": 3506000000,\n \"totalEquity\": 3506000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33435000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33435000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 16502000000,\n + 35050000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35050000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 16502000000,\n \ \"netDebt\": 14799000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/0001193125-11-046772-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/d10k.htm\"\n \ },\n {\n \"date\": \"2009-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -379,7 +357,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 822000000,\n \"totalNonCurrentAssets\": 19870000000,\n \"otherAssets\": 0,\n \"totalAssets\": 34552000000,\n \ \"accountPayables\": 670000000,\n \"shortTermDebt\": 1744000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 5324000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8764000000,\n \"totalCurrentLiabilities\": 11178000000,\n \"longTermDebt\": 13672000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1688000000,\n \"otherNonCurrentLiabilities\": 1869000000,\n \"totalNonCurrentLiabilities\": @@ -388,8 +366,8 @@ interactions: 0,\n \"retainedEarnings\": 15358000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -817000000,\n \"othertotalStockholdersEquity\": -8825000000,\n \"totalStockholdersEquity\": 5716000000,\n \"totalEquity\": 5716000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 34123000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 34123000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 15416000000,\n + 34552000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 34552000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 15416000000,\n \ \"netDebt\": 13876000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/0001193125-10-041735-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/d10k.htm\"\n \ },\n {\n \"date\": \"2008-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -404,7 +382,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 586000000,\n \"totalNonCurrentAssets\": 18033000000,\n \"otherAssets\": 0,\n \"totalAssets\": 32972000000,\n \ \"accountPayables\": 1013000000,\n \"shortTermDebt\": 584000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 4990000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8547000000,\n \"totalCurrentLiabilities\": 10144000000,\n \"longTermDebt\": 11377000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1401000000,\n \"otherNonCurrentLiabilities\": 2550000000,\n \"totalNonCurrentLiabilities\": @@ -419,7 +397,7 @@ interactions: \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1656000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1656000000,\n \"netReceivables\": 3497000000,\n \"inventory\": 9332000000,\n \"otherCurrentAssets\": 567000000,\n @@ -429,9 +407,9 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 725000000,\n \"totalNonCurrentAssets\": 16991000000,\n \"otherAssets\": 0,\n \"totalAssets\": 32043000000,\n \ \"accountPayables\": 852000000,\n \"shortTermDebt\": 729000000,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 6970000000,\n - \ \"totalCurrentLiabilities\": 8551000000,\n \"longTermDebt\": 5578000000,\n - \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": + 5001000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + 6970000000,\n \"totalCurrentLiabilities\": 8551000000,\n \"longTermDebt\": + 5578000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1240000000,\n \"otherNonCurrentLiabilities\": 1273000000,\n \"totalNonCurrentLiabilities\": 8091000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 16642000000,\n \"preferredStock\": 0,\n \"commonStock\": @@ -440,10 +418,10 @@ interactions: 15401000000,\n \"totalEquity\": 15401000000,\n \"totalLiabilitiesAndStockholdersEquity\": 32043000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 32043000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 6307000000,\n - \ \"netDebt\": 4651000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 4651000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2006-12-31\",\n - \ \"acceptedDate\": \"2006-12-30 19:00:00\",\n \"calendarYear\": \"2006\",\n + \ \"acceptedDate\": \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1676000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1676000000,\n \"netReceivables\": 2160000000,\n \"inventory\": 7075000000,\n \"otherCurrentAssets\": 1014000000,\n @@ -452,22 +430,22 @@ interactions: \ \"goodwillAndIntangibleAssets\": 7824000000,\n \"longTermInvestments\": 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1133000000,\n \"totalNonCurrentAssets\": 14195000000,\n \"otherAssets\": 0,\n \"totalAssets\": 26120000000,\n - \ \"accountPayables\": 672000000,\n \"shortTermDebt\": 0,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 6317000000,\n + \ \"accountPayables\": 672000000,\n \"shortTermDebt\": 564000000,\n \"taxPayables\": + 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 5753000000,\n \ \"totalCurrentLiabilities\": 6989000000,\n \"longTermDebt\": 2222000000,\n \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1166000000,\n \"otherNonCurrentLiabilities\": 1476000000,\n \"totalNonCurrentLiabilities\": 4864000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 11853000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 13002000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -4224000000,\n \"othertotalStockholdersEquity\": 5489000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 1265000000,\n \"totalStockholdersEquity\": 14267000000,\n \"totalEquity\": 14267000000,\n \"totalLiabilitiesAndStockholdersEquity\": 26120000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 26120000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 2786000000,\n - \ \"netDebt\": 1110000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 1110000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2005-12-31\",\n - \ \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": \"2005\",\n + \ \"acceptedDate\": \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1209000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1209000000,\n \"netReceivables\": 1898000000,\n \"inventory\": 5420000000,\n \"otherCurrentAssets\": 1498000000,\n @@ -476,22 +454,22 @@ interactions: \ \"goodwillAndIntangibleAssets\": 6970000000,\n \"longTermInvestments\": 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1537000000,\n \"totalNonCurrentAssets\": 13110000000,\n \"otherAssets\": 0,\n \"totalAssets\": 23135000000,\n - \ \"accountPayables\": 669000000,\n \"shortTermDebt\": 0,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 5665000000,\n + \ \"accountPayables\": 669000000,\n \"shortTermDebt\": 768000000,\n \"taxPayables\": + 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 4897000000,\n \ \"totalCurrentLiabilities\": 6334000000,\n \"longTermDebt\": 4141000000,\n \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1024000000,\n \"otherNonCurrentLiabilities\": 1329000000,\n \"totalNonCurrentLiabilities\": 6494000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 12828000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 9042000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -3515000000,\n \"othertotalStockholdersEquity\": 4780000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 1265000000,\n \"totalStockholdersEquity\": 10307000000,\n \"totalEquity\": 10307000000,\n \"totalLiabilitiesAndStockholdersEquity\": 23135000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 23135000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 4909000000,\n - \ \"netDebt\": 3700000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 3700000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2003-12-31\",\n - \ \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": \"2003\",\n + \ \"acceptedDate\": \"2003-12-31 00:00:00\",\n \"calendarYear\": \"2003\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 3161000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 3161000000,\n \"netReceivables\": 0,\n \"inventory\": 4274000000,\n \"otherCurrentAssets\": 3618000000,\n @@ -503,15 +481,15 @@ interactions: \ \"accountPayables\": 0,\n \"shortTermDebt\": 0,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 0,\n \"totalCurrentLiabilities\": 0,\n \"longTermDebt\": 0,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 0,\n \"otherNonCurrentLiabilities\": 0,\n \"totalNonCurrentLiabilities\": - 0,\n \"otherLiabilities\": 7139000000,\n \"capitalLeaseObligations\": + 0,\n \"otherNonCurrentLiabilities\": 7139000000,\n \"totalNonCurrentLiabilities\": + 7139000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 7139000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 0,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -2826000000,\n \"othertotalStockholdersEquity\": 13317000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 10491000000,\n \"totalStockholdersEquity\": 10491000000,\n \"totalEquity\": 10491000000,\n \"totalLiabilitiesAndStockholdersEquity\": 17630000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 17630000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 0,\n \"netDebt\": - -3161000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n }\n]" + -3161000000,\n \"link\": null,\n \"finalLink\": null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -527,13 +505,13 @@ interactions: Connection: - close Content-Length: - - '40478' + - '38675' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:37 GMT + - Tue, 02 May 2023 14:20:49 GMT ETag: - - W/"9e1e-Epa6BAZgAYXgsPxNZuNLZ4YHwl8" + - W/"9713-q9IViGvCzbJvc/D93XuPyx+gGTM" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].yaml index fcce1eed66a6..52c720bf88bf 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].yaml @@ -17,16 +17,16 @@ interactions: 1189000000,\n \"deferredIncomeTax\": -234000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 162000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1287000000,\n \"accountsPayables\": 719000000,\n - \ \"otherWorkingCapital\": 1601000000,\n \"otherNonCashItems\": 252000000,\n + \ \"otherWorkingCapital\": 730000000,\n \"otherNonCashItems\": 159000000,\n \ \"netCashProvidedByOperatingActivities\": 10803000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -13996000000,\n \"purchasesOfInvestments\": + -1077000000,\n \"acquisitionsNet\": -13996000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -890000000,\n \"netCashUsedForInvestingActivites\": -15679000000,\n \"debtRepayment\": + -1683000000,\n \"netCashUsedForInvestingActivites\": -15679000000,\n \"debtRepayment\": -7519000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -209000000,\n \"dividendsPaid\": -7812000000,\n \"otherFinancingActivites\": - -2349000000,\n \"netCashUsedProvidedByFinancingActivities\": 3806000000,\n + 19346000000,\n \"netCashUsedProvidedByFinancingActivities\": 3806000000,\n \ \"effectOfForexChangesOnCash\": -213000000,\n \"netChangeInCash\": - 3806000000,\n \"cashAtEndOfPeriod\": 3217000000,\n \"cashAtBeginningOfPeriod\": + -1283000000,\n \"cashAtEndOfPeriod\": 3217000000,\n \"cashAtBeginningOfPeriod\": 4500000000,\n \"operatingCashFlow\": 10803000000,\n \"capitalExpenditure\": -1077000000,\n \"freeCashFlow\": 9726000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n @@ -37,30 +37,30 @@ interactions: 998000000,\n \"deferredIncomeTax\": -17000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1367000000,\n \"accountsReceivables\": 0,\n \"inventory\": 549000000,\n \"accountsPayables\": 653000000,\n - \ \"otherWorkingCapital\": 363000000,\n \"otherNonCashItems\": -69000000,\n + \ \"otherWorkingCapital\": 165000000,\n \"otherNonCashItems\": -91000000,\n \ \"netCashProvidedByOperatingActivities\": 11967000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -2145000000,\n \"purchasesOfInvestments\": + -748000000,\n \"acquisitionsNet\": -2145000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 69000000,\n \"netCashUsedForInvestingActivites\": -2358000000,\n \"debtRepayment\": + -213000000,\n \"netCashUsedForInvestingActivites\": -2358000000,\n \"debtRepayment\": -3042000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -775000000,\n \"dividendsPaid\": -7580000000,\n \"otherFinancingActivites\": -580000000,\n \"netCashUsedProvidedByFinancingActivities\": -11977000000,\n \ \"effectOfForexChangesOnCash\": -417000000,\n \"netChangeInCash\": - -11977000000,\n \"cashAtEndOfPeriod\": 4500000000,\n \"cashAtBeginningOfPeriod\": + -2785000000,\n \"cashAtEndOfPeriod\": 4500000000,\n \"cashAtBeginningOfPeriod\": 7285000000,\n \"operatingCashFlow\": 11967000000,\n \"capitalExpenditure\": -748000000,\n \"freeCashFlow\": 11219000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n \ },\n {\n \"date\": \"2020-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2021-02-09\",\n \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8056000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8592000000,\n \"depreciationAndAmortization\": 981000000,\n \"deferredIncomeTax\": -143000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 128000000,\n \"accountsReceivables\": 0,\n \"inventory\": -165000000,\n \"accountsPayables\": 406000000,\n - \ \"otherWorkingCapital\": -139000000,\n \"otherNonCashItems\": 790000000,\n + \ \"otherWorkingCapital\": -113000000,\n \"otherNonCashItems\": 254000000,\n \ \"netCashProvidedByOperatingActivities\": 9812000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -47000000,\n \"purchasesOfInvestments\": 0,\n - \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -602000000,\n \"acquisitionsNet\": -47000000,\n \"purchasesOfInvestments\": + 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": -1107000000,\n \"netCashUsedForInvestingActivites\": -1154000000,\n \"debtRepayment\": -4114000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -7364000000,\n \"otherFinancingActivites\": @@ -73,15 +73,15 @@ interactions: \ },\n {\n \"date\": \"2019-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2020-02-07\",\n \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7185000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7728000000,\n \"depreciationAndAmortization\": 964000000,\n \"deferredIncomeTax\": -141000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 755000000,\n \"accountsReceivables\": -331000000,\n \"inventory\": -548000000,\n \"accountsPayables\": 451000000,\n - \ \"otherWorkingCapital\": 1183000000,\n \"otherNonCashItems\": 1327000000,\n + \ \"otherWorkingCapital\": 1183000000,\n \"otherNonCashItems\": 784000000,\n \ \"netCashProvidedByOperatingActivities\": 10090000000,\n \"investmentsInPropertyPlantAndEquipment\": - -852000000,\n \"acquisitionsNet\": -1346000000,\n \"purchasesOfInvestments\": + -852000000,\n \"acquisitionsNet\": -1377000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 387000000,\n \"netCashUsedForInvestingActivites\": -1811000000,\n \"debtRepayment\": + -434000000,\n \"netCashUsedForInvestingActivites\": -1811000000,\n \"debtRepayment\": -5351000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -7161000000,\n \"otherFinancingActivites\": 4451000000,\n \"netCashUsedProvidedByFinancingActivities\": -8061000000,\n @@ -93,15 +93,15 @@ interactions: \ },\n {\n \"date\": \"2018-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2019-02-07\",\n \ \"acceptedDate\": \"2019-02-07 15:09:20\",\n \"calendarYear\": \"2018\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7911000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8286000000,\n \"depreciationAndAmortization\": 989000000,\n \"deferredIncomeTax\": -100000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 164000000,\n \"accountsReceivables\": 53000000,\n \"inventory\": -613000000,\n \"accountsPayables\": -51000000,\n - \ \"otherWorkingCapital\": 775000000,\n \"otherNonCashItems\": 514000000,\n + \ \"otherWorkingCapital\": 775000000,\n \"otherNonCashItems\": 139000000,\n \ \"netCashProvidedByOperatingActivities\": 9478000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1436000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 438000000,\n \"netCashUsedForInvestingActivites\": -998000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -63000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -935000000,\n \"netCashUsedForInvestingActivites\": -998000000,\n \"debtRepayment\": -2484000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6885000000,\n \"otherFinancingActivites\": -282000000,\n \"netCashUsedProvidedByFinancingActivities\": -9651000000,\n @@ -113,15 +113,15 @@ interactions: \ },\n {\n \"date\": \"2017-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2018-02-13\",\n \ \"acceptedDate\": \"2018-02-13 08:07:16\",\n \"calendarYear\": \"2017\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6035000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 6341000000,\n \"depreciationAndAmortization\": 875000000,\n \"deferredIncomeTax\": -501000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1879000000,\n \"accountsReceivables\": -92000000,\n \"inventory\": 730000000,\n \"accountsPayables\": 425000000,\n - \ \"otherWorkingCapital\": 816000000,\n \"otherNonCashItems\": 624000000,\n + \ \"otherWorkingCapital\": 816000000,\n \"otherNonCashItems\": 318000000,\n \ \"netCashProvidedByOperatingActivities\": 8912000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1548000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -111000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -1466000000,\n \"netCashUsedForInvestingActivites\": -3014000000,\n \"debtRepayment\": + -2903000000,\n \"netCashUsedForInvestingActivites\": -3014000000,\n \"debtRepayment\": -4312000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6520000000,\n \"otherFinancingActivites\": 8063000000,\n \"netCashUsedProvidedByFinancingActivities\": -2769000000,\n @@ -133,15 +133,15 @@ interactions: \ },\n {\n \"date\": \"2016-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2017-02-14\",\n \ \"acceptedDate\": \"2017-02-14 08:22:52\",\n \"calendarYear\": \"2016\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6967000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7250000000,\n \"depreciationAndAmortization\": 743000000,\n \"deferredIncomeTax\": 182000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -63000000,\n \"accountsReceivables\": -1009000000,\n \"inventory\": -695000000,\n \"accountsPayables\": 373000000,\n - \ \"otherWorkingCapital\": 1268000000,\n \"otherNonCashItems\": 248000000,\n + \ \"otherWorkingCapital\": 1268000000,\n \"otherNonCashItems\": -35000000,\n \ \"netCashProvidedByOperatingActivities\": 8077000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1172000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 204000000,\n \"netCashUsedForInvestingActivites\": -968000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -41000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -927000000,\n \"netCashUsedForInvestingActivites\": -968000000,\n \"debtRepayment\": -2405000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6378000000,\n \"otherFinancingActivites\": 3370000000,\n \"netCashUsedProvidedByFinancingActivities\": -5413000000,\n @@ -153,15 +153,15 @@ interactions: \ },\n {\n \"date\": \"2015-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2016-02-17\",\n \ \"acceptedDate\": \"2016-02-17 10:25:14\",\n \"calendarYear\": \"2015\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6873000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7032000000,\n \"depreciationAndAmortization\": 754000000,\n \"deferredIncomeTax\": -18000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 66000000,\n \"accountsReceivables\": 647000000,\n \"inventory\": -841000000,\n \"accountsPayables\": 310000000,\n - \ \"otherWorkingCapital\": -50000000,\n \"otherNonCashItems\": 190000000,\n + \ \"otherWorkingCapital\": -50000000,\n \"otherNonCashItems\": 31000000,\n \ \"netCashProvidedByOperatingActivities\": 7865000000,\n \"investmentsInPropertyPlantAndEquipment\": - -960000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 252000000,\n \"netCashUsedForInvestingActivites\": -708000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -55000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -653000000,\n \"netCashUsedForInvestingActivites\": -708000000,\n \"debtRepayment\": -1495000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -48000000,\n \"dividendsPaid\": -6250000000,\n \"otherFinancingActivites\": 3057000000,\n \"netCashUsedProvidedByFinancingActivities\": -4736000000,\n @@ -173,15 +173,15 @@ interactions: \ },\n {\n \"date\": \"2014-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2015-02-20\",\n \ \"acceptedDate\": \"2015-02-20 08:39:54\",\n \"calendarYear\": \"2014\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7493000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7658000000,\n \"depreciationAndAmortization\": 889000000,\n \"deferredIncomeTax\": -62000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -918000000,\n \"accountsReceivables\": -463000000,\n \"inventory\": 105000000,\n \"accountsPayables\": 177000000,\n - \ \"otherWorkingCapital\": -737000000,\n \"otherNonCashItems\": 337000000,\n + \ \"otherWorkingCapital\": -737000000,\n \"otherNonCashItems\": 172000000,\n \ \"netCashProvidedByOperatingActivities\": 7739000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1153000000,\n \"acquisitionsNet\": -110000000,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -139000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 267000000,\n \"netCashUsedForInvestingActivites\": -996000000,\n \"debtRepayment\": + -857000000,\n \"netCashUsedForInvestingActivites\": -996000000,\n \"debtRepayment\": -3327000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -3833000000,\n \"dividendsPaid\": -6035000000,\n \"otherFinancingActivites\": 6356000000,\n \"netCashUsedProvidedByFinancingActivities\": -6839000000,\n @@ -193,15 +193,15 @@ interactions: \ },\n {\n \"date\": \"2013-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2014-02-21\",\n \ \"acceptedDate\": \"2014-02-21 08:40:56\",\n \"calendarYear\": \"2013\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8576000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8850000000,\n \"depreciationAndAmortization\": 882000000,\n \"deferredIncomeTax\": -28000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -210000000,\n \"accountsReceivables\": -449000000,\n \"inventory\": -1413000000,\n \"accountsPayables\": 103000000,\n - \ \"otherWorkingCapital\": 1549000000,\n \"otherNonCashItems\": 915000000,\n + \ \"otherWorkingCapital\": 1549000000,\n \"otherNonCashItems\": 641000000,\n \ \"netCashProvidedByOperatingActivities\": 10135000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1200000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -1418000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -1480000000,\n \"netCashUsedForInvestingActivites\": -2680000000,\n \"debtRepayment\": + -1262000000,\n \"netCashUsedForInvestingActivites\": -2680000000,\n \"debtRepayment\": -4686000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -5963000000,\n \"dividendsPaid\": -5720000000,\n \"otherFinancingActivites\": 8154000000,\n \"netCashUsedProvidedByFinancingActivities\": -8215000000,\n @@ -213,35 +213,34 @@ interactions: \ },\n {\n \"date\": \"2012-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2013-02-22\",\n \ \"acceptedDate\": \"2013-02-22 12:13:08\",\n \"calendarYear\": \"2012\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8800000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 9154000000,\n \"depreciationAndAmortization\": 898000000,\n \"deferredIncomeTax\": -248000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -661000000,\n \"accountsReceivables\": -398000000,\n \"inventory\": -728000000,\n \"accountsPayables\": 10000000,\n - \ \"otherWorkingCapital\": 455000000,\n \"otherNonCashItems\": 632000000,\n + \ \"otherWorkingCapital\": 455000000,\n \"otherNonCashItems\": 278000000,\n \ \"netCashProvidedByOperatingActivities\": 9421000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1056000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 64000000,\n \"netCashUsedForInvestingActivites\": -992000000,\n \"debtRepayment\": - -3457000000,\n \"commonStockIssued\": 1000000,\n \"commonStockRepurchased\": - -6525000000,\n \"dividendsPaid\": -5404000000,\n \"otherFinancingActivites\": - 7285000000,\n \"netCashUsedProvidedByFinancingActivities\": -8100000000,\n - \ \"effectOfForexChangesOnCash\": 104000000,\n \"netChangeInCash\": 433000000,\n - \ \"cashAtEndOfPeriod\": 2983000000,\n \"cashAtBeginningOfPeriod\": 2550000000,\n - \ \"operatingCashFlow\": 9421000000,\n \"capitalExpenditure\": -1056000000,\n - \ \"freeCashFlow\": 8365000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n + 0,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -992000000,\n \"netCashUsedForInvestingActivites\": + -992000000,\n \"debtRepayment\": -3457000000,\n \"commonStockIssued\": + 1000000,\n \"commonStockRepurchased\": -6525000000,\n \"dividendsPaid\": + -5404000000,\n \"otherFinancingActivites\": 7285000000,\n \"netCashUsedProvidedByFinancingActivities\": + -8100000000,\n \"effectOfForexChangesOnCash\": 104000000,\n \"netChangeInCash\": + 433000000,\n \"cashAtEndOfPeriod\": 2983000000,\n \"cashAtBeginningOfPeriod\": + 2550000000,\n \"operatingCashFlow\": 9421000000,\n \"capitalExpenditure\": + -1056000000,\n \"freeCashFlow\": 8365000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n \ },\n {\n \"date\": \"2011-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2012-02-24\",\n \ \"acceptedDate\": \"2012-02-24 09:29:03\",\n \"calendarYear\": \"2011\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8591000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8879000000,\n \"depreciationAndAmortization\": 993000000,\n \"deferredIncomeTax\": 15000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 834000000,\n \"accountsReceivables\": 0,\n \"inventory\": -36000000,\n \"accountsPayables\": 199000000,\n - \ \"otherWorkingCapital\": 65000000,\n \"otherNonCashItems\": 96000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -192000000,\n \ \"netCashProvidedByOperatingActivities\": 10529000000,\n \"investmentsInPropertyPlantAndEquipment\": - -897000000,\n \"acquisitionsNet\": -80000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -55000000,\n \"netCashUsedForInvestingActivites\": -1032000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -80000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -952000000,\n \"netCashUsedForInvestingActivites\": -1032000000,\n \"debtRepayment\": -2630000000,\n \"commonStockIssued\": 75000000,\n \"commonStockRepurchased\": -5372000000,\n \"dividendsPaid\": -4788000000,\n \"otherFinancingActivites\": 4377000000,\n \"netCashUsedProvidedByFinancingActivities\": -8338000000,\n @@ -253,15 +252,15 @@ interactions: \ },\n {\n \"date\": \"2010-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2011-02-25\",\n \ \"acceptedDate\": \"2011-02-25 12:11:25\",\n \"calendarYear\": \"2010\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7259000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7498000000,\n \"depreciationAndAmortization\": 932000000,\n \"deferredIncomeTax\": 101000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1255000000,\n \"accountsReceivables\": 0,\n \"inventory\": 1071000000,\n \"accountsPayables\": -72000000,\n - \ \"otherWorkingCapital\": 952000000,\n \"otherNonCashItems\": -110000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -349000000,\n \ \"netCashProvidedByOperatingActivities\": 9437000000,\n \"investmentsInPropertyPlantAndEquipment\": - -713000000,\n \"acquisitionsNet\": -83000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 86000000,\n \"netCashUsedForInvestingActivites\": -710000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -83000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -627000000,\n \"netCashUsedForInvestingActivites\": -710000000,\n \"debtRepayment\": -183000000,\n \"commonStockIssued\": 229000000,\n \"commonStockRepurchased\": -5030000000,\n \"dividendsPaid\": -4423000000,\n \"otherFinancingActivites\": 829000000,\n \"netCashUsedProvidedByFinancingActivities\": -8578000000,\n @@ -273,15 +272,15 @@ interactions: \ },\n {\n \"date\": \"2009-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2010-02-26\",\n \ \"acceptedDate\": \"2010-02-26 08:23:45\",\n \"calendarYear\": \"2009\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6342000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 6552000000,\n \"depreciationAndAmortization\": 853000000,\n \"deferredIncomeTax\": 129000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 552000000,\n \"accountsReceivables\": 0,\n \"inventory\": 660000000,\n \"accountsPayables\": -116000000,\n - \ \"otherWorkingCapital\": 3504000000,\n \"otherNonCashItems\": 8000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -202000000,\n \ \"netCashProvidedByOperatingActivities\": 7884000000,\n \"investmentsInPropertyPlantAndEquipment\": - -715000000,\n \"acquisitionsNet\": -429000000,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -429000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 46000000,\n \"netCashUsedForInvestingActivites\": -1098000000,\n \"debtRepayment\": + -669000000,\n \"netCashUsedForInvestingActivites\": -1098000000,\n \"debtRepayment\": -101000000,\n \"commonStockIssued\": 177000000,\n \"commonStockRepurchased\": -5625000000,\n \"dividendsPaid\": -4327000000,\n \"otherFinancingActivites\": 2965000000,\n \"netCashUsedProvidedByFinancingActivities\": -6911000000,\n @@ -297,82 +296,80 @@ interactions: 842000000,\n \"deferredIncomeTax\": 5000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -133000000,\n \"accountsReceivables\": 0,\n \"inventory\": -914000000,\n \"accountsPayables\": -90000000,\n - \ \"otherWorkingCapital\": 4795000000,\n \"otherNonCashItems\": 331000000,\n - \ \"netCashProvidedByOperatingActivities\": 7935000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1099000000,\n \"acquisitionsNet\": -1663000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -399000000,\n \"netCashUsedForInvestingActivites\": -3161000000,\n \"debtRepayment\": - -5736000000,\n \"commonStockIssued\": 118000000,\n \"commonStockRepurchased\": - -5256000000,\n \"dividendsPaid\": -5079000000,\n \"otherFinancingActivites\": - 11775000000,\n \"netCashUsedProvidedByFinancingActivities\": -4178000000,\n - \ \"effectOfForexChangesOnCash\": -566000000,\n \"netChangeInCash\": + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": 331000000,\n \"netCashProvidedByOperatingActivities\": + 7935000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": + -1663000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -1498000000,\n \"netCashUsedForInvestingActivites\": + -3161000000,\n \"debtRepayment\": -5736000000,\n \"commonStockIssued\": + 118000000,\n \"commonStockRepurchased\": -5256000000,\n \"dividendsPaid\": + -5079000000,\n \"otherFinancingActivites\": 11775000000,\n \"netCashUsedProvidedByFinancingActivities\": + -4178000000,\n \"effectOfForexChangesOnCash\": -566000000,\n \"netChangeInCash\": 30000000,\n \"cashAtEndOfPeriod\": 1531000000,\n \"cashAtBeginningOfPeriod\": 1501000000,\n \"operatingCashFlow\": 7935000000,\n \"capitalExpenditure\": -1099000000,\n \"freeCashFlow\": 6836000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/0001193125-09-038765-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"netIncome\": 6026000000,\n \"depreciationAndAmortization\": 748000000,\n \"deferredIncomeTax\": -21000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -1547000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1264000000,\n \"accountsPayables\": 38000000,\n - \ \"otherWorkingCapital\": 6501000000,\n \"otherNonCashItems\": 383000000,\n - \ \"netCashProvidedByOperatingActivities\": 5589000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1072000000,\n \"acquisitionsNet\": -1432000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -82000000,\n \"netCashUsedForInvestingActivites\": -2586000000,\n \"debtRepayment\": - -3381000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -6560000000,\n \"otherFinancingActivites\": - 6572000000,\n \"netCashUsedProvidedByFinancingActivities\": -3369000000,\n - \ \"effectOfForexChangesOnCash\": 346000000,\n \"netChangeInCash\": -20000000,\n - \ \"cashAtEndOfPeriod\": 1656000000,\n \"cashAtBeginningOfPeriod\": 1676000000,\n - \ \"operatingCashFlow\": 5589000000,\n \"capitalExpenditure\": -1072000000,\n - \ \"freeCashFlow\": 4517000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": 383000000,\n \"netCashProvidedByOperatingActivities\": + 5589000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": + -1432000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -1154000000,\n \"netCashUsedForInvestingActivites\": + -2586000000,\n \"debtRepayment\": -3381000000,\n \"commonStockIssued\": + 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6560000000,\n + \ \"otherFinancingActivites\": 6572000000,\n \"netCashUsedProvidedByFinancingActivities\": + -3369000000,\n \"effectOfForexChangesOnCash\": 346000000,\n \"netChangeInCash\": + -20000000,\n \"cashAtEndOfPeriod\": 1656000000,\n \"cashAtBeginningOfPeriod\": + 1676000000,\n \"operatingCashFlow\": 5589000000,\n \"capitalExpenditure\": + -1072000000,\n \"freeCashFlow\": 4517000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2006-12-31\",\n \"acceptedDate\": \"2006-12-30 19:00:00\",\n \"calendarYear\": + \"2006-12-31\",\n \"acceptedDate\": \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": \"FY\",\n \"netIncome\": 6146000000,\n \"depreciationAndAmortization\": 658000000,\n \"deferredIncomeTax\": 226000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -730000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1077000000,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 4936000000,\n \"otherNonCashItems\": -64000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": -64000000,\n \"netCashProvidedByOperatingActivities\": 6236000000,\n \"investmentsInPropertyPlantAndEquipment\": -886000000,\n - \ \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": - 0,\n \"otherInvestingActivites\": 447000000,\n \"netCashUsedForInvestingActivites\": - -439000000,\n \"debtRepayment\": 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -2780000000,\n \"otherFinancingActivites\": - -2637000000,\n \"netCashUsedProvidedByFinancingActivities\": -5417000000,\n - \ \"effectOfForexChangesOnCash\": 87000000,\n \"netChangeInCash\": 467000000,\n - \ \"cashAtEndOfPeriod\": 1676000000,\n \"cashAtBeginningOfPeriod\": 1209000000,\n - \ \"operatingCashFlow\": 6236000000,\n \"capitalExpenditure\": -886000000,\n - \ \"freeCashFlow\": 5350000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n + \ \"acquisitionsNet\": 516000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -69000000,\n \"netCashUsedForInvestingActivites\": -439000000,\n \"debtRepayment\": + 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": + -2780000000,\n \"otherFinancingActivites\": -2637000000,\n \"netCashUsedProvidedByFinancingActivities\": + -5417000000,\n \"effectOfForexChangesOnCash\": 87000000,\n \"netChangeInCash\": + 467000000,\n \"cashAtEndOfPeriod\": 1676000000,\n \"cashAtBeginningOfPeriod\": + 1209000000,\n \"operatingCashFlow\": 6236000000,\n \"capitalExpenditure\": + -886000000,\n \"freeCashFlow\": 5350000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2005-12-31\",\n \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": + \"2005-12-31\",\n \"acceptedDate\": \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \"period\": \"FY\",\n \"netIncome\": 5620000000,\n \"depreciationAndAmortization\": 527000000,\n \"deferredIncomeTax\": -746000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -370000000,\n \"accountsReceivables\": 0,\n \"inventory\": -441000000,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 3691000000,\n \"otherNonCashItems\": 127000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": 127000000,\n \"netCashProvidedByOperatingActivities\": 5158000000,\n \"investmentsInPropertyPlantAndEquipment\": -736000000,\n - \ \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": - 0,\n \"otherInvestingActivites\": -4886000000,\n \"netCashUsedForInvestingActivites\": - -5622000000,\n \"debtRepayment\": 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -7682000000,\n \"otherFinancingActivites\": - 4718000000,\n \"netCashUsedProvidedByFinancingActivities\": -2964000000,\n - \ \"effectOfForexChangesOnCash\": -359000000,\n \"netChangeInCash\": + \ \"acquisitionsNet\": -4932000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + 46000000,\n \"netCashUsedForInvestingActivites\": -5622000000,\n \"debtRepayment\": + 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": + -7682000000,\n \"otherFinancingActivites\": 4718000000,\n \"netCashUsedProvidedByFinancingActivities\": + -2964000000,\n \"effectOfForexChangesOnCash\": -359000000,\n \"netChangeInCash\": -3787000000,\n \"cashAtEndOfPeriod\": 1209000000,\n \"cashAtBeginningOfPeriod\": 4996000000,\n \"operatingCashFlow\": 5158000000,\n \"capitalExpenditure\": - -736000000,\n \"freeCashFlow\": 4422000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n + -736000000,\n \"freeCashFlow\": 4422000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2003-12-31\",\n \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": - \"2003\",\n \"period\": \"FY\",\n \"netIncome\": 3975000000,\n \"depreciationAndAmortization\": + \"2003-12-31\",\n \"acceptedDate\": \"2003-12-31 00:00:00\",\n \"calendarYear\": + \"2003\",\n \"period\": \"FY\",\n \"netIncome\": 0,\n \"depreciationAndAmortization\": 370000000,\n \"deferredIncomeTax\": 0,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 0,\n \"accountsReceivables\": 0,\n \ \"inventory\": 0,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 11053000000,\n \"otherNonCashItems\": 285000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": 4260000000,\n \"netCashProvidedByOperatingActivities\": 4630000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": -1509000000,\n \"netCashUsedForInvestingActivites\": @@ -381,8 +378,8 @@ interactions: \ \"netCashUsedProvidedByFinancingActivities\": -2601000000,\n \"effectOfForexChangesOnCash\": 0,\n \"netChangeInCash\": 0,\n \"cashAtEndOfPeriod\": 0,\n \"cashAtBeginningOfPeriod\": 0,\n \"operatingCashFlow\": 4630000000,\n \"capitalExpenditure\": -586000000,\n - \ \"freeCashFlow\": 4044000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n }\n]" + \ \"freeCashFlow\": 4044000000,\n \"link\": null,\n \"finalLink\": + null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -398,13 +395,13 @@ interactions: Connection: - close Content-Length: - - '30135' + - '30063' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:38 GMT + - Tue, 02 May 2023 14:20:50 GMT ETag: - - W/"75b7-WgWMx6yP1zFZWeWdPEMX/vvnLmI" + - W/"756f-qjF0ESNSYTQO+i04uPiGLXDNmlM" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].yaml index 745fff6f9459..d0d62c55d0de 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].yaml @@ -10,8 +10,8 @@ interactions: uri: https://financialmodelingprep.com/api/v3/discounted-cash-flow/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2023-03-07\",\n \"dcf\": - 100.55973025048169,\n \"Stock Price\": 98.5\n }\n]" + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2023-05-02\",\n \"dcf\": + 99.0397302504817,\n \"Stock Price\": 96.98\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -27,13 +27,13 @@ interactions: Connection: - close Content-Length: - - '112' + - '111' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:34 GMT + - Tue, 02 May 2023 14:20:47 GMT ETag: - - W/"70-fGZ/iCdoviIneRkO6Cg8Dcw0Yew" + - W/"6f-W1oPBl8KYlXloKT8kc/ps1NqhcA" Server: - nginx/1.14.0 (Ubuntu) X-Frame-Options: @@ -96,7 +96,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:35 GMT + - Tue, 02 May 2023 14:20:48 GMT ETag: - W/"684-KUHB5l+xWU/bXUHG5KRXSaS5M+4" Server: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_enterprise-kwargs_dict1].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_enterprise-kwargs_dict1].yaml index c348b857d0e9..5495ef2322a2 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_enterprise-kwargs_dict1].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_enterprise-kwargs_dict1].yaml @@ -11,64 +11,73 @@ interactions: response: body: string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"stockPrice\": - 103.83,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": - 161663310000,\n \"minusCashAndCashEquivalents\": 3207000000,\n \"addTotalDebt\": - 43123000000,\n \"enterpriseValue\": 201579310000\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2022-09-30\",\n \"stockPrice\": 92.5299988,\n - \ \"numberOfShares\": 0,\n \"marketCapitalization\": 0,\n \"minusCashAndCashEquivalents\": - 5368000000,\n \"addTotalDebt\": 24580000000,\n \"enterpriseValue\": - 19212000000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n - \ \"stockPrice\": 103.5199966,\n \"numberOfShares\": 1558000000,\n \"marketCapitalization\": - 161284154702.8,\n \"minusCashAndCashEquivalents\": 4496000000,\n \"addTotalDebt\": - 27806000000,\n \"enterpriseValue\": 184594154702.8\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2020-12-31\",\n \"stockPrice\": 79.6500015,\n - \ \"numberOfShares\": 1557000000,\n \"marketCapitalization\": 124015052335.5,\n - \ \"minusCashAndCashEquivalents\": 7280000000,\n \"addTotalDebt\": 31536000000,\n - \ \"enterpriseValue\": 148271052335.5\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2019-12-31\",\n \"stockPrice\": 84.3300018,\n \"numberOfShares\": - 1555000000,\n \"marketCapitalization\": 131133152799.00002,\n \"minusCashAndCashEquivalents\": + 101.21,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": + 157583970000,\n \"minusCashAndCashEquivalents\": 3207000000,\n \"addTotalDebt\": + 43123000000,\n \"enterpriseValue\": 197499970000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2021-12-31\",\n \"stockPrice\": 95,\n \"numberOfShares\": + 1558000000,\n \"marketCapitalization\": 148010000000,\n \"minusCashAndCashEquivalents\": + 4496000000,\n \"addTotalDebt\": 27806000000,\n \"enterpriseValue\": + 171320000000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n + \ \"stockPrice\": 82.79,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": + 128904030000.00002,\n \"minusCashAndCashEquivalents\": 7280000000,\n \"addTotalDebt\": + 31536000000,\n \"enterpriseValue\": 153160030000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2019-12-31\",\n \"stockPrice\": 85.09,\n \"numberOfShares\": + 1555000000,\n \"marketCapitalization\": 132314950000,\n \"minusCashAndCashEquivalents\": 6861000000,\n \"addTotalDebt\": 31045000000,\n \"enterpriseValue\": - 155317152799\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n - \ \"stockPrice\": 74.4800034,\n \"numberOfShares\": 1555000000,\n \"marketCapitalization\": - 115816405287,\n \"minusCashAndCashEquivalents\": 6593000000,\n \"addTotalDebt\": - 31759000000,\n \"enterpriseValue\": 140982405287\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2017-12-31\",\n \"stockPrice\": 107.9400024,\n - \ \"numberOfShares\": 1552000000,\n \"marketCapitalization\": 167522883724.8,\n - \ \"minusCashAndCashEquivalents\": 8447000000,\n \"addTotalDebt\": 34339000000,\n - \ \"enterpriseValue\": 193414883724.8\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2016-12-31\",\n \"stockPrice\": 95.9599991,\n \"numberOfShares\": - 1551000000,\n \"marketCapitalization\": 148833958604.1,\n \"minusCashAndCashEquivalents\": - 4239000000,\n \"addTotalDebt\": 29067000000,\n \"enterpriseValue\": - 173661958604.1\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n - \ \"stockPrice\": 90.0100021,\n \"numberOfShares\": 1549000000,\n \"marketCapitalization\": - 139425493252.9,\n \"minusCashAndCashEquivalents\": 3417000000,\n \"addTotalDebt\": - 28480000000,\n \"enterpriseValue\": 164488493252.9\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2014-12-31\",\n \"stockPrice\": 80.2399979,\n - \ \"numberOfShares\": 1566000000,\n \"marketCapitalization\": 125655836711.40001,\n - \ \"minusCashAndCashEquivalents\": 1682000000,\n \"addTotalDebt\": 29455000000,\n - \ \"enterpriseValue\": 153428836711.40002\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2013-12-31\",\n \"stockPrice\": 79.0899963,\n \"numberOfShares\": - 1622000000,\n \"marketCapitalization\": 128283973998.59999,\n \"minusCashAndCashEquivalents\": + 156498950000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n + \ \"stockPrice\": 66.76,\n \"numberOfShares\": 1555000000,\n \"marketCapitalization\": + 103811800000.00002,\n \"minusCashAndCashEquivalents\": 6593000000,\n \"addTotalDebt\": + 31759000000,\n \"enterpriseValue\": 128977800000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2017-12-31\",\n \"stockPrice\": 105.65,\n \"numberOfShares\": + 1552000000,\n \"marketCapitalization\": 163968800000,\n \"minusCashAndCashEquivalents\": + 8447000000,\n \"addTotalDebt\": 34339000000,\n \"enterpriseValue\": + 189860800000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n + \ \"stockPrice\": 91.49,\n \"numberOfShares\": 1551000000,\n \"marketCapitalization\": + 141900990000,\n \"minusCashAndCashEquivalents\": 4239000000,\n \"addTotalDebt\": + 29067000000,\n \"enterpriseValue\": 166728990000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2015-12-31\",\n \"stockPrice\": 87.91,\n \"numberOfShares\": + 1549000000,\n \"marketCapitalization\": 136172590000,\n \"minusCashAndCashEquivalents\": + 3417000000,\n \"addTotalDebt\": 28480000000,\n \"enterpriseValue\": + 161235590000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n + \ \"stockPrice\": 81.45,\n \"numberOfShares\": 1566000000,\n \"marketCapitalization\": + 127550700000,\n \"minusCashAndCashEquivalents\": 1682000000,\n \"addTotalDebt\": + 29455000000,\n \"enterpriseValue\": 155323700000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2013-12-31\",\n \"stockPrice\": 87.13,\n \"numberOfShares\": + 1622000000,\n \"marketCapitalization\": 141324860000,\n \"minusCashAndCashEquivalents\": 2154000000,\n \"addTotalDebt\": 27678000000,\n \"enterpriseValue\": - 153807973998.59998\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n - \ \"stockPrice\": 87.6500015,\n \"numberOfShares\": 1692000000,\n \"marketCapitalization\": - 148303802538,\n \"minusCashAndCashEquivalents\": 2983000000,\n \"addTotalDebt\": - 22839000000,\n \"enterpriseValue\": 168159802538\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2011-12-31\",\n \"stockPrice\": 74.9000015,\n - \ \"numberOfShares\": 1725908666,\n \"marketCapitalization\": 129270561672.263,\n - \ \"minusCashAndCashEquivalents\": 2550000000,\n \"addTotalDebt\": 18545000000,\n - \ \"enterpriseValue\": 145265561672.263\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2010-12-31\",\n \"stockPrice\": 56.5999985,\n \"numberOfShares\": - 1839000000,\n \"marketCapitalization\": 104087397241.5,\n \"minusCashAndCashEquivalents\": - 1703000000,\n \"addTotalDebt\": 16502000000,\n \"enterpriseValue\": - 118886397241.5\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n - \ \"stockPrice\": 45.5099983,\n \"numberOfShares\": 1943000000,\n \"marketCapitalization\": - 88425926696.9,\n \"minusCashAndCashEquivalents\": 1540000000,\n \"addTotalDebt\": - 15416000000,\n \"enterpriseValue\": 102301926696.9\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2008-12-31\",\n \"stockPrice\": 37.1500015,\n - \ \"numberOfShares\": 2068000000,\n \"marketCapitalization\": 76826203102,\n - \ \"minusCashAndCashEquivalents\": 1531000000,\n \"addTotalDebt\": 11961000000,\n - \ \"enterpriseValue\": 87256203102\n }\n]" + 166848860000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n + \ \"stockPrice\": 83.64,\n \"numberOfShares\": 1692000000,\n \"marketCapitalization\": + 141518880000,\n \"minusCashAndCashEquivalents\": 2983000000,\n \"addTotalDebt\": + 22839000000,\n \"enterpriseValue\": 161374880000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2011-12-31\",\n \"stockPrice\": 78.48,\n \"numberOfShares\": + 1725908666,\n \"marketCapitalization\": 135449312107.68001,\n \"minusCashAndCashEquivalents\": + 2550000000,\n \"addTotalDebt\": 18545000000,\n \"enterpriseValue\": + 151444312107\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n + \ \"stockPrice\": 58.53,\n \"numberOfShares\": 1839000000,\n \"marketCapitalization\": + 107636670000,\n \"minusCashAndCashEquivalents\": 1703000000,\n \"addTotalDebt\": + 16502000000,\n \"enterpriseValue\": 122435670000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2009-12-31\",\n \"stockPrice\": 48.19,\n \"numberOfShares\": + 1943000000,\n \"marketCapitalization\": 93633170000,\n \"minusCashAndCashEquivalents\": + 1540000000,\n \"addTotalDebt\": 15416000000,\n \"enterpriseValue\": + 107509170000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n + \ \"stockPrice\": 43.51,\n \"numberOfShares\": 2068000000,\n \"marketCapitalization\": + 89978680000,\n \"minusCashAndCashEquivalents\": 1531000000,\n \"addTotalDebt\": + 11961000000,\n \"enterpriseValue\": 100408680000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2007-12-31\",\n \"stockPrice\": 24.3858204516,\n + \ \"numberOfShares\": 2101000000,\n \"marketCapitalization\": 51234608768.8116,\n + \ \"minusCashAndCashEquivalents\": 1656000000,\n \"addTotalDebt\": 6307000000,\n + \ \"enterpriseValue\": 55885608768\n },\n {\n \"symbol\": \"PM\",\n + \ \"date\": \"2006-12-31\",\n \"stockPrice\": 24.3858204516,\n \"numberOfShares\": + 2109313033,\n \"marketCapitalization\": 51437328898.957825,\n \"minusCashAndCashEquivalents\": + 1676000000,\n \"addTotalDebt\": 2786000000,\n \"enterpriseValue\": 52547328898\n + \ },\n {\n \"symbol\": \"PM\",\n \"date\": \"2005-12-31\",\n \"stockPrice\": + 24.3858204516,\n \"numberOfShares\": 2109313033,\n \"marketCapitalization\": + 51437328898.957825,\n \"minusCashAndCashEquivalents\": 1209000000,\n \"addTotalDebt\": + 4909000000,\n \"enterpriseValue\": 55137328898\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2003-12-31\",\n \"stockPrice\": 24.3858204516,\n + \ \"numberOfShares\": 2028000000,\n \"marketCapitalization\": 49454443875.8448,\n + \ \"minusCashAndCashEquivalents\": 3161000000,\n \"addTotalDebt\": 0,\n + \ \"enterpriseValue\": 46293443875\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -84,13 +93,13 @@ interactions: Connection: - close Content-Length: - - '4474' + - '5220' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:33 GMT + - Tue, 02 May 2023 14:20:47 GMT ETag: - - W/"117a-pnWpP1iblLh3xBbpIxvyqkWL/xQ" + - W/"1464-t0NuVW6Xkzoda4bq7fkXt6hdXrM" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].yaml index bfc6f697af58..65695a770379 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].yaml @@ -10,51 +10,53 @@ interactions: uri: https://financialmodelingprep.com/api/v3/ratios/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-09-30\",\n \"period\": - \"FY\",\n \"currentRatio\": 1.9048970901348474,\n \"quickRatio\": 1.9048970901348474,\n - \ \"cashRatio\": 1.9048970901348474,\n \"daysOfSalesOutstanding\": 0,\n - \ \"daysOfInventoryOutstanding\": 0,\n \"operatingCycle\": 0,\n \"daysOfPayablesOutstanding\": - 0,\n \"cashConversionCycle\": 0,\n \"grossProfitMargin\": 0.6410175681632139,\n - \ \"operatingProfitMargin\": 0.384799445878723,\n \"pretaxProfitMargin\": - 0.3662867577608463,\n \"netProfitMargin\": 0.2848687110383477,\n \"effectiveTaxRate\": - 0.1928829293450232,\n \"returnOnAssets\": 0.222216764496402,\n \"returnOnEquity\": - -0.9902593849184634,\n \"returnOnCapitalEmployed\": 0.32248872001899787,\n - \ \"netIncomePerEBT\": 0.777720474471377,\n \"ebtPerEbit\": 0.9518900343642611,\n - \ \"ebitPerRevenue\": 0.384799445878723,\n \"debtRatio\": 1.1818159491121645,\n - \ \"debtEquityRatio\": -5.26649885082631,\n \"longTermDebtToCapitalization\": - 1.7237227722772277,\n \"totalDebtToCapitalization\": 1.5916596516220942,\n - \ \"interestCoverage\": 15.9140625,\n \"cashFlowToDebtRatio\": 0.43950366151342557,\n - \ \"companyEquityMultiplier\": -4.456276677246361,\n \"receivablesTurnover\": - 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": 0,\n \"fixedAssetTurnover\": - 5.6616755793226385,\n \"assetTurnover\": 0.7800672937593635,\n \"operatingCashFlowPerShare\": - 6.938342967244702,\n \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": - 3.447655748233783,\n \"payoutRatio\": 0.863395225464191,\n \"operatingCashFlowSalesRatio\": + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": + \"FY\",\n \"currentRatio\": 0.7176982733391865,\n \"quickRatio\": 0.291300848697688,\n + \ \"cashRatio\": 0.11731782265144863,\n \"daysOfSalesOutstanding\": 54.65461872678043,\n + \ \"daysOfInventoryOutstanding\": 316.4699175583231,\n \"operatingCycle\": + 371.12453628510355,\n \"daysOfPayablesOutstanding\": 130.48061743553762,\n + \ \"cashConversionCycle\": 240.64391884956592,\n \"grossProfitMargin\": + 0.6410175681632139,\n \"operatingProfitMargin\": 0.38555506580190163,\n + \ \"pretaxProfitMargin\": 0.3662867577608463,\n \"netProfitMargin\": + 0.2848687110383477,\n \"effectiveTaxRate\": 0.1928829293450232,\n \"returnOnAssets\": + 0.14669022875764012,\n \"returnOnEquity\": -1.0101596516690856,\n \"returnOnCapitalEmployed\": + 0.3565584510117921,\n \"netIncomePerEBT\": 0.777720474471377,\n \"ebtPerEbit\": + 0.9500244977951985,\n \"ebitPerRevenue\": 0.38555506580190163,\n \"debtRatio\": + 1.1023167588074123,\n \"debtEquityRatio\": -4.814446801384392,\n \"longTermDebtToCapitalization\": + 1.3455899374951772,\n \"totalDebtToCapitalization\": 1.2621612129017152,\n + \ \"interestCoverage\": 15.9453125,\n \"cashFlowToDebtRatio\": 0.25051596595784154,\n + \ \"companyEquityMultiplier\": -6.886345874734844,\n \"receivablesTurnover\": + 6.678301093355761,\n \"payablesTurnover\": 2.797350343473994,\n \"inventoryTurnover\": + 1.1533481691280598,\n \"fixedAssetTurnover\": 4.733532041728763,\n \"assetTurnover\": + 0.5149397707559864,\n \"operatingCashFlowPerShare\": 6.938342967244702,\n + \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 2.0597302504816954,\n + \ \"payoutRatio\": 0.863395225464191,\n \"operatingCashFlowSalesRatio\": 0.3401234179207858,\n \"freeCashFlowOperatingCashFlowRatio\": 0.9003054707025826,\n - \ \"cashFlowCoverageRatios\": 0.43950366151342557,\n \"shortTermCoverageRatios\": - 3.833569907735983,\n \"capitalExpenditureCoverageRatio\": -10.030640668523677,\n + \ \"cashFlowCoverageRatios\": 0.25051596595784154,\n \"shortTermCoverageRatios\": + 1.309772065955383,\n \"capitalExpenditureCoverageRatio\": -10.030640668523677,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.6040089086859688,\n \"dividendPayoutRatio\": - 0.8633952254641911,\n \"priceBookValueRatio\": -14.145405494144688,\n \"priceToBookRatio\": - -14.145405494144688,\n \"priceToSalesRatio\": 4.069220137270953,\n \"priceEarningsRatio\": - 14.284545755968171,\n \"priceToFreeCashFlowsRatio\": 13.28876927822332,\n - \ \"priceToOperatingCashFlowsRatio\": 11.963951680088865,\n \"priceCashFlowRatio\": - 11.963951680088865,\n \"priceEarningsToGrowthRatio\": -41.63945087864626,\n - \ \"priceSalesRatio\": 4.069220137270953,\n \"dividendYield\": 0.06044260981161821,\n - \ \"enterpriseValueMultiple\": 10.923299977926568,\n \"priceFairValue\": - -14.145405494144688\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n + 0.8633952254641911,\n \"priceBookValueRatio\": -17.593387294853187,\n \"priceToBookRatio\": + -17.593387294853187,\n \"priceToSalesRatio\": 4.961399471066054,\n \"priceEarningsRatio\": + 17.416442307692307,\n \"priceToFreeCashFlowsRatio\": 16.202341147439853,\n + \ \"priceToOperatingCashFlowsRatio\": 14.587056373229657,\n \"priceCashFlowRatio\": + 14.587056373229657,\n \"priceEarningsToGrowthRatio\": -25.471546874999976,\n + \ \"priceSalesRatio\": 4.961399471066054,\n \"dividendYield\": 0.04957357020514207,\n + \ \"enterpriseValueMultiple\": 14.906783153445543,\n \"priceFairValue\": + -17.593387294853187\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 0.9201246429498832,\n \"quickRatio\": 0.4381199688392625,\n \"cashRatio\": 0.2334977927810958,\n \"daysOfSalesOutstanding\": 45.79207132622194,\n \"daysOfInventoryOutstanding\": 317.3280159521436,\n \ \"operatingCycle\": 363.12008727836553,\n \"daysOfPayablesOutstanding\": 121.21784646061815,\n \"cashConversionCycle\": 241.90224081774738,\n \"grossProfitMargin\": - 0.6806241044419679,\n \"operatingProfitMargin\": 0.40948893488298044,\n + 0.6806241044419679,\n \"operatingProfitMargin\": 0.4131507721700366,\n \ \"pretaxProfitMargin\": 0.38949211908931697,\n \"netProfitMargin\": 0.29004935519821684,\n \"effectiveTaxRate\": 0.2183616742969261,\n \"returnOnAssets\": 0.22061031726810365,\n \"returnOnEquity\": -0.9013457352068078,\n \"returnOnCapitalEmployed\": - 0.5836169729975039,\n \"netIncomePerEBT\": 0.7446860693263571,\n \"ebtPerEbit\": - 0.9511664074650078,\n \"ebitPerRevenue\": 0.40948893488298044,\n \"debtRatio\": - 1.198789053039477,\n \"debtEquityRatio\": -4.897882446071641,\n \"longTermDebtToCapitalization\": + 0.5888359428182437,\n \"netIncomePerEBT\": 0.7446860693263571,\n \"ebtPerEbit\": + 0.9427360308285164,\n \"ebitPerRevenue\": 0.4131507721700366,\n \"debtRatio\": + 1.198789053039477,\n \"debtEquityRatio\": -2.7514347912131405,\n \"longTermDebtToCapitalization\": 1.6885603324930163,\n \"totalDebtToCapitalization\": 1.5709604519774012,\n - \ \"interestCoverage\": 17.44911804613297,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 17.605156037991858,\n \"cashFlowToDebtRatio\": 0.4303747392649069,\n \"companyEquityMultiplier\": -4.085691668315852,\n \ \"receivablesTurnover\": 7.970812182741117,\n \"payablesTurnover\": 3.01110777544281,\n \"inventoryTurnover\": 1.150229357798165,\n \"fixedAssetTurnover\": @@ -69,9 +71,9 @@ interactions: -14.645754997031466,\n \"priceToSalesRatio\": 4.712943798758159,\n \"priceEarningsRatio\": 16.24876495773411,\n \"priceToFreeCashFlowsRatio\": 13.192797932079507,\n \ \"priceToOperatingCashFlowsRatio\": 12.368179159354893,\n \"priceCashFlowRatio\": - 12.368179159354893,\n \"priceEarningsToGrowthRatio\": 1.2513974206254928,\n + 12.368179159354893,\n \"priceEarningsToGrowthRatio\": 1.215125031621856,\n \ \"priceSalesRatio\": 4.712943798758159,\n \"dividendYield\": 0.05121275589487197,\n - \ \"enterpriseValueMultiple\": 12.266055702727858,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 12.676285608583056,\n \"priceFairValue\": -14.645754997031466\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.0956920723935764,\n \"quickRatio\": 0.562885546775427,\n \"cashRatio\": 0.3711445322457303,\n \"daysOfSalesOutstanding\": @@ -84,9 +86,9 @@ interactions: -0.6410440041378213,\n \"returnOnCapitalEmployed\": 0.463015873015873,\n \ \"netIncomePerEBT\": 0.7355062539943394,\n \"ebtPerEbit\": 0.9387212889955434,\n \ \"ebitPerRevenue\": 0.4066355335610232,\n \"debtRatio\": 1.2372196809104095,\n - \ \"debtEquityRatio\": -4.412031511100501,\n \"longTermDebtToCapitalization\": + \ \"debtEquityRatio\": -2.5094294581045595,\n \"longTermDebtToCapitalization\": 1.805525286840587,\n \"totalDebtToCapitalization\": 1.6625019769096947,\n - \ \"interestCoverage\": 16.02747252747253,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 18.880258899676374,\n \"cashFlowToDebtRatio\": 0.31113647894469815,\n \"companyEquityMultiplier\": -3.5660857802180312,\n \ \"receivablesTurnover\": 7.6293538952406275,\n \"payablesTurnover\": 3.442086330935252,\n \"inventoryTurnover\": 0.9977061828797831,\n \"fixedAssetTurnover\": @@ -103,7 +105,7 @@ interactions: \ \"priceToOperatingCashFlowsRatio\": 13.137385854056259,\n \"priceCashFlowRatio\": 13.137385854056259,\n \"priceEarningsToGrowthRatio\": 1.3411744567572454,\n \ \"priceSalesRatio\": 4.49236878789991,\n \"dividendYield\": 0.05712777172288562,\n - \ \"enterpriseValueMultiple\": 12.614069346071487,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 13.15355805565098,\n \"priceFairValue\": -10.25734304129864\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2019-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.0892582169595921,\n \"quickRatio\": 0.5616736579408486,\n \"cashRatio\": 0.3643073328731482,\n \"daysOfSalesOutstanding\": @@ -116,9 +118,9 @@ interactions: 0.1675801749271137,\n \"returnOnEquity\": -0.6206271054677378,\n \"returnOnCapitalEmployed\": 0.4380251227019383,\n \"netIncomePerEBT\": 0.7278160453808752,\n \"ebtPerEbit\": 0.9374228468331592,\n \"ebitPerRevenue\": 0.3533299781915786,\n \"debtRatio\": - 1.2238833819241983,\n \"debtEquityRatio\": -4.5326077567590914,\n \"longTermDebtToCapitalization\": + 1.2238833819241983,\n \"debtEquityRatio\": -2.6816100889695087,\n \"longTermDebtToCapitalization\": 1.7677564825253664,\n \"totalDebtToCapitalization\": 1.5946681734127799,\n - \ \"interestCoverage\": 13.229899497487438,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 18.475438596491227,\n \"cashFlowToDebtRatio\": 0.3250120792398132,\n \"companyEquityMultiplier\": -3.70346376436037,\n \ \"receivablesTurnover\": 8.018563357546409,\n \"payablesTurnover\": 4.572857764245324,\n \"inventoryTurnover\": 1.1383865728207905,\n \"fixedAssetTurnover\": @@ -133,9 +135,9 @@ interactions: -11.429122397857821,\n \"priceToSalesRatio\": 4.439354135212213,\n \"priceEarningsRatio\": 18.41544189283229,\n \"priceToFreeCashFlowsRatio\": 14.322899978350293,\n \ \"priceToOperatingCashFlowsRatio\": 13.113473736372647,\n \"priceCashFlowRatio\": - 13.113473736372647,\n \"priceEarningsToGrowthRatio\": -1.9904349960763426,\n + 13.113473736372647,\n \"priceEarningsToGrowthRatio\": -1.9528041507190927,\n \ \"priceSalesRatio\": 4.439354135212213,\n \"dividendYield\": 0.054120868427944085,\n - \ \"enterpriseValueMultiple\": 13.925872041288486,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 14.893314617434335,\n \"priceFairValue\": -11.429122397857821\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.130940608457914,\n \"quickRatio\": 0.5908324123087663,\n \"cashRatio\": 0.383514629748124,\n \"daysOfSalesOutstanding\": @@ -148,7 +150,7 @@ interactions: 0.19876385015451872,\n \"returnOnEquity\": -0.6349626775824705,\n \"returnOnCapitalEmployed\": 0.5031844316674038,\n \"netIncomePerEBT\": 0.7413550745009839,\n \"ebtPerEbit\": 0.9379449767073921,\n \"ebitPerRevenue\": 0.3840337552742616,\n \"debtRatio\": - 1.2698173412728324,\n \"debtEquityRatio\": -4.056505337507023,\n \"longTermDebtToCapitalization\": + 1.2698173412728324,\n \"debtEquityRatio\": -2.5490809856328758,\n \"longTermDebtToCapitalization\": 1.8582942959492974,\n \"totalDebtToCapitalization\": 1.6455440414507772,\n \ \"interestCoverage\": 13.306432748538011,\n \"cashFlowToDebtRatio\": 0.29843508926603485,\n \"companyEquityMultiplier\": -3.1945581507344087,\n @@ -165,7 +167,7 @@ interactions: -8.332273858255077,\n \"priceToSalesRatio\": 3.5041957805907176,\n \"priceEarningsRatio\": 13.12246239413475,\n \"priceToFreeCashFlowsRatio\": 12.908704302412337,\n \ \"priceToOperatingCashFlowsRatio\": 10.952922557501584,\n \"priceCashFlowRatio\": - 10.952922557501584,\n \"priceEarningsToGrowthRatio\": 0.42429295074369017,\n + 10.952922557501584,\n \"priceEarningsToGrowthRatio\": 0.4253864892765349,\n \ \"priceSalesRatio\": 3.5041957805907176,\n \"dividendYield\": 0.06632194028039201,\n \ \"enterpriseValueMultiple\": 10.571950819672132,\n \"priceFairValue\": -8.332273858255077\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2017-12-31\",\n @@ -180,7 +182,7 @@ interactions: 0.14045336064047664,\n \"returnOnEquity\": -0.49933807711401623,\n \"returnOnCapitalEmployed\": 0.4259423831741095,\n \"netIncomePerEBT\": 0.5699310605345169,\n \"ebtPerEbit\": 0.9205424671824741,\n \"ebitPerRevenue\": 0.40013218310839016,\n \"debtRatio\": - 1.2380841556507167,\n \"debtEquityRatio\": -4.401621711070661,\n \"longTermDebtToCapitalization\": + 1.2380841556507167,\n \"debtEquityRatio\": -2.84122124772464,\n \"longTermDebtToCapitalization\": 1.6279093931837074,\n \"totalDebtToCapitalization\": 1.5431177818721071,\n \ \"interestCoverage\": 10.495437956204379,\n \"cashFlowToDebtRatio\": 0.2595299804886572,\n \"companyEquityMultiplier\": -3.555187820618898,\n @@ -197,7 +199,7 @@ interactions: -13.566837663412212,\n \"priceToSalesRatio\": 5.703659385000695,\n \"priceEarningsRatio\": 27.169643744821872,\n \"priceToFreeCashFlowsRatio\": 22.266268332428027,\n \ \"priceToOperatingCashFlowsRatio\": 18.398653500897666,\n \"priceCashFlowRatio\": - 18.398653500897666,\n \"priceEarningsToGrowthRatio\": -2.0286667329466983,\n + 18.398653500897666,\n \"priceEarningsToGrowthRatio\": -2.03319500690417,\n \ \"priceSalesRatio\": 5.703659385000695,\n \"dividendYield\": 0.03976366235527735,\n \ \"enterpriseValueMultiple\": 15.419540323235605,\n \"priceFairValue\": -13.566837663412212\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n @@ -212,7 +214,7 @@ interactions: 0.18905864155653848,\n \"returnOnEquity\": -0.5491015132408575,\n \"returnOnCapitalEmployed\": 0.5305631868131868,\n \"netIncomePerEBT\": 0.7020354695687223,\n \"ebtPerEbit\": 0.9176144244105409,\n \"ebitPerRevenue\": 0.4052838673412029,\n \"debtRatio\": - 1.2957857317304822,\n \"debtEquityRatio\": -3.7634773013871374,\n \"longTermDebtToCapitalization\": + 1.2957857317304822,\n \"debtEquityRatio\": -2.290904791929382,\n \"longTermDebtToCapitalization\": 1.9639140013674694,\n \"totalDebtToCapitalization\": 1.774650467061481,\n \ \"interestCoverage\": 10.116931711880262,\n \"cashFlowToDebtRatio\": 0.27787525372415456,\n \"companyEquityMultiplier\": -2.9043978562421184,\n @@ -229,7 +231,7 @@ interactions: -11.183873738965952,\n \"priceToSalesRatio\": 5.31763125351321,\n \"priceEarningsRatio\": 20.367588632122864,\n \"priceToFreeCashFlowsRatio\": 20.55046922519913,\n \ \"priceToOperatingCashFlowsRatio\": 17.568526680698277,\n \"priceCashFlowRatio\": - 17.568526680698277,\n \"priceEarningsToGrowthRatio\": 15.004123625663718,\n + 17.568526680698277,\n \"priceEarningsToGrowthRatio\": 18.086418705325165,\n \ \"priceSalesRatio\": 5.31763125351321,\n \"dividendYield\": 0.044946832294827536,\n \ \"enterpriseValueMultiple\": 14.439160820992466,\n \"priceFairValue\": -11.183873738965952\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n @@ -244,7 +246,7 @@ interactions: 0.20240899988220049,\n \"returnOnEquity\": -0.5189519782543038,\n \"returnOnCapitalEmployed\": 0.5720516962843296,\n \"netIncomePerEBT\": 0.7148205928237129,\n \"ebtPerEbit\": 0.9051115504094889,\n \"ebitPerRevenue\": 0.3964693588116743,\n \"debtRatio\": - 1.3379667805395217,\n \"debtEquityRatio\": -3.4303835699184537,\n \"longTermDebtToCapitalization\": + 1.3379667805395217,\n \"debtEquityRatio\": -2.1504077318030808,\n \"longTermDebtToCapitalization\": 2.1031151091121107,\n \"totalDebtToCapitalization\": 1.8692570228406407,\n \ \"interestCoverage\": 9.384275618374557,\n \"cashFlowToDebtRatio\": 0.27615870786516855,\n \"companyEquityMultiplier\": -2.5638779824826337,\n @@ -261,7 +263,7 @@ interactions: -10.281832527937178,\n \"priceToSalesRatio\": 5.0822045980443376,\n \"priceEarningsRatio\": 19.812685872253745,\n \"priceToFreeCashFlowsRatio\": 19.72086748732802,\n \ \"priceToOperatingCashFlowsRatio\": 17.313743165924983,\n \"priceCashFlowRatio\": - 17.313743165924983,\n \"priceEarningsToGrowthRatio\": -2.7737760221155257,\n + 17.313743165924983,\n \"priceEarningsToGrowthRatio\": -2.7854305432168514,\n \ \"priceSalesRatio\": 5.0822045980443376,\n \"dividendYield\": 0.045897636227672546,\n \ \"enterpriseValueMultiple\": 14.08540141521796,\n \"priceFairValue\": -10.281832527937178\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n @@ -276,7 +278,7 @@ interactions: 0.21294796373660727,\n \"returnOnEquity\": -0.5933169688811466,\n \"returnOnCapitalEmployed\": 0.5829140722291407,\n \"netIncomePerEBT\": 0.7035680751173709,\n \"ebtPerEbit\": 0.9101008374636814,\n \"ebitPerRevenue\": 0.39311989787348406,\n \"debtRatio\": - 1.3183846306874698,\n \"debtEquityRatio\": -3.6732916303745347,\n \"longTermDebtToCapitalization\": + 1.3183846306874698,\n \"debtEquityRatio\": -2.332330350779951,\n \"longTermDebtToCapitalization\": 1.8831468531468532,\n \"totalDebtToCapitalization\": 1.750564602401046,\n \ \"interestCoverage\": 10.001709401709402,\n \"cashFlowToDebtRatio\": 0.26273977253437447,\n \"companyEquityMultiplier\": -2.7862063504632197,\n @@ -293,7 +295,7 @@ interactions: -10.099825797767046,\n \"priceToSalesRatio\": 4.284969933147446,\n \"priceEarningsRatio\": 17.022647804617645,\n \"priceToFreeCashFlowsRatio\": 19.366945034922562,\n \ \"priceToOperatingCashFlowsRatio\": 16.48154800361804,\n \"priceCashFlowRatio\": - 16.48154800361804,\n \"priceEarningsToGrowthRatio\": -1.7907825490457763,\n + 16.48154800361804,\n \"priceEarningsToGrowthRatio\": -1.7656824879691642,\n \ \"priceSalesRatio\": 4.284969933147446,\n \"dividendYield\": 0.04731451885407136,\n \ \"enterpriseValueMultiple\": 12.279524073049252,\n \"priceFairValue\": -10.099825797767046\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2013-12-31\",\n @@ -308,7 +310,7 @@ interactions: -1.1043007983517898,\n \"returnOnCapitalEmployed\": 0.6404606198464601,\n \ \"netIncomePerEBT\": 0.6837824908308084,\n \"ebtPerEbit\": 0.9280059193488717,\n \ \"ebitPerRevenue\": 0.432937181663837,\n \"debtRatio\": 1.164378536994341,\n - \ \"debtEquityRatio\": -5.72263713623487,\n \"longTermDebtToCapitalization\": + \ \"debtEquityRatio\": -3.563996909605975,\n \"longTermDebtToCapitalization\": 1.4777019130220828,\n \"totalDebtToCapitalization\": 1.3900160707111289,\n \ \"interestCoverage\": 12.241847826086957,\n \"cashFlowToDebtRatio\": 0.36617530168364765,\n \"companyEquityMultiplier\": -4.914756631470513,\n @@ -325,7 +327,7 @@ interactions: -18.19789595673448,\n \"priceToSalesRatio\": 4.527176218086299,\n \"priceEarningsRatio\": 16.479111473880597,\n \"priceToFreeCashFlowsRatio\": 15.816996082820369,\n \ \"priceToOperatingCashFlowsRatio\": 13.944238776517018,\n \"priceCashFlowRatio\": - 13.944238776517018,\n \"priceEarningsToGrowthRatio\": 9.466334035551425,\n + 13.944238776517018,\n \"priceEarningsToGrowthRatio\": 9.521264407131026,\n \ \"priceSalesRatio\": 4.527176218086299,\n \"dividendYield\": 0.040474124651529816,\n \ \"enterpriseValueMultiple\": 11.723500562113546,\n \"priceFairValue\": -18.19789595673448\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n @@ -340,7 +342,7 @@ interactions: 0.23360764534112025,\n \"returnOnEquity\": -2.5316455696202533,\n \"returnOnCapitalEmployed\": 0.6703786191536748,\n \"netIncomePerEBT\": 0.6776006776006775,\n \"ebtPerEbit\": 0.9379604217824643,\n \"ebitPerRevenue\": 0.44127864359244034,\n \"debtRatio\": - 1.0837271037961242,\n \"debtEquityRatio\": -11.744533947065593,\n \"longTermDebtToCapitalization\": + 1.0491903371383065,\n \"debtEquityRatio\": -6.5704833141542,\n \"longTermDebtToCapitalization\": 1.245428228482666,\n \"totalDebtToCapitalization\": 1.1795176367298457,\n \ \"interestCoverage\": 13.749751737835155,\n \"cashFlowToDebtRatio\": 0.412496168834012,\n \"companyEquityMultiplier\": -10.83716915995397,\n @@ -357,7 +359,7 @@ interactions: -40.713141542002305,\n \"priceToSalesRatio\": 4.510274404818817,\n \"priceEarningsRatio\": 16.08169090909091,\n \"priceToFreeCashFlowsRatio\": 16.917977286312013,\n \ \"priceToOperatingCashFlowsRatio\": 15.021641014754273,\n \"priceCashFlowRatio\": - 15.021641014754273,\n \"priceEarningsToGrowthRatio\": 4.162038465989692,\n + 15.021641014754273,\n \"priceEarningsToGrowthRatio\": 3.640310033057856,\n \ \"priceSalesRatio\": 4.510274404818817,\n \"dividendYield\": 0.03818571769363918,\n \ \"enterpriseValueMultiple\": 11.100211858577522,\n \"priceFairValue\": -40.713141542002305\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2011-12-31\",\n @@ -372,7 +374,7 @@ interactions: 0.24208183047790802,\n \"returnOnEquity\": 37.51528384279476,\n \"returnOnCapitalEmployed\": 0.6442447086111917,\n \"netIncomePerEBT\": 0.6855250558570061,\n \"ebtPerEbit\": 0.93999399939994,\n \"ebitPerRevenue\": 0.4287230279448178,\n \"debtRatio\": - 0.9503212353471596,\n \"debtEquityRatio\": 147.2707423580786,\n \"longTermDebtToCapitalization\": + 0.9503212353471596,\n \"debtEquityRatio\": 80.9825327510917,\n \"longTermDebtToCapitalization\": 0.9847911270505413,\n \"totalDebtToCapitalization\": 0.9878022797485885,\n \ \"interestCoverage\": 14.274089935760172,\n \"cashFlowToDebtRatio\": 0.5677541116203828,\n \"companyEquityMultiplier\": 154.96943231441048,\n @@ -389,7 +391,7 @@ interactions: 591.4817122606114,\n \"priceToSalesRatio\": 4.355703511839727,\n \"priceEarningsRatio\": 15.766419754124083,\n \"priceToFreeCashFlowsRatio\": 14.062428582607975,\n \ \"priceToOperatingCashFlowsRatio\": 12.864404227151677,\n \"priceCashFlowRatio\": - 12.864404227151677,\n \"priceEarningsToGrowthRatio\": 0.5914281015904622,\n + 12.864404227151677,\n \"priceEarningsToGrowthRatio\": 0.6046345439688361,\n \ \"priceSalesRatio\": 4.355703511839727,\n \"dividendYield\": 0.03534901673176175,\n \ \"enterpriseValueMultiple\": 10.686917797451132,\n \"priceFairValue\": 591.4817122606114\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n @@ -404,7 +406,7 @@ interactions: \ \"returnOnEquity\": 2.0704506560182545,\n \"returnOnCapitalEmployed\": 0.5034612964128382,\n \"netIncomePerEBT\": 0.7031189461449051,\n \"ebtPerEbit\": 0.9217857142857143,\n \"ebitPerRevenue\": 0.4116436342252279,\n \"debtRatio\": - 0.8538944365192582,\n \"debtEquityRatio\": 8.53650884198517,\n \"longTermDebtToCapitalization\": + 0.8538944365192582,\n \"debtEquityRatio\": 4.706788362806617,\n \"longTermDebtToCapitalization\": 0.7922493481867742,\n \"totalDebtToCapitalization\": 0.8247700919632147,\n \ \"interestCoverage\": 11.498973305954825,\n \"cashFlowToDebtRatio\": 0.5718700763543813,\n \"companyEquityMultiplier\": 9.997147746719909,\n @@ -421,7 +423,7 @@ interactions: 30.700704506560182,\n \"priceToSalesRatio\": 3.9560669655983536,\n \"priceEarningsRatio\": 14.828030031684804,\n \"priceToFreeCashFlowsRatio\": 12.337995185694636,\n \ \"priceToOperatingCashFlowsRatio\": 11.405814347780016,\n \"priceCashFlowRatio\": - 11.405814347780016,\n \"priceEarningsToGrowthRatio\": 0.7086926118084648,\n + 11.405814347780016,\n \"priceEarningsToGrowthRatio\": 0.7005706942506149,\n \ \"priceSalesRatio\": 3.9560669655983536,\n \"dividendYield\": 0.04109194385147738,\n \ \"enterpriseValueMultiple\": 10.21063047285464,\n \"priceFairValue\": 30.700704506560182\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n @@ -436,7 +438,7 @@ interactions: 0.18354943273905996,\n \"returnOnEquity\": 1.109517144856543,\n \"returnOnCapitalEmployed\": 0.42953709249593564,\n \"netIncomePerEBT\": 0.6861408633560532,\n \"ebtPerEbit\": 0.9206175298804781,\n \"ebitPerRevenue\": 0.4010385460355502,\n \"debtRatio\": - 0.8221521185459597,\n \"debtEquityRatio\": 4.969734079776067,\n \"longTermDebtToCapitalization\": + 0.8221521185459597,\n \"debtEquityRatio\": 2.696990902729181,\n \"longTermDebtToCapitalization\": 0.7051784609036518,\n \"totalDebtToCapitalization\": 0.7295097482491009,\n \ \"interestCoverage\": 12.59723964868256,\n \"cashFlowToDebtRatio\": 0.51141670991178,\n \"companyEquityMultiplier\": 6.044786564030791,\n \"receivablesTurnover\": @@ -453,7 +455,7 @@ interactions: 16.380890482855143,\n \"priceToSalesRatio\": 3.740090673057719,\n \"priceEarningsRatio\": 14.763981393882055,\n \"priceToFreeCashFlowsRatio\": 13.060841121495327,\n \ \"priceToOperatingCashFlowsRatio\": 11.876353373921866,\n \"priceCashFlowRatio\": - 11.876353373921866,\n \"priceEarningsToGrowthRatio\": -6.1455072552034,\n + 11.876353373921866,\n \"priceEarningsToGrowthRatio\": -7.023436863089578,\n \ \"priceSalesRatio\": 3.740090673057719,\n \"dividendYield\": 0.0462122557636359,\n \ \"enterpriseValueMultiple\": 10.063574838528503,\n \"priceFairValue\": 16.380890482855143\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n @@ -468,7 +470,7 @@ interactions: \ \"returnOnEquity\": 0.9186666666666666,\n \"returnOnCapitalEmployed\": 0.4489223760294375,\n \"netIncomePerEBT\": 0.6933682197846432,\n \"ebtPerEbit\": 0.9696526151444185,\n \"ebitPerRevenue\": 0.39867730013616026,\n \"debtRatio\": - 0.7725342715030935,\n \"debtEquityRatio\": 3.3962666666666665,\n \"longTermDebtToCapitalization\": + 0.7725342715030935,\n \"debtEquityRatio\": 1.5948,\n \"longTermDebtToCapitalization\": 0.6026911055782169,\n \"totalDebtToCapitalization\": 0.614613843070757,\n \ \"interestCoverage\": 19.40909090909091,\n \"cashFlowToDebtRatio\": 0.6634060697266115,\n \"companyEquityMultiplier\": 4.3962666666666665,\n @@ -500,7 +502,7 @@ interactions: 0.1880597946509378,\n \"returnOnEquity\": 0.3912732939419518,\n \"returnOnCapitalEmployed\": 0.3777030478460753,\n \"netIncomePerEBT\": 0.6799052239647975,\n \"ebtPerEbit\": 0.9988729854615125,\n \"ebitPerRevenue\": 0.3892008070883411,\n \"debtRatio\": - 0.5193646038136255,\n \"debtEquityRatio\": 1.080579183169924,\n \"longTermDebtToCapitalization\": + 0.5193646038136255,\n \"debtEquityRatio\": 0.40951886241153174,\n \"longTermDebtToCapitalization\": 0.26588493255159923,\n \"totalDebtToCapitalization\": 0.2905380504882992,\n \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 0.8861582368796576,\n \ \"companyEquityMultiplier\": 2.080579183169924,\n \"receivablesTurnover\": @@ -517,7 +519,7 @@ interactions: 3.326706627414558,\n \"priceToSalesRatio\": 2.2473290976757436,\n \"priceEarningsRatio\": 8.502258341986659,\n \"priceToFreeCashFlowsRatio\": 11.342618722340402,\n \ \"priceToOperatingCashFlowsRatio\": 9.167043973664628,\n \"priceCashFlowRatio\": - 9.167043973664628,\n \"priceEarningsToGrowthRatio\": -5.663141555074171,\n + 9.167043973664628,\n \"priceEarningsToGrowthRatio\": -6.185392943795289,\n \ \"priceSalesRatio\": 2.2473290976757436,\n \"dividendYield\": 0.1280384520861866,\n \ \"enterpriseValueMultiple\": 5.984751420947911,\n \"priceFairValue\": 3.326706627414558\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2006-12-31\",\n @@ -532,9 +534,9 @@ interactions: 0.23529862174578867,\n \"returnOnEquity\": 0.4307843274689844,\n \"returnOnCapitalEmployed\": 0.4374052584809994,\n \"netIncomePerEBT\": 0.7471432044736203,\n \"ebtPerEbit\": 0.9830305927342257,\n \"ebitPerRevenue\": 0.17339411520928305,\n \"debtRatio\": - 0.45379019908116386,\n \"debtEquityRatio\": 0.8307983458330412,\n \"longTermDebtToCapitalization\": - 0.13475650433622416,\n \"totalDebtToCapitalization\": 0.13475650433622416,\n - \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 2.8064806480648063,\n + 0.45379019908116386,\n \"debtEquityRatio\": 0.1952758113128198,\n \"longTermDebtToCapitalization\": + 0.13475650433622416,\n \"totalDebtToCapitalization\": 0.16337301354600364,\n + \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 2.2383345297918162,\n \ \"companyEquityMultiplier\": 1.8307983458330412,\n \"receivablesTurnover\": 22.34259259259259,\n \"payablesTurnover\": 53.004464285714285,\n \"inventoryTurnover\": 5.034487632508834,\n \"fixedAssetTurnover\": 9.21344024436808,\n \"assetTurnover\": @@ -542,31 +544,31 @@ interactions: \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n \ \"payoutRatio\": 0.4523267165636186,\n \"operatingCashFlowSalesRatio\": 0.12921674264401162,\n \"freeCashFlowOperatingCashFlowRatio\": 0.8579217447081462,\n - \ \"cashFlowCoverageRatios\": 2.8064806480648063,\n \"shortTermCoverageRatios\": - 0,\n \"capitalExpenditureCoverageRatio\": -7.038374717832957,\n \"dividendPaidAndCapexCoverageRatio\": - 3.2925026399155226,\n \"dividendPayoutRatio\": 0.4523267165636186,\n \"priceBookValueRatio\": - 3.6053360131042145,\n \"priceToBookRatio\": 3.6053360131042145,\n \"priceToSalesRatio\": - 1.065837731018604,\n \"priceEarningsRatio\": 8.369236722902349,\n \"priceToFreeCashFlowsRatio\": - 9.614453999805201,\n \"priceToOperatingCashFlowsRatio\": 8.248449149929094,\n - \ \"priceCashFlowRatio\": 8.248449149929094,\n \"priceEarningsToGrowthRatio\": - 0.8942047998389124,\n \"priceSalesRatio\": 1.065837731018604,\n \"dividendYield\": - 0.05404635231858483,\n \"enterpriseValueMultiple\": 6.086798204443163,\n - \ \"priceFairValue\": 3.6053360131042145\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2005-12-31\",\n \"period\": \"FY\",\n \"currentRatio\": - 1.582728133880644,\n \"quickRatio\": 0.4905273129144301,\n \"cashRatio\": - 0.1908746447742343,\n \"daysOfSalesOutstanding\": 15.296988164635223,\n - \ \"daysOfInventoryOutstanding\": 60.09416767922236,\n \"operatingCycle\": - 75.39115584385758,\n \"daysOfPayablesOutstanding\": 7.417527339003645,\n - \ \"cashConversionCycle\": 67.97362850485393,\n \"grossProfitMargin\": + \ \"cashFlowCoverageRatios\": 2.2383345297918162,\n \"shortTermCoverageRatios\": + 11.056737588652481,\n \"capitalExpenditureCoverageRatio\": -7.038374717832957,\n + \ \"dividendPaidAndCapexCoverageRatio\": 3.2925026399155226,\n \"dividendPayoutRatio\": + 0.4523267165636186,\n \"priceBookValueRatio\": 3.6053360131042145,\n \"priceToBookRatio\": + 3.6053360131042145,\n \"priceToSalesRatio\": 1.065837731018604,\n \"priceEarningsRatio\": + 8.369236722902349,\n \"priceToFreeCashFlowsRatio\": 9.614453999805201,\n + \ \"priceToOperatingCashFlowsRatio\": 8.248449149929094,\n \"priceCashFlowRatio\": + 8.248449149929094,\n \"priceEarningsToGrowthRatio\": 0.89048678731681,\n + \ \"priceSalesRatio\": 1.065837731018604,\n \"dividendYield\": 0.05404635231858483,\n + \ \"enterpriseValueMultiple\": 6.086798204443163,\n \"priceFairValue\": + 3.6053360131042145\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2005-12-31\",\n + \ \"period\": \"FY\",\n \"currentRatio\": 1.582728133880644,\n \"quickRatio\": + 0.4905273129144301,\n \"cashRatio\": 0.1908746447742343,\n \"daysOfSalesOutstanding\": + 15.296988164635223,\n \"daysOfInventoryOutstanding\": 60.09416767922236,\n + \ \"operatingCycle\": 75.39115584385758,\n \"daysOfPayablesOutstanding\": + 7.417527339003645,\n \"cashConversionCycle\": 67.97362850485393,\n \"grossProfitMargin\": 0.2730966260378025,\n \"operatingProfitMargin\": 0.1707957957957958,\n \ \"pretaxProfitMargin\": 0.16872019077901432,\n \"netProfitMargin\": 0.12409468291821232,\n \"effectiveTaxRate\": 0.24015181258997514,\n \"returnOnAssets\": 0.24292197968446078,\n \"returnOnEquity\": 0.5452605025710682,\n \"returnOnCapitalEmployed\": 0.46038926254389617,\n \"netIncomePerEBT\": 0.7355058238450465,\n \"ebtPerEbit\": 0.9878474466709761,\n \"ebitPerRevenue\": 0.1707957957957958,\n \"debtRatio\": - 0.5544845472228226,\n \"debtEquityRatio\": 1.2445910546230716,\n \"longTermDebtToCapitalization\": - 0.2866140642303433,\n \"totalDebtToCapitalization\": 0.2866140642303433,\n - \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 1.2455928519681236,\n + 0.5544845472228226,\n \"debtEquityRatio\": 0.4762782574949064,\n \"longTermDebtToCapitalization\": + 0.2866140642303433,\n \"totalDebtToCapitalization\": 0.3226209253417455,\n + \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 1.0507231615400285,\n \ \"companyEquityMultiplier\": 2.2445910546230716,\n \"receivablesTurnover\": 23.8609062170706,\n \"payablesTurnover\": 49.20777279521674,\n \"inventoryTurnover\": 6.07380073800738,\n \"fixedAssetTurnover\": 9.838800782098632,\n \"assetTurnover\": @@ -574,19 +576,20 @@ interactions: \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n \ \"payoutRatio\": 1.3669039145907473,\n \"operatingCashFlowSalesRatio\": 0.11389330506977566,\n \"freeCashFlowOperatingCashFlowRatio\": 0.8573090345094998,\n - \ \"cashFlowCoverageRatios\": 1.2455928519681236,\n \"shortTermCoverageRatios\": - 0,\n \"capitalExpenditureCoverageRatio\": -7.008152173913044,\n \"dividendPaidAndCapexCoverageRatio\": - 0.7425856608119781,\n \"dividendPayoutRatio\": 1.3669039145907473,\n \"priceBookValueRatio\": - 4.990523808960689,\n \"priceToBookRatio\": 4.990523808960689,\n \"priceToSalesRatio\": - 1.1357827437501729,\n \"priceEarningsRatio\": 9.15254962614908,\n \"priceToFreeCashFlowsRatio\": - 11.63214131591086,\n \"priceToOperatingCashFlowsRatio\": 9.972339840821602,\n - \ \"priceCashFlowRatio\": 9.972339840821602,\n \"priceEarningsToGrowthRatio\": - 0,\n \"priceSalesRatio\": 1.1357827437501729,\n \"dividendYield\": 0.14934679083142757,\n - \ \"enterpriseValueMultiple\": 6.9077084563966205,\n \"priceFairValue\": - 4.990523808960689\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n - \ \"period\": \"FY\",\n \"currentRatio\": 0,\n \"quickRatio\": 0,\n - \ \"cashRatio\": 0,\n \"daysOfSalesOutstanding\": 0,\n \"daysOfInventoryOutstanding\": - 65.4888543721926,\n \"operatingCycle\": 65.4888543721926,\n \"daysOfPayablesOutstanding\": + \ \"cashFlowCoverageRatios\": 1.0507231615400285,\n \"shortTermCoverageRatios\": + 6.716145833333333,\n \"capitalExpenditureCoverageRatio\": -7.008152173913044,\n + \ \"dividendPaidAndCapexCoverageRatio\": 0.7425856608119781,\n \"dividendPayoutRatio\": + 1.3669039145907473,\n \"priceBookValueRatio\": 4.990523808960689,\n \"priceToBookRatio\": + 4.990523808960689,\n \"priceToSalesRatio\": 1.1357827437501729,\n \"priceEarningsRatio\": + 9.15254962614908,\n \"priceToFreeCashFlowsRatio\": 11.63214131591086,\n + \ \"priceToOperatingCashFlowsRatio\": 9.972339840821602,\n \"priceCashFlowRatio\": + 9.972339840821602,\n \"priceEarningsToGrowthRatio\": 0,\n \"priceSalesRatio\": + 1.1357827437501729,\n \"dividendYield\": 0.14934679083142757,\n \"enterpriseValueMultiple\": + 6.9077084563966205,\n \"priceFairValue\": 4.990523808960689\n },\n {\n + \ \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n \"period\": \"FY\",\n + \ \"currentRatio\": 0,\n \"quickRatio\": 0,\n \"cashRatio\": 0,\n + \ \"daysOfSalesOutstanding\": 0,\n \"daysOfInventoryOutstanding\": 65.4888543721926,\n + \ \"operatingCycle\": 65.4888543721926,\n \"daysOfPayablesOutstanding\": 0,\n \"cashConversionCycle\": 65.4888543721926,\n \"grossProfitMargin\": 0.2865614423912067,\n \"operatingProfitMargin\": 0.18557009793644613,\n \ \"pretaxProfitMargin\": 0.1860792476564138,\n \"netProfitMargin\": @@ -594,7 +597,7 @@ interactions: 0.22546795235394215,\n \"returnOnEquity\": 0.3788961967400629,\n \"returnOnCapitalEmployed\": 0.3514463981849121,\n \"netIncomePerEBT\": 0.6397875422501207,\n \"ebtPerEbit\": 1.0027437056165267,\n \"ebitPerRevenue\": 0.18557009793644613,\n \"debtRatio\": - 0.40493477027793534,\n \"debtEquityRatio\": 0.6804880373653608,\n \"longTermDebtToCapitalization\": + 0.40493477027793534,\n \"debtEquityRatio\": 0,\n \"longTermDebtToCapitalization\": 0,\n \"totalDebtToCapitalization\": 0,\n \"interestCoverage\": 0,\n \ \"cashFlowToDebtRatio\": 0,\n \"companyEquityMultiplier\": 1.6804880373653608,\n \ \"receivablesTurnover\": 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": @@ -628,13 +631,13 @@ interactions: Connection: - close Content-Length: - - '48884' + - '49023' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:39 GMT + - Tue, 02 May 2023 14:20:52 GMT ETag: - - W/"bef4-tAZceiPJNFujsf6YEZSiMFtDngg" + - W/"bf7f-1Ztpn2VggnRQs/Ltq1tUwFimb2s" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].yaml index a274591d1a83..8eb8a73ecdb5 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].yaml @@ -12,9 +12,9 @@ interactions: body: string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.011367616621557077,\n \"grossProfitGrowth\": - -0.04748538011695906,\n \"ebitgrowth\": -0.049611197511664075,\n \"operatingIncomeGrowth\": - -0.049611197511664075,\n \"netIncomeGrowth\": -0.0066966736194972,\n \"epsgrowth\": - -0.003430531732418604,\n \"epsdilutedGrowth\": -0.003430531732418604,\n + -0.04748538011695906,\n \"ebitgrowth\": -0.056184971098265896,\n \"operatingIncomeGrowth\": + -0.056184971098265896,\n \"netIncomeGrowth\": -0.0066966736194972,\n \"epsgrowth\": + -0.006837606837606844,\n \"epsdilutedGrowth\": -0.005136986301369906,\n \ \"weightedAverageSharesGrowth\": -0.0006418485237483953,\n \"weightedAverageSharesDilutedGrowth\": -0.0012828736369467607,\n \"dividendsperShareGrowth\": 0.03126877850138039,\n \ \"operatingCashFlowGrowth\": -0.09726748558535973,\n \"freeCashFlowGrowth\": @@ -24,19 +24,19 @@ interactions: \ \"fiveYOperatingCFGrowthPerShare\": 0.20829311996900549,\n \"threeYOperatingCFGrowthPerShare\": 0.06928873281124993,\n \"tenYNetIncomeGrowthPerShare\": 0.1173305307409352,\n \ \"fiveYNetIncomeGrowthPerShare\": 0.4944397884530347,\n \"threeYNetIncomeGrowthPerShare\": - 0.2576726025505395,\n \"tenYShareholdersEquityGrowthPerShare\": -1.856509043016689,\n - \ \"fiveYShareholdersEquityGrowthPerShare\": 0.246429065259241,\n \"threeYShareholdersEquityGrowthPerShare\": - 0.21177651145281812,\n \"tenYDividendperShareGrowthPerShare\": 0.5709365359849053,\n + 0.2576726025505395,\n \"tenYShareholdersEquityGrowthPerShare\": -1.8002354709752093,\n + \ \"fiveYShareholdersEquityGrowthPerShare\": 0.2612745033957558,\n \"threeYShareholdersEquityGrowthPerShare\": + 0.2273046090711274,\n \"tenYDividendperShareGrowthPerShare\": 0.5709365359849053,\n \ \"fiveYDividendperShareGrowthPerShare\": 0.19431185503032025,\n \"threeYDividendperShareGrowthPerShare\": - 0.0895077947101069,\n \"receivablesGrowth\": -1,\n \"inventoryGrowth\": - -1,\n \"assetGrowth\": -0.01387745216759506,\n \"bookValueperShareGrowth\": - 0.0953029550223,\n \"debtGrowth\": -0.11601812558440625,\n \"rdexpenseGrowth\": + 0.0895077947101069,\n \"receivablesGrowth\": 0.20710659898477157,\n \"inventoryGrowth\": + 0.13371559633027522,\n \"assetGrowth\": 0.4938483894405425,\n \"bookValueperShareGrowth\": + 0.1131255957244982,\n \"debtGrowth\": 0.5508523340286269,\n \"rdexpenseGrowth\": 0,\n \"sgaexpensesGrowth\": -0.033376885615868865\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.0944796821635185,\n \"grossProfitGrowth\": 0.11764705882352941,\n \"ebitgrowth\": - 0.10215975317106617,\n \"operatingIncomeGrowth\": 0.10215975317106617,\n - \ \"netIncomeGrowth\": 0.1307100297914598,\n \"epsgrowth\": 0.12984496124031006,\n - \ \"epsdilutedGrowth\": 0.12984496124031006,\n \"weightedAverageSharesGrowth\": + 0.11201576962632842,\n \"operatingIncomeGrowth\": 0.11201576962632842,\n + \ \"netIncomeGrowth\": 0.1307100297914598,\n \"epsgrowth\": 0.13372093023255804,\n + \ \"epsdilutedGrowth\": 0.13178294573643404,\n \"weightedAverageSharesGrowth\": 0.0006422607578676942,\n \"weightedAverageSharesDilutedGrowth\": 0.0006418485237483953,\n \ \"dividendsperShareGrowth\": 0.028671209694457717,\n \"operatingCashFlowGrowth\": 0.21962902568283735,\n \"freeCashFlowGrowth\": 0.21813246471226927,\n \"tenYRevenueGrowthPerShare\": @@ -79,7 +79,7 @@ interactions: 0.0060759493670886075,\n \"grossProfitGrowth\": 0.022526103779085174,\n \ \"ebitgrowth\": -0.07436055199085875,\n \"operatingIncomeGrowth\": -0.07436055199085875,\n \"netIncomeGrowth\": -0.09177095183921123,\n \"epsgrowth\": - -0.09251968503937003,\n \"epsdilutedGrowth\": -0.09251968503937003,\n \"weightedAverageSharesGrowth\": + -0.09430255402750483,\n \"epsdilutedGrowth\": -0.09430255402750483,\n \"weightedAverageSharesGrowth\": 0,\n \"weightedAverageSharesDilutedGrowth\": 0.0006430868167202572,\n \"dividendsperShareGrowth\": 0.04008714596949895,\n \"operatingCashFlowGrowth\": 0.06457058451150031,\n \ \"freeCashFlowGrowth\": 0.14871922407361352,\n \"tenYRevenueGrowthPerShare\": @@ -100,7 +100,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": 0.030506470015305414,\n \"grossProfitGrowth\": 0.03008298755186722,\n \"ebitgrowth\": -0.010953664261497001,\n \"operatingIncomeGrowth\": -0.010953664261497001,\n \"netIncomeGrowth\": 0.3108533554266777,\n \"epsgrowth\": - 0.309278350515464,\n \"epsdilutedGrowth\": 0.309278350515464,\n \"weightedAverageSharesGrowth\": + 0.3084832904884318,\n \"epsdilutedGrowth\": 0.3084832904884318,\n \"weightedAverageSharesGrowth\": 0.0019329896907216496,\n \"weightedAverageSharesDilutedGrowth\": 0.00128783000643915,\n \ \"dividendsperShareGrowth\": 0.05394433156451575,\n \"operatingCashFlowGrowth\": 0.06350987432675045,\n \"freeCashFlowGrowth\": 0.09206952743074416,\n \"tenYRevenueGrowthPerShare\": @@ -121,8 +121,8 @@ interactions: \"PM\",\n \"date\": \"2017-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.07730934982199737,\n \"grossProfitGrowth\": 0.05909564010639528,\n \"ebitgrowth\": 0.06361534905224225,\n \"operatingIncomeGrowth\": 0.06361534905224225,\n - \ \"netIncomeGrowth\": -0.13377350366011195,\n \"epsgrowth\": -0.13392857142857154,\n - \ \"epsdilutedGrowth\": -0.13392857142857154,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": -0.13377350366011195,\n \"epsgrowth\": -0.133630289532294,\n + \ \"epsdilutedGrowth\": -0.133630289532294,\n \"weightedAverageSharesGrowth\": 0.0006447453255963894,\n \"weightedAverageSharesDilutedGrowth\": 0.0012894906511927789,\n \ \"dividendsperShareGrowth\": 0.021605357333359332,\n \"operatingCashFlowGrowth\": 0.10337996780983039,\n \"freeCashFlowGrowth\": 0.0664735698769008,\n \"tenYRevenueGrowthPerShare\": @@ -143,7 +143,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.004068074942151228,\n \"grossProfitGrowth\": -0.007745711171036777,\n \"ebitgrowth\": 0.018073990398192602,\n \"operatingIncomeGrowth\": 0.018073990398192602,\n \"netIncomeGrowth\": 0.013676705950822057,\n \"epsgrowth\": - 0.013574660633484276,\n \"epsdilutedGrowth\": 0.013574660633484276,\n \"weightedAverageSharesGrowth\": + 0.01126126126126122,\n \"epsdilutedGrowth\": 0.01126126126126122,\n \"weightedAverageSharesGrowth\": 0.0012911555842479018,\n \"weightedAverageSharesDilutedGrowth\": 0.0012911555842479018,\n \ \"dividendsperShareGrowth\": 0.019164100580270755,\n \"operatingCashFlowGrowth\": 0.02695486331849968,\n \"freeCashFlowGrowth\": 0,\n \"tenYRevenueGrowthPerShare\": @@ -164,7 +164,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.09987570127994087,\n \"grossProfitGrowth\": -0.0983911851430345,\n \"ebitgrowth\": -0.09220646043411383,\n \"operatingIncomeGrowth\": -0.09220646043411383,\n \"netIncomeGrowth\": -0.08274389430134793,\n \"epsgrowth\": - -0.0714285714285714,\n \"epsdilutedGrowth\": -0.0714285714285714,\n \"weightedAverageSharesGrowth\": + -0.07112970711297067,\n \"epsdilutedGrowth\": -0.07112970711297067,\n \"weightedAverageSharesGrowth\": -0.010855683269476373,\n \"weightedAverageSharesDilutedGrowth\": -0.010855683269476373,\n \ \"dividendsperShareGrowth\": 0.04699132401212418,\n \"operatingCashFlowGrowth\": 0.01628117327820132,\n \"freeCashFlowGrowth\": 0.04843607652596417,\n \"tenYRevenueGrowthPerShare\": @@ -185,7 +185,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.04644905019700804,\n \"grossProfitGrowth\": -0.07093766520882396,\n \"ebitgrowth\": -0.13414724380318166,\n \"operatingIncomeGrowth\": -0.13414724380318166,\n \"netIncomeGrowth\": -0.12628264925373134,\n \"epsgrowth\": - -0.09505703422053233,\n \"epsdilutedGrowth\": -0.09505703422053233,\n \"weightedAverageSharesGrowth\": + -0.09640831758034023,\n \"epsdilutedGrowth\": -0.09640831758034023,\n \"weightedAverageSharesGrowth\": -0.0345252774352651,\n \"weightedAverageSharesDilutedGrowth\": -0.0345252774352651,\n \ \"dividendsperShareGrowth\": 0.09279912297153681,\n \"operatingCashFlowGrowth\": -0.2364084854464726,\n \"freeCashFlowGrowth\": -0.26289871292669276,\n @@ -207,7 +207,7 @@ interactions: -0.005099276540140868,\n \"grossProfitGrowth\": -0.009379165873167016,\n \ \"ebitgrowth\": -0.02390582117579084,\n \"operatingIncomeGrowth\": -0.02390582117579084,\n \"netIncomeGrowth\": -0.025454545454545455,\n \"epsgrowth\": - 0.017408123791102487,\n \"epsdilutedGrowth\": 0.017408123791102487,\n \"weightedAverageSharesGrowth\": + 0.01730769230769228,\n \"epsdilutedGrowth\": 0.01730769230769228,\n \"weightedAverageSharesGrowth\": -0.041371158392434985,\n \"weightedAverageSharesDilutedGrowth\": -0.041371158392434985,\n \ \"dividendsperShareGrowth\": 0.10415539112919045,\n \"operatingCashFlowGrowth\": 0.07578813289459718,\n \"freeCashFlowGrowth\": 0.06814106395696354,\n \"tenYRevenueGrowthPerShare\": @@ -227,8 +227,8 @@ interactions: \"PM\",\n \"date\": \"2012-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.009004083995240698,\n \"grossProfitGrowth\": 0.02864978696312258,\n \"ebitgrowth\": 0.03855385538553855,\n \"operatingIncomeGrowth\": 0.03855385538553855,\n - \ \"netIncomeGrowth\": 0.024327784891165175,\n \"epsgrowth\": 0.0386389771274419,\n - \ \"epsdilutedGrowth\": 0.0386389771274419,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.024327784891165175,\n \"epsgrowth\": 0.04417670682730918,\n + \ \"epsdilutedGrowth\": 0.04417670682730918,\n \"weightedAverageSharesGrowth\": -0.019646848450322343,\n \"weightedAverageSharesDilutedGrowth\": -0.019646848450322343,\n \ \"dividendsperShareGrowth\": 0.15127387408928147,\n \"operatingCashFlowGrowth\": -0.10523316554278658,\n \"freeCashFlowGrowth\": -0.13154069767441862,\n @@ -249,8 +249,8 @@ interactions: \"PM\",\n \"date\": \"2011-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.1429359012055278,\n \"grossProfitGrowth\": 0.1671334667047728,\n \"ebitgrowth\": 0.19035714285714286,\n \"operatingIncomeGrowth\": 0.19035714285714286,\n - \ \"netIncomeGrowth\": 0.1834963493594159,\n \"epsgrowth\": 0.26658218829516545,\n - \ \"epsdilutedGrowth\": 0.2698132653061226,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.1834963493594159,\n \"epsgrowth\": 0.26075949367088613,\n + \ \"epsdilutedGrowth\": 0.2639593908629443,\n \"weightedAverageSharesGrowth\": -0.06149610331702012,\n \"weightedAverageSharesDilutedGrowth\": -0.06302461129207383,\n \ \"dividendsperShareGrowth\": 0.15345623831942803,\n \"operatingCashFlowGrowth\": 0.11571473985376708,\n \"freeCashFlowGrowth\": 0.10408069692801467,\n \"tenYRevenueGrowthPerShare\": @@ -270,8 +270,8 @@ interactions: \"PM\",\n \"date\": \"2010-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.08679848212502496,\n \"grossProfitGrowth\": 0.09254980328483108,\n \"ebitgrowth\": 0.11553784860557768,\n \"operatingIncomeGrowth\": 0.11553784860557768,\n - \ \"netIncomeGrowth\": 0.1445916114790287,\n \"epsgrowth\": 0.20923076923076928,\n - \ \"epsdilutedGrowth\": 0.20987654320987645,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.1445916114790287,\n \"epsgrowth\": 0.21165644171779155,\n + \ \"epsdilutedGrowth\": 0.21230769230769228,\n \"weightedAverageSharesGrowth\": -0.05352547606793618,\n \"weightedAverageSharesDilutedGrowth\": -0.055384615384615386,\n \ \"dividendsperShareGrowth\": 0.07999343500282076,\n \"operatingCashFlowGrowth\": 0.19698122780314561,\n \"freeCashFlowGrowth\": 0.21690612358766914,\n \"tenYRevenueGrowthPerShare\": @@ -292,7 +292,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.026064967905076834,\n \"grossProfitGrowth\": -0.022226292971850765,\n \"ebitgrowth\": -0.02029664324746292,\n \"operatingIncomeGrowth\": -0.02029664324746292,\n \"netIncomeGrowth\": -0.0795355587808418,\n \"epsgrowth\": - -0.024024024024024045,\n \"epsdilutedGrowth\": -0.024096385542168565,\n + -0.021021021021021106,\n \"epsdilutedGrowth\": -0.021084337349397544,\n \ \"weightedAverageSharesGrowth\": -0.06044487427466151,\n \"weightedAverageSharesDilutedGrowth\": -0.061597690086621755,\n \"dividendsperShareGrowth\": -0.0932523969962195,\n \ \"operatingCashFlowGrowth\": -0.006427221172022685,\n \"freeCashFlowGrowth\": @@ -334,8 +334,8 @@ interactions: \"PM\",\n \"date\": \"2007-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": -0.5276004973062578,\n \"grossProfitGrowth\": 0.11367771537061941,\n \"ebitgrowth\": 0.06034894837476099,\n \"operatingIncomeGrowth\": 0.06034894837476099,\n - \ \"netIncomeGrowth\": -0.019524894240156198,\n \"epsgrowth\": -0.015013324776190065,\n - \ \"epsdilutedGrowth\": -0.021877343418864704,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": -0.019524894240156198,\n \"epsgrowth\": -0.013745704467353964,\n + \ \"epsdilutedGrowth\": -0.020618556701030945,\n \"weightedAverageSharesGrowth\": -0.003941109199982837,\n \"weightedAverageSharesDilutedGrowth\": 0.003170210820007767,\n \ \"dividendsperShareGrowth\": 1.3690489106728898,\n \"operatingCashFlowGrowth\": -0.10375240538806928,\n \"freeCashFlowGrowth\": -0.15570093457943926,\n @@ -356,8 +356,8 @@ interactions: \"PM\",\n \"date\": \"2006-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.06562444797738916,\n \"grossProfitGrowth\": 0.022073091849935316,\n \"ebitgrowth\": 0.08183581124757595,\n \"operatingIncomeGrowth\": 0.08183581124757595,\n - \ \"netIncomeGrowth\": 0.09359430604982207,\n \"epsgrowth\": 0.09359418250058639,\n - \ \"epsdilutedGrowth\": 0.09359418250058639,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.09359430604982207,\n \"epsgrowth\": 0.09398496240601503,\n + \ \"epsdilutedGrowth\": 0.09398496240601503,\n \"weightedAverageSharesGrowth\": 0,\n \"weightedAverageSharesDilutedGrowth\": 0,\n \"dividendsperShareGrowth\": -0.6381150741994273,\n \"operatingCashFlowGrowth\": 0.20899573478092284,\n \ \"freeCashFlowGrowth\": 0.20985979194934418,\n \"tenYRevenueGrowthPerShare\": @@ -423,13 +423,13 @@ interactions: Connection: - close Content-Length: - - '33828' + - '33860' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:40 GMT + - Tue, 02 May 2023 14:20:52 GMT ETag: - - W/"8424-C/vFWHx5CFs6M1QkgSRsuyviOjQ" + - W/"8444-Gyc8jekMEKMwMU+1li7/akYxrUA" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].yaml index b1fccfcce67e..e2d44f50fbdd 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].yaml @@ -15,16 +15,16 @@ interactions: \ \"acceptedDate\": \"2023-02-10 08:20:35\",\n \"calendarYear\": \"2022\",\n \ \"period\": \"FY\",\n \"revenue\": 31762000000,\n \"costOfRevenue\": 11402000000,\n \"grossProfit\": 20360000000,\n \"grossProfitRatio\": - 0.6410175681632139,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 0.6410175682,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 8138000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 8138000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 8138000000,\n \ \"costAndExpenses\": 19540000000,\n \"interestIncome\": 180000000,\n \ \"interestExpense\": 768000000,\n \"depreciationAndAmortization\": - 1189000000,\n \"ebitda\": 13591000000,\n \"ebitdaratio\": 0.42790126566337133,\n - \ \"operatingIncome\": 12222000000,\n \"operatingIncomeRatio\": 0.3662867577608463,\n - \ \"totalOtherIncomeExpensesNet\": 0,\n \"incomeBeforeTax\": 11634000000,\n - \ \"incomeBeforeTaxRatio\": 0.3662867577608463,\n \"incomeTaxExpense\": - 2244000000,\n \"netIncome\": 9048000000,\n \"netIncomeRatio\": 0.2848687110383477,\n + 1003000000,\n \"ebitda\": 13249000000,\n \"ebitdaratio\": 0.4171336818,\n + \ \"operatingIncome\": 12246000000,\n \"operatingIncomeRatio\": 0.3855550658,\n + \ \"totalOtherIncomeExpensesNet\": -612000000,\n \"incomeBeforeTax\": + 11634000000,\n \"incomeBeforeTaxRatio\": 0.3662867578,\n \"incomeTaxExpense\": + 2244000000,\n \"netIncome\": 9048000000,\n \"netIncomeRatio\": 0.284868711,\n \ \"eps\": 5.81,\n \"epsdiluted\": 5.81,\n \"weightedAverageShsOut\": 1557000000,\n \"weightedAverageShsOutDil\": 1557000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n @@ -34,17 +34,17 @@ interactions: \ \"acceptedDate\": \"2022-02-11 08:29:22\",\n \"calendarYear\": \"2021\",\n \ \"period\": \"FY\",\n \"revenue\": 31405000000,\n \"costOfRevenue\": 10030000000,\n \"grossProfit\": 21375000000,\n \"grossProfitRatio\": - 0.6806241044419679,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 0.6806241044,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 8419000000,\n \"sellingAndMarketingExpenses\": 8304000000,\n \"sellingGeneralAndAdministrativeExpenses\": - 8419000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 8515000000,\n - \ \"costAndExpenses\": 18545000000,\n \"interestIncome\": 109000000,\n - \ \"interestExpense\": 737000000,\n \"depreciationAndAmortization\": - 998000000,\n \"ebitda\": 13967000000,\n \"ebitdaratio\": 0.44473809902881706,\n - \ \"operatingIncome\": 12860000000,\n \"operatingIncomeRatio\": 0.38949211908931697,\n - \ \"totalOtherIncomeExpensesNet\": 0,\n \"incomeBeforeTax\": 12232000000,\n - \ \"incomeBeforeTaxRatio\": 0.38949211908931697,\n \"incomeTaxExpense\": - 2671000000,\n \"netIncome\": 9109000000,\n \"netIncomeRatio\": 0.29004935519821684,\n - \ \"eps\": 5.83,\n \"epsdiluted\": 5.83,\n \"weightedAverageShsOut\": + 8419000000,\n \"otherExpenses\": 96000000,\n \"operatingExpenses\": + 8515000000,\n \"costAndExpenses\": 18545000000,\n \"interestIncome\": + 109000000,\n \"interestExpense\": 737000000,\n \"depreciationAndAmortization\": + 540000000,\n \"ebitda\": 13515000000,\n \"ebitdaratio\": 0.4303454864,\n + \ \"operatingIncome\": 12975000000,\n \"operatingIncomeRatio\": 0.4131507722,\n + \ \"totalOtherIncomeExpensesNet\": -743000000,\n \"incomeBeforeTax\": + 12232000000,\n \"incomeBeforeTaxRatio\": 0.3894921191,\n \"incomeTaxExpense\": + 2671000000,\n \"netIncome\": 9109000000,\n \"netIncomeRatio\": 0.2900493552,\n + \ \"eps\": 5.85,\n \"epsdiluted\": 5.84,\n \"weightedAverageShsOut\": 1558000000,\n \"weightedAverageShsOutDil\": 1559000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n @@ -53,16 +53,16 @@ interactions: \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n \ \"period\": \"FY\",\n \"revenue\": 28694000000,\n \"costOfRevenue\": 9569000000,\n \"grossProfit\": 19125000000,\n \"grossProfitRatio\": - 0.666515647870635,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 97000000,\n \"sellingAndMarketingExpenses\": 7384000000,\n \"sellingGeneralAndAdministrativeExpenses\": + 0.6665156479,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 7481000000,\n \"sellingAndMarketingExpenses\": 7384000000,\n \"sellingGeneralAndAdministrativeExpenses\": 7481000000,\n \"otherExpenses\": 73000000,\n \"operatingExpenses\": 7554000000,\n \"costAndExpenses\": 17123000000,\n \"interestIncome\": - 110000000,\n \"interestExpense\": 728000000,\n \"depreciationAndAmortization\": - 981000000,\n \"ebitda\": 12142000000,\n \"ebitdaratio\": 0.42315466648079736,\n - \ \"operatingIncome\": 11668000000,\n \"operatingIncomeRatio\": 0.4066355335610232,\n + 110000000,\n \"interestExpense\": 618000000,\n \"depreciationAndAmortization\": + -24000000,\n \"ebitda\": 11644000000,\n \"ebitdaratio\": 0.4057991218,\n + \ \"operatingIncome\": 11668000000,\n \"operatingIncomeRatio\": 0.4066355336,\n \ \"totalOtherIncomeExpensesNet\": -715000000,\n \"incomeBeforeTax\": - 10953000000,\n \"incomeBeforeTaxRatio\": 0.38171743221579424,\n \"incomeTaxExpense\": - 2377000000,\n \"netIncome\": 8056000000,\n \"netIncomeRatio\": 0.28075555865337704,\n + 10953000000,\n \"incomeBeforeTaxRatio\": 0.3817174322,\n \"incomeTaxExpense\": + 2377000000,\n \"netIncome\": 8056000000,\n \"netIncomeRatio\": 0.2807555587,\n \ \"eps\": 5.16,\n \"epsdiluted\": 5.16,\n \"weightedAverageShsOut\": 1557000000,\n \"weightedAverageShsOutDil\": 1558000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm\",\n @@ -72,16 +72,16 @@ interactions: \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n \ \"period\": \"FY\",\n \"revenue\": 29805000000,\n \"costOfRevenue\": 10513000000,\n \"grossProfit\": 19292000000,\n \"grossProfitRatio\": - 0.6472739473242745,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 8784000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": + 0.6472739473,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 8784000000,\n \"sellingAndMarketingExpenses\": 8695000000,\n \"sellingGeneralAndAdministrativeExpenses\": 8784000000,\n \"otherExpenses\": 66000000,\n \"operatingExpenses\": 8850000000,\n \"costAndExpenses\": 19363000000,\n \"interestIncome\": - 226000000,\n \"interestExpense\": 796000000,\n \"depreciationAndAmortization\": - 964000000,\n \"ebitda\": 11238000000,\n \"ebitdaratio\": 0.3770508303975843,\n - \ \"operatingIncome\": 10531000000,\n \"operatingIncomeRatio\": 0.3533299781915786,\n + 226000000,\n \"interestExpense\": 570000000,\n \"depreciationAndAmortization\": + -23000000,\n \"ebitda\": 10508000000,\n \"ebitdaratio\": 0.3525582956,\n + \ \"operatingIncome\": 10531000000,\n \"operatingIncomeRatio\": 0.3533299782,\n \ \"totalOtherIncomeExpensesNet\": -659000000,\n \"incomeBeforeTax\": - 9872000000,\n \"incomeBeforeTaxRatio\": 0.3312195940278477,\n \"incomeTaxExpense\": - 2293000000,\n \"netIncome\": 7185000000,\n \"netIncomeRatio\": 0.24106693507800706,\n + 9872000000,\n \"incomeBeforeTaxRatio\": 0.331219594,\n \"incomeTaxExpense\": + 2293000000,\n \"netIncome\": 7185000000,\n \"netIncomeRatio\": 0.2410669351,\n \ \"eps\": 4.61,\n \"epsdiluted\": 4.61,\n \"weightedAverageShsOut\": 1555000000,\n \"weightedAverageShsOutDil\": 1556000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm\",\n @@ -92,16 +92,16 @@ interactions: \ \"period\": \"FY\",\n \"revenue\": 29625000000,\n \"costOfRevenue\": 10758000000,\n \"grossProfit\": 18867000000,\n \"grossProfitRatio\": 0.6368607594936709,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 7449000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": + 7449000000,\n \"sellingAndMarketingExpenses\": 7408000000,\n \"sellingGeneralAndAdministrativeExpenses\": 7449000000,\n \"otherExpenses\": 82000000,\n \"operatingExpenses\": 7531000000,\n \"costAndExpenses\": 18289000000,\n \"interestIncome\": 190000000,\n \"interestExpense\": 855000000,\n \"depreciationAndAmortization\": 989000000,\n \"ebitda\": 12200000000,\n \"ebitdaratio\": 0.4118143459915612,\n \ \"operatingIncome\": 11377000000,\n \"operatingIncomeRatio\": 0.3840337552742616,\n - \ \"totalOtherIncomeExpensesNet\": -706000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -41000000,\n \"incomeBeforeTax\": 10671000000,\n \"incomeBeforeTaxRatio\": 0.36020253164556965,\n \"incomeTaxExpense\": 2445000000,\n \"netIncome\": 7911000000,\n \"netIncomeRatio\": 0.2670379746835443,\n - \ \"eps\": 5.08,\n \"epsdiluted\": 5.08,\n \"weightedAverageShsOut\": + \ \"eps\": 5.09,\n \"epsdiluted\": 5.09,\n \"weightedAverageShsOut\": 1555000000,\n \"weightedAverageShsOutDil\": 1555000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/0001413329-19-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm\"\n @@ -120,7 +120,7 @@ interactions: \ \"totalOtherIncomeExpensesNet\": -914000000,\n \"incomeBeforeTax\": 10589000000,\n \"incomeBeforeTaxRatio\": 0.36833866703770696,\n \"incomeTaxExpense\": 4307000000,\n \"netIncome\": 6035000000,\n \"netIncomeRatio\": 0.20992764714067066,\n - \ \"eps\": 3.88,\n \"epsdiluted\": 3.88,\n \"weightedAverageShsOut\": + \ \"eps\": 3.89,\n \"epsdiluted\": 3.89,\n \"weightedAverageShsOut\": 1552000000,\n \"weightedAverageShsOutDil\": 1553000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/0001413329-18-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/pm123117form10kwrapinclfsm.htm\"\n @@ -139,7 +139,7 @@ interactions: \ \"totalOtherIncomeExpensesNet\": -891000000,\n \"incomeBeforeTax\": 9924000000,\n \"incomeBeforeTaxRatio\": 0.37189432265317596,\n \"incomeTaxExpense\": 2768000000,\n \"netIncome\": 6967000000,\n \"netIncomeRatio\": 0.2610830054337643,\n - \ \"eps\": 4.48,\n \"epsdiluted\": 4.48,\n \"weightedAverageShsOut\": + \ \"eps\": 4.49,\n \"epsdiluted\": 4.49,\n \"weightedAverageShsOut\": 1551000000,\n \"weightedAverageShsOutDil\": 1551000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/0001413329-17-000014-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/pm123116form10kwrapinclfsm.htm\"\n @@ -155,10 +155,10 @@ interactions: 124000000,\n \"interestExpense\": 1132000000,\n \"depreciationAndAmortization\": 754000000,\n \"ebitda\": 11447000000,\n \"ebitdaratio\": 0.42722251250279913,\n \ \"operatingIncome\": 10623000000,\n \"operatingIncomeRatio\": 0.3964693588116743,\n - \ \"totalOtherIncomeExpensesNet\": -1008000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -68000000,\n \"incomeBeforeTax\": 9615000000,\n \"incomeBeforeTaxRatio\": 0.3588489960438904,\n \"incomeTaxExpense\": 2688000000,\n \"netIncome\": 6873000000,\n \"netIncomeRatio\": 0.256512652086288,\n - \ \"eps\": 4.42,\n \"epsdiluted\": 4.42,\n \"weightedAverageShsOut\": + \ \"eps\": 4.44,\n \"epsdiluted\": 4.44,\n \"weightedAverageShsOut\": 1549000000,\n \"weightedAverageShsOutDil\": 1549000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/0001413329-16-000076-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/pm123115form10kwrapinclfsm.htm\"\n @@ -174,10 +174,10 @@ interactions: 118000000,\n \"interestExpense\": 1170000000,\n \"depreciationAndAmortization\": 889000000,\n \"ebitda\": 12649000000,\n \"ebitdaratio\": 0.42493365135888733,\n \ \"operatingIncome\": 11702000000,\n \"operatingIncomeRatio\": 0.39311989787348406,\n - \ \"totalOtherIncomeExpensesNet\": -1052000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -535000000,\n \"incomeBeforeTax\": 10650000000,\n \"incomeBeforeTaxRatio\": 0.35777874827829476,\n \"incomeTaxExpense\": 3097000000,\n \"netIncome\": 7493000000,\n \"netIncomeRatio\": 0.25172170524406223,\n - \ \"eps\": 4.76,\n \"epsdiluted\": 4.76,\n \"weightedAverageShsOut\": + \ \"eps\": 4.78,\n \"epsdiluted\": 4.78,\n \"weightedAverageShsOut\": 1566000000,\n \"weightedAverageShsOutDil\": 1566000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/0001413329-15-000016-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/pm12312014form10kwrapinclf.htm\"\n @@ -193,10 +193,10 @@ interactions: 131000000,\n \"interestExpense\": 1104000000,\n \"depreciationAndAmortization\": 882000000,\n \"ebitda\": 14232000000,\n \"ebitdaratio\": 0.45590543614056445,\n \ \"operatingIncome\": 13515000000,\n \"operatingIncomeRatio\": 0.432937181663837,\n - \ \"totalOtherIncomeExpensesNet\": -973000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -309000000,\n \"incomeBeforeTax\": 12542000000,\n \"incomeBeforeTaxRatio\": 0.4017682672902585,\n \"incomeTaxExpense\": 3670000000,\n \"netIncome\": 8576000000,\n \"netIncomeRatio\": 0.274722106544511,\n - \ \"eps\": 5.26,\n \"epsdiluted\": 5.26,\n \"weightedAverageShsOut\": + \ \"eps\": 5.29,\n \"epsdiluted\": 5.29,\n \"weightedAverageShsOut\": 1622000000,\n \"weightedAverageShsOutDil\": 1622000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/0001413329-14-000012-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/pm1231201310-k.htm\"\n @@ -212,10 +212,10 @@ interactions: 148000000,\n \"interestExpense\": 1007000000,\n \"depreciationAndAmortization\": 898000000,\n \"ebitda\": 14538000000,\n \"ebitdaratio\": 0.4633330146285496,\n \ \"operatingIncome\": 13846000000,\n \"operatingIncomeRatio\": 0.44127864359244034,\n - \ \"totalOtherIncomeExpensesNet\": -859000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -83000000,\n \"incomeBeforeTax\": 12987000000,\n \"incomeBeforeTaxRatio\": 0.41390190266755905,\n \"incomeTaxExpense\": 3833000000,\n \"netIncome\": 8800000000,\n \"netIncomeRatio\": 0.2804602097077477,\n - \ \"eps\": 5.17,\n \"epsdiluted\": 5.17,\n \"weightedAverageShsOut\": + \ \"eps\": 5.2,\n \"epsdiluted\": 5.2,\n \"weightedAverageShsOut\": 1692000000,\n \"weightedAverageShsOutDil\": 1692000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n @@ -231,10 +231,10 @@ interactions: 134000000,\n \"interestExpense\": 934000000,\n \"depreciationAndAmortization\": 993000000,\n \"ebitda\": 14171000000,\n \"ebitdaratio\": 0.4557031224876998,\n \ \"operatingIncome\": 13332000000,\n \"operatingIncomeRatio\": 0.4287230279448178,\n - \ \"totalOtherIncomeExpensesNet\": -800000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -109000000,\n \"incomeBeforeTax\": 12532000000,\n \"incomeBeforeTaxRatio\": 0.40299707367270154,\n \"incomeTaxExpense\": 3653000000,\n \"netIncome\": 8591000000,\n \"netIncomeRatio\": 0.27626459143968873,\n - \ \"eps\": 4.977668,\n \"epsdiluted\": 4.977668,\n \"weightedAverageShsOut\": + \ \"eps\": 4.98,\n \"epsdiluted\": 4.98,\n \"weightedAverageShsOut\": 1725908666,\n \"weightedAverageShsOutDil\": 1725908666,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/0001193125-12-076983-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/d258717d10k.htm\"\n @@ -250,10 +250,10 @@ interactions: 98000000,\n \"interestExpense\": 974000000,\n \"depreciationAndAmortization\": 932000000,\n \"ebitda\": 11991000000,\n \"ebitdaratio\": 0.4407159658923846,\n \ \"operatingIncome\": 11200000000,\n \"operatingIncomeRatio\": 0.4116436342252279,\n - \ \"totalOtherIncomeExpensesNet\": -876000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -47000000,\n \"incomeBeforeTax\": 10324000000,\n \"incomeBeforeTaxRatio\": 0.379447221405469,\n \"incomeTaxExpense\": 2826000000,\n \"netIncome\": 7259000000,\n \"netIncomeRatio\": 0.26679653043222584,\n - \ \"eps\": 3.93,\n \"epsdiluted\": 3.92,\n \"weightedAverageShsOut\": + \ \"eps\": 3.95,\n \"epsdiluted\": 3.94,\n \"weightedAverageShsOut\": 1839000000,\n \"weightedAverageShsOutDil\": 1842000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/0001193125-11-046772-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/d10k.htm\"\n @@ -269,10 +269,10 @@ interactions: 0,\n \"interestExpense\": 797000000,\n \"depreciationAndAmortization\": 853000000,\n \"ebitda\": 10683000000,\n \"ebitdaratio\": 0.4267225883762732,\n \ \"operatingIncome\": 10040000000,\n \"operatingIncomeRatio\": 0.4010385460355502,\n - \ \"totalOtherIncomeExpensesNet\": -797000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -29000000,\n \"incomeBeforeTax\": 9243000000,\n \"incomeBeforeTaxRatio\": 0.36920311563810665,\n \"incomeTaxExpense\": 2691000000,\n \"netIncome\": 6342000000,\n \"netIncomeRatio\": 0.25332534451767524,\n - \ \"eps\": 3.25,\n \"epsdiluted\": 3.24,\n \"weightedAverageShsOut\": + \ \"eps\": 3.26,\n \"epsdiluted\": 3.25,\n \"weightedAverageShsOut\": 1943000000,\n \"weightedAverageShsOutDil\": 1950000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/0001193125-10-041735-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/d10k.htm\"\n @@ -288,7 +288,7 @@ interactions: 217000000,\n \"interestExpense\": 528000000,\n \"depreciationAndAmortization\": 842000000,\n \"ebitda\": 11047000000,\n \"ebitdaratio\": 0.4297607469363937,\n \ \"operatingIncome\": 10248000000,\n \"operatingIncomeRatio\": 0.39867730013616026,\n - \ \"totalOtherIncomeExpensesNet\": -311000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -84000000,\n \"incomeBeforeTax\": 9937000000,\n \"incomeBeforeTaxRatio\": 0.386578486675744,\n \"incomeTaxExpense\": 2787000000,\n \"netIncome\": 6890000000,\n \"netIncomeRatio\": 0.26804123711340205,\n \ \"eps\": 3.33,\n \"epsdiluted\": 3.32,\n \"weightedAverageShsOut\": @@ -297,7 +297,7 @@ interactions: \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"revenue\": 22798000000,\n \"costOfRevenue\": 8720000000,\n \"grossProfit\": 14078000000,\n \"grossProfitRatio\": 0.6175103079217475,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": @@ -307,51 +307,51 @@ interactions: 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 748000000,\n \ \"ebitda\": 9338000000,\n \"ebitdaratio\": 0.40959733309939467,\n \"operatingIncome\": 8873000000,\n \"operatingIncomeRatio\": 0.3892008070883411,\n \"totalOtherIncomeExpensesNet\": - -10000000,\n \"incomeBeforeTax\": 8863000000,\n \"incomeBeforeTaxRatio\": + -156000000,\n \"incomeBeforeTax\": 8863000000,\n \"incomeBeforeTaxRatio\": 0.38876217212036146,\n \"incomeTaxExpense\": 2564000000,\n \"netIncome\": 6026000000,\n \"netIncomeRatio\": 0.2643214317045355,\n \"eps\": 2.87,\n \ \"epsdiluted\": 2.85,\n \"weightedAverageShsOut\": 2101000000,\n \"weightedAverageShsOutDil\": - 2116000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n },\n {\n \"date\": + 2116000000,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2006-12-31\",\n \"acceptedDate\": - \"2006-12-30 19:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": + \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": \"FY\",\n \"revenue\": 48260000000,\n \"costOfRevenue\": 35619000000,\n \ \"grossProfit\": 12641000000,\n \"grossProfitRatio\": 0.26193535018648983,\n \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": - 4574000000,\n \"otherExpenses\": -301000000,\n \"operatingExpenses\": - 4273000000,\n \"costAndExpenses\": 39892000000,\n \"interestIncome\": - 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 658000000,\n - \ \"ebitda\": 8633000000,\n \"ebitdaratio\": 0.17888520513883133,\n \"operatingIncome\": - 8368000000,\n \"operatingIncomeRatio\": 0.17339411520928305,\n \"totalOtherIncomeExpensesNet\": - -142000000,\n \"incomeBeforeTax\": 8226000000,\n \"incomeBeforeTaxRatio\": + 4574000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 4574000000,\n + \ \"costAndExpenses\": 39892000000,\n \"interestIncome\": 0,\n \"interestExpense\": + 0,\n \"depreciationAndAmortization\": 658000000,\n \"ebitda\": 8633000000,\n + \ \"ebitdaratio\": 0.17888520513883133,\n \"operatingIncome\": 8368000000,\n + \ \"operatingIncomeRatio\": 0.17339411520928305,\n \"totalOtherIncomeExpensesNet\": + 301000000,\n \"incomeBeforeTax\": 8226000000,\n \"incomeBeforeTaxRatio\": 0.17045171985080812,\n \"incomeTaxExpense\": 1829000000,\n \"netIncome\": - 6146000000,\n \"netIncomeRatio\": 0.12735184417737255,\n \"eps\": 2.913745,\n - \ \"epsdiluted\": 2.913745,\n \"weightedAverageShsOut\": 2109313033,\n - \ \"weightedAverageShsOutDil\": 2109313033,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n - \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2005-12-31\",\n \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": - \"2005\",\n \"period\": \"FY\",\n \"revenue\": 45288000000,\n \"costOfRevenue\": - 32920000000,\n \"grossProfit\": 12368000000,\n \"grossProfitRatio\": - 0.2730966260378025,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 6146000000,\n \"netIncomeRatio\": 0.12735184417737255,\n \"eps\": 2.91,\n + \ \"epsdiluted\": 2.91,\n \"weightedAverageShsOut\": 2109313033,\n \"weightedAverageShsOutDil\": + 2109313033,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": + \"2005-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n + \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2005-12-31\",\n \"acceptedDate\": + \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \"period\": + \"FY\",\n \"revenue\": 45288000000,\n \"costOfRevenue\": 32920000000,\n + \ \"grossProfit\": 12368000000,\n \"grossProfitRatio\": 0.2730966260378025,\n + \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 4543000000,\n \"otherExpenses\": 90000000,\n \"operatingExpenses\": 4633000000,\n \"costAndExpenses\": 37553000000,\n \"interestIncome\": 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 527000000,\n \ \"ebitda\": 7982000000,\n \"ebitdaratio\": 0.17624977919095566,\n \"operatingIncome\": 7735000000,\n \"operatingIncomeRatio\": 0.1707957957957958,\n \"totalOtherIncomeExpensesNet\": - -94000000,\n \"incomeBeforeTax\": 7641000000,\n \"incomeBeforeTaxRatio\": + -90000000,\n \"incomeBeforeTax\": 7641000000,\n \"incomeBeforeTaxRatio\": 0.16872019077901432,\n \"incomeTaxExpense\": 1835000000,\n \"netIncome\": - 5620000000,\n \"netIncomeRatio\": 0.12409468291821232,\n \"eps\": 2.664375,\n - \ \"epsdiluted\": 2.664375,\n \"weightedAverageShsOut\": 2109313033,\n - \ \"weightedAverageShsOutDil\": 2109313033,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n - \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2003-12-31\",\n \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": - \"2003\",\n \"period\": \"FY\",\n \"revenue\": 33389000000,\n \"costOfRevenue\": - 23821000000,\n \"grossProfit\": 9568000000,\n \"grossProfitRatio\": - 0.2865614423912067,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 5620000000,\n \"netIncomeRatio\": 0.12409468291821232,\n \"eps\": 2.66,\n + \ \"epsdiluted\": 2.66,\n \"weightedAverageShsOut\": 2109313033,\n \"weightedAverageShsOutDil\": + 2109313033,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": + \"2003-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n + \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2003-12-31\",\n \"acceptedDate\": + \"2003-12-31 00:00:00\",\n \"calendarYear\": \"2003\",\n \"period\": + \"FY\",\n \"revenue\": 33389000000,\n \"costOfRevenue\": 23821000000,\n + \ \"grossProfit\": 9568000000,\n \"grossProfitRatio\": 0.2865614423912067,\n + \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 3372000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 3372000000,\n \ \"costAndExpenses\": 27193000000,\n \"interestIncome\": 0,\n \"interestExpense\": @@ -362,7 +362,7 @@ interactions: 0.1860792476564138,\n \"incomeTaxExpense\": 2090000000,\n \"netIncome\": 3975000000,\n \"netIncomeRatio\": 0.11905118452184851,\n \"eps\": 1.96,\n \ \"epsdiluted\": 1.95,\n \"weightedAverageShsOut\": 2028000000,\n \"weightedAverageShsOutDil\": - 2038000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n }\n]" + 2038000000,\n \"link\": null,\n \"finalLink\": null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -378,13 +378,13 @@ interactions: Connection: - close Content-Length: - - '27901' + - '27789' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:35 GMT + - Tue, 02 May 2023 14:20:49 GMT ETag: - - W/"6cfd-4PEYPFcfGFtjPUhmx+H6jpfUIm0" + - W/"6c8d-dyok+KH8DbFv/5YYI3EX3gmW7OE" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].yaml index 71f804690533..268b279eb4ba 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].yaml @@ -10,36 +10,37 @@ interactions: uri: https://financialmodelingprep.com/api/v3/key-metrics/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-09-30\",\n \"period\": + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": \"FY\",\n \"revenuePerShare\": 20.399486191393706,\n \"netIncomePerShare\": 5.8111753371868975,\n \"operatingCashFlowPerShare\": 6.938342967244702,\n - \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 3.447655748233783,\n - \ \"bookValuePerShare\": -5.868336544637122,\n \"tangibleBookValuePerShare\": - -10.118175979447656,\n \"shareholdersEquityPerShare\": -5.868336544637122,\n - \ \"interestDebtPerShare\": 16.280025690430314,\n \"marketCap\": 129246570000.00002,\n - \ \"enterpriseValue\": 148458570000,\n \"peRatio\": 14.284545755968171,\n - \ \"priceToSalesRatio\": 4.069220137270953,\n \"pocfratio\": 11.963951680088865,\n - \ \"pfcfRatio\": 13.28876927822332,\n \"pbRatio\": -14.145405494144688,\n - \ \"ptbRatio\": -14.145405494144688,\n \"evToSales\": 4.674093885775455,\n - \ \"enterpriseValueOverEBITDA\": 10.923299977926568,\n \"evToOperatingCashFlow\": - 13.742346570397112,\n \"evToFreeCashFlow\": 15.264093152375077,\n \"earningsYield\": - 0.07000572626414765,\n \"freeCashFlowYield\": 0.07525151344441867,\n \"debtToEquity\": - -5.26649885082631,\n \"debtToAssets\": 1.1818159491121645,\n \"netDebtToEBITDA\": - 1.41358251784269,\n \"currentRatio\": 1.9048970901348474,\n \"interestCoverage\": - 15.9140625,\n \"incomeQuality\": 1.1339351317308701,\n \"dividendYield\": - 0.06044260981161821,\n \"payoutRatio\": 0.863395225464191,\n \"salesGeneralAndAdministrativeToRevenue\": + \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 2.0597302504816954,\n + \ \"bookValuePerShare\": -5.752729608220938,\n \"tangibleBookValuePerShare\": + -21.000642260757868,\n \"shareholdersEquityPerShare\": -5.752729608220938,\n + \ \"interestDebtPerShare\": 28.18946692357097,\n \"marketCap\": 157583970000,\n + \ \"enterpriseValue\": 197499970000,\n \"peRatio\": 17.416442307692307,\n + \ \"priceToSalesRatio\": 4.961399471066054,\n \"pocfratio\": 14.587056373229657,\n + \ \"pfcfRatio\": 16.202341147439853,\n \"pbRatio\": -17.593387294853187,\n + \ \"ptbRatio\": -17.593387294853187,\n \"evToSales\": 6.218121339965997,\n + \ \"enterpriseValueOverEBITDA\": 14.906783153445543,\n \"evToOperatingCashFlow\": + 18.281955938165325,\n \"evToFreeCashFlow\": 20.306392144766605,\n \"earningsYield\": + 0.05741700758014917,\n \"freeCashFlowYield\": 0.061719475654789,\n \"debtToEquity\": + -7.5909344646645085,\n \"debtToAssets\": 1.1023167588074123,\n \"netDebtToEBITDA\": + 3.012755679673938,\n \"currentRatio\": 0.7176982733391865,\n \"interestCoverage\": + 15.9453125,\n \"incomeQuality\": 1.1339351317308701,\n \"dividendYield\": + 0.04957357020514207,\n \"payoutRatio\": 0.863395225464191,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2562181222844909,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": - 0.20509860746125697,\n \"capexToOperatingCashFlow\": -0.09969452929741739,\n + 0.42779786319936447,\n \"capexToOperatingCashFlow\": -0.09969452929741739,\n \ \"capexToRevenue\": -0.03390844405264152,\n \"capexToDepreciation\": -0.9058031959629941,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 27.700062878383978,\n \"roic\": 0.32248872001899787,\n \"returnOnTangibleAssets\": - 0.27955261694370637,\n \"grahamNetNet\": -27.457931920359666,\n \"workingCapital\": - 2550000000,\n \"tangibleAssetValue\": -15754000000,\n \"netCurrentAssetValue\": - -42752000000,\n \"investedCapital\": -2.6901608843165152,\n \"averageReceivables\": - 1970000000,\n \"averagePayables\": 1665500000,\n \"averageInventory\": - 4360000000,\n \"daysSalesOutstanding\": 0,\n \"daysPayablesOutstanding\": - 0,\n \"daysOfInventoryOnHand\": 0,\n \"receivablesTurnover\": 0,\n \"payablesTurnover\": - 0,\n \"inventoryTurnover\": 0,\n \"roe\": -0.9902593849184634,\n \"capexPerShare\": + 27.425858408953456,\n \"roic\": 0.19307994856988234,\n \"returnOnTangibleAssets\": + 0.2563608545361818,\n \"grahamNetNet\": -36.143224149004496,\n \"workingCapital\": + -7717000000,\n \"tangibleAssetValue\": -32698000000,\n \"netCurrentAssetValue\": + -48373000000,\n \"investedCapital\": -4.814446801384392,\n \"averageReceivables\": + 4348000000,\n \"averagePayables\": 3703500000,\n \"averageInventory\": + 9303000000,\n \"daysSalesOutstanding\": 54.65461872678043,\n \"daysPayablesOutstanding\": + 130.48061743553762,\n \"daysOfInventoryOnHand\": 316.4699175583231,\n \"receivablesTurnover\": + 6.678301093355761,\n \"payablesTurnover\": 2.797350343473994,\n \"inventoryTurnover\": + 1.1533481691280598,\n \"roe\": -1.0101596516690856,\n \"capexPerShare\": -0.6917148362235067\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \ \"period\": \"FY\",\n \"revenuePerShare\": 20.157252888318357,\n \"netIncomePerShare\": 5.846598202824134,\n \"operatingCashFlowPerShare\": 7.681001283697047,\n @@ -51,18 +52,18 @@ interactions: \ \"priceToSalesRatio\": 4.712943798758159,\n \"pocfratio\": 12.368179159354893,\n \ \"pfcfRatio\": 13.192797932079507,\n \"pbRatio\": -14.645754997031466,\n \ \"ptbRatio\": -14.645754997031466,\n \"evToSales\": 5.455182295812769,\n - \ \"enterpriseValueOverEBITDA\": 12.266055702727858,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 12.676285608583056,\n \"evToOperatingCashFlow\": 14.316035765020473,\n \"evToFreeCashFlow\": 15.270523219538283,\n \"earningsYield\": 0.061543138977096144,\n \"freeCashFlowYield\": 0.0757989325045605,\n \"debtToEquity\": -4.897882446071641,\n \"debtToAssets\": 1.198789053039477,\n \"netDebtToEBITDA\": - 1.6689339156583376,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": - 17.44911804613297,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": + 1.7247502774694783,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": + 17.605156037991858,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": 0.05121275589487197,\n \"payoutRatio\": 0.8321440333735866,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2680783314758796,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23003148462097361,\n \"capexToOperatingCashFlow\": -0.06250522269574664,\n \ \"capexToRevenue\": -0.023817863397548163,\n \"capexToDepreciation\": -0.749498997995992,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.211160012690573,\n \"roic\": 0.5836169729975039,\n \"returnOnTangibleAssets\": + 29.211160012690573,\n \"roic\": 0.35011417392195887,\n \"returnOnTangibleAssets\": 0.2865186210367388,\n \"grahamNetNet\": -24.189345314505776,\n \"workingCapital\": -1538000000,\n \"tangibleAssetValue\": -17706000000,\n \"netCurrentAssetValue\": -31781000000,\n \"investedCapital\": -2.7514347912131405,\n \"averageReceivables\": @@ -77,23 +78,23 @@ interactions: \ \"freeCashFlowPerShare\": 5.9152215799614645,\n \"cashPerShare\": 4.675658317276814,\n \ \"bookValuePerShare\": -8.071290944123314,\n \"tangibleBookValuePerShare\": -11.955041746949261,\n \"shareholdersEquityPerShare\": -8.071290944123314,\n - \ \"interestDebtPerShare\": 20.72190109184329,\n \"marketCap\": 128904030000.00002,\n + \ \"interestDebtPerShare\": 20.65125240847784,\n \"marketCap\": 128904030000.00002,\n \ \"enterpriseValue\": 153160030000,\n \"peRatio\": 16.000996772591858,\n \ \"priceToSalesRatio\": 4.49236878789991,\n \"pocfratio\": 13.137385854056259,\n \ \"pfcfRatio\": 13.996094462540718,\n \"pbRatio\": -10.25734304129864,\n \ \"ptbRatio\": -10.25734304129864,\n \"evToSales\": 5.33770230710253,\n - \ \"enterpriseValueOverEBITDA\": 12.614069346071487,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 13.15355805565098,\n \"evToOperatingCashFlow\": 15.60946086424786,\n \"evToFreeCashFlow\": 16.629753528773072,\n \"earningsYield\": 0.062496106599615235,\n \"freeCashFlowYield\": 0.0714485032004042,\n \"debtToEquity\": -4.412031511100501,\n \"debtToAssets\": 1.2372196809104095,\n \"netDebtToEBITDA\": - 1.9976939548674024,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": - 16.02747252747253,\n \"incomeQuality\": 1.217974180734856,\n \"dividendYield\": + 2.0831329440054964,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": + 18.880258899676374,\n \"incomeQuality\": 1.1419925512104283,\n \"dividendYield\": 0.05712777172288562,\n \"payoutRatio\": 0.9141012909632572,\n \"salesGeneralAndAdministrativeToRevenue\": - 0.0033804976650170767,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.26071652610301804,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.17813232176726543,\n \"capexToOperatingCashFlow\": -0.06135344476151651,\n \ \"capexToRevenue\": -0.020979995817941032,\n \"capexToDepreciation\": -0.6136595310907238,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 30.65336685433772,\n \"roic\": 0.463015873015873,\n \"returnOnTangibleAssets\": + 30.65336685433772,\n \"roic\": 0.3325143588533254,\n \"returnOnTangibleAssets\": 0.2187228496959166,\n \"grahamNetNet\": -26.043513166345537,\n \"workingCapital\": 1877000000,\n \"tangibleAssetValue\": -18614000000,\n \"netCurrentAssetValue\": -33954000000,\n \"investedCapital\": -2.5094294581045595,\n \"averageReceivables\": @@ -108,23 +109,23 @@ interactions: \ \"freeCashFlowPerShare\": 5.940836012861737,\n \"cashPerShare\": 4.412218649517685,\n \ \"bookValuePerShare\": -7.445016077170418,\n \"tangibleBookValuePerShare\": -11.29903536977492,\n \"shareholdersEquityPerShare\": -7.445016077170418,\n - \ \"interestDebtPerShare\": 20.47652733118971,\n \"marketCap\": 132314950000,\n + \ \"interestDebtPerShare\": 20.331189710610932,\n \"marketCap\": 132314950000,\n \ \"enterpriseValue\": 156498950000,\n \"peRatio\": 18.41544189283229,\n \ \"priceToSalesRatio\": 4.439354135212213,\n \"pocfratio\": 13.113473736372647,\n \ \"pfcfRatio\": 14.322899978350293,\n \"pbRatio\": -11.429122397857821,\n \ \"ptbRatio\": -11.429122397857821,\n \"evToSales\": 5.250761617178326,\n - \ \"enterpriseValueOverEBITDA\": 13.925872041288486,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 14.893314617434335,\n \"evToOperatingCashFlow\": 15.510302279484637,\n \"evToFreeCashFlow\": 16.9407826369344,\n \"earningsYield\": 0.0543022538269485,\n \"freeCashFlowYield\": 0.06981826316678501,\n \"debtToEquity\": -4.5326077567590914,\n \"debtToAssets\": 1.2238833819241983,\n \"netDebtToEBITDA\": - 2.1519843388503292,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": - 13.229899497487438,\n \"incomeQuality\": 1.4043145441892833,\n \"dividendYield\": + 2.301484583174724,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": + 18.475438596491227,\n \"incomeQuality\": 1.3056418219461698,\n \"dividendYield\": 0.054120868427944085,\n \"payoutRatio\": 0.9966597077244259,\n \"salesGeneralAndAdministrativeToRevenue\": 0.29471565173628583,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.1859125364431487,\n \"capexToOperatingCashFlow\": -0.0844400396432111,\n \ \"capexToRevenue\": -0.028585807750377452,\n \"capexToDepreciation\": -0.8838174273858921,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 27.82097004066496,\n \"roic\": 0.4380251227019383,\n \"returnOnTangibleAssets\": + 27.82097004066496,\n \"roic\": 0.301069934832196,\n \"returnOnTangibleAssets\": 0.20585033234013295,\n \"grahamNetNet\": -24.57090032154341,\n \"workingCapital\": 1681000000,\n \"tangibleAssetValue\": -17570000000,\n \"netCurrentAssetValue\": -31960000000,\n \"investedCapital\": -2.6816100889695087,\n \"averageReceivables\": @@ -149,13 +150,13 @@ interactions: 0.076205209812372,\n \"freeCashFlowYield\": 0.07746710874871642,\n \"debtToEquity\": -4.056505337507023,\n \"debtToAssets\": 1.2698173412728324,\n \"netDebtToEBITDA\": 2.0627868852459015,\n \"currentRatio\": 1.130940608457914,\n \"interestCoverage\": - 13.306432748538011,\n \"incomeQuality\": 1.1980786246997852,\n \"dividendYield\": + 13.306432748538011,\n \"incomeQuality\": 1.1438571083755733,\n \"dividendYield\": 0.06632194028039201,\n \"payoutRatio\": 0.8703071672354948,\n \"salesGeneralAndAdministrativeToRevenue\": 0.25144303797468354,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23785834526770683,\n \"capexToOperatingCashFlow\": -0.15150875712175566,\n \ \"capexToRevenue\": -0.04847257383966245,\n \"capexToDepreciation\": -1.4519716885743175,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 30.284342617274454,\n \"roic\": 0.5031844316674038,\n \"returnOnTangibleAssets\": + 30.284342617274454,\n \"roic\": 0.3572834675767127,\n \"returnOnTangibleAssets\": 0.260796466011736,\n \"grahamNetNet\": -23.711897106109326,\n \"workingCapital\": 2251000000,\n \"tangibleAssetValue\": -20206000000,\n \"netCurrentAssetValue\": -31098000000,\n \"investedCapital\": -2.5490809856328758,\n \"averageReceivables\": @@ -180,13 +181,13 @@ interactions: 0.03680578256351208,\n \"freeCashFlowYield\": 0.044910983065070915,\n \"debtToEquity\": -4.401621711070661,\n \"debtToAssets\": 1.2380841556507167,\n \"netDebtToEBITDA\": 2.102818159668643,\n \"currentRatio\": 1.3528379902267886,\n \"interestCoverage\": - 10.495437956204379,\n \"incomeQuality\": 1.4767191383595692,\n \"dividendYield\": + 10.495437956204379,\n \"incomeQuality\": 1.405456552594228,\n \"dividendYield\": 0.03976366235527735,\n \"payoutRatio\": 1.0803645401822701,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2339293168220398,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23501210202941725,\n \"capexToOperatingCashFlow\": -0.1736983842010772,\n \ \"capexToRevenue\": -0.05384722415472381,\n \"capexToDepreciation\": -1.7691428571428571,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 26.102341921297114,\n \"roic\": 0.4259423831741095,\n \"returnOnTangibleAssets\": + 26.102341921297114,\n \"roic\": 0.28634764343891045,\n \"returnOnTangibleAssets\": 0.18360206875570428,\n \"grahamNetNet\": -24.19104381443299,\n \"workingCapital\": 5632000000,\n \"tangibleAssetValue\": -20328000000,\n \"netCurrentAssetValue\": -31604000000,\n \"investedCapital\": -2.84122124772464,\n \"averageReceivables\": @@ -211,13 +212,13 @@ interactions: 0.04909761376576725,\n \"freeCashFlowYield\": 0.04866068940040517,\n \"debtToEquity\": -3.7634773013871374,\n \"debtToAssets\": 1.2957857317304822,\n \"netDebtToEBITDA\": 2.150168875032476,\n \"currentRatio\": 1.0692900953421995,\n \"interestCoverage\": - 10.116931711880262,\n \"incomeQuality\": 1.1593225204535669,\n \"dividendYield\": + 10.116931711880262,\n \"incomeQuality\": 1.1140689655172413,\n \"dividendYield\": 0.044946832294827536,\n \"payoutRatio\": 0.9154585904980623,\n \"salesGeneralAndAdministrativeToRevenue\": 0.24002248454187747,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.26577297766682045,\n \"capexToOperatingCashFlow\": -0.14510337996780984,\n \ \"capexToRevenue\": -0.0439198051339704,\n \"capexToDepreciation\": -1.5773889636608345,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 28.754045226644966,\n \"roic\": 0.5305631868131868,\n \"returnOnTangibleAssets\": + 28.754045226644966,\n \"roic\": 0.2920014403245321,\n \"returnOnTangibleAssets\": 0.2574934397752892,\n \"grahamNetNet\": -23.45535138620245,\n \"workingCapital\": 1141000000,\n \"tangibleAssetValue\": -20694000000,\n \"netCurrentAssetValue\": -30143000000,\n \"investedCapital\": -2.290904791929382,\n \"averageReceivables\": @@ -242,13 +243,13 @@ interactions: 0.05047271260684695,\n \"freeCashFlowYield\": 0.05070770850433263,\n \"debtToEquity\": -3.4303835699184537,\n \"debtToAssets\": 1.3379667805395217,\n \"netDebtToEBITDA\": 2.1894819603389535,\n \"currentRatio\": 1.0271675549200572,\n \"interestCoverage\": - 9.384275618374557,\n \"incomeQuality\": 1.1443328968427178,\n \"dividendYield\": + 9.384275618374557,\n \"incomeQuality\": 1.1184584755403868,\n \"dividendYield\": 0.045897636227672546,\n \"payoutRatio\": 0.9093554488578496,\n \"salesGeneralAndAdministrativeToRevenue\": 0.24841382399044562,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.2956178584049947,\n \"capexToOperatingCashFlow\": -0.12205975842339478,\n \ \"capexToRevenue\": -0.035828916921698886,\n \"capexToDepreciation\": -1.273209549071618,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.216124012545766,\n \"roic\": 0.5720516962843296,\n \"returnOnTangibleAssets\": + 29.216124012545766,\n \"roic\": 0.29625673797129565,\n \"returnOnTangibleAssets\": 0.28735680240822814,\n \"grahamNetNet\": -23.043899289864427,\n \"workingCapital\": 418000000,\n \"tangibleAssetValue\": -21514000000,\n \"netCurrentAssetValue\": -29628000000,\n \"investedCapital\": -2.1504077318030808,\n \"averageReceivables\": @@ -273,13 +274,13 @@ interactions: 0.05874526756811213,\n \"freeCashFlowYield\": 0.0516343697055367,\n \"debtToEquity\": -3.6732916303745347,\n \"debtToAssets\": 1.3183846306874698,\n \"netDebtToEBITDA\": 2.195667641710807,\n \"currentRatio\": 1.024616199047115,\n \"interestCoverage\": - 10.001709401709402,\n \"incomeQuality\": 1.0328306419324702,\n \"dividendYield\": + 10.001709401709402,\n \"incomeQuality\": 1.0105771741969183,\n \"dividendYield\": 0.04731451885407136,\n \"payoutRatio\": 0.805418390497798,\n \"salesGeneralAndAdministrativeToRevenue\": 0.23519333490106495,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3232159604399352,\n \"capexToOperatingCashFlow\": -0.14898565706163586,\n \ \"capexToRevenue\": -0.03873416871031679,\n \"capexToDepreciation\": -1.296962879640045,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.465366628493165,\n \"roic\": 0.5829140722291407,\n \"returnOnTangibleAssets\": + 29.465366628493165,\n \"roic\": 0.27138028107605555,\n \"returnOnTangibleAssets\": 0.31464684639287815,\n \"grahamNetNet\": -23.8882503192848,\n \"workingCapital\": 372000000,\n \"tangibleAssetValue\": -22576000000,\n \"netCurrentAssetValue\": -30906000000,\n \"investedCapital\": -2.332330350779951,\n \"averageReceivables\": @@ -304,13 +305,13 @@ interactions: 0.06068288339362232,\n \"freeCashFlowYield\": 0.06322313002822008,\n \"debtToEquity\": -5.72263713623487,\n \"debtToAssets\": 1.164378536994341,\n \"netDebtToEBITDA\": 1.7934232715008431,\n \"currentRatio\": 0.9874604476737373,\n \"interestCoverage\": - 12.241847826086957,\n \"incomeQuality\": 1.181786380597015,\n \"dividendYield\": + 12.241847826086957,\n \"incomeQuality\": 1.1451977401129942,\n \"dividendYield\": 0.040474124651529816,\n \"payoutRatio\": 0.6669776119402985,\n \"salesGeneralAndAdministrativeToRevenue\": 0.22071307300509338,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.31665269335569063,\n \"capexToOperatingCashFlow\": -0.11840157868771584,\n \ \"capexToRevenue\": -0.038440593266489416,\n \"capexToDepreciation\": -1.3605442176870748,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 23.86610178353917,\n \"roic\": 0.6404606198464601,\n \"returnOnTangibleAssets\": + 23.86610178353917,\n \"roic\": 0.29338623477188086,\n \"returnOnTangibleAssets\": 0.3288091404033433,\n \"grahamNetNet\": -21.254778051787916,\n \"workingCapital\": -214000000,\n \"tangibleAssetValue\": -18360000000,\n \"netCurrentAssetValue\": -27590000000,\n \"investedCapital\": -3.563996909605975,\n \"averageReceivables\": @@ -324,7 +325,7 @@ interactions: 5.200945626477542,\n \"operatingCashFlowPerShare\": 5.567966903073286,\n \ \"freeCashFlowPerShare\": 4.943853427895981,\n \"cashPerShare\": 1.7630023640661938,\n \ \"bookValuePerShare\": -2.054373522458629,\n \"tangibleBookValuePerShare\": - -9.85401891252955,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n + -9.085106382978724,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n \ \"interestDebtPerShare\": 14.09338061465721,\n \"marketCap\": 141518880000,\n \ \"enterpriseValue\": 161374880000,\n \"peRatio\": 16.08169090909091,\n \ \"priceToSalesRatio\": 4.510274404818817,\n \"pocfratio\": 15.021641014754273,\n @@ -333,18 +334,18 @@ interactions: \ \"enterpriseValueOverEBITDA\": 11.100211858577522,\n \"evToOperatingCashFlow\": 17.129272900965926,\n \"evToFreeCashFlow\": 19.29167722653915,\n \"earningsYield\": 0.06218251585936803,\n \"freeCashFlowYield\": 0.059108721041319714,\n \"debtToEquity\": - -11.744533947065593,\n \"debtToAssets\": 1.0837271037961242,\n \"netDebtToEBITDA\": + -11.370253164556962,\n \"debtToAssets\": 1.0491903371383065,\n \"netDebtToEBITDA\": 1.3657999724858991,\n \"currentRatio\": 0.9749647390691114,\n \"interestCoverage\": - 13.749751737835155,\n \"incomeQuality\": 1.0705681818181818,\n \"dividendYield\": + 13.749751737835155,\n \"incomeQuality\": 1.0291675770155124,\n \"dividendYield\": 0.03818571769363918,\n \"payoutRatio\": 0.6140909090909091,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2223921981068936,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.35887974515529597,\n \"capexToOperatingCashFlow\": -0.11209001167604288,\n \ \"capexToRevenue\": -0.03365522516492973,\n \"capexToDepreciation\": -1.175946547884187,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 15.505012486373738,\n \"roic\": 0.6703786191536748,\n \"returnOnTangibleAssets\": - 0.3643741459980953,\n \"grahamNetNet\": -18.12928486997636,\n \"workingCapital\": - -426000000,\n \"tangibleAssetValue\": -16673000000,\n \"netCurrentAssetValue\": - -24234000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": + 15.505012486373738,\n \"roic\": 0.31892662421076523,\n \"returnOnTangibleAssets\": + 0.3643741459980953,\n \"grahamNetNet\": -17.36037234042553,\n \"workingCapital\": + -426000000,\n \"tangibleAssetValue\": -15372000000,\n \"netCurrentAssetValue\": + -22933000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": 3395000000,\n \"averagePayables\": 1067000000,\n \"averageInventory\": 8534500000,\n \"daysSalesOutstanding\": 41.74984861522771,\n \"daysPayablesOutstanding\": 38.811819145859445,\n \"daysOfInventoryOnHand\": 314.8929914200328,\n \"receivablesTurnover\": @@ -366,13 +367,13 @@ interactions: 0.06342594042242382,\n \"freeCashFlowYield\": 0.07111147225570785,\n \"debtToEquity\": 147.2707423580786,\n \"debtToAssets\": 0.9503212353471596,\n \"netDebtToEBITDA\": 1.1287135699668336,\n \"currentRatio\": 1.0043936731107206,\n \"interestCoverage\": - 14.274089935760172,\n \"incomeQuality\": 1.22558491444535,\n \"dividendYield\": + 14.274089935760172,\n \"incomeQuality\": 1.1858317378083116,\n \"dividendYield\": 0.03534901673176175,\n \"payoutRatio\": 0.5573274356885113,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3839325969341749,\n \"capexToOperatingCashFlow\": -0.08519327571469275,\n \ \"capexToRevenue\": -0.02884522622761038,\n \"capexToDepreciation\": -0.9033232628398792,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 3.854899412847063,\n \"roic\": 0.6442447086111917,\n \"returnOnTangibleAssets\": + 3.854899412847063,\n \"roic\": 0.3217564798601053,\n \"returnOnTangibleAssets\": 0.3929469880620226,\n \"grahamNetNet\": -14.319558437167034,\n \"workingCapital\": 65000000,\n \"tangibleAssetValue\": -11862000000,\n \"netCurrentAssetValue\": -18866000000,\n \"investedCapital\": 80.9825327510917,\n \"averageReceivables\": @@ -397,13 +398,13 @@ interactions: 0.0674398418308556,\n \"freeCashFlowYield\": 0.08105044498310846,\n \"debtToEquity\": 8.53650884198517,\n \"debtToAssets\": 0.8538944365192582,\n \"netDebtToEBITDA\": 1.2341756317237929,\n \"currentRatio\": 1.0743517650734145,\n \"interestCoverage\": - 11.498973305954825,\n \"incomeQuality\": 1.3000413280066125,\n \"dividendYield\": + 11.498973305954825,\n \"incomeQuality\": 1.258602293945052,\n \"dividendYield\": 0.04109194385147738,\n \"payoutRatio\": 0.6093125774900124,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.40039942938659057,\n \"capexToOperatingCashFlow\": -0.0755536717177069,\n \ \"capexToRevenue\": -0.02620552778594531,\n \"capexToDepreciation\": -0.7650214592274678,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 13.012294500971974,\n \"roic\": 0.5034612964128382,\n \"returnOnTangibleAssets\": + 13.012294500971974,\n \"roic\": 0.2640206285797149,\n \"returnOnTangibleAssets\": 0.34540350209364296,\n \"grahamNetNet\": -11.860114192495923,\n \"workingCapital\": 952000000,\n \"tangibleAssetValue\": -8913000000,\n \"netCurrentAssetValue\": -16173000000,\n \"investedCapital\": 4.706788362806617,\n \"averageReceivables\": @@ -428,13 +429,13 @@ interactions: 0.06773240722278227,\n \"freeCashFlowYield\": 0.07656474730055599,\n \"debtToEquity\": 4.969734079776067,\n \"debtToAssets\": 0.8221521185459597,\n \"netDebtToEBITDA\": 1.298886080688945,\n \"currentRatio\": 1.3134728931830382,\n \"interestCoverage\": - 12.59723964868256,\n \"incomeQuality\": 1.2431409649952696,\n \"dividendYield\": + 12.59723964868256,\n \"incomeQuality\": 1.2032967032967032,\n \"dividendYield\": 0.0462122557636359,\n \"payoutRatio\": 0.6822768842636392,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.36634637647603613,\n \"capexToOperatingCashFlow\": -0.09069000507356671,\n \ \"capexToRevenue\": -0.028560015977631317,\n \"capexToDepreciation\": -0.8382180539273154,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 14.69865807645513,\n \"roic\": 0.42953709249593564,\n \"returnOnTangibleAssets\": + 14.69865807645513,\n \"roic\": 0.23105519204325875,\n \"returnOnTangibleAssets\": 0.2896684023020005,\n \"grahamNetNet\": -10.262480699948533,\n \"workingCapital\": 3504000000,\n \"tangibleAssetValue\": -6513000000,\n \"netCurrentAssetValue\": -13725000000,\n \"investedCapital\": 2.696990902729181,\n \"averageReceivables\": @@ -465,7 +466,7 @@ interactions: 0.33661894941162196,\n \"capexToOperatingCashFlow\": -0.13850031505986138,\n \ \"capexToRevenue\": -0.04275432795176036,\n \"capexToDepreciation\": -1.3052256532066508,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 16.488493116541544,\n \"roic\": 0.4489223760294375,\n \"returnOnTangibleAssets\": + 16.488493116541544,\n \"roic\": 0.25517440499432686,\n \"returnOnTangibleAssets\": 0.31500022859232846,\n \"grahamNetNet\": -8.207446808510639,\n \"workingCapital\": 4795000000,\n \"tangibleAssetValue\": -3599000000,\n \"netCurrentAssetValue\": -10533000000,\n \"investedCapital\": 1.5948,\n \"averageReceivables\": @@ -496,7 +497,7 @@ interactions: 0.3068064787941204,\n \"capexToOperatingCashFlow\": -0.19180533190195026,\n \ \"capexToRevenue\": -0.04702166856741819,\n \"capexToDepreciation\": -1.4331550802139037,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 21.749748065768344,\n \"roic\": 0.3777030478460753,\n \"returnOnTangibleAssets\": + 21.749748065768344,\n \"roic\": 0.2261955979179331,\n \"returnOnTangibleAssets\": 0.27129479560597874,\n \"grahamNetNet\": -3.663612565445026,\n \"workingCapital\": 6501000000,\n \"tangibleAssetValue\": 5570000000,\n \"netCurrentAssetValue\": -1590000000,\n \"investedCapital\": 0.40951886241153174,\n \"averageReceivables\": @@ -511,7 +512,7 @@ interactions: \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n \ \"bookValuePerShare\": 6.763813515013729,\n \"tangibleBookValuePerShare\": 3.0545489925866303,\n \"shareholdersEquityPerShare\": 6.763813515013729,\n - \ \"interestDebtPerShare\": 1.0534235389612747,\n \"marketCap\": 51437328898.957825,\n + \ \"interestDebtPerShare\": 1.3208091717129213,\n \"marketCap\": 51437328898.957825,\n \ \"enterpriseValue\": 52547328898.957825,\n \"peRatio\": 8.369236722902349,\n \ \"priceToSalesRatio\": 1.065837731018604,\n \"pocfratio\": 8.248449149929094,\n \ \"pfcfRatio\": 9.614453999805201,\n \"pbRatio\": 3.6053360131042145,\n @@ -527,10 +528,10 @@ interactions: 0.2995405819295559,\n \"capexToOperatingCashFlow\": -0.14207825529185375,\n \ \"capexToRevenue\": -0.018358889349357647,\n \"capexToDepreciation\": -1.3465045592705167,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 21.05779199835815,\n \"roic\": 0.4374052584809994,\n \"returnOnTangibleAssets\": + 21.05779199835815,\n \"roic\": 0.2945070230858761,\n \"returnOnTangibleAssets\": 0.3359204197638828,\n \"grahamNetNet\": -2.379684722689522,\n \"workingCapital\": 4936000000,\n \"tangibleAssetValue\": 6443000000,\n \"netCurrentAssetValue\": - 72000000,\n \"investedCapital\": 0.15574402467232074,\n \"averageReceivables\": + 72000000,\n \"investedCapital\": 0.1952758113128198,\n \"averageReceivables\": 2029000000,\n \"averagePayables\": 670500000,\n \"averageInventory\": 6247500000,\n \"daysSalesOutstanding\": 16.336510567757976,\n \"daysPayablesOutstanding\": 6.886212414722479,\n \"daysOfInventoryOnHand\": 72.49992981274039,\n \"receivablesTurnover\": @@ -542,7 +543,7 @@ interactions: \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n \ \"bookValuePerShare\": 4.88642502973621,\n \"tangibleBookValuePerShare\": 1.5820316604472429,\n \"shareholdersEquityPerShare\": 4.88642502973621,\n - \ \"interestDebtPerShare\": 1.9631984135187392,\n \"marketCap\": 51437328898.957825,\n + \ \"interestDebtPerShare\": 2.327297998542258,\n \"marketCap\": 51437328898.957825,\n \ \"enterpriseValue\": 55137328898.957825,\n \"peRatio\": 9.15254962614908,\n \ \"priceToSalesRatio\": 1.1357827437501729,\n \"pocfratio\": 9.972339840821602,\n \ \"pfcfRatio\": 11.63214131591086,\n \"pbRatio\": 4.990523808960689,\n @@ -558,10 +559,10 @@ interactions: 0.30127512427058567,\n \"capexToOperatingCashFlow\": -0.1426909654905002,\n \ \"capexToRevenue\": -0.016251545663310368,\n \"capexToDepreciation\": -1.396584440227704,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 17.115300112514333,\n \"roic\": 0.46038926254389617,\n \"returnOnTangibleAssets\": + 17.115300112514333,\n \"roic\": 0.29316768403913324,\n \"returnOnTangibleAssets\": 0.34766470770182495,\n \"grahamNetNet\": -3.5487857339759774,\n \"workingCapital\": 3691000000,\n \"tangibleAssetValue\": 3337000000,\n \"netCurrentAssetValue\": - -2803000000,\n \"investedCapital\": 0.401765790239643,\n \"averageReceivables\": + -2803000000,\n \"investedCapital\": 0.4762782574949064,\n \"averageReceivables\": null,\n \"averagePayables\": null,\n \"averageInventory\": null,\n \"daysSalesOutstanding\": 15.296988164635223,\n \"daysPayablesOutstanding\": 7.417527339003645,\n \ \"daysOfInventoryOnHand\": 60.09416767922236,\n \"receivablesTurnover\": @@ -582,13 +583,13 @@ interactions: 11.447439138438378,\n \"earningsYield\": 0.08037700332813817,\n \"freeCashFlowYield\": 0.08177222678213604,\n \"debtToEquity\": 0.6804880373653608,\n \"debtToAssets\": 0.40493477027793534,\n \"netDebtToEBITDA\": -0.49121989121989124,\n \"currentRatio\": - 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 1.1647798742138364,\n - \ \"dividendYield\": 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 0,\n \"dividendYield\": + 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.11435053885422575,\n \"capexToOperatingCashFlow\": -0.1265658747300216,\n \ \"capexToRevenue\": -0.01755069034712031,\n \"capexToDepreciation\": -1.5837837837837838,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 15.104290103817597,\n \"roic\": 0.3514463981849121,\n \"returnOnTangibleAssets\": + 15.104290103817597,\n \"roic\": 0.3636114834130041,\n \"returnOnTangibleAssets\": 0.2545792237735366,\n \"grahamNetNet\": -0.9077909270216963,\n \"workingCapital\": 11053000000,\n \"tangibleAssetValue\": 8475000000,\n \"netCurrentAssetValue\": 3914000000,\n \"investedCapital\": 0,\n \"averageReceivables\": null,\n @@ -612,13 +613,13 @@ interactions: Connection: - close Content-Length: - - '47462' + - '47546' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:39 GMT + - Tue, 02 May 2023 14:20:51 GMT ETag: - - W/"b966-DCLrmoHRm0eA8tVwl0Qnr8SL0Ss" + - W/"b9ba-+6l4HNSh+dGdsg15OMtMT0CCF5Y" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].yaml index 4041be93b4ae..7a57f83edb36 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].yaml @@ -10,9 +10,9 @@ interactions: uri: https://financialmodelingprep.com/api/v3/profile/PM?apikey=MOCK_API_KEY response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"price\": 98.5,\n \"beta\": - 0.709205,\n \"volAvg\": 4480064,\n \"mktCap\": 152697656576,\n \"lastDiv\": - 5.04,\n \"range\": \"82.85-109.81\",\n \"changes\": -1.6,\n \"companyName\": + string: "[\n {\n \"symbol\": \"PM\",\n \"price\": 96.99,\n \"beta\": + 0.704152,\n \"volAvg\": 4389060,\n \"mktCap\": 150547871793,\n \"lastDiv\": + 5.08,\n \"range\": \"82.85-109.81\",\n \"changes\": -2.36,\n \"companyName\": \"Philip Morris International Inc.\",\n \"currency\": \"USD\",\n \"cik\": \"0001413329\",\n \"isin\": \"US7181721090\",\n \"cusip\": \"718172109\",\n \ \"exchange\": \"New York Stock Exchange\",\n \"exchangeShortName\": @@ -32,11 +32,11 @@ interactions: U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York.\",\n \"ceo\": - \"Mr. Andre Calantzopoulos\",\n \"sector\": \"Consumer Defensive\",\n - \ \"country\": \"US\",\n \"fullTimeEmployees\": \"69600\",\n \"phone\": - \"917 663 2000\",\n \"address\": \"120 Park Avenue\",\n \"city\": \"New - York\",\n \"state\": \"NY\",\n \"zip\": \"10017-5592\",\n \"dcfDiff\": - 3.97239,\n \"dcf\": 99.7876,\n \"image\": \"https://financialmodelingprep.com/image-stock/PM.png\",\n + \"Mr. Jacek Olczak\",\n \"sector\": \"Consumer Defensive\",\n \"country\": + \"US\",\n \"fullTimeEmployees\": \"79800\",\n \"phone\": \"917 663 2000\",\n + \ \"address\": \"120 Park Avenue\",\n \"city\": \"New York\",\n \"state\": + \"NY\",\n \"zip\": \"10017-5592\",\n \"dcfDiff\": 3.97239,\n \"dcf\": + 99.7876,\n \"image\": \"https://financialmodelingprep.com/image-stock/PM.png\",\n \ \"ipoDate\": \"2008-03-17\",\n \"defaultImage\": false,\n \"isEtf\": false,\n \"isActivelyTrading\": true,\n \"isAdr\": false,\n \"isFund\": false\n }\n]" @@ -55,13 +55,13 @@ interactions: Connection: - close Content-Length: - - '2159' + - '2153' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:08:32 GMT + - Tue, 02 May 2023 14:20:46 GMT ETag: - - W/"86f-vfRG1blo/5jJ3j+zinFHJHEokF0" + - W/"869-UIxLgjqmaaI2aHy3ZAppujC5jkU" Server: - nginx/1.14.0 (Ubuntu) Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt index 1f79af8d3fad..754bc70841ca 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt @@ -1,61 +1,61 @@ Fiscal Date Ending 2018 2019 2020 2021 2022 Reported Currency USD USD USD USD USD Cik 0001413329 0001413329 0001413329 0001413329 0001413329 -Filing Date 2019-02-07 00:00:00 2020-02-07 00:00:00 2021-02-09 00:00:00 2022-02-11 00:00:00 2022-10-27 00:00:00 -Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2022-10-27 08:17:59 +Filing Date 2019-02-07 00:00:00 2020-02-07 00:00:00 2021-02-09 00:00:00 2022-02-11 00:00:00 2023-02-10 00:00:00 +Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Cash And Cash Equivalents 6.593 B 6.861 B 7.280 B 4.496 B 5.368 B +Cash And Cash Equivalents 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B Short Term Investments 0 0 0 0 0 -Cash And Short Term Investments 6.593 B 6.861 B 7.280 B 4.496 B 5.368 B -Net Receivables 3.564 B 3.717 B 3.761 B 3.940 B 0 -Inventory 8.804 B 9.235 B 9.591 B 8.720 B 0 -Other Current Assets 481 M 701 M 860 M 561 M 0 -Total Current Assets 19.442 B 20.514 B 21.492 B 17.717 B 5.368 B -Property Plant Equipment 7.201 B 6.631 B 6.365 B 6.168 B 5.610 B -Goodwill 7.189 B 5.858 B 5.964 B 6.680 B 6.127 B -Intangible Assets Excluding Goodwill 2.278 B 2.113 B 2.019 B 2.818 B 2.224 B -Intangible Assets 9.467 B 7.971 B 7.983 B 9.498 B 8.351 B -Long Term Investments 1.269 B 4.635 B 4.798 B 4.463 B 4.087 B -Tax Assets 977 M 1.153 B 1.410 B 895 M 0 -Other Non Currrent Assets 1.445 B 1.971 B 2.767 B 2.549 B 0 -Total Non Current Assets 20.359 B 22.361 B 23.323 B 23.573 B 18.048 B -Other Assets 0 0 0 0 17.301 B -Total Assets 39.801 B 42.875 B 44.815 B 41.290 B 40.717 B -Current Accounts Payable 2.068 B 2.299 B 2.780 B 3.331 B 0 -Current Debt 4.784 B 4.389 B 3.368 B 3.023 B 2.818 B -Tax Payables 0 0 7.494 B 7.349 B 0 +Cash And Short Term Investments 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B +Net Receivables 3.564 B 3.717 B 3.761 B 3.940 B 4.756 B +Inventory 8.804 B 9.235 B 9.591 B 8.720 B 9.886 B +Other Current Assets 481 M 13.653 B 14.212 B 561 M 1.770 B +Total Current Assets 19.442 B 20.514 B 21.492 B 17.717 B 19.619 B +Property Plant Equipment 7.201 B 6.631 B 6.365 B 6.168 B 6.710 B +Goodwill 7.189 B 5.858 B 5.964 B 6.680 B 19.655 B +Intangible Assets Excluding Goodwill 2.278 B 2.113 B 2.019 B 2.818 B 6.732 B +Intangible Assets 9.467 B 7.971 B 7.983 B 9.498 B 26.387 B +Long Term Investments 1.269 B 4.635 B 4.798 B 4.463 B 4.431 B +Tax Assets 977 M 1.153 B 1.410 B 895 M 603 M +Other Non Currrent Assets 1.445 B 1.971 B 2.767 B 2.549 B 3.931 B +Total Non Current Assets 20.359 B 22.361 B 23.323 B 23.573 B 42.062 B +Other Assets 0 0 0 0 0 +Total Assets 39.801 B 42.875 B 44.815 B 41.290 B 61.681 B +Current Accounts Payable 2.068 B 2.299 B 2.780 B 3.331 B 4.076 B +Current Debt 4.784 B 4.389 B 3.368 B 3.023 B 8.248 B +Tax Payables 5.664 B 6.633 B 7.494 B 7.349 B 8.480 B Deferred Revenue 0 0 0 0 0 -Other Non Current Liabilities 10.339 B 12.145 B 5.973 B 16.232 B 0 -Total Current Liabilities 17.191 B 18.833 B 19.615 B 19.255 B 2.818 B -Long Term Debt Non Current 26.975 B 26.656 B 28.168 B 24.783 B 21.762 B +Other Non Current Liabilities 10.339 B 12.145 B 13.467 B 12.901 B 15.012 B +Total Current Liabilities 17.191 B 18.833 B 19.615 B 19.255 B 27.336 B +Long Term Debt Non Current 26.975 B 26.656 B 28.168 B 24.783 B 34.875 B Deferred Revenue Non Current 0 0 0 0 0 -Deferred Tax Liabilities 898 M 908 M 684 M 726 M 923 M -Other Non Current Liabilities 5.476 B 6.077 B 6.979 B 4.734 B 22.617 B -Total Non Current Liabilities 33.349 B 33.641 B 35.831 B 30.243 B 45.302 B +Deferred Tax Liabilities 898 M 908 M 684 M 726 M 1.956 B +Other Non Current Liabilities 5.476 B 26.953 B 29.683 B 23.889 B 28.332 B +Total Non Current Liabilities 33.349 B 33.641 B 35.831 B 30.243 B 40.656 B Other Liabilities 0 0 0 0 0 Capital Lease Obligations 0 0 0 0 0 -Total Liabilities 50.540 B 52.474 B 55.446 B 49.498 B 48.120 B +Total Liabilities 50.540 B 52.474 B 55.446 B 49.498 B 67.992 B Preferred Stock 0 0 0 0 0 Common Stock 0 0 0 0 0 -Retained Earnings 31.014 B 30.987 B 31.638 B 33.082 B 0 -Accumulated Other Comprehensive Income -10.111 B -9.363 B -11.181 B -9.577 B 0 -Other Total Stockholders Equity -33.362 B -33.201 B -33.024 B 0 0 -Total Shareholder Equity -12.459 B -11.577 B -12.567 B -10.106 B -9.137 B -Equity -12.459 B -11.577 B -12.567 B -10.106 B -9.137 B -Total Liabilities And Stockholders Equity 38.081 B 40.897 B 42.879 B 49.498 B 38.983 B +Retained Earnings 31.014 B 30.987 B 31.638 B 33.082 B 34.289 B +Accumulated Other Comprehensive Income -10.111 B -9.363 B -11.181 B -9.577 B -9.559 B +Other Total Stockholders Equity -33.362 B -33.201 B -33.024 B -33.611 B -33.687 B +Total Shareholder Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B +Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B +Total Liabilities And Stockholders Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B Equity Attributable To Non Controlling Interest 0 0 0 0 0 -Liabilities And Equity 38.081 B 40.897 B 42.879 B 49.498 B 38.983 B -Total Investments 0 0 0 0 0 -Total Debt 31.759 B 31.045 B 31.536 B 27.806 B 24.580 B -Net Debt 25.166 B 24.184 B 24.256 B 23.310 B 19.212 B +Liabilities And Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B +Total Investments 0 4.635 B 4.798 B 4.463 B 4.431 B +Total Debt 31.759 B 31.045 B 31.536 B 27.806 B 43.123 B +Net Debt 25.166 B 24.184 B 24.256 B 23.310 B 39.916 B Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm 2019 https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/pm123119form10kwrapinc.htm 2020 https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/pm-20201231.htm 2021 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm -2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/pm-20220930.htm +2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm Link Fiscal Date Ending @@ -63,5 +63,5 @@ Fiscal Date Ending 2019 https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm 2020 https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm 2021 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm -2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/0001413329-22-000114-index.htm +2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt index 902a13d20a2f..6d5c5b908b81 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt @@ -5,7 +5,7 @@ Filling Date 2019-02-07 00:00:00 2020-02-07 00: Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Net Income 7.911 B 7.185 B 8.056 B 9.710 B 9.527 B +Net Income 8.286 B 7.728 B 8.592 B 9.710 B 9.527 B Depreciation And Amortization 989 M 964 M 981 M 998 M 1.189 B Deferred Income Taxes -100 M -141 M -143 M -17 M -234 M Stock Based Compensation 0 0 0 0 0 @@ -13,23 +13,23 @@ Change In Working Capital 164 M Change In Receivables 53 M -331 M 0 0 0 Inventory -613 M -548 M -165 M 549 M -1.287 B Accounts Payable -51 M 451 M 406 M 653 M 719 M -Other Working Capital 775 M 1.183 B -139 M 363 M 1.601 B -Other Non Cash Items 514 M 1.327 B 790 M -69 M 252 M +Other Working Capital 775 M 1.183 B -113 M 165 M 730 M +Other Non Cash Items 139 M 784 M 254 M -91 M 159 M Net Cash Provided By Operating Activities 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B -Investments In Property Plant And Equipment -1.436 B -852 M 0 0 0 -Acquisitions Net 0 -1.346 B -47 M -2.145 B -13.996 B +Investments In Property Plant And Equipment 0 -852 M -602 M -748 M -1.077 B +Acquisitions Net -63 M -1.377 B -47 M -2.145 B -13.996 B Purchases Of Investments 0 0 0 0 0 Sales Maturities Of Investments 0 0 0 0 0 -Other Investing Activities 438 M 387 M -1.107 B 69 M -890 M +Other Investing Activities -935 M -434 M -1.107 B -213 M -1.683 B Cash Flow From Investment -998 M -1.811 B -1.154 B -2.358 B -15.679 B Debt Repayment -2.484 B -5.351 B -4.114 B -3.042 B -7.519 B Common Stock Issued 0 0 0 0 0 Common Stock Repurchased 0 0 0 -775 M -209 M Dividends Paid -6.885 B -7.161 B -7.364 B -7.580 B -7.812 B -Other Financing Activities -282 M 4.451 B 2.982 B -580 M -2.349 B +Other Financing Activities -282 M 4.451 B 2.982 B -580 M 19.346 B Cash Flow From Financing -9.651 B -8.061 B -8.496 B -11.977 B 3.806 B Change In Exchange Rate -685 M 27 M 258 M -417 M -213 M -Net Change In Cash -1.856 B 245 M 420 M -11.977 B 3.806 B +Net Change In Cash -1.856 B 245 M 420 M -2.785 B -1.283 B Cash At End Of Period 6.620 B 6.865 B 7.285 B 4.500 B 3.217 B Cash At Beginning Of Period 8.476 B 6.620 B 6.865 B 7.285 B 4.500 B Operating Cash Flow 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt index 8609dcce39cf..03b4943f7d91 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt @@ -1,3 +1,3 @@ - 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-03-07 -Stock price 74.480 84.330 79.650 103.520 98.500 -DCF 78.720 88.742 84.326 106.408 100.560 + 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-05-02 +Stock price 74.480 84.330 79.650 103.520 96.980 +DCF 78.720 88.742 84.326 106.408 99.040 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt index f03cab7859b2..17b882f78de4 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt @@ -1,56 +1,56 @@ Fiscal Date Ending 2018 2019 2020 2021 2022 Period FY FY FY FY FY -Current ratio 1.131 1.089 1.096 0.920 1.905 -Quick ratio 0.591 0.562 0.563 0.438 1.905 -Cash ratio 0.384 0.364 0.371 0.233 1.905 -Days of sales outstanding 43.911 45.519 47.842 45.792 0 -Days of inventory outstanding 298.704 320.629 365.839 317.328 0 -Operating cycle 342.615 366.149 413.681 363.120 0 -Days of payables outstanding 70.164 79.819 106.040 121.218 0 -Cash conversion cycle 272.452 286.330 307.640 241.902 0 +Current ratio 1.131 1.089 1.096 0.920 0.718 +Quick ratio 0.591 0.562 0.563 0.438 0.291 +Cash ratio 0.384 0.364 0.371 0.233 0.117 +Days of sales outstanding 43.911 45.519 47.842 45.792 54.655 +Days of inventory outstanding 298.704 320.629 365.839 317.328 316.470 +Operating cycle 342.615 366.149 413.681 363.120 371.125 +Days of payables outstanding 70.164 79.819 106.040 121.218 130.481 +Cash conversion cycle 272.452 286.330 307.640 241.902 240.644 Gross profit margin 0.637 0.647 0.667 0.681 0.641 -Operating profit margin 0.384 0.353 0.407 0.409 0.385 +Operating profit margin 0.384 0.353 0.407 0.413 0.386 Pretax profit margin 0.360 0.331 0.382 0.389 0.366 Net profit margin 0.267 0.241 0.281 0.290 0.285 Effective tax rate 0.229 0.232 0.217 0.218 0.193 -Return on assets 0.199 0.168 0.180 0.221 0.222 -Return on equity -0.635 -0.621 -0.641 -0.901 -0.990 -Return on capital employed 0.503 0.438 0.463 0.584 0.322 +Return on assets 0.199 0.168 0.180 0.221 0.147 +Return on equity -0.635 -0.621 -0.641 -0.901 -1.010 +Return on capital employed 0.503 0.438 0.463 0.589 0.357 Net income per EBT 0.741 0.728 0.736 0.745 0.778 -Ebt per ebit 0.938 0.937 0.939 0.951 0.952 -Ebit per revenue 0.384 0.353 0.407 0.409 0.385 -Debt ratio 1.270 1.224 1.237 1.199 1.182 -Debt equity ratio -4.057 -4.533 -4.412 -4.898 -5.266 -Long term debt to capitalization 1.858 1.768 1.806 1.689 1.724 -Total debt to capitalization 1.646 1.595 1.663 1.571 1.592 -Interest coverage 13.306 13.230 16.027 17.449 15.914 -Cash flow to debt ratio 0.298 0.325 0.311 0.430 0.440 -Company equity multiplier -3.195 -3.703 -3.566 -4.086 -4.456 -Receivables turnover 8.312 8.019 7.629 7.971 0 -Payables turnover 5.202 4.573 3.442 3.011 0 -Inventory turnover 1.222 1.138 0.998 1.150 0 -Fixed asset turnover 4.114 4.495 4.508 5.092 5.662 -Asset turnover 0.744 0.695 0.640 0.761 0.780 +Ebt per ebit 0.938 0.937 0.939 0.943 0.950 +Ebit per revenue 0.384 0.353 0.407 0.413 0.386 +Debt ratio 1.270 1.224 1.237 1.199 1.102 +Debt equity ratio -2.549 -2.682 -2.509 -2.751 -4.814 +Long term debt to capitalization 1.858 1.768 1.806 1.689 1.346 +Total debt to capitalization 1.646 1.595 1.663 1.571 1.262 +Interest coverage 13.306 18.475 18.880 17.605 15.945 +Cash flow to debt ratio 0.298 0.325 0.311 0.430 0.251 +Company equity multiplier -3.195 -3.703 -3.566 -4.086 -6.886 +Receivables turnover 8.312 8.019 7.629 7.971 6.678 +Payables turnover 5.202 4.573 3.442 3.011 2.797 +Inventory turnover 1.222 1.138 0.998 1.150 1.153 +Fixed asset turnover 4.114 4.495 4.508 5.092 4.734 +Asset turnover 0.744 0.695 0.640 0.761 0.515 Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 3.448 +Cash per share 4.240 4.412 4.676 2.886 2.060 Payout ratio 0.870 0.997 0.914 0.832 0.863 Operating cash flow sales ratio 0.320 0.339 0.342 0.381 0.340 Free cash flow operating cash flow ratio 0.848 0.916 0.939 0.937 0.900 -Cash flow coverage ratios 0.298 0.325 0.311 0.430 0.440 -Short term coverage ratios 1.981 2.299 2.913 3.959 3.834 +Cash flow coverage ratios 0.298 0.325 0.311 0.430 0.251 +Short term coverage ratios 1.981 2.299 2.913 3.959 1.310 Capital expenditure coverage ratio -6.600 -11.843 -16.299 -15.999 -10.031 Dividend paid and capex coverage ratio 1.739 1.599 1.451 1.752 1.604 Dividend payout ratio 0.870 0.997 0.914 0.832 0.863 -Price book value ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Price to book ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Price to sales ratio 3.504 4.439 4.492 4.713 4.069 -Price earnings ratio 13.122 18.415 16.001 16.249 14.285 -Price to free cash flows ratio 12.909 14.323 13.996 13.193 13.289 -Price to operating cash flows ratio 10.953 13.113 13.137 12.368 11.964 -Price cash flow ratio 10.953 13.113 13.137 12.368 11.964 -Price earnings to growth ratio 0.424 -1.990 1.341 1.251 -41.639 -Price sales ratio 3.504 4.439 4.492 4.713 4.069 -Dividend yield 0.066 0.054 0.057 0.051 0.060 -Enterprise value multiple 10.572 13.926 12.614 12.266 10.923 -Price fair value -8.332 -11.429 -10.257 -14.646 -14.145 +Price book value ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Price to book ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Price to sales ratio 3.504 4.439 4.492 4.713 4.961 +Price earnings ratio 13.122 18.415 16.001 16.249 17.416 +Price to free cash flows ratio 12.909 14.323 13.996 13.193 16.202 +Price to operating cash flows ratio 10.953 13.113 13.137 12.368 14.587 +Price cash flow ratio 10.953 13.113 13.137 12.368 14.587 +Price earnings to growth ratio 0.425 -1.953 1.341 1.215 -25.472 +Price sales ratio 3.504 4.439 4.492 4.713 4.961 +Dividend yield 0.066 0.054 0.057 0.051 0.050 +Enterprise value multiple 10.572 14.893 13.154 12.676 14.907 +Price fair value -8.332 -11.429 -10.257 -14.646 -17.593 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt index 2e454e454507..2402852db046 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt @@ -2,11 +2,11 @@ Fiscal Date Ending 2018 2019 2020 2021 Period FY FY FY FY FY Revenue growth 0.031 0.006 -0.037 0.094 0.011 Gross profit growth 0.030 0.023 -0.009 0.118 -0.047 -Ebitgrowth -0.011 -0.074 0.108 0.102 -0.050 -Operating income growth -0.011 -0.074 0.108 0.102 -0.050 +Ebitgrowth -0.011 -0.074 0.108 0.112 -0.056 +Operating income growth -0.011 -0.074 0.108 0.112 -0.056 Net income growth 0.311 -0.092 0.121 0.131 -0.007 -Epsgrowth 0.309 -0.093 0.119 0.130 -0.003 -Epsdiluted growth 0.309 -0.093 0.119 0.130 -0.003 +Epsgrowth 0.308 -0.094 0.119 0.134 -0.007 +Epsdiluted growth 0.308 -0.094 0.119 0.132 -0.005 Weighted average shares growth 0.002 0 0.001 0.001 -0.001 Weighted average shares diluted growth 0.001 0.001 0.001 0.001 -0.001 Dividendsper share growth 0.054 0.040 0.027 0.029 0.031 @@ -21,16 +21,16 @@ Three y operating c f growth per share 0.200 0.246 0.097 0.260 Ten y net income growth per share 0.527 0.416 0.311 0.175 0.117 Five y net income growth per share -0.038 -0.034 0.166 0.302 0.494 Three y net income growth per share 0.147 0.029 0.331 0.149 0.258 -Ten y shareholders equity growth per share -3.209 -3.531 -5.234 -49.887 -1.857 -Five y shareholders equity growth per share -0.673 0.077 0.056 0.207 0.246 -Three y shareholders equity growth per share 0.063 0.090 -0.036 0.190 0.212 +Ten y shareholders equity growth per share -3.209 -3.531 -5.234 -49.887 -1.800 +Five y shareholders equity growth per share -0.673 0.077 0.056 0.207 0.261 +Three y shareholders equity growth per share 0.063 0.090 -0.036 0.190 0.227 Ten y dividendper share growth per share 0.803 1.068 0.966 0.754 0.571 Five y dividendper share growth per share 0.256 0.195 0.172 0.183 0.194 Three y dividendper share growth per share 0.097 0.120 0.126 0.099 0.090 -Receivables growth -0.047 0.043 0.012 0.048 -1 -Inventory growth -0.000 0.049 0.039 -0.091 -1 -Asset growth -0.074 0.077 0.045 -0.079 -0.014 -Book valueper share growth -0.029 0.071 -0.084 0.196 0.095 -Debt growth -0.075 -0.022 0.016 -0.118 -0.116 +Receivables growth -0.047 0.043 0.012 0.048 0.207 +Inventory growth -0.000 0.049 0.039 -0.091 0.134 +Asset growth -0.074 0.077 0.045 -0.079 0.494 +Book valueper share growth -0.029 0.071 -0.084 0.196 0.113 +Debt growth -0.075 -0.022 0.016 -0.118 0.551 Rdexpense growth 0 0 0 0 0 Sgaexpenses growth 0.108 0.179 -0.148 0.125 -0.033 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt index fab4659ecdb2..f1bffd71384e 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt @@ -10,27 +10,27 @@ Cost Of Revenue 10.758 B 10.513 B Gross Profit 18.867 B 19.292 B 19.125 B 21.375 B 20.360 B Gross Profit Ratio 0.637 0.647 0.667 0.681 0.641 Research And Development Expenses 0 0 0 0 0 -General And Administrative Expenses 7.449 B 8.784 B 97 M 8.419 B 8.138 B -Selling And Marketing Expenses 0 0 7.384 B 8.304 B 0 +General And Administrative Expenses 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B +Selling And Marketing Expenses 7.408 B 8.695 B 7.384 B 8.304 B 0 Selling General And Administrative 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B -Other Expenses 82 M 66 M 73 M 0 0 +Other Expenses 82 M 66 M 73 M 96 M 0 Operating Expenses 7.531 B 8.850 B 7.554 B 8.515 B 8.138 B Costs And Expenses 18.289 B 19.363 B 17.123 B 18.545 B 19.540 B Interest Income 190 M 226 M 110 M 109 M 180 M -Interest Expense 855 M 796 M 728 M 737 M 768 M -Depreciation And Amortization 989 M 964 M 981 M 998 M 1.189 B -Ebitda 12.200 B 11.238 B 12.142 B 13.967 B 13.591 B -Ebitda Ratio 0.412 0.377 0.423 0.445 0.428 -Operating Income 11.377 B 10.531 B 11.668 B 12.860 B 12.222 B -Operating Income Ratio 0.384 0.353 0.407 0.389 0.366 -Non Operating Income Loss -706 M -659 M -715 M 0 0 +Interest Expense 855 M 570 M 618 M 737 M 768 M +Depreciation And Amortization 989 M -23 M -24 M 540 M 1.003 B +Ebitda 12.200 B 10.508 B 11.644 B 13.515 B 13.249 B +Ebitda Ratio 0.412 0.353 0.406 0.430 0.417 +Operating Income 11.377 B 10.531 B 11.668 B 12.975 B 12.246 B +Operating Income Ratio 0.384 0.353 0.407 0.413 0.386 +Non Operating Income Loss -41 M -659 M -715 M -743 M -612 M Income Before Tax 10.671 B 9.872 B 10.953 B 12.232 B 11.634 B Income Before Tax Ratio 0.360 0.331 0.382 0.389 0.366 Income Tax Expense 2.445 B 2.293 B 2.377 B 2.671 B 2.244 B Net Income 7.911 B 7.185 B 8.056 B 9.109 B 9.048 B Net Income Ratio 0.267 0.241 0.281 0.290 0.285 -Basic Earnings Per Share 5.080 4.610 5.160 5.830 5.810 -Diluted Earnings Per Share 5.080 4.610 5.160 5.830 5.810 +Basic Earnings Per Share 5.090 4.610 5.160 5.850 5.810 +Diluted Earnings Per Share 5.090 4.610 5.160 5.840 5.810 Basic Average Shares 1.555 B 1.555 B 1.557 B 1.558 B 1.557 B Diluted Average Shares 1.555 B 1.556 B 1.558 B 1.559 B 1.557 B Final Link diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt index a436f4d4d85e..d03ee1a302d6 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt @@ -4,56 +4,56 @@ Revenue per share 19.051 19.167 18.429 Net income per share 5.087 4.621 5.174 5.847 5.811 Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 3.448 -Book value per share -8.012 -7.445 -8.071 -6.487 -5.868 -Tangible book value per share -12.994 -11.299 -11.955 -11.365 -10.118 -Shareholders equity per share -8.012 -7.445 -8.071 -6.487 -5.868 -Interest debt per share 20.974 20.477 20.722 18.320 16.280 -Market cap 103.812 B 132.315 B 128.904 B 148.010 B 129.247 B -Enterprise value 128.978 B 156.499 B 153.160 B 171.320 B 148.459 B -Pe ratio 13.122 18.415 16.001 16.249 14.285 -Price to sales ratio 3.504 4.439 4.492 4.713 4.069 -Pocfratio 10.953 13.113 13.137 12.368 11.964 -Pfcf ratio 12.909 14.323 13.996 13.193 13.289 -Pb ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Ptb ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Ev to sales 4.354 5.251 5.338 5.455 4.674 -Enterprise value over EBITDA 10.572 13.926 12.614 12.266 10.923 -Ev to operating cash flow 13.608 15.510 15.609 14.316 13.742 -Ev to free cash flow 16.038 16.941 16.630 15.271 15.264 -Earnings yield 0.076 0.054 0.062 0.062 0.070 -Free cash flow yield 0.077 0.070 0.071 0.076 0.075 -Debt to equity -4.057 -4.533 -4.412 -4.898 -5.266 -Debt to assets 1.270 1.224 1.237 1.199 1.182 -Net debt to EBITDA 2.063 2.152 1.998 1.669 1.414 -Current ratio 1.131 1.089 1.096 0.920 1.905 -Interest coverage 13.306 13.230 16.027 17.449 15.914 -Income quality 1.198 1.404 1.218 1.232 1.134 -Dividend yield 0.066 0.054 0.057 0.051 0.060 +Cash per share 4.240 4.412 4.676 2.886 2.060 +Book value per share -8.012 -7.445 -8.071 -6.487 -5.753 +Tangible book value per share -12.994 -11.299 -11.955 -11.365 -21.001 +Shareholders equity per share -8.012 -7.445 -8.071 -6.487 -5.753 +Interest debt per share 20.974 20.331 20.651 18.320 28.189 +Market cap 103.812 B 132.315 B 128.904 B 148.010 B 157.584 B +Enterprise value 128.978 B 156.499 B 153.160 B 171.320 B 197.500 B +Pe ratio 13.122 18.415 16.001 16.249 17.416 +Price to sales ratio 3.504 4.439 4.492 4.713 4.961 +Pocfratio 10.953 13.113 13.137 12.368 14.587 +Pfcf ratio 12.909 14.323 13.996 13.193 16.202 +Pb ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Ptb ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Ev to sales 4.354 5.251 5.338 5.455 6.218 +Enterprise value over EBITDA 10.572 14.893 13.154 12.676 14.907 +Ev to operating cash flow 13.608 15.510 15.609 14.316 18.282 +Ev to free cash flow 16.038 16.941 16.630 15.271 20.306 +Earnings yield 0.076 0.054 0.062 0.062 0.057 +Free cash flow yield 0.077 0.070 0.071 0.076 0.062 +Debt to equity -4.057 -4.533 -4.412 -4.898 -7.591 +Debt to assets 1.270 1.224 1.237 1.199 1.102 +Net debt to EBITDA 2.063 2.301 2.083 1.725 3.013 +Current ratio 1.131 1.089 1.096 0.920 0.718 +Interest coverage 13.306 18.475 18.880 17.605 15.945 +Income quality 1.144 1.306 1.142 1.232 1.134 +Dividend yield 0.066 0.054 0.057 0.051 0.050 Payout ratio 0.870 0.997 0.914 0.832 0.863 -Sales general and administrative to revenue 0.251 0.295 0.003 0.268 0.256 +Sales general and administrative to revenue 0.251 0.295 0.261 0.268 0.256 Research and ddevelopement to revenue 0 0 0 0 0 -Intangibles to total assets 0.238 0.186 0.178 0.230 0.205 +Intangibles to total assets 0.238 0.186 0.178 0.230 0.428 Capex to operating cash flow -0.152 -0.084 -0.061 -0.063 -0.100 Capex to revenue -0.048 -0.029 -0.021 -0.024 -0.034 Capex to depreciation -1.452 -0.884 -0.614 -0.749 -0.906 Stock based compensation to revenue 0 0 0 0 0 -Graham number 30.284 27.821 30.653 29.211 27.700 -Roic 0.503 0.438 0.463 0.584 0.322 -Return on tangible assets 0.261 0.206 0.219 0.287 0.280 -Graham net net -23.712 -24.571 -26.044 -24.189 -27.458 -Working capital 2.251 B 1.681 B 1.877 B -1.538 B 2.550 B -Tangible asset value -20.206 B -17.570 B -18.614 B -17.706 B -15.754 B -Net current asset value -31.098 B -31.960 B -33.954 B -31.781 B -42.752 B -Invested capital -2.549 -2.682 -2.509 -2.751 -2.690 -Average receivables 3.651 B 3.640 B 3.739 B 3.850 B 1.970 B -Average payables 2.155 B 2.183 B 2.539 B 3.055 B 1.665 B -Average inventory 8.805 B 9.020 B 9.413 B 9.155 B 4.360 B -Days sales outstanding 43.911 45.519 47.842 45.792 0 -Days payables outstanding 70.164 79.819 106.040 121.218 0 -Days of inventory on hand 298.704 320.629 365.839 317.328 0 -Receivables turnover 8.312 8.019 7.629 7.971 0 -Payables turnover 5.202 4.573 3.442 3.011 0 -Inventory turnover 1.222 1.138 0.998 1.150 0 -Roe -0.635 -0.621 -0.641 -0.901 -0.990 +Graham number 30.284 27.821 30.653 29.211 27.426 +Roic 0.357 0.301 0.333 0.350 0.193 +Return on tangible assets 0.261 0.206 0.219 0.287 0.256 +Graham net net -23.712 -24.571 -26.044 -24.189 -36.143 +Working capital 2.251 B 1.681 B 1.877 B -1.538 B -7.717 B +Tangible asset value -20.206 B -17.570 B -18.614 B -17.706 B -32.698 B +Net current asset value -31.098 B -31.960 B -33.954 B -31.781 B -48.373 B +Invested capital -2.549 -2.682 -2.509 -2.751 -4.814 +Average receivables 3.651 B 3.640 B 3.739 B 3.850 B 4.348 B +Average payables 2.155 B 2.183 B 2.539 B 3.055 B 3.704 B +Average inventory 8.805 B 9.020 B 9.413 B 9.155 B 9.303 B +Days sales outstanding 43.911 45.519 47.842 45.792 54.655 +Days payables outstanding 70.164 79.819 106.040 121.218 130.481 +Days of inventory on hand 298.704 320.629 365.839 317.328 316.470 +Receivables turnover 8.312 8.019 7.629 7.971 6.678 +Payables turnover 5.202 4.573 3.442 3.011 2.797 +Inventory turnover 1.222 1.138 0.998 1.150 1.153 +Roe -0.635 -0.621 -0.641 -0.901 -1.010 Capex per share -0.923 -0.548 -0.387 -0.480 -0.692 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].txt index 2449fae403a2..d7a175d12f2d 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_profile-kwargs_dict0].txt @@ -1,12 +1,16 @@ - 0 + +Image: https://financialmodelingprep.com/image-stock/PM.png + +Description: Philip Morris International Inc. operates as a tobacco company working to delivers a smoke-free future and evolving portfolio for the long-term to include products outside of the tobacco and nicotine sector. The company's product portfolio primarily consists of cigarettes and smoke-free products, including heat-not-burn, vapor, and oral nicotine products that are sold in markets outside the United States. The company offers its smoke-free products under the HEETS, HEETS Creations, HEETS Dimensions, HEETS Marlboro, HEETS FROM MARLBORO, Marlboro Dimensions, Marlboro HeatSticks, Parliament HeatSticks, and TEREA brands, as well as the KT&G-licensed brands, Fiit, and Miix. It also sells its products under the Marlboro, Parliament, Bond Street, Chesterfield, L&M, Lark, and Philip Morris brands. In addition, the company owns various cigarette brands, such as Dji Sam Soe, Sampoerna A, and Sampoerna U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York. + symbol PM -price 98.5 -beta 0.709205 -volAvg 4480064 -mktCap 152697656576 -lastDiv 5.04 +price 96.98 +beta 0.704152 +volAvg 4389060 +mktCap 150532349793 +lastDiv 5.08 range 82.85-109.81 -changes -1.6 +changes -2.37 companyName Philip Morris International Inc. currency USD cik 0001413329 @@ -16,10 +20,10 @@ exchange New York Stock Exchange exchangeShortName NYSE industry Tobacco website https://www.pmi.com -ceo Mr. Andre Calantzopoulos +ceo Mr. Jacek Olczak sector Consumer Defensive country US -fullTimeEmployees 69600 +fullTimeEmployees 79800 phone 917 663 2000 address 120 Park Avenue city New York @@ -34,7 +38,3 @@ isActivelyTrading True isAdr False isFund False -Image: https://financialmodelingprep.com/image-stock/PM.png - -Description: Philip Morris International Inc. operates as a tobacco company working to delivers a smoke-free future and evolving portfolio for the long-term to include products outside of the tobacco and nicotine sector. The company's product portfolio primarily consists of cigarettes and smoke-free products, including heat-not-burn, vapor, and oral nicotine products that are sold in markets outside the United States. The company offers its smoke-free products under the HEETS, HEETS Creations, HEETS Dimensions, HEETS Marlboro, HEETS FROM MARLBORO, Marlboro Dimensions, Marlboro HeatSticks, Parliament HeatSticks, and TEREA brands, as well as the KT&G-licensed brands, Fiit, and Miix. It also sells its products under the Marlboro, Parliament, Bond Street, Chesterfield, L&M, Lark, and Philip Morris brands. In addition, the company owns various cigarette brands, such as Dji Sam Soe, Sampoerna A, and Sampoerna U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York. - diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt index 1f79af8d3fad..754bc70841ca 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt @@ -1,61 +1,61 @@ Fiscal Date Ending 2018 2019 2020 2021 2022 Reported Currency USD USD USD USD USD Cik 0001413329 0001413329 0001413329 0001413329 0001413329 -Filing Date 2019-02-07 00:00:00 2020-02-07 00:00:00 2021-02-09 00:00:00 2022-02-11 00:00:00 2022-10-27 00:00:00 -Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2022-10-27 08:17:59 +Filing Date 2019-02-07 00:00:00 2020-02-07 00:00:00 2021-02-09 00:00:00 2022-02-11 00:00:00 2023-02-10 00:00:00 +Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Cash And Cash Equivalents 6.593 B 6.861 B 7.280 B 4.496 B 5.368 B +Cash And Cash Equivalents 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B Short Term Investments 0 0 0 0 0 -Cash And Short Term Investments 6.593 B 6.861 B 7.280 B 4.496 B 5.368 B -Net Receivables 3.564 B 3.717 B 3.761 B 3.940 B 0 -Inventory 8.804 B 9.235 B 9.591 B 8.720 B 0 -Other Current Assets 481 M 701 M 860 M 561 M 0 -Total Current Assets 19.442 B 20.514 B 21.492 B 17.717 B 5.368 B -Property Plant Equipment 7.201 B 6.631 B 6.365 B 6.168 B 5.610 B -Goodwill 7.189 B 5.858 B 5.964 B 6.680 B 6.127 B -Intangible Assets Excluding Goodwill 2.278 B 2.113 B 2.019 B 2.818 B 2.224 B -Intangible Assets 9.467 B 7.971 B 7.983 B 9.498 B 8.351 B -Long Term Investments 1.269 B 4.635 B 4.798 B 4.463 B 4.087 B -Tax Assets 977 M 1.153 B 1.410 B 895 M 0 -Other Non Currrent Assets 1.445 B 1.971 B 2.767 B 2.549 B 0 -Total Non Current Assets 20.359 B 22.361 B 23.323 B 23.573 B 18.048 B -Other Assets 0 0 0 0 17.301 B -Total Assets 39.801 B 42.875 B 44.815 B 41.290 B 40.717 B -Current Accounts Payable 2.068 B 2.299 B 2.780 B 3.331 B 0 -Current Debt 4.784 B 4.389 B 3.368 B 3.023 B 2.818 B -Tax Payables 0 0 7.494 B 7.349 B 0 +Cash And Short Term Investments 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B +Net Receivables 3.564 B 3.717 B 3.761 B 3.940 B 4.756 B +Inventory 8.804 B 9.235 B 9.591 B 8.720 B 9.886 B +Other Current Assets 481 M 13.653 B 14.212 B 561 M 1.770 B +Total Current Assets 19.442 B 20.514 B 21.492 B 17.717 B 19.619 B +Property Plant Equipment 7.201 B 6.631 B 6.365 B 6.168 B 6.710 B +Goodwill 7.189 B 5.858 B 5.964 B 6.680 B 19.655 B +Intangible Assets Excluding Goodwill 2.278 B 2.113 B 2.019 B 2.818 B 6.732 B +Intangible Assets 9.467 B 7.971 B 7.983 B 9.498 B 26.387 B +Long Term Investments 1.269 B 4.635 B 4.798 B 4.463 B 4.431 B +Tax Assets 977 M 1.153 B 1.410 B 895 M 603 M +Other Non Currrent Assets 1.445 B 1.971 B 2.767 B 2.549 B 3.931 B +Total Non Current Assets 20.359 B 22.361 B 23.323 B 23.573 B 42.062 B +Other Assets 0 0 0 0 0 +Total Assets 39.801 B 42.875 B 44.815 B 41.290 B 61.681 B +Current Accounts Payable 2.068 B 2.299 B 2.780 B 3.331 B 4.076 B +Current Debt 4.784 B 4.389 B 3.368 B 3.023 B 8.248 B +Tax Payables 5.664 B 6.633 B 7.494 B 7.349 B 8.480 B Deferred Revenue 0 0 0 0 0 -Other Non Current Liabilities 10.339 B 12.145 B 5.973 B 16.232 B 0 -Total Current Liabilities 17.191 B 18.833 B 19.615 B 19.255 B 2.818 B -Long Term Debt Non Current 26.975 B 26.656 B 28.168 B 24.783 B 21.762 B +Other Non Current Liabilities 10.339 B 12.145 B 13.467 B 12.901 B 15.012 B +Total Current Liabilities 17.191 B 18.833 B 19.615 B 19.255 B 27.336 B +Long Term Debt Non Current 26.975 B 26.656 B 28.168 B 24.783 B 34.875 B Deferred Revenue Non Current 0 0 0 0 0 -Deferred Tax Liabilities 898 M 908 M 684 M 726 M 923 M -Other Non Current Liabilities 5.476 B 6.077 B 6.979 B 4.734 B 22.617 B -Total Non Current Liabilities 33.349 B 33.641 B 35.831 B 30.243 B 45.302 B +Deferred Tax Liabilities 898 M 908 M 684 M 726 M 1.956 B +Other Non Current Liabilities 5.476 B 26.953 B 29.683 B 23.889 B 28.332 B +Total Non Current Liabilities 33.349 B 33.641 B 35.831 B 30.243 B 40.656 B Other Liabilities 0 0 0 0 0 Capital Lease Obligations 0 0 0 0 0 -Total Liabilities 50.540 B 52.474 B 55.446 B 49.498 B 48.120 B +Total Liabilities 50.540 B 52.474 B 55.446 B 49.498 B 67.992 B Preferred Stock 0 0 0 0 0 Common Stock 0 0 0 0 0 -Retained Earnings 31.014 B 30.987 B 31.638 B 33.082 B 0 -Accumulated Other Comprehensive Income -10.111 B -9.363 B -11.181 B -9.577 B 0 -Other Total Stockholders Equity -33.362 B -33.201 B -33.024 B 0 0 -Total Shareholder Equity -12.459 B -11.577 B -12.567 B -10.106 B -9.137 B -Equity -12.459 B -11.577 B -12.567 B -10.106 B -9.137 B -Total Liabilities And Stockholders Equity 38.081 B 40.897 B 42.879 B 49.498 B 38.983 B +Retained Earnings 31.014 B 30.987 B 31.638 B 33.082 B 34.289 B +Accumulated Other Comprehensive Income -10.111 B -9.363 B -11.181 B -9.577 B -9.559 B +Other Total Stockholders Equity -33.362 B -33.201 B -33.024 B -33.611 B -33.687 B +Total Shareholder Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B +Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B +Total Liabilities And Stockholders Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B Equity Attributable To Non Controlling Interest 0 0 0 0 0 -Liabilities And Equity 38.081 B 40.897 B 42.879 B 49.498 B 38.983 B -Total Investments 0 0 0 0 0 -Total Debt 31.759 B 31.045 B 31.536 B 27.806 B 24.580 B -Net Debt 25.166 B 24.184 B 24.256 B 23.310 B 19.212 B +Liabilities And Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B +Total Investments 0 4.635 B 4.798 B 4.463 B 4.431 B +Total Debt 31.759 B 31.045 B 31.536 B 27.806 B 43.123 B +Net Debt 25.166 B 24.184 B 24.256 B 23.310 B 39.916 B Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm 2019 https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/pm123119form10kwrapinc.htm 2020 https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/pm-20201231.htm 2021 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm -2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/pm-20220930.htm +2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm Link Fiscal Date Ending @@ -63,5 +63,5 @@ Fiscal Date Ending 2019 https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm 2020 https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm 2021 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm -2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/0001413329-22-000114-index.htm +2022 https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt index 902a13d20a2f..6d5c5b908b81 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt @@ -5,7 +5,7 @@ Filling Date 2019-02-07 00:00:00 2020-02-07 00: Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Net Income 7.911 B 7.185 B 8.056 B 9.710 B 9.527 B +Net Income 8.286 B 7.728 B 8.592 B 9.710 B 9.527 B Depreciation And Amortization 989 M 964 M 981 M 998 M 1.189 B Deferred Income Taxes -100 M -141 M -143 M -17 M -234 M Stock Based Compensation 0 0 0 0 0 @@ -13,23 +13,23 @@ Change In Working Capital 164 M Change In Receivables 53 M -331 M 0 0 0 Inventory -613 M -548 M -165 M 549 M -1.287 B Accounts Payable -51 M 451 M 406 M 653 M 719 M -Other Working Capital 775 M 1.183 B -139 M 363 M 1.601 B -Other Non Cash Items 514 M 1.327 B 790 M -69 M 252 M +Other Working Capital 775 M 1.183 B -113 M 165 M 730 M +Other Non Cash Items 139 M 784 M 254 M -91 M 159 M Net Cash Provided By Operating Activities 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B -Investments In Property Plant And Equipment -1.436 B -852 M 0 0 0 -Acquisitions Net 0 -1.346 B -47 M -2.145 B -13.996 B +Investments In Property Plant And Equipment 0 -852 M -602 M -748 M -1.077 B +Acquisitions Net -63 M -1.377 B -47 M -2.145 B -13.996 B Purchases Of Investments 0 0 0 0 0 Sales Maturities Of Investments 0 0 0 0 0 -Other Investing Activities 438 M 387 M -1.107 B 69 M -890 M +Other Investing Activities -935 M -434 M -1.107 B -213 M -1.683 B Cash Flow From Investment -998 M -1.811 B -1.154 B -2.358 B -15.679 B Debt Repayment -2.484 B -5.351 B -4.114 B -3.042 B -7.519 B Common Stock Issued 0 0 0 0 0 Common Stock Repurchased 0 0 0 -775 M -209 M Dividends Paid -6.885 B -7.161 B -7.364 B -7.580 B -7.812 B -Other Financing Activities -282 M 4.451 B 2.982 B -580 M -2.349 B +Other Financing Activities -282 M 4.451 B 2.982 B -580 M 19.346 B Cash Flow From Financing -9.651 B -8.061 B -8.496 B -11.977 B 3.806 B Change In Exchange Rate -685 M 27 M 258 M -417 M -213 M -Net Change In Cash -1.856 B 245 M 420 M -11.977 B 3.806 B +Net Change In Cash -1.856 B 245 M 420 M -2.785 B -1.283 B Cash At End Of Period 6.620 B 6.865 B 7.285 B 4.500 B 3.217 B Cash At Beginning Of Period 8.476 B 6.620 B 6.865 B 7.285 B 4.500 B Operating Cash Flow 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt index 8609dcce39cf..03b4943f7d91 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt @@ -1,3 +1,3 @@ - 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-03-07 -Stock price 74.480 84.330 79.650 103.520 98.500 -DCF 78.720 88.742 84.326 106.408 100.560 + 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-05-02 +Stock price 74.480 84.330 79.650 103.520 96.980 +DCF 78.720 88.742 84.326 106.408 99.040 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt index f03cab7859b2..17b882f78de4 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt @@ -1,56 +1,56 @@ Fiscal Date Ending 2018 2019 2020 2021 2022 Period FY FY FY FY FY -Current ratio 1.131 1.089 1.096 0.920 1.905 -Quick ratio 0.591 0.562 0.563 0.438 1.905 -Cash ratio 0.384 0.364 0.371 0.233 1.905 -Days of sales outstanding 43.911 45.519 47.842 45.792 0 -Days of inventory outstanding 298.704 320.629 365.839 317.328 0 -Operating cycle 342.615 366.149 413.681 363.120 0 -Days of payables outstanding 70.164 79.819 106.040 121.218 0 -Cash conversion cycle 272.452 286.330 307.640 241.902 0 +Current ratio 1.131 1.089 1.096 0.920 0.718 +Quick ratio 0.591 0.562 0.563 0.438 0.291 +Cash ratio 0.384 0.364 0.371 0.233 0.117 +Days of sales outstanding 43.911 45.519 47.842 45.792 54.655 +Days of inventory outstanding 298.704 320.629 365.839 317.328 316.470 +Operating cycle 342.615 366.149 413.681 363.120 371.125 +Days of payables outstanding 70.164 79.819 106.040 121.218 130.481 +Cash conversion cycle 272.452 286.330 307.640 241.902 240.644 Gross profit margin 0.637 0.647 0.667 0.681 0.641 -Operating profit margin 0.384 0.353 0.407 0.409 0.385 +Operating profit margin 0.384 0.353 0.407 0.413 0.386 Pretax profit margin 0.360 0.331 0.382 0.389 0.366 Net profit margin 0.267 0.241 0.281 0.290 0.285 Effective tax rate 0.229 0.232 0.217 0.218 0.193 -Return on assets 0.199 0.168 0.180 0.221 0.222 -Return on equity -0.635 -0.621 -0.641 -0.901 -0.990 -Return on capital employed 0.503 0.438 0.463 0.584 0.322 +Return on assets 0.199 0.168 0.180 0.221 0.147 +Return on equity -0.635 -0.621 -0.641 -0.901 -1.010 +Return on capital employed 0.503 0.438 0.463 0.589 0.357 Net income per EBT 0.741 0.728 0.736 0.745 0.778 -Ebt per ebit 0.938 0.937 0.939 0.951 0.952 -Ebit per revenue 0.384 0.353 0.407 0.409 0.385 -Debt ratio 1.270 1.224 1.237 1.199 1.182 -Debt equity ratio -4.057 -4.533 -4.412 -4.898 -5.266 -Long term debt to capitalization 1.858 1.768 1.806 1.689 1.724 -Total debt to capitalization 1.646 1.595 1.663 1.571 1.592 -Interest coverage 13.306 13.230 16.027 17.449 15.914 -Cash flow to debt ratio 0.298 0.325 0.311 0.430 0.440 -Company equity multiplier -3.195 -3.703 -3.566 -4.086 -4.456 -Receivables turnover 8.312 8.019 7.629 7.971 0 -Payables turnover 5.202 4.573 3.442 3.011 0 -Inventory turnover 1.222 1.138 0.998 1.150 0 -Fixed asset turnover 4.114 4.495 4.508 5.092 5.662 -Asset turnover 0.744 0.695 0.640 0.761 0.780 +Ebt per ebit 0.938 0.937 0.939 0.943 0.950 +Ebit per revenue 0.384 0.353 0.407 0.413 0.386 +Debt ratio 1.270 1.224 1.237 1.199 1.102 +Debt equity ratio -2.549 -2.682 -2.509 -2.751 -4.814 +Long term debt to capitalization 1.858 1.768 1.806 1.689 1.346 +Total debt to capitalization 1.646 1.595 1.663 1.571 1.262 +Interest coverage 13.306 18.475 18.880 17.605 15.945 +Cash flow to debt ratio 0.298 0.325 0.311 0.430 0.251 +Company equity multiplier -3.195 -3.703 -3.566 -4.086 -6.886 +Receivables turnover 8.312 8.019 7.629 7.971 6.678 +Payables turnover 5.202 4.573 3.442 3.011 2.797 +Inventory turnover 1.222 1.138 0.998 1.150 1.153 +Fixed asset turnover 4.114 4.495 4.508 5.092 4.734 +Asset turnover 0.744 0.695 0.640 0.761 0.515 Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 3.448 +Cash per share 4.240 4.412 4.676 2.886 2.060 Payout ratio 0.870 0.997 0.914 0.832 0.863 Operating cash flow sales ratio 0.320 0.339 0.342 0.381 0.340 Free cash flow operating cash flow ratio 0.848 0.916 0.939 0.937 0.900 -Cash flow coverage ratios 0.298 0.325 0.311 0.430 0.440 -Short term coverage ratios 1.981 2.299 2.913 3.959 3.834 +Cash flow coverage ratios 0.298 0.325 0.311 0.430 0.251 +Short term coverage ratios 1.981 2.299 2.913 3.959 1.310 Capital expenditure coverage ratio -6.600 -11.843 -16.299 -15.999 -10.031 Dividend paid and capex coverage ratio 1.739 1.599 1.451 1.752 1.604 Dividend payout ratio 0.870 0.997 0.914 0.832 0.863 -Price book value ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Price to book ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Price to sales ratio 3.504 4.439 4.492 4.713 4.069 -Price earnings ratio 13.122 18.415 16.001 16.249 14.285 -Price to free cash flows ratio 12.909 14.323 13.996 13.193 13.289 -Price to operating cash flows ratio 10.953 13.113 13.137 12.368 11.964 -Price cash flow ratio 10.953 13.113 13.137 12.368 11.964 -Price earnings to growth ratio 0.424 -1.990 1.341 1.251 -41.639 -Price sales ratio 3.504 4.439 4.492 4.713 4.069 -Dividend yield 0.066 0.054 0.057 0.051 0.060 -Enterprise value multiple 10.572 13.926 12.614 12.266 10.923 -Price fair value -8.332 -11.429 -10.257 -14.646 -14.145 +Price book value ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Price to book ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Price to sales ratio 3.504 4.439 4.492 4.713 4.961 +Price earnings ratio 13.122 18.415 16.001 16.249 17.416 +Price to free cash flows ratio 12.909 14.323 13.996 13.193 16.202 +Price to operating cash flows ratio 10.953 13.113 13.137 12.368 14.587 +Price cash flow ratio 10.953 13.113 13.137 12.368 14.587 +Price earnings to growth ratio 0.425 -1.953 1.341 1.215 -25.472 +Price sales ratio 3.504 4.439 4.492 4.713 4.961 +Dividend yield 0.066 0.054 0.057 0.051 0.050 +Enterprise value multiple 10.572 14.893 13.154 12.676 14.907 +Price fair value -8.332 -11.429 -10.257 -14.646 -17.593 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt index 2e454e454507..2402852db046 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt @@ -2,11 +2,11 @@ Fiscal Date Ending 2018 2019 2020 2021 Period FY FY FY FY FY Revenue growth 0.031 0.006 -0.037 0.094 0.011 Gross profit growth 0.030 0.023 -0.009 0.118 -0.047 -Ebitgrowth -0.011 -0.074 0.108 0.102 -0.050 -Operating income growth -0.011 -0.074 0.108 0.102 -0.050 +Ebitgrowth -0.011 -0.074 0.108 0.112 -0.056 +Operating income growth -0.011 -0.074 0.108 0.112 -0.056 Net income growth 0.311 -0.092 0.121 0.131 -0.007 -Epsgrowth 0.309 -0.093 0.119 0.130 -0.003 -Epsdiluted growth 0.309 -0.093 0.119 0.130 -0.003 +Epsgrowth 0.308 -0.094 0.119 0.134 -0.007 +Epsdiluted growth 0.308 -0.094 0.119 0.132 -0.005 Weighted average shares growth 0.002 0 0.001 0.001 -0.001 Weighted average shares diluted growth 0.001 0.001 0.001 0.001 -0.001 Dividendsper share growth 0.054 0.040 0.027 0.029 0.031 @@ -21,16 +21,16 @@ Three y operating c f growth per share 0.200 0.246 0.097 0.260 Ten y net income growth per share 0.527 0.416 0.311 0.175 0.117 Five y net income growth per share -0.038 -0.034 0.166 0.302 0.494 Three y net income growth per share 0.147 0.029 0.331 0.149 0.258 -Ten y shareholders equity growth per share -3.209 -3.531 -5.234 -49.887 -1.857 -Five y shareholders equity growth per share -0.673 0.077 0.056 0.207 0.246 -Three y shareholders equity growth per share 0.063 0.090 -0.036 0.190 0.212 +Ten y shareholders equity growth per share -3.209 -3.531 -5.234 -49.887 -1.800 +Five y shareholders equity growth per share -0.673 0.077 0.056 0.207 0.261 +Three y shareholders equity growth per share 0.063 0.090 -0.036 0.190 0.227 Ten y dividendper share growth per share 0.803 1.068 0.966 0.754 0.571 Five y dividendper share growth per share 0.256 0.195 0.172 0.183 0.194 Three y dividendper share growth per share 0.097 0.120 0.126 0.099 0.090 -Receivables growth -0.047 0.043 0.012 0.048 -1 -Inventory growth -0.000 0.049 0.039 -0.091 -1 -Asset growth -0.074 0.077 0.045 -0.079 -0.014 -Book valueper share growth -0.029 0.071 -0.084 0.196 0.095 -Debt growth -0.075 -0.022 0.016 -0.118 -0.116 +Receivables growth -0.047 0.043 0.012 0.048 0.207 +Inventory growth -0.000 0.049 0.039 -0.091 0.134 +Asset growth -0.074 0.077 0.045 -0.079 0.494 +Book valueper share growth -0.029 0.071 -0.084 0.196 0.113 +Debt growth -0.075 -0.022 0.016 -0.118 0.551 Rdexpense growth 0 0 0 0 0 Sgaexpenses growth 0.108 0.179 -0.148 0.125 -0.033 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt index fab4659ecdb2..f1bffd71384e 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt @@ -10,27 +10,27 @@ Cost Of Revenue 10.758 B 10.513 B Gross Profit 18.867 B 19.292 B 19.125 B 21.375 B 20.360 B Gross Profit Ratio 0.637 0.647 0.667 0.681 0.641 Research And Development Expenses 0 0 0 0 0 -General And Administrative Expenses 7.449 B 8.784 B 97 M 8.419 B 8.138 B -Selling And Marketing Expenses 0 0 7.384 B 8.304 B 0 +General And Administrative Expenses 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B +Selling And Marketing Expenses 7.408 B 8.695 B 7.384 B 8.304 B 0 Selling General And Administrative 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B -Other Expenses 82 M 66 M 73 M 0 0 +Other Expenses 82 M 66 M 73 M 96 M 0 Operating Expenses 7.531 B 8.850 B 7.554 B 8.515 B 8.138 B Costs And Expenses 18.289 B 19.363 B 17.123 B 18.545 B 19.540 B Interest Income 190 M 226 M 110 M 109 M 180 M -Interest Expense 855 M 796 M 728 M 737 M 768 M -Depreciation And Amortization 989 M 964 M 981 M 998 M 1.189 B -Ebitda 12.200 B 11.238 B 12.142 B 13.967 B 13.591 B -Ebitda Ratio 0.412 0.377 0.423 0.445 0.428 -Operating Income 11.377 B 10.531 B 11.668 B 12.860 B 12.222 B -Operating Income Ratio 0.384 0.353 0.407 0.389 0.366 -Non Operating Income Loss -706 M -659 M -715 M 0 0 +Interest Expense 855 M 570 M 618 M 737 M 768 M +Depreciation And Amortization 989 M -23 M -24 M 540 M 1.003 B +Ebitda 12.200 B 10.508 B 11.644 B 13.515 B 13.249 B +Ebitda Ratio 0.412 0.353 0.406 0.430 0.417 +Operating Income 11.377 B 10.531 B 11.668 B 12.975 B 12.246 B +Operating Income Ratio 0.384 0.353 0.407 0.413 0.386 +Non Operating Income Loss -41 M -659 M -715 M -743 M -612 M Income Before Tax 10.671 B 9.872 B 10.953 B 12.232 B 11.634 B Income Before Tax Ratio 0.360 0.331 0.382 0.389 0.366 Income Tax Expense 2.445 B 2.293 B 2.377 B 2.671 B 2.244 B Net Income 7.911 B 7.185 B 8.056 B 9.109 B 9.048 B Net Income Ratio 0.267 0.241 0.281 0.290 0.285 -Basic Earnings Per Share 5.080 4.610 5.160 5.830 5.810 -Diluted Earnings Per Share 5.080 4.610 5.160 5.830 5.810 +Basic Earnings Per Share 5.090 4.610 5.160 5.850 5.810 +Diluted Earnings Per Share 5.090 4.610 5.160 5.840 5.810 Basic Average Shares 1.555 B 1.555 B 1.557 B 1.558 B 1.557 B Diluted Average Shares 1.555 B 1.556 B 1.558 B 1.559 B 1.557 B Final Link diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt index a436f4d4d85e..d03ee1a302d6 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt @@ -4,56 +4,56 @@ Revenue per share 19.051 19.167 18.429 Net income per share 5.087 4.621 5.174 5.847 5.811 Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 3.448 -Book value per share -8.012 -7.445 -8.071 -6.487 -5.868 -Tangible book value per share -12.994 -11.299 -11.955 -11.365 -10.118 -Shareholders equity per share -8.012 -7.445 -8.071 -6.487 -5.868 -Interest debt per share 20.974 20.477 20.722 18.320 16.280 -Market cap 103.812 B 132.315 B 128.904 B 148.010 B 129.247 B -Enterprise value 128.978 B 156.499 B 153.160 B 171.320 B 148.459 B -Pe ratio 13.122 18.415 16.001 16.249 14.285 -Price to sales ratio 3.504 4.439 4.492 4.713 4.069 -Pocfratio 10.953 13.113 13.137 12.368 11.964 -Pfcf ratio 12.909 14.323 13.996 13.193 13.289 -Pb ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Ptb ratio -8.332 -11.429 -10.257 -14.646 -14.145 -Ev to sales 4.354 5.251 5.338 5.455 4.674 -Enterprise value over EBITDA 10.572 13.926 12.614 12.266 10.923 -Ev to operating cash flow 13.608 15.510 15.609 14.316 13.742 -Ev to free cash flow 16.038 16.941 16.630 15.271 15.264 -Earnings yield 0.076 0.054 0.062 0.062 0.070 -Free cash flow yield 0.077 0.070 0.071 0.076 0.075 -Debt to equity -4.057 -4.533 -4.412 -4.898 -5.266 -Debt to assets 1.270 1.224 1.237 1.199 1.182 -Net debt to EBITDA 2.063 2.152 1.998 1.669 1.414 -Current ratio 1.131 1.089 1.096 0.920 1.905 -Interest coverage 13.306 13.230 16.027 17.449 15.914 -Income quality 1.198 1.404 1.218 1.232 1.134 -Dividend yield 0.066 0.054 0.057 0.051 0.060 +Cash per share 4.240 4.412 4.676 2.886 2.060 +Book value per share -8.012 -7.445 -8.071 -6.487 -5.753 +Tangible book value per share -12.994 -11.299 -11.955 -11.365 -21.001 +Shareholders equity per share -8.012 -7.445 -8.071 -6.487 -5.753 +Interest debt per share 20.974 20.331 20.651 18.320 28.189 +Market cap 103.812 B 132.315 B 128.904 B 148.010 B 157.584 B +Enterprise value 128.978 B 156.499 B 153.160 B 171.320 B 197.500 B +Pe ratio 13.122 18.415 16.001 16.249 17.416 +Price to sales ratio 3.504 4.439 4.492 4.713 4.961 +Pocfratio 10.953 13.113 13.137 12.368 14.587 +Pfcf ratio 12.909 14.323 13.996 13.193 16.202 +Pb ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Ptb ratio -8.332 -11.429 -10.257 -14.646 -17.593 +Ev to sales 4.354 5.251 5.338 5.455 6.218 +Enterprise value over EBITDA 10.572 14.893 13.154 12.676 14.907 +Ev to operating cash flow 13.608 15.510 15.609 14.316 18.282 +Ev to free cash flow 16.038 16.941 16.630 15.271 20.306 +Earnings yield 0.076 0.054 0.062 0.062 0.057 +Free cash flow yield 0.077 0.070 0.071 0.076 0.062 +Debt to equity -4.057 -4.533 -4.412 -4.898 -7.591 +Debt to assets 1.270 1.224 1.237 1.199 1.102 +Net debt to EBITDA 2.063 2.301 2.083 1.725 3.013 +Current ratio 1.131 1.089 1.096 0.920 0.718 +Interest coverage 13.306 18.475 18.880 17.605 15.945 +Income quality 1.144 1.306 1.142 1.232 1.134 +Dividend yield 0.066 0.054 0.057 0.051 0.050 Payout ratio 0.870 0.997 0.914 0.832 0.863 -Sales general and administrative to revenue 0.251 0.295 0.003 0.268 0.256 +Sales general and administrative to revenue 0.251 0.295 0.261 0.268 0.256 Research and ddevelopement to revenue 0 0 0 0 0 -Intangibles to total assets 0.238 0.186 0.178 0.230 0.205 +Intangibles to total assets 0.238 0.186 0.178 0.230 0.428 Capex to operating cash flow -0.152 -0.084 -0.061 -0.063 -0.100 Capex to revenue -0.048 -0.029 -0.021 -0.024 -0.034 Capex to depreciation -1.452 -0.884 -0.614 -0.749 -0.906 Stock based compensation to revenue 0 0 0 0 0 -Graham number 30.284 27.821 30.653 29.211 27.700 -Roic 0.503 0.438 0.463 0.584 0.322 -Return on tangible assets 0.261 0.206 0.219 0.287 0.280 -Graham net net -23.712 -24.571 -26.044 -24.189 -27.458 -Working capital 2.251 B 1.681 B 1.877 B -1.538 B 2.550 B -Tangible asset value -20.206 B -17.570 B -18.614 B -17.706 B -15.754 B -Net current asset value -31.098 B -31.960 B -33.954 B -31.781 B -42.752 B -Invested capital -2.549 -2.682 -2.509 -2.751 -2.690 -Average receivables 3.651 B 3.640 B 3.739 B 3.850 B 1.970 B -Average payables 2.155 B 2.183 B 2.539 B 3.055 B 1.665 B -Average inventory 8.805 B 9.020 B 9.413 B 9.155 B 4.360 B -Days sales outstanding 43.911 45.519 47.842 45.792 0 -Days payables outstanding 70.164 79.819 106.040 121.218 0 -Days of inventory on hand 298.704 320.629 365.839 317.328 0 -Receivables turnover 8.312 8.019 7.629 7.971 0 -Payables turnover 5.202 4.573 3.442 3.011 0 -Inventory turnover 1.222 1.138 0.998 1.150 0 -Roe -0.635 -0.621 -0.641 -0.901 -0.990 +Graham number 30.284 27.821 30.653 29.211 27.426 +Roic 0.357 0.301 0.333 0.350 0.193 +Return on tangible assets 0.261 0.206 0.219 0.287 0.256 +Graham net net -23.712 -24.571 -26.044 -24.189 -36.143 +Working capital 2.251 B 1.681 B 1.877 B -1.538 B -7.717 B +Tangible asset value -20.206 B -17.570 B -18.614 B -17.706 B -32.698 B +Net current asset value -31.098 B -31.960 B -33.954 B -31.781 B -48.373 B +Invested capital -2.549 -2.682 -2.509 -2.751 -4.814 +Average receivables 3.651 B 3.640 B 3.739 B 3.850 B 4.348 B +Average payables 2.155 B 2.183 B 2.539 B 3.055 B 3.704 B +Average inventory 8.805 B 9.020 B 9.413 B 9.155 B 9.303 B +Days sales outstanding 43.911 45.519 47.842 45.792 54.655 +Days payables outstanding 70.164 79.819 106.040 121.218 130.481 +Days of inventory on hand 298.704 320.629 365.839 317.328 316.470 +Receivables turnover 8.312 8.019 7.629 7.971 6.678 +Payables turnover 5.202 4.573 3.442 3.011 2.797 +Inventory turnover 1.222 1.138 0.998 1.150 1.153 +Roe -0.635 -0.621 -0.641 -0.901 -1.010 Capex per share -0.923 -0.548 -0.387 -0.480 -0.692 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].txt index 2449fae403a2..f14dcd13ab40 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_profile-kwargs_dict0].txt @@ -1,12 +1,16 @@ - 0 + +Image: https://financialmodelingprep.com/image-stock/PM.png + +Description: Philip Morris International Inc. operates as a tobacco company working to delivers a smoke-free future and evolving portfolio for the long-term to include products outside of the tobacco and nicotine sector. The company's product portfolio primarily consists of cigarettes and smoke-free products, including heat-not-burn, vapor, and oral nicotine products that are sold in markets outside the United States. The company offers its smoke-free products under the HEETS, HEETS Creations, HEETS Dimensions, HEETS Marlboro, HEETS FROM MARLBORO, Marlboro Dimensions, Marlboro HeatSticks, Parliament HeatSticks, and TEREA brands, as well as the KT&G-licensed brands, Fiit, and Miix. It also sells its products under the Marlboro, Parliament, Bond Street, Chesterfield, L&M, Lark, and Philip Morris brands. In addition, the company owns various cigarette brands, such as Dji Sam Soe, Sampoerna A, and Sampoerna U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York. + symbol PM -price 98.5 -beta 0.709205 -volAvg 4480064 -mktCap 152697656576 -lastDiv 5.04 +price 96.99 +beta 0.704152 +volAvg 4389060 +mktCap 150547871793 +lastDiv 5.08 range 82.85-109.81 -changes -1.6 +changes -2.36 companyName Philip Morris International Inc. currency USD cik 0001413329 @@ -16,10 +20,10 @@ exchange New York Stock Exchange exchangeShortName NYSE industry Tobacco website https://www.pmi.com -ceo Mr. Andre Calantzopoulos +ceo Mr. Jacek Olczak sector Consumer Defensive country US -fullTimeEmployees 69600 +fullTimeEmployees 79800 phone 917 663 2000 address 120 Park Avenue city New York @@ -34,7 +38,3 @@ isActivelyTrading True isAdr False isFund False -Image: https://financialmodelingprep.com/image-stock/PM.png - -Description: Philip Morris International Inc. operates as a tobacco company working to delivers a smoke-free future and evolving portfolio for the long-term to include products outside of the tobacco and nicotine sector. The company's product portfolio primarily consists of cigarettes and smoke-free products, including heat-not-burn, vapor, and oral nicotine products that are sold in markets outside the United States. The company offers its smoke-free products under the HEETS, HEETS Creations, HEETS Dimensions, HEETS Marlboro, HEETS FROM MARLBORO, Marlboro Dimensions, Marlboro HeatSticks, Parliament HeatSticks, and TEREA brands, as well as the KT&G-licensed brands, Fiit, and Miix. It also sells its products under the Marlboro, Parliament, Bond Street, Chesterfield, L&M, Lark, and Philip Morris brands. In addition, the company owns various cigarette brands, such as Dji Sam Soe, Sampoerna A, and Sampoerna U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York. - From fd9d6fd03030bfcf3f1c43564351960800c52c50 Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Tue, 2 May 2023 21:25:14 +0200 Subject: [PATCH 21/70] Remove commas from i18n (#4952) * Remove commas * Update unit tests --- openbb_terminal/miscellaneous/i18n/en.yml | 68 +- .../test_alt_controller/test_print_help.txt | 6 +- .../test_print_help.txt | 16 +- .../test_etf_controller/test_call_load.yaml | 620 +++++++++--------- .../test_etf_controller/test_print_help.txt | 7 +- .../test_call_load[other_args0].yaml | 344 +++++----- .../test_call_load[other_args1].yaml | 236 +++---- .../test_forex_controller/test_print_help.txt | 4 +- .../test_call_load.yaml | 32 +- .../test_print_help.txt | 30 +- 10 files changed, 681 insertions(+), 682 deletions(-) diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index bfbd3a9e388f..674744e76356 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -129,21 +129,21 @@ en: stocks/candle: view a candle chart for a specific stock ticker stocks/news: latest news of the company stocks/codes: FIGI, SIK and SIC codes codes - stocks/th: trading hours, check open markets - stocks/options: options menu, chains, open interest, greeks, parity - stocks/disc: discover trending stocks, map, sectors, high short interest - stocks/dps: dark pool and short data, darkpool, short interest, ftd - stocks/scr: screener stocks, overview/performance, using preset filters - stocks/ins: insider trading, latest penny stock buys, top officer purchases - stocks/gov: government menu, house trading, contracts, corporate lobbying - stocks/ba: behavioural analysis, from reddit, stocktwits, twitter, google - stocks/ca: comparison analysis, get similar, historical, correlation, financials - stocks/fa: fundamental analysis, income, balance, cash, ratios, earnings, expectations - stocks/res: research web page, macroaxis, yahoo finance, fool - stocks/bt: strategy backtester, simple ema, ema cross, rsi strategies - stocks/ta: technical analysis, ema, macd, rsi, adx, bbands, obv - stocks/qa: quantitative analysis, decompose, cusum, residuals analysis - stocks/forecast: forecast techniques, rnn, nbeats, transformer, block rnn + stocks/th: trading hours check open markets + stocks/options: options menu chains, open interest, greeks, parity + stocks/disc: discover trending stocks map, sectors, high short interest + stocks/dps: dark pool and short data darkpool, short interest, ftd + stocks/scr: screener stocks overview/performance, using preset filters + stocks/ins: insider trading latest penny stock buys, top officer purchases + stocks/gov: government menu house trading, contracts, corporate lobbying + stocks/ba: behavioural analysis from reddit, stocktwits, twitter, google + stocks/ca: comparison analysis get similar, historical, correlation, financials + stocks/fa: fundamental analysis income, balance, cash, ratios, earnings, expectations + stocks/res: research web page macroaxis, yahoo finance, fool + stocks/bt: strategy backtester simple ema, ema cross, rsi strategies + stocks/ta: technical analysis ema, macd, rsi, adx, bbands, obv + stocks/qa: quantitative analysis decompose, cusum, residuals analysis + stocks/forecast: forecast techniques rnn, nbeats, transformer, block rnn stocks/options/unu: show unusual options activity stocks/options/calc: basic call/put PnL calculator stocks/options/screen: screens tickers based on preset @@ -488,15 +488,15 @@ en: crypto/headlines: crypto sentiment from 15+ major news headlines crypto/candle: view a candle chart for a specific cryptocurrency crypto/prt: potential returns (e.g. upside if ETH reaches BTC market cap) - crypto/disc: discover trending cryptocurrencies, top gainers, losers, top sentiment - crypto/ov: overview of the cryptocurrencies, market cap, DeFi, latest news, top exchanges, stables - crypto/onchain: information on different blockchains, eth gas fees, whale alerts, DEXes info - crypto/defi: decentralized finance information, dpi, llama, tvl, lending, borrow, funding + crypto/disc: discover trending cryptocurrencies top gainers, losers, top sentiment + crypto/ov: overview of the cryptocurrencies market cap, DeFi, latest news, top exchanges, stables + crypto/onchain: information on different blockchains eth gas fees, whale alerts, DEXes info + crypto/defi: decentralized finance information dpi, llama, tvl, lending, borrow, funding crypto/tools: explore different tools apytoapr, il - crypto/nft: non-fungible tokens, today drops - crypto/dd: due-diligence for loaded coin, coin information, social media, market stats - crypto/ta: technical analysis for loaded coin, ema, macd, rsi, adx, bbands, obv - crypto/forecast: forecast techniques, rnn, nbeats, transformer, block rnn + crypto/nft: non-fungible tokens today drops + crypto/dd: due-diligence for loaded coin coin information, social media, market stats + crypto/ta: technical analysis for loaded coin ema, macd, rsi, adx, bbands, obv + crypto/forecast: forecast techniques rnn, nbeats, transformer, block rnn crypto/qa: quantitative analysis decompose, cusum, residuals analysis crypto/disc/top: top coins crypto/disc/trending: trending coins @@ -694,16 +694,16 @@ en: etf/load: load ETF data etf/_symbol: Symbol etf/_major_holdings: Major holdings - etf/ca: comparison analysis, get similar, historical, correlation, financials - etf/disc: discover ETFs, gainers/decliners/active - etf/scr: screener ETFs, overview/performance, using preset filters + etf/ca: comparison analysis get similar, historical, correlation, financials + etf/disc: discover ETFs gainers/decliners/active + etf/scr: screener ETFs overview/performance, using preset filters etf/overview: get overview etf/holdings: top company holdings etf/weights: sector weights allocation etf/candle: view a candle chart for ETF etf/news: latest news of the company etf/compare: compare multiple different ETFs - etf/ta: technical analysis, ema, macd, rsi, adx, bbands, obv + etf/ta: technical analysis ema, macd, rsi, adx, bbands, obv etf/disc/gainers: top gainers etf/disc/decliners: top decliners etf/disc/active: most active @@ -831,8 +831,8 @@ en: forex/load: get historical data forex/candle: show candle plot for loaded pair forex/fwd: get forward rates for loaded pair - forex/ta: technical analysis, ema, macd, rsi, adx, bbands, obv - forex/qa: quantitative analysis, decompose, cusum, residuals analysis + forex/ta: technical analysis ema, macd, rsi, adx, bbands, obv + forex/qa: quantitative analysis decompose, cusum, residuals analysis forex/forex: Forex brokerages forex/forecast: forecast techniques forex/oanda: Oanda menu @@ -918,9 +918,9 @@ en: funds/exclusion: exclusion policy funds/_country_ms: Current Country MorningStar alternative/hn: Hacker News most popular stories - alternative/covid: COVID menu, cases, deaths, rates - alternative/oss: Open Source menu, star history, repos information - alternative/realestate: Real Estate menu, sold prices, HPIs + alternative/covid: COVID menu cases, deaths, rates + alternative/oss: Open Source menu star history, repos information + alternative/realestate: Real Estate menu sold prices, HPIs alternative/covid/slopes: get countries with highest slope in cases alternative/covid/country: select country for data alternative/covid/_country: Country @@ -975,8 +975,8 @@ en: econometrics/bpag: Breusch-Pagan heteroscedasticity test on the residuals of the regression econometrics/granger: Granger causality tests on two columns econometrics/coint: co-integration test on a multitude of columns - portfolio/bro: brokers holdings, supports robinhood, ally, degiro, coinbase - portfolio/po: portfolio optimization, optimize your portfolio weights efficiently + portfolio/bro: brokers holdings supports robinhood, ally, degiro, coinbase + portfolio/po: portfolio optimization optimize your portfolio weights efficiently portfolio/load: load transactions into the portfolio (use load --example for an example) portfolio/_loaded: Loaded transactions portfolio/_riskfreerate: Risk Free Rate diff --git a/tests/openbb_terminal/alternative/txt/test_alt_controller/test_print_help.txt b/tests/openbb_terminal/alternative/txt/test_alt_controller/test_print_help.txt index cb21766d5f6a..801cfd9834b5 100644 --- a/tests/openbb_terminal/alternative/txt/test_alt_controller/test_print_help.txt +++ b/tests/openbb_terminal/alternative/txt/test_alt_controller/test_print_help.txt @@ -1,6 +1,6 @@ -> covid COVID menu, cases, deaths, rates -> oss Open Source menu, star history, repos information -> realestate Real Estate menu, sold prices, HPIs +> covid COVID menu cases, deaths, rates +> oss Open Source menu star history, repos information +> realestate Real Estate menu sold prices, HPIs hn Hacker News most popular stories [HackerNews] diff --git a/tests/openbb_terminal/cryptocurrency/txt/test_crypto_controller/test_print_help.txt b/tests/openbb_terminal/cryptocurrency/txt/test_crypto_controller/test_print_help.txt index cba6f94dd1a2..67986272afd1 100644 --- a/tests/openbb_terminal/cryptocurrency/txt/test_crypto_controller/test_print_help.txt +++ b/tests/openbb_terminal/cryptocurrency/txt/test_crypto_controller/test_print_help.txt @@ -10,14 +10,14 @@ Interval (min): [unvl] candle view a candle chart for a specific cryptocurrency[/unvl] [unvl] prt potential returns (e.g. upside if ETH reaches BTC market cap)[/unvl] [CoinGecko] -> disc discover trending cryptocurrencies, top gainers, losers, top sentiment -> ov overview of the cryptocurrencies, market cap, DeFi, latest news, top exchanges, stables -> onchain information on different blockchains, eth gas fees, whale alerts, DEXes info -> defi decentralized finance information, dpi, llama, tvl, lending, borrow, funding +> disc discover trending cryptocurrencies top gainers, losers, top sentiment +> ov overview of the cryptocurrencies market cap, DeFi, latest news, top exchanges, stables +> onchain information on different blockchains eth gas fees, whale alerts, DEXes info +> defi decentralized finance information dpi, llama, tvl, lending, borrow, funding > tools explore different tools apytoapr, il -> nft non-fungible tokens, today drops -[unvl]> dd due-diligence for loaded coin, coin information, social media, market stats[/unvl] -[unvl]> ta technical analysis for loaded coin, ema, macd, rsi, adx, bbands, obv[/unvl] +> nft non-fungible tokens today drops +[unvl]> dd due-diligence for loaded coin coin information, social media, market stats[/unvl] +[unvl]> ta technical analysis for loaded coin ema, macd, rsi, adx, bbands, obv[/unvl] [unvl]> qa quantitative analysis decompose, cusum, residuals analysis[/unvl] -[unvl]> forecast forecast techniques, rnn, nbeats, transformer, block rnn[/unvl] +[unvl]> forecast forecast techniques rnn, nbeats, transformer, block rnn[/unvl] diff --git a/tests/openbb_terminal/etf/cassettes/test_etf_controller/test_call_load.yaml b/tests/openbb_terminal/etf/cassettes/test_etf_controller/test_call_load.yaml index 264ae9d71e2f..4ff09435a7c6 100644 --- a/tests/openbb_terminal/etf/cassettes/test_etf_controller/test_call_load.yaml +++ b/tests/openbb_terminal/etf/cassettes/test_etf_controller/test_call_load.yaml @@ -12,10 +12,10 @@ interactions: uri: https://query2.finance.yahoo.com/v8/finance/chart/ARKW?interval=1d&range=1d response: body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1677164095,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":50.73,"chartPreviousClose":51.05,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1677162600,"start":1677142800,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1677186000,"start":1677162600,"gmtoffset":-18000},"post":{"timezone":"EST","end":1677200400,"start":1677186000,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1677164095],"indicators":{"quote":[{"low":[50.480098724365234],"volume":[114113],"open":[51.90999984741211],"high":[51.856998443603516],"close":[50.72999954223633]}],"adjclose":[{"adjclose":[50.72999954223633]}]}}],"error":null}}' + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1683047886,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":46.301,"chartPreviousClose":47.1,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","end":1683034200,"start":1683014400,"gmtoffset":-14400},"regular":{"timezone":"EDT","end":1683057600,"start":1683034200,"gmtoffset":-14400},"post":{"timezone":"EDT","end":1683072000,"start":1683057600,"gmtoffset":-14400}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1683047886],"indicators":{"quote":[{"volume":[138417],"open":[46.77000045776367],"low":[45.970001220703125],"high":[46.84000015258789],"close":[46.300899505615234]}],"adjclose":[{"adjclose":[46.300899505615234]}]}}],"error":null}}' headers: Age: - - '37' + - '1' Connection: - keep-alive Expect-CT: @@ -33,11 +33,11 @@ interactions: cache-control: - public, max-age=10, stale-while-revalidate=20 content-length: - - '937' + - '938' content-type: - application/json;charset=utf-8 date: - - Thu, 23 Feb 2023 14:56:04 GMT + - Tue, 02 May 2023 17:22:14 GMT server: - ATS vary: @@ -45,13 +45,13 @@ interactions: x-envoy-decorator-operation: - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - - '8' + - '10' x-request-id: - - 770d8976-9e2d-40ba-83ff-6fc87040d1d2 + - 320aedf8-ab38-4075-8f56-bc8e12c03128 x-yahoo-request-id: - - 0jaehfthvevl9 + - d7jhrlti52hm7 y-rid: - - 0jaehfthvevl9 + - d7jhrlti52hm7 status: code: 200 message: OK @@ -68,10 +68,10 @@ interactions: uri: https://query2.finance.yahoo.com/v8/finance/chart/ARKW?events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2 response: body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1677164095,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":50.73,"chartPreviousClose":120.66,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1677162600,"start":1677142800,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1677186000,"start":1677162600,"gmtoffset":-18000},"post":{"timezone":"EST","end":1677200400,"start":1677186000,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639578600,1639665000,1639751400],"indicators":{"quote":[{"open":[119.62999725341797,123.26000213623047,116.5],"high":[122.19999694824219,123.47000122070312,122.33999633789062],"close":[121.55999755859375,117.88999938964844,121.55000305175781],"low":[115.37000274658203,116.48999786376953,114.55000305175781],"volume":[1503000,1292600,1459900]}],"adjclose":[{"adjclose":[118.27759552001953,114.70669555664062,118.26786804199219]}]}}],"error":null}}' + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1683047886,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":46.301,"chartPreviousClose":120.66,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","end":1683034200,"start":1683014400,"gmtoffset":-14400},"regular":{"timezone":"EDT","end":1683057600,"start":1683034200,"gmtoffset":-14400},"post":{"timezone":"EDT","end":1683072000,"start":1683057600,"gmtoffset":-14400}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639578600,1639665000,1639751400],"indicators":{"quote":[{"close":[121.55999755859375,117.88999938964844,121.55000305175781],"open":[119.62999725341797,123.26000213623047,116.5],"high":[122.19999694824219,123.47000122070312,122.33999633789062],"low":[115.37000274658203,116.48999786376953,114.55000305175781],"volume":[1503000,1292600,1459900]}],"adjclose":[{"adjclose":[118.27759552001953,114.70669555664062,118.26786804199219]}]}}],"error":null}}' headers: Age: - - '2' + - '0' Connection: - keep-alive Expect-CT: @@ -89,11 +89,11 @@ interactions: cache-control: - public, max-age=10, stale-while-revalidate=20 content-length: - - '1155' + - '1156' content-type: - application/json;charset=utf-8 date: - - Thu, 23 Feb 2023 14:56:04 GMT + - Tue, 02 May 2023 17:22:15 GMT server: - ATS vary: @@ -101,13 +101,13 @@ interactions: x-envoy-decorator-operation: - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - - '15' + - '13' x-request-id: - - 258114c6-4291-4d07-8142-7bfd259dc1ec + - cab5fca4-7754-4ef2-a0be-977dac427e86 x-yahoo-request-id: - - 4cer9d9hvevk4 + - bic3715i52hm7 y-rid: - - 4cer9d9hvevk4 + - bic3715i52hm7 status: code: 200 message: OK @@ -127,13 +127,13 @@ interactions: string: '' headers: CF-RAY: - - 7b7cb0e68b91e8ed-DFW + - 7c11f2018f9ac2c0-VIE Connection: - keep-alive Content-Length: - '0' Date: - - Fri, 14 Apr 2023 14:38:10 GMT + - Tue, 02 May 2023 17:22:15 GMT Location: - https://stockanalysis.com/etf/arkw/holdings/ Server: @@ -163,270 +163,270 @@ interactions: response: body: string: !!binary | - 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 - /wMAQxV5qszlAAA= + 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 + KwDnAAA= headers: Age: - '0' CF-Cache-Status: - DYNAMIC CF-Ray: - - 7b7cb0e6dbdde8ed-DFW + - 7c11f201e866c2c0-VIE Cache-Control: - public, max-age=0, must-revalidate Connection: @@ -436,47 +436,47 @@ interactions: Content-Type: - text/html Date: - - Fri, 14 Apr 2023 14:38:11 GMT + - Tue, 02 May 2023 17:22:16 GMT ETag: - - W/"1epfzo6" + - W/"7ucmqe" Link: - - <../../../_app/immutable/assets/_layout.e2ff4edd.css>; rel="preload";as="style"; - nopush, <../../../_app/immutable/assets/SimpleTable.c5107284.css>; rel="preload";as="style"; - nopush, <../../../_app/immutable/entry/start.84655337.js>; rel="modulepreload"; + - <../../../_app/immutable/assets/_layout.a3a293d2.css>; rel="preload";as="style"; + nopush, <../../../_app/immutable/assets/SimpleTable.fbb6c833.css>; rel="preload";as="style"; + nopush, <../../../_app/immutable/entry/start.30e3963a.js>; rel="modulepreload"; nopush, <../../../_app/immutable/chunks/index.f839b993.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/singletons.42400336.js>; rel="modulepreload"; + nopush, <../../../_app/immutable/chunks/singletons.01a4bb86.js>; rel="modulepreload"; nopush, <../../../_app/immutable/chunks/parse.d12b0d5b.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/entry/app.57994d88.js>; rel="modulepreload"; + nopush, <../../../_app/immutable/entry/app.6a06de36.js>; rel="modulepreload"; nopush, <../../../_app/immutable/chunks/preload-helper.41c905a7.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/exports.e1cf6c87.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/entry/_layout.svelte.2f83c818.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/global.762c29c8.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/navigation.faaf9b59.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/global.fcb3f530.js>; rel="modulepreload"; nopush, <../../../_app/immutable/chunks/public.38d2e3e1.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/_commonjsHelpers.725317a4.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/index.284a8551.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/_Icon.8d9849c6.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/Search.3150f435.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/Result.26e0b252.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/entry/_layout.ts.939e7c8b.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/chunks/_layout.51fef16a.js>; rel="modulepreload"; - nopush, <../../../_app/immutable/entry/etf-_symbol_-layout.svelte.73406393.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/_StockHead.5d8eef43.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/formatTableCell.f42befb1.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Tab.4b774f49.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/entry/etf-_symbol_-holdings-page.svelte.a27e3933.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Head.6a75e509.js>; + nopush, <../../../_app/immutable/chunks/sentry-release-injection-file.38226b4d.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/entry/_layout.svelte.ab23a0fb.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/stores.c4929aff.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/navigation.5d36b1af.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/global.09072239.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/global.7caea048.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/index.284a8551.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/_Icon.8d9849c6.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Search.95c7ecaa.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Result.7077e4ae.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/entry/_layout.ts.50a32f07.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/_layout.1cc2ed98.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/entry/etf-_symbol_-layout.svelte.a18cb3b3.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/_StockHead.a0df93db.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/formatTableCell.e6217cb2.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Tab.da89bddf.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/entry/etf-_symbol_-holdings-page.svelte.6152c595.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Head.e7b0cf1f.js>; rel="modulepreload"; nopush, <../../../_app/immutable/chunks/InfoBox.1d8550b7.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/SimpleTable.cf4de7b1.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/tables.60108f10.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Filter.d507d53e.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/ExportButton.4e4aa40a.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/_Dropdown.ee8aeb33.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/NoFilteredResults.40aa79ac.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/InfoContainer.16aabf53.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/SimpleTable.e1be2c2c.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/tables.64e65806.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Filter.38a1bd8d.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/ExportButton.ddd77432.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/_Dropdown.e1d067a1.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/NoFilteredResults.7defda5d.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/InfoContainer.03e8ebc1.js>; rel="modulepreload"; nopush, <../../../_app/immutable/chunks/NewsWidget.b209d637.js>; - rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Output.165ca2f5.js>; + rel="modulepreload"; nopush, <../../../_app/immutable/chunks/Output.0cfc8266.js>; rel="modulepreload"; nopush Server: - cloudflare @@ -497,7 +497,7 @@ interactions: x-vercel-execution-region: - iad1 x-vercel-id: - - cle1::iad1::gnnlz-1681483091045-f242dd9a9a87 + - cdg1::iad1::bc8nr-1683048136068-69b194924c33 status: code: 200 message: OK diff --git a/tests/openbb_terminal/etf/txt/test_etf_controller/test_print_help.txt b/tests/openbb_terminal/etf/txt/test_etf_controller/test_print_help.txt index 505cfc9975b0..e469922e3cce 100644 --- a/tests/openbb_terminal/etf/txt/test_etf_controller/test_print_help.txt +++ b/tests/openbb_terminal/etf/txt/test_etf_controller/test_print_help.txt @@ -1,12 +1,11 @@ - search search ETF by name or description [FinanceDatabase, StockAnalysis] load load ETF data [YahooFinance] Symbol: Major holdings: -[unvl]> ca comparison analysis, get similar, historical, correlation, financials[/unvl] -> disc discover ETFs, gainers/decliners/active +[unvl]> ca comparison analysis get similar, historical, correlation, financials[/unvl] +> disc discover ETFs gainers/decliners/active [unvl] overview get overview[/unvl] [StockAnalysis] [unvl] holdings top company holdings[/unvl] [StockAnalysis] @@ -16,5 +15,5 @@ Major holdings: [unvl] compare compare multiple different ETFs[/unvl] [StockAnalysis] -[unvl]> ta technical analysis, ema, macd, rsi, adx, bbands, obv[/unvl] +[unvl]> ta technical analysis ema, macd, rsi, adx, bbands, obv[/unvl] diff --git a/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args0].yaml b/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args0].yaml index c26746eafebe..f7dfac08a807 100644 --- a/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args0].yaml +++ b/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args0].yaml @@ -12,10 +12,10 @@ interactions: uri: https://query2.finance.yahoo.com/v8/finance/chart/EURUSD=X?interval=1d&range=1d response: body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"EURUSD=X","exchangeName":"CCY","instrumentType":"CURRENCY","firstTradeDate":1070236800,"regularMarketTime":1675174543,"gmtoffset":0,"timezone":"GMT","exchangeTimezoneName":"Europe/London","regularMarketPrice":1.0859,"chartPreviousClose":1.0857,"priceHint":4,"currentTradingPeriod":{"pre":{"timezone":"GMT","start":1675123200,"end":1675123200,"gmtoffset":0},"regular":{"timezone":"GMT","start":1675123200,"end":1675209540,"gmtoffset":0},"post":{"timezone":"GMT","start":1675209540,"end":1675209540,"gmtoffset":0}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1675174543],"indicators":{"quote":[{"volume":[0],"open":[1.0854227542877197],"low":[1.0808473825454712],"close":[1.085894227027893],"high":[1.0866022109985352]}],"adjclose":[{"adjclose":[1.085894227027893]}]}}],"error":null}}' + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"EURUSD=X","exchangeName":"CCY","instrumentType":"CURRENCY","firstTradeDate":1070236800,"regularMarketTime":1683048111,"gmtoffset":3600,"timezone":"BST","exchangeTimezoneName":"Europe/London","regularMarketPrice":1.1001,"chartPreviousClose":1.0978,"priceHint":4,"currentTradingPeriod":{"pre":{"timezone":"BST","end":1682982000,"start":1682982000,"gmtoffset":3600},"regular":{"timezone":"BST","end":1683068340,"start":1682982000,"gmtoffset":3600},"post":{"timezone":"BST","end":1683068340,"start":1683068340,"gmtoffset":3600}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1683048111],"indicators":{"quote":[{"low":[1.0946906805038452],"close":[1.1001100540161133],"volume":[0],"open":[1.0976948738098145],"high":[1.1008366346359253]}],"adjclose":[{"adjclose":[1.1001100540161133]}]}}],"error":null}}' headers: Age: - - '1' + - '3' Connection: - keep-alive Expect-CT: @@ -23,7 +23,7 @@ interactions: Referrer-Policy: - no-referrer-when-downgrade Strict-Transport-Security: - - max-age=15552000 + - max-age=31536000 X-Content-Type-Options: - nosniff X-Frame-Options: @@ -33,25 +33,25 @@ interactions: cache-control: - public, max-age=10, stale-while-revalidate=20 content-length: - - '921' + - '935' content-type: - application/json;charset=utf-8 date: - - Tue, 31 Jan 2023 14:15:43 GMT + - Tue, 02 May 2023 17:22:34 GMT server: - ATS vary: - Origin,Accept-Encoding x-envoy-decorator-operation: - - finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/* + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - '3' x-request-id: - - 69a13887-ed79-41eb-81c5-4dd6d177ec27 + - 60cc9651-a9a7-4d60-ade6-b5a6c867d14f x-yahoo-request-id: - - 9lp1cqphti8kg + - 25gig1ti52hmq y-rid: - - 9lp1cqphti8kg + - 25gig1ti52hmq status: code: 200 message: OK @@ -69,164 +69,164 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAAO2c244ex3WF32WuiaQOXScDubIN5yI2DEUGEhi6YMSxzITiKEPSsWLo3bO+fRjS - 4ihBrgIEP2TQzWL/1VW1T2uvvbv/cvf1H18+vr/72V/uHu/ffXijq9//5e7b+/cvGfr6w+Pj/duv - v7/72d3v/vEXdy/u3n3/7b88vNFff/m7LzTyd/+ksfs/a4q339z/5uW39/qXn//8nzX4+u27948f - vr1/+/7L77+z4d998cUvf2P/9ofXj+/ef/n48tX9L16+17/Vskrrc5fyQov45sObl4+/fvn4b/fv - v3zNjHWuUdc1rv7i7ptv3z/84Q/v7rVM3fxe//6fD2+Z/le//vKTpXwZ/xBL+uWHx4fv7v/2Hx7e - vnp4e/ejh/z28fXXPOVvyh7nhR/Hbx/v//T64cO7n795eGf/VnsbL+6+49a/f/1WT79exOHYRl6/ - /ea394+vH15xaN893vN/ny3u3Xs7aNtO643d3r999dcDn+7vh6eF/q+na+WM6/Ppvnt49/5/mit/ - +t/PpclevXz/8lePL9+ywNfvUZH6irPl/PUXXf7p5ZvXr77g7++kVf7Pgz/qtw/6s9uf0/6s3+uP - xh+DP2rhz+/fc/O3L/9899UPLmyt89vvNFedV60oTHnBZRvXFZf9Kjsur7ZaXI7aZ1yu1fIGyTtv - ONeIG1rhLP2y1h3ztr5W3nDNK28Yo+QN0xWYy+Xi4PLsFjf0Mnfc0OsYcUNvV415e2+5oT52Lr3P - lUvvrCAuty3CLk/PDWkbuXQtIpeuKa684ZKqxOXouaFrnVz6tXcu/TrzxA2jcDh+qVONeaUUufRx - 7Vz6GCtlMeZMWWgwN6Sf5NJnObn0WVfKYraZsph95IbmrLn0OU8ufdou/XKvlMU8Ize0Ws2lr15y - 6avvlIUWlrJYY+aG1m659HVKLn2dk7LY/HNc1pkb2lfL9e5RUgBSsxTAnjt3sdfMXZzScr2n1hTA - qScFoGPKXZy+chdn9lzvWTUFcHZJAZx9chfnrNjFwNVecdlbCAA9PnnDdUIAEvyODbGdmjecFksf - tdQQwKi1hAB0uWND0pdr5g2jt7xh1p03rBIC0OWJDWlkxNJHqz2X3lrreUOvIQBdntyQVCeX3taV - S2+77bzh1JDF6KXkhnqbufTer1x6xyTjctSQxdACckN9z1x6PyOXfpUeshg6sZDFkDPJDcngcuky - l1y6DDplIa1NWUi7ckOjrFw65xc3jHalLFh7zKvH5YbGXLn0sWYufeyRshinpyxmabmhqSOLG2Zf - uXQsOW9QPI555+y5Ifm4XLqsNJe+ykxZLJ1/zCs3mRta18mlr7Fz6VpuymKtkbJYu+eGdjm59C1v - HjfstlIWW5405tV2ckPyFLn0LfPOG2SRecOZKYsja4h5T0+T1mWaNLadspDZpCwOehCXJ01al2nS - +jNNepaaJs35x4ZmGWnSKNyVN8w06VlWmrTc7IwN4SVj6ahILF2XadKz9jTpWaXqMa+WsPKGnSY9 - 60mT1mWatES5YkOz9TTpqUCWS28jTVqXadJy6ys31E6atDQnTVreLE1al2nSs2O9cTnSpLXdNGlp - Z5r0lOHVnBdx+uVV06SJ47n0q6dJK9alSRP2ckOKB7n0a6dJ44tTFqOkSeMSc0PyFbl0WXouXXaa - slCUSVnIMHJD0phcuqSdS581TVqHlibNoeWGML68YaZJz7nSpGVAadIKmzU3tGpG6blaRmn9KqP0 - XPJ9ea/FYL9cGaUly4zS8i8ZpbWqnmKRVaRYds8oLX3LKD33yCg9N0AoLuX7Yt59MkpL6TNKaxMZ - peexJ/ilfF/Me0ZG6Wm4Ji5XRul55ClyXhmyz7uKNPyKS+nWjktpV94g3zfj0vCmX+7S8wb5vrzB - EIpdVvm+mLfWKzYklS07b5DvyxvGLnkDkonLNWJDGqmxdF2eXHqT78sbDPP6pXyf5v2KXOzV669f - vn94fAf4//cPDyRdyvKUE70FTCu7WSBKhUSFx17WC4Y4kN1lf+bCGGpbTm3J79ctPNztLrkbQWrJ - WnZ8XXbXGXvKknHUZdtNCqWCrAyueWyka517TzmdJkxpQwqKZ/Wz11inD4aEbeWL5FQVbE61qS4u - C7hm+9MUYvXTJQuvWnyPocOJLOKK70XxqRNt8Ca12ZBAdsP9cY7Tt6J4rVVpETgPv4ncp0sJ5EOG - rUnTbK3yYCzTZyqaSX5bltZ8K00wUOoi9cPubSa5oKo9SDiKVMVmIinZRSBCoe+yhTfQST1D3shP - twmzoqQLhV3TT/cc4eKydapyyX5MgmHEOfnE6WsSIpe/UM6sZ8hgbEgah5OWilSXMPmNJlJk0Ora - FUNN/l276T0PU65C7qB0XcWpEFd1bDoWeXSXMEve8hlH8XK5iGXeXeFIVtWG64oOVjskJkg0fuby - 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 headers: Age: - - '1' + - '0' Connection: - keep-alive Expect-CT: @@ -234,7 +234,7 @@ interactions: Referrer-Policy: - no-referrer-when-downgrade Strict-Transport-Security: - - max-age=15552000 + - max-age=31536000 Transfer-Encoding: - chunked X-Content-Type-Options: @@ -250,21 +250,21 @@ interactions: content-type: - application/json;charset=utf-8 date: - - Tue, 31 Jan 2023 14:15:43 GMT + - Tue, 02 May 2023 17:22:35 GMT server: - ATS vary: - Origin,Accept-Encoding x-envoy-decorator-operation: - - finance-chart-api--mtls-canary-production-bf1.finance-k8s.svc.yahoo.local:4080/* + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - - '61' + - '7' x-request-id: - - da61d37d-9a13-43e1-bd4a-752fc53455e6 + - 433b33b6-a50b-4061-95a8-aa6d7d4ec82c x-yahoo-request-id: - - 0j66lephti8kg + - 2kr0b59i52hmr y-rid: - - 0j66lephti8kg + - 2kr0b59i52hmr status: code: 200 message: OK diff --git a/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args1].yaml b/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args1].yaml index 8f8cfc87c602..5611eaccadf8 100644 --- a/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args1].yaml +++ b/tests/openbb_terminal/forex/cassettes/test_forex_controller/test_call_load[other_args1].yaml @@ -1,118 +1,118 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://query2.finance.yahoo.com/v8/finance/chart/EURUSD=X?events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2 - response: - body: - string: '{"chart":{"result":null,"error":{"code":"Bad Request","description":"Invalid - input - start date cannot be after end date. startDate = 1672531200, endDate - = 1640995200"}}}' - headers: - Age: - - '0' - Cache-Control: - - max-age=0, private - Connection: - - keep-alive - Expect-CT: - - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" - Expires: - - '-1' - Referrer-Policy: - - no-referrer-when-downgrade - Strict-Transport-Security: - - max-age=15552000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-XSS-Protection: - - 1; mode=block - content-length: - - '170' - content-type: - - application/json;charset=utf-8 - date: - - Tue, 31 Jan 2023 14:15:44 GMT - server: - - ATS - vary: - - Origin - x-envoy-decorator-operation: - - finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/* - x-envoy-upstream-service-time: - - '2' - x-request-id: - - 90afb8d9-2632-4d48-af5e-1136c9513d00 - x-yahoo-request-id: - - 0uvbk5lhti8kg - y-rid: - - 0uvbk5lhti8kg - status: - code: 400 - message: Bad Request -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://query2.finance.yahoo.com/v8/finance/chart/EURUSD=X?interval=1d&range=1d - response: - body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"EURUSD=X","exchangeName":"CCY","instrumentType":"CURRENCY","firstTradeDate":1070236800,"regularMarketTime":1675976293,"gmtoffset":0,"timezone":"GMT","exchangeTimezoneName":"Europe/London","regularMarketPrice":1.0738,"chartPreviousClose":1.0718,"priceHint":4,"currentTradingPeriod":{"pre":{"timezone":"GMT","end":1675900800,"start":1675900800,"gmtoffset":0},"regular":{"timezone":"GMT","end":1675987140,"start":1675900800,"gmtoffset":0},"post":{"timezone":"GMT","end":1675987140,"start":1675987140,"gmtoffset":0}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1675976293],"indicators":{"quote":[{"low":[1.0713521242141724],"volume":[0],"open":[1.071811318397522],"high":[1.0794472694396973],"close":[1.073767900466919]}],"adjclose":[{"adjclose":[1.073767900466919]}]}}],"error":null}}' - headers: - Age: - - '0' - Connection: - - keep-alive - Expect-CT: - - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" - Referrer-Policy: - - no-referrer-when-downgrade - Strict-Transport-Security: - - max-age=15552000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - SAMEORIGIN - X-XSS-Protection: - - 1; mode=block - cache-control: - - public, max-age=10, stale-while-revalidate=20 - content-length: - - '920' - content-type: - - application/json;charset=utf-8 - date: - - Thu, 09 Feb 2023 20:58:59 GMT - server: - - ATS - vary: - - Origin,Accept-Encoding - x-envoy-decorator-operation: - - finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/* - x-envoy-upstream-service-time: - - '5' - x-request-id: - - 29a374c0-1800-4f0e-9013-25d498ca0792 - x-yahoo-request-id: - - b0b5bmthuankj - y-rid: - - b0b5bmthuankj - status: - code: 200 - message: OK -version: 1 +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://query2.finance.yahoo.com/v8/finance/chart/EURUSD=X?interval=1d&range=1d + response: + body: + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"EURUSD=X","exchangeName":"CCY","instrumentType":"CURRENCY","firstTradeDate":1070236800,"regularMarketTime":1683048111,"gmtoffset":3600,"timezone":"BST","exchangeTimezoneName":"Europe/London","regularMarketPrice":1.1001,"chartPreviousClose":1.0978,"priceHint":4,"currentTradingPeriod":{"pre":{"timezone":"BST","end":1682982000,"start":1682982000,"gmtoffset":3600},"regular":{"timezone":"BST","end":1683068340,"start":1682982000,"gmtoffset":3600},"post":{"timezone":"BST","end":1683068340,"start":1683068340,"gmtoffset":3600}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1683048111],"indicators":{"quote":[{"low":[1.0946906805038452],"close":[1.1001100540161133],"volume":[0],"open":[1.0976948738098145],"high":[1.1008366346359253]}],"adjclose":[{"adjclose":[1.1001100540161133]}]}}],"error":null}}' + headers: + Age: + - '3' + Connection: + - keep-alive + Expect-CT: + - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" + Referrer-Policy: + - no-referrer-when-downgrade + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-XSS-Protection: + - 1; mode=block + cache-control: + - public, max-age=10, stale-while-revalidate=20 + content-length: + - '935' + content-type: + - application/json;charset=utf-8 + date: + - Tue, 02 May 2023 17:22:34 GMT + server: + - ATS + vary: + - Origin,Accept-Encoding + x-envoy-decorator-operation: + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* + x-envoy-upstream-service-time: + - '3' + x-request-id: + - 60cc9651-a9a7-4d60-ade6-b5a6c867d14f + x-yahoo-request-id: + - 25gig1ti52hmq + y-rid: + - 25gig1ti52hmq + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://query2.finance.yahoo.com/v8/finance/chart/EURUSD=X?events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2 + response: + body: + string: '{"chart":{"result":null,"error":{"code":"Bad Request","description":"Invalid + input - start date cannot be after end date. startDate = 1672531200, endDate + = 1640995200"}}}' + headers: + Age: + - '0' + Cache-Control: + - max-age=0, private + Connection: + - keep-alive + Expect-CT: + - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" + Expires: + - '-1' + Referrer-Policy: + - no-referrer-when-downgrade + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-XSS-Protection: + - 1; mode=block + content-length: + - '170' + content-type: + - application/json;charset=utf-8 + date: + - Tue, 02 May 2023 17:22:35 GMT + server: + - ATS + vary: + - Origin + x-envoy-decorator-operation: + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* + x-envoy-upstream-service-time: + - '1' + x-request-id: + - b19387e4-7512-4837-af31-a537e013db65 + x-yahoo-request-id: + - fq3pgsli52hmr + y-rid: + - fq3pgsli52hmr + status: + code: 400 + message: Bad Request +version: 1 diff --git a/tests/openbb_terminal/forex/txt/test_forex_controller/test_print_help.txt b/tests/openbb_terminal/forex/txt/test_forex_controller/test_print_help.txt index bf4bfed3dd55..e312847f1ced 100644 --- a/tests/openbb_terminal/forex/txt/test_forex_controller/test_print_help.txt +++ b/tests/openbb_terminal/forex/txt/test_forex_controller/test_print_help.txt @@ -7,8 +7,8 @@ Source: YahooFinance [unvl] candle show candle plot for loaded pair[/unvl] [unvl] fwd get forward rates for loaded pair[/unvl] [FXEmpire] -[unvl]> ta technical analysis, ema, macd, rsi, adx, bbands, obv[/unvl] -[unvl]> qa quantitative analysis, decompose, cusum, residuals analysis[/unvl] +[unvl]> ta technical analysis ema, macd, rsi, adx, bbands, obv[/unvl] +[unvl]> qa quantitative analysis decompose, cusum, residuals analysis[/unvl] > forecast forecast techniques Forex brokerages: diff --git a/tests/openbb_terminal/stocks/cassettes/test_stocks_controller/test_call_load.yaml b/tests/openbb_terminal/stocks/cassettes/test_stocks_controller/test_call_load.yaml index 82f3518d5648..ce988bdba7ef 100644 --- a/tests/openbb_terminal/stocks/cassettes/test_stocks_controller/test_call_load.yaml +++ b/tests/openbb_terminal/stocks/cassettes/test_stocks_controller/test_call_load.yaml @@ -12,7 +12,7 @@ interactions: uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?interval=1d&range=1d response: body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1680811204,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":185.06,"chartPreviousClose":185.52,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","end":1680787800,"start":1680768000,"gmtoffset":-14400},"regular":{"timezone":"EDT","end":1680811200,"start":1680787800,"gmtoffset":-14400},"post":{"timezone":"EDT","end":1680825600,"start":1680811200,"gmtoffset":-14400}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1680811204],"indicators":{"quote":[{"volume":[123857932],"high":[186.38999938964844],"open":[183.0800018310547],"low":[179.74000549316406],"close":[185.05999755859375]}],"adjclose":[{"adjclose":[185.05999755859375]}]}}],"error":null}}' + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1683048177,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":161.54,"chartPreviousClose":161.83,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","end":1683034200,"start":1683014400,"gmtoffset":-14400},"regular":{"timezone":"EDT","end":1683057600,"start":1683034200,"gmtoffset":-14400},"post":{"timezone":"EDT","end":1683072000,"start":1683057600,"gmtoffset":-14400}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1683048177],"indicators":{"quote":[{"volume":[86515986],"open":[161.8800048828125],"low":[159.75],"high":[165.49000549316406],"close":[161.5399932861328]}],"adjclose":[{"adjclose":[161.5399932861328]}]}}],"error":null}}' headers: Age: - '0' @@ -33,25 +33,25 @@ interactions: cache-control: - public, max-age=10, stale-while-revalidate=20 content-length: - - '947' + - '932' content-type: - application/json;charset=utf-8 date: - - Fri, 07 Apr 2023 01:13:48 GMT + - Tue, 02 May 2023 17:22:58 GMT server: - ATS vary: - Origin,Accept-Encoding x-envoy-decorator-operation: - - finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/* + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - - '3' + - '4' x-request-id: - - 33f97fae-292d-41c6-9e00-dd87dc899d34 + - 9e5d6588-acbe-49d0-b4d6-e9f0e235a96d x-yahoo-request-id: - - 8go2nq1i2uric + - 2m2bsqti52hni y-rid: - - 8go2nq1i2uric + - 2m2bsqti52hni status: code: 200 message: OK @@ -68,10 +68,10 @@ interactions: uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?events=div%2Csplits%2CcapitalGains&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2 response: body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1680811204,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":185.06,"chartPreviousClose":308.973,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","start":1680768000,"end":1680787800,"gmtoffset":-14400},"regular":{"timezone":"EDT","start":1680787800,"end":1680811200,"gmtoffset":-14400},"post":{"timezone":"EDT","start":1680811200,"end":1680825600,"gmtoffset":-14400}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639751400],"indicators":{"quote":[{"low":[303.0133361816406],"high":[320.2200012207031],"volume":[100437300],"open":[304.92333984375],"close":[310.8566589355469]}],"adjclose":[{"adjclose":[310.8566589355469]}]}}],"error":null}}' + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1683048177,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":161.54,"chartPreviousClose":308.973,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EDT","start":1683014400,"end":1683034200,"gmtoffset":-14400},"regular":{"timezone":"EDT","start":1683034200,"end":1683057600,"gmtoffset":-14400},"post":{"timezone":"EDT","start":1683057600,"end":1683072000,"gmtoffset":-14400}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639751400],"indicators":{"quote":[{"low":[303.0133361816406],"high":[320.2200012207031],"close":[310.8566589355469],"open":[304.92333984375],"volume":[100437300]}],"adjclose":[{"adjclose":[310.8566589355469]}]}}],"error":null}}' headers: Age: - - '1' + - '3' Connection: - keep-alive Expect-CT: @@ -93,21 +93,21 @@ interactions: content-type: - application/json;charset=utf-8 date: - - Fri, 07 Apr 2023 01:13:48 GMT + - Tue, 02 May 2023 17:22:58 GMT server: - ATS vary: - Origin,Accept-Encoding x-envoy-decorator-operation: - - finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/* + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - - '3' + - '2' x-request-id: - - 4bb0cc2b-0d0b-427c-a5ea-e29ea789f32c + - 41a4eefd-738e-4f5d-b1bb-ca31c2e68e7f x-yahoo-request-id: - - 99v3pp1i2urid + - 50h8609i52hni y-rid: - - 99v3pp1i2urid + - 50h8609i52hni status: code: 200 message: OK diff --git a/tests/openbb_terminal/stocks/txt/test_stocks_controller/test_print_help.txt b/tests/openbb_terminal/stocks/txt/test_stocks_controller/test_print_help.txt index 2055285f8c92..4c500a56c349 100644 --- a/tests/openbb_terminal/stocks/txt/test_stocks_controller/test_print_help.txt +++ b/tests/openbb_terminal/stocks/txt/test_stocks_controller/test_print_help.txt @@ -9,19 +9,19 @@ Stock: [unvl] codes FIGI, SIK and SIC codes codes[/unvl] [Polygon] [unvl] news latest news of the company[/unvl] [Feedparser, NewsApi, Ultima] -> th trading hours, check open markets -> options options menu, chains, open interest, greeks, parity -> disc discover trending stocks, map, sectors, high short interest -> dps dark pool and short data, darkpool, short interest, ftd -> scr screener stocks, overview/performance, using preset filters -> ins insider trading, latest penny stock buys, top officer purchases -> gov government menu, house trading, contracts, corporate lobbying -> ba behavioural analysis, from reddit, stocktwits, twitter, google -> ca comparison analysis, get similar, historical, correlation, financials -> fa fundamental analysis, income, balance, cash, ratios, earnings, expectations -> bt strategy backtester, simple ema, ema cross, rsi strategies -> ta technical analysis, ema, macd, rsi, adx, bbands, obv -> qa quantitative analysis, decompose, cusum, residuals analysis -> forecast forecast techniques, rnn, nbeats, transformer, block rnn -[unvl]> res research web page, macroaxis, yahoo finance, fool[/unvl] +> th trading hours check open markets +> options options menu chains, open interest, greeks, parity +> disc discover trending stocks map, sectors, high short interest +> dps dark pool and short data darkpool, short interest, ftd +> scr screener stocks overview/performance, using preset filters +> ins insider trading latest penny stock buys, top officer purchases +> gov government menu house trading, contracts, corporate lobbying +> ba behavioural analysis from reddit, stocktwits, twitter, google +> ca comparison analysis get similar, historical, correlation, financials +> fa fundamental analysis income, balance, cash, ratios, earnings, expectations +> bt strategy backtester simple ema, ema cross, rsi strategies +> ta technical analysis ema, macd, rsi, adx, bbands, obv +> qa quantitative analysis decompose, cusum, residuals analysis +> forecast forecast techniques rnn, nbeats, transformer, block rnn +[unvl]> res research web page macroaxis, yahoo finance, fool[/unvl] From c5bf54c73fac80f135dfe367709db39e5863cbda Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Tue, 2 May 2023 12:29:50 -0700 Subject: [PATCH 22/70] Changes title from, Settings & API Keys, to, Setting API Keys (#4949) --- website/content/terminal/usage/guides/api-keys.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/content/terminal/usage/guides/api-keys.md b/website/content/terminal/usage/guides/api-keys.md index 3f321d026ee6..c6a884a2a581 100644 --- a/website/content/terminal/usage/guides/api-keys.md +++ b/website/content/terminal/usage/guides/api-keys.md @@ -1,5 +1,5 @@ --- -title: Settings & API Keys +title: Setting API Keys sidebar_position: 1 description: API (Application Programming Interface) keys are access credentials for accessing data from a particular source. Learn how to set, manage, and access data APIs for the OpenBB Terminal. keywords: [api, keys, api keys, openbb terminal, data provider, data, free, alpha vantage, fred, iex, twitter, degiro, binance, coinglass, polygon, intrinio, sdk, alphavantage, bitquery, coinbase, databento, finnhub, FRED, github, glassnode, iex cloud, news API, robinhood, santiment, shroomdk, token terminal, tradier, twitter, whale alert] @@ -7,7 +7,7 @@ keywords: [api, keys, api keys, openbb terminal, data provider, data, free, alph import HeadTitle from '@site/src/components/General/HeadTitle.tsx'; - + API (Application Programming Interface) keys are access credentials for obtaining data from a particular source. They are a string of random characters assigned, by the data provider, to an individual account. Most vendors offer a free tier requiring only a valid email address, some will require an account with proper KYC (Know Your Customer). Each source is entered into the Terminal from the `/keys` menu with the syntax as described in the sections below. Adding the `-h` argument to the command will also display the expected inputs. For example, From 30372676bf84d6c16f2f23bb3c7fa01145c20bf6 Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Wed, 3 May 2023 13:56:07 +0200 Subject: [PATCH 23/70] crypto/disc DappRadar update (#4918) * Add API Key, test function * Fix API key * Add free NFT endpoints * Add free Dapp Endpoints * Add free DeFi Endpoint * Add free Token Endpoint * Menu cleanup * Update unit tests * Update integration test * ruff * Description * Update SDK model * Trail map * Fix map * Fix map * Update SDK cache * Linting * fix --------- Co-authored-by: Chavithra PARANA --- .../sdk/controllers/crypto_sdk_controller.py | 24 +- .../core/sdk/models/crypto_sdk_model.py | 54 +- .../core/sdk/models/forecast_sdk_model.py | 1 - .../core/sdk/models/portfolio_sdk_model.py | 1 - openbb_terminal/core/sdk/trail_map.csv | 12 +- .../discovery/dappradar_model.py | 405 +++-- .../discovery/dappradar_view.py | 237 ++- .../discovery/discovery_controller.py | 319 ++-- openbb_terminal/helper_funcs.py | 5 +- openbb_terminal/keys_controller.py | 33 +- openbb_terminal/keys_model.py | 77 +- openbb_terminal/miscellaneous/i18n/en.yml | 12 +- .../cryptocurrency/test_crypto_disc.openbb | 20 +- .../miscellaneous/models/hub_credentials.json | 3 +- .../miscellaneous/sources/openbb_default.json | 1490 +++++++++++++---- openbb_terminal/sdk.py | 16 + ...test_call_func[get_top_dapps-kwargs3].yaml | 50 - ...test_call_func[get_top_dexes-kwargs1].yaml | 50 - ...test_call_func[get_top_games-kwargs2].yaml | 50 - .../test_call_func[get_top_nfts-kwargs0].yaml | 98 -- ..._call_func[display_top_dapps-kwargs3].yaml | 50 - ..._call_func[display_top_dexes-kwargs2].yaml | 50 - ..._call_func[display_top_games-kwargs1].yaml | 50 - ...t_call_func[display_top_nfts-kwargs0].yaml | 98 -- .../test_call_func[get_top_dapps-kwargs3].csv | 11 - .../test_call_func[get_top_dexes-kwargs1].csv | 1 - .../test_call_func[get_top_games-kwargs2].csv | 6 - .../test_call_func[get_top_nfts-kwargs0].csv | 1 - ...all_func[get_dapp_categories-kwargs4].yaml | 68 + ...st_call_func[get_dapp_chains-kwargs3].yaml | 72 + .../test_call_func[get_dapps-kwargs2].yaml | 131 ++ ...st_call_func[get_defi_chains-kwargs6].yaml | 72 + ...c[get_nft_marketplace_chains-kwargs1].yaml | 72 + ...ll_func[get_nft_marketplaces-kwargs0].yaml | 92 + ...t_call_func[get_token_chains-kwargs5].yaml | 68 + ...func[display_dapp_categories-kwargs3].yaml | 72 + ...all_func[display_dapp_chains-kwargs4].yaml | 72 + ...test_call_func[display_dapps-kwargs2].yaml | 135 ++ ...all_func[display_defi_chains-kwargs6].yaml | 72 + ...splay_nft_marketplace_chains-kwargs1].yaml | 72 + ...unc[display_nft_marketplaces-kwargs0].yaml | 96 ++ ...ll_func[display_token_chains-kwargs5].yaml | 72 + ...all_func[get_dapp_categories-kwargs4].json | 1 + ...st_call_func[get_dapp_chains-kwargs3].json | 1 + .../test_call_func[get_dapps-kwargs2].json | 1 + ...st_call_func[get_defi_chains-kwargs6].json | 1 + ...c[get_nft_marketplace_chains-kwargs1].json | 1 + ...ll_func[get_nft_marketplaces-kwargs0].json | 1 + ...t_call_func[get_token_chains-kwargs5].json | 1 + ...func[display_dapp_categories-kwargs3].json | 1 + ...all_func[display_dapp_chains-kwargs4].json | 1 + ...test_call_func[display_dapps-kwargs2].json | 1 + ...all_func[display_defi_chains-kwargs6].json | 1 + ...splay_nft_marketplace_chains-kwargs1].json | 1 + ...unc[display_nft_marketplaces-kwargs0].json | 1 + ...ll_func[display_token_chains-kwargs5].json | 1 + ...tegories-kwargs3-get_dapp_categories].json | 1 + ..._dapp_chains-kwargs4-get_dapp_chains].json | 1 + ...y_df[display_dapps-kwargs2-get_dapps].json | 1 + ..._defi_chains-kwargs6-get_defi_chains].json | 1 + ...s-kwargs1-get_nft_marketplace_chains].json | 1 + ...etplaces-kwargs0-get_nf_marketplaces].json | 1 + ...tplaces-kwargs0-get_nft_marketplaces].json | 1 + ...oken_chains-kwargs5-get_token_chains].json | 1 + .../discovery/test_dappradar_model.py | 19 +- .../discovery/test_dappradar_view.py | 54 +- .../discovery/test_discovery_controller.py | 45 +- ...t_call_func[display_top_dapps-kwargs3].txt | 11 - ...t_call_func[display_top_dexes-kwargs2].txt | 1 - ...t_call_func[display_top_games-kwargs1].txt | 6 - ...st_call_func[display_top_nfts-kwargs0].txt | 1 - ...splay_top_dapps-kwargs3-get_top_dapps].txt | 1 - ...splay_top_dexes-kwargs2-get_top_dexes].txt | 1 - ...splay_top_games-kwargs1-get_top_games].txt | 1 - ...display_top_nfts-kwargs0-get_top_nfts].txt | 1 - .../test_print_help.txt | 12 +- .../overview/test_sdk_helpers.py | 2 +- 77 files changed, 3274 insertions(+), 1293 deletions(-) delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_games-kwargs2].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_games-kwargs1].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].csv delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].csv delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_games-kwargs2].csv delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].csv create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapps-kwargs2].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_token_chains-kwargs5].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapps-kwargs2].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_token_chains-kwargs5].yaml create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapps-kwargs2].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_token_chains-kwargs5].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapps-kwargs2].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_token_chains-kwargs5].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_categories-kwargs3-get_dapp_categories].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_chains-kwargs4-get_dapp_chains].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapps-kwargs2-get_dapps].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_defi_chains-kwargs6-get_defi_chains].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplace_chains-kwargs1-get_nft_marketplace_chains].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nf_marketplaces].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nft_marketplaces].json create mode 100644 tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_token_chains-kwargs5-get_token_chains].json delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_games-kwargs1].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dapps-kwargs3-get_top_dapps].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dexes-kwargs2-get_top_dexes].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_games-kwargs1-get_top_games].txt delete mode 100644 tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_nfts-kwargs0-get_top_nfts].txt diff --git a/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py b/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py index 850c18af5aee..d80a53cd74be 100644 --- a/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py +++ b/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py @@ -173,19 +173,27 @@ def disc(self): `coins_for_given_exchange`: Helper method to get all coins available on binance exchange [Source: CoinGecko]\n `cpsearch`: Search CoinPaprika. [Source: CoinPaprika]\n `cpsearch_chart`: Prints table showing Search over CoinPaprika. [Source: CoinPaprika]\n + `dapp_categories`: Get dapp categories [Source: https://dappradar.com/]\n + `dapp_categories_chart`: Prints table showing dapp categories [Source: https://dappradar.com/]\n + `dapp_chains`: Get dapp chains [Source: https://dappradar.com/]\n + `dapp_chains_chart`: Prints table showing dapp chains [Source: https://dappradar.com/]\n + `dapp_metrics`: Get dapp metrics [Source: https://dappradar.com/]\n + `dapp_metrics_chart`: Prints table showing dapp metrics [Source: https://dappradar.com/]\n + `dapps`: Get dapps [Source: https://dappradar.com/]\n + `dapps_chart`: Prints table showing dapps [Source: https://dappradar.com/]\n + `defi_chains`: Get defi chains [Source: https://dappradar.com/]\n + `defi_chains_chart`: Prints table showing defi chains [Source: https://dappradar.com/]\n `gainers`: Shows Largest Gainers - coins which gain the most in given period. [Source: CoinGecko]\n `gainers_chart`: Prints table showing Largest Gainers - coins which gain the most in given period. [Source: CoinGecko]\n `losers`: Shows Largest Losers - coins which lose the most in given period. [Source: CoinGecko]\n `losers_chart`: Prints table showing Largest Losers - coins which lost the most in given period of time. [Source: CoinGecko]\n + `nft_mktp`: Get top nft collections [Source: https://dappradar.com/]\n + `nft_mktp_chart`: Prints table showing nft marketplaces [Source: https://dappradar.com/]\n + `nft_mktp_chains`: Get nft marketplaces chains [Source: https://dappradar.com/]\n + `nft_mktp_chains_chart`: Prints table showing nft marketplaces chains [Source: https://dappradar.com/]\n + `tokens`: Get chains that support tokens [Source: https://dappradar.com/]\n + `tokens_chart`: Prints table showing chains that support tokens [Source: https://dappradar.com/]\n `top_coins`: Get top cryptp coins.\n - `top_dapps`: Get top decentralized applications by daily volume and users [Source: https://dappradar.com/]\n - `top_dapps_chart`: Prints table showing top decentralized exchanges [Source: https://dappradar.com/]\n - `top_dexes`: Get top dexes by daily volume and users [Source: https://dappradar.com/]\n - `top_dexes_chart`: Prints table showing top decentralized exchanges [Source: https://dappradar.com/]\n - `top_games`: Get top blockchain games by daily volume and users [Source: https://dappradar.com/]\n - `top_games_chart`: Prints table showing top blockchain games [Source: https://dappradar.com/]\n - `top_nfts`: Get top nft collections [Source: https://dappradar.com/]\n - `top_nfts_chart`: Prints table showing top nft collections [Source: https://dappradar.com/]\n `trending`: Returns trending coins [Source: CoinGecko]\n `trending_chart`: Prints table showing trending coins [Source: CoinGecko]\n """ diff --git a/openbb_terminal/core/sdk/models/crypto_sdk_model.py b/openbb_terminal/core/sdk/models/crypto_sdk_model.py index 5dcd4460b22e..0efc1b5bbebe 100644 --- a/openbb_terminal/core/sdk/models/crypto_sdk_model.py +++ b/openbb_terminal/core/sdk/models/crypto_sdk_model.py @@ -326,19 +326,27 @@ class CryptoDiscovery(Category): `coins_for_given_exchange`: Helper method to get all coins available on binance exchange [Source: CoinGecko]\n `cpsearch`: Search CoinPaprika. [Source: CoinPaprika]\n `cpsearch_chart`: Prints table showing Search over CoinPaprika. [Source: CoinPaprika]\n + `dapp_categories`: Get dapp categories [Source: https://dappradar.com/]\n + `dapp_categories_chart`: Prints table showing dapp categories [Source: https://dappradar.com/]\n + `dapp_chains`: Get dapp chains [Source: https://dappradar.com/]\n + `dapp_chains_chart`: Prints table showing dapp chains [Source: https://dappradar.com/]\n + `dapp_metrics`: Get dapp metrics [Source: https://dappradar.com/]\n + `dapp_metrics_chart`: Prints table showing dapp metrics [Source: https://dappradar.com/]\n + `dapps`: Get dapps [Source: https://dappradar.com/]\n + `dapps_chart`: Prints table showing dapps [Source: https://dappradar.com/]\n + `defi_chains`: Get defi chains [Source: https://dappradar.com/]\n + `defi_chains_chart`: Prints table showing defi chains [Source: https://dappradar.com/]\n `gainers`: Shows Largest Gainers - coins which gain the most in given period. [Source: CoinGecko]\n `gainers_chart`: Prints table showing Largest Gainers - coins which gain the most in given period. [Source: CoinGecko]\n `losers`: Shows Largest Losers - coins which lose the most in given period. [Source: CoinGecko]\n `losers_chart`: Prints table showing Largest Losers - coins which lost the most in given period of time. [Source: CoinGecko]\n + `nft_mktp`: Get top nft collections [Source: https://dappradar.com/]\n + `nft_mktp_chart`: Prints table showing nft marketplaces [Source: https://dappradar.com/]\n + `nft_mktp_chains`: Get nft marketplaces chains [Source: https://dappradar.com/]\n + `nft_mktp_chains_chart`: Prints table showing nft marketplaces chains [Source: https://dappradar.com/]\n + `tokens`: Get chains that support tokens [Source: https://dappradar.com/]\n + `tokens_chart`: Prints table showing chains that support tokens [Source: https://dappradar.com/]\n `top_coins`: Get top cryptp coins.\n - `top_dapps`: Get top decentralized applications by daily volume and users [Source: https://dappradar.com/]\n - `top_dapps_chart`: Prints table showing top decentralized exchanges [Source: https://dappradar.com/]\n - `top_dexes`: Get top dexes by daily volume and users [Source: https://dappradar.com/]\n - `top_dexes_chart`: Prints table showing top decentralized exchanges [Source: https://dappradar.com/]\n - `top_games`: Get top blockchain games by daily volume and users [Source: https://dappradar.com/]\n - `top_games_chart`: Prints table showing top blockchain games [Source: https://dappradar.com/]\n - `top_nfts`: Get top nft collections [Source: https://dappradar.com/]\n - `top_nfts_chart`: Prints table showing top nft collections [Source: https://dappradar.com/]\n `trending`: Returns trending coins [Source: CoinGecko]\n `trending_chart`: Prints table showing trending coins [Source: CoinGecko]\n """ @@ -356,19 +364,33 @@ def __init__(self): ) self.cpsearch = lib.crypto_disc_coinpaprika_model.get_search_results self.cpsearch_chart = lib.crypto_disc_coinpaprika_view.display_search_results + self.dapp_categories = lib.crypto_disc_dappradar_model.get_dapp_categories + self.dapp_categories_chart = ( + lib.crypto_disc_dappradar_view.display_dapp_categories + ) + self.dapp_chains = lib.crypto_disc_dappradar_model.get_dapp_chains + self.dapp_chains_chart = lib.crypto_disc_dappradar_view.display_dapp_chains + self.dapp_metrics = lib.crypto_disc_dappradar_model.get_dapp_metrics + self.dapp_metrics_chart = lib.crypto_disc_dappradar_view.display_dapp_metrics + self.dapps = lib.crypto_disc_dappradar_model.get_dapps + self.dapps_chart = lib.crypto_disc_dappradar_view.display_dapps + self.defi_chains = lib.crypto_disc_dappradar_model.get_defi_chains + self.defi_chains_chart = lib.crypto_disc_dappradar_view.display_defi_chains self.gainers = lib.crypto_disc_pycoingecko_model.get_gainers self.gainers_chart = lib.crypto_disc_pycoingecko_view.display_gainers self.losers = lib.crypto_disc_pycoingecko_model.get_losers self.losers_chart = lib.crypto_disc_pycoingecko_view.display_losers + self.nft_mktp = lib.crypto_disc_dappradar_model.get_nft_marketplaces + self.nft_mktp_chart = lib.crypto_disc_dappradar_view.display_nft_marketplaces + self.nft_mktp_chains = ( + lib.crypto_disc_dappradar_model.get_nft_marketplace_chains + ) + self.nft_mktp_chains_chart = ( + lib.crypto_disc_dappradar_view.display_nft_marketplace_chains + ) + self.tokens = lib.crypto_disc_dappradar_model.get_token_chains + self.tokens_chart = lib.crypto_disc_dappradar_view.display_token_chains self.top_coins = lib.crypto_disc_sdk_helpers.top_coins - self.top_dapps = lib.crypto_disc_dappradar_model.get_top_dapps - self.top_dapps_chart = lib.crypto_disc_dappradar_view.display_top_dapps - self.top_dexes = lib.crypto_disc_dappradar_model.get_top_dexes - self.top_dexes_chart = lib.crypto_disc_dappradar_view.display_top_dexes - self.top_games = lib.crypto_disc_dappradar_model.get_top_games - self.top_games_chart = lib.crypto_disc_dappradar_view.display_top_games - self.top_nfts = lib.crypto_disc_dappradar_model.get_top_nfts - self.top_nfts_chart = lib.crypto_disc_dappradar_view.display_top_nfts self.trending = lib.crypto_disc_pycoingecko_model.get_trending_coins self.trending_chart = lib.crypto_disc_pycoingecko_view.display_trending diff --git a/openbb_terminal/core/sdk/models/forecast_sdk_model.py b/openbb_terminal/core/sdk/models/forecast_sdk_model.py index be6fbc3e4f0d..dacbfa927a35 100644 --- a/openbb_terminal/core/sdk/models/forecast_sdk_model.py +++ b/openbb_terminal/core/sdk/models/forecast_sdk_model.py @@ -78,7 +78,6 @@ def __init__(self): if not lib.FORECASTING_TOOLKIT_ENABLED: # pylint: disable=C0415 - from openbb_terminal.rich_config import console console.print(lib.FORECASTING_TOOLKIT_WARNING) diff --git a/openbb_terminal/core/sdk/models/portfolio_sdk_model.py b/openbb_terminal/core/sdk/models/portfolio_sdk_model.py index bc4558a9aea6..14457d671fdf 100644 --- a/openbb_terminal/core/sdk/models/portfolio_sdk_model.py +++ b/openbb_terminal/core/sdk/models/portfolio_sdk_model.py @@ -178,7 +178,6 @@ def __init__(self): if not lib.OPTIMIZATION_TOOLKIT_ENABLED: # pylint: disable=C0415 - from openbb_terminal.rich_config import console console.print(lib.OPTIMIZATION_TOOLKIT_WARNING) diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index 477bcfbb544a..042188073640 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -91,13 +91,17 @@ crypto.disc.coin_list,crypto_disc_pycoingecko_model.get_coin_list, crypto.disc.coins,crypto_disc_pycoingecko_model.get_coins,crypto_disc_pycoingecko_view.display_coins crypto.disc.coins_for_given_exchange,crypto_disc_pycoingecko_model.get_coins_for_given_exchange, crypto.disc.cpsearch,crypto_disc_coinpaprika_model.get_search_results,crypto_disc_coinpaprika_view.display_search_results +crypto.disc.dapp_categories,crypto_disc_dappradar_model.get_dapp_categories,crypto_disc_dappradar_view.display_dapp_categories +crypto.disc.dapp_chains,crypto_disc_dappradar_model.get_dapp_chains,crypto_disc_dappradar_view.display_dapp_chains +crypto.disc.dapp_metrics,crypto_disc_dappradar_model.get_dapp_metrics,crypto_disc_dappradar_view.display_dapp_metrics +crypto.disc.dapps,crypto_disc_dappradar_model.get_dapps,crypto_disc_dappradar_view.display_dapps +crypto.disc.defi_chains,crypto_disc_dappradar_model.get_defi_chains,crypto_disc_dappradar_view.display_defi_chains crypto.disc.gainers,crypto_disc_pycoingecko_model.get_gainers,crypto_disc_pycoingecko_view.display_gainers crypto.disc.losers,crypto_disc_pycoingecko_model.get_losers,crypto_disc_pycoingecko_view.display_losers +crypto.disc.nft_mktp,crypto_disc_dappradar_model.get_nft_marketplaces,crypto_disc_dappradar_view.display_nft_marketplaces +crypto.disc.nft_mktp_chains,crypto_disc_dappradar_model.get_nft_marketplace_chains,crypto_disc_dappradar_view.display_nft_marketplace_chains +crypto.disc.tokens,crypto_disc_dappradar_model.get_token_chains,crypto_disc_dappradar_view.display_token_chains crypto.disc.top_coins,crypto_disc_sdk_helpers.top_coins, -crypto.disc.top_dapps,crypto_disc_dappradar_model.get_top_dapps,crypto_disc_dappradar_view.display_top_dapps -crypto.disc.top_dexes,crypto_disc_dappradar_model.get_top_dexes,crypto_disc_dappradar_view.display_top_dexes -crypto.disc.top_games,crypto_disc_dappradar_model.get_top_games,crypto_disc_dappradar_view.display_top_games -crypto.disc.top_nfts,crypto_disc_dappradar_model.get_top_nfts,crypto_disc_dappradar_view.display_top_nfts crypto.disc.trending,crypto_disc_pycoingecko_model.get_trending_coins,crypto_disc_pycoingecko_view.display_trending crypto.find,crypto_models.find, crypto.load,crypto_helpers.load, diff --git a/openbb_terminal/cryptocurrency/discovery/dappradar_model.py b/openbb_terminal/cryptocurrency/discovery/dappradar_model.py index 9e6410638047..fdc6a28fde22 100644 --- a/openbb_terminal/cryptocurrency/discovery/dappradar_model.py +++ b/openbb_terminal/cryptocurrency/discovery/dappradar_model.py @@ -7,7 +7,8 @@ import pandas as pd -from openbb_terminal.decorators import log_start_end +from openbb_terminal.core.session.current_user import get_current_user +from openbb_terminal.decorators import check_api_key, log_start_end from openbb_terminal.helper_funcs import get_user_agent, request from openbb_terminal.rich_config import console @@ -15,26 +16,15 @@ NFT_COLUMNS = [ "Name", - "Protocols", - "Floor Price [$]", + "Dapp ID", + "Logo", + "Chains", "Avg Price [$]", - "Market Cap [$]", + "Avg Price Change [%]", "Volume [$]", -] - -DAPPS_COLUMNS = [ - "Name", - "Category", - "Protocols", - "Daily Users", - "Daily Volume [$]", -] - -DEX_COLUMNS = [ - "Name", - "Category", - "Daily Users", - "Daily Volume [$]", + "Volume Change [%]", + "Traders", + "Traders Change [%]", ] @@ -54,11 +44,13 @@ def _make_request(url: str, verbose: bool = False) -> Optional[dict]: Optional[dict]: dictionary with response data """ + current_user = get_current_user() headers = { "Accept": "application/json", "User-Agent": get_user_agent(), - "referer": "https://dappradar.com/", + # "referer": "https://api.dappradar.com/4tsxo4vuhotaojtl/", + "X-BLOBR-KEY": current_user.credentials.API_DAPPRADAR_KEY, } response = request(url, headers=headers) if not 200 <= response.status_code < 300: @@ -75,193 +67,320 @@ def _make_request(url: str, verbose: bool = False) -> Optional[dict]: @log_start_end(log=logger) -def get_top_nfts(sortby: str = "", limit: int = 10) -> pd.DataFrame: +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_nft_marketplaces( + chain: str = "", sortby: str = "", order: str = "", limit: int = 10 +) -> pd.DataFrame: """Get top nft collections [Source: https://dappradar.com/] Parameters ---------- + chain: str + Name of the chain sortby: str Key by which to sort data + order: str + Order of sorting + limit: int + Number of records to display Returns ------- pd.DataFrame - NFTs Columns: Name, Protocols, Floor Price [$], Avg Price [$], Market Cap [$], Volume [$] + Columns: Name, Dapp ID, Logo, Chains, Avg Price [$], Avg Price Change [%], + Volume [$], Volume Change [%], Traders, Traders Change [%] """ - sortby = sortby.replace("_", " ").title() + args = { + "chain": chain, + "order": order, + "sort": sortby, + "resultsPerPage": limit, + } + args = {k: v for k, v in args.items() if v} + query_string = "&".join([f"{k}={v}" for k, v in args.items()]) response = _make_request( - "https://nft-sales-service.dappradar.com/v2/collection/day?limit=20&p" - "age=1¤cy=USD&sort=marketCapInFiat&order=desc" + f"https://api.dappradar.com/4tsxo4vuhotaojtl/nfts/marketplaces?{query_string}" ) if response: data = response.get("results") - df = pd.DataFrame( + + return pd.DataFrame( data, columns=[ "name", - "activeProtocols", - "floorPriceInFiat", - "avgPriceInFiat", - "marketCapInFiat", - "volumeInFiat", + "dappId", + "logo", + "chains", + "avgPrice", + "avgPricePercentageChange", + "volume", + "volumePercentageChange", + "traders", + "tradersPercentageChange", ], + ).rename( + columns={ + "name": "Name", + "dappId": "Dapp ID", + "logo": "Logo", + "chains": "Chains", + "avgPrice": "Avg Price [$]", + "avgPricePercentageChange": "Avg Price Change [%]", + "volume": "Volume [$]", + "volumePercentageChange": "Volume Change [%]", + "traders": "Traders", + "tradersPercentageChange": "Traders Change [%]", + } ) + return pd.DataFrame() + - df = df.set_axis( - NFT_COLUMNS, - axis=1, - copy=False, +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_nft_marketplace_chains() -> pd.DataFrame: + """Get nft marketplaces chains [Source: https://dappradar.com/] + + Returns + ------- + pd.DataFrame + Columns: Chain + """ + + response = _make_request( + "https://api.dappradar.com/4tsxo4vuhotaojtl/nfts/marketplaces/chains" + ) + if response: + data = response.get("chains") + + return pd.DataFrame( + data, + columns=["Chain"], ) - df["Protocols"] = df["Protocols"].apply(lambda x: ",".join(x)) - if response and sortby in NFT_COLUMNS: - df = df.sort_values(by=sortby, ascending=False) - return df.head(limit) return pd.DataFrame() @log_start_end(log=logger) -def get_top_dexes(sortby: str = "", limit: int = 10) -> pd.DataFrame: - """Get top dexes by daily volume and users [Source: https://dappradar.com/] +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_dapps(chain: str = "", page: int = 1, resultPerPage: int = 15): + """Get dapps [Source: https://dappradar.com/] Parameters ---------- - sortby: str - Key by which to sort data + chain: str + Name of the chain + page: int + Page number + resultPerPage: int + Number of records to display Returns ------- pd.DataFrame - Top decentralized exchanges. Columns: Name, Daily Users, Daily Volume [$] + Columns: Dapp ID, Name, Description, Full Description, Logo, Link, Website, + Chains, Categories """ - sortby = sortby.replace("_", " ").title() + args = { + "chain": chain, + "page": page, + } + args = {k: v for k, v in args.items() if v} + query_string = "&".join([f"{k}={v}" for k, v in args.items()]) - data = _make_request( - "https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXR" - # pragma: allowlist nextline secret - "ZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbU5oZEdWbmIzSjVQV1Y0WTJ" - # pragma: allowlist nextline secret - "oaGJtZGxjeVp6YjNKMFBYUnZkR0ZzVm05c2RXMWxTVzVHYVdGMEptOXlaR1Z5UFdSbGMyTW1iR2x0YVhROU1qWT0=" + response = _make_request( + f"https://api.dappradar.com/4tsxo4vuhotaojtl/dapps?{query_string}" ) - if data: - arr = [ - [ - dex["name"], - dex["category"], - dex["statistic"]["userActivity"], - dex["statistic"]["totalVolumeInFiat"], - ] - for dex in data["dapps"] - ] - - df = pd.DataFrame(arr, columns=DEX_COLUMNS) - if sortby in DEX_COLUMNS: - df = df.sort_values(by=sortby, ascending=False) - df = df[df["Category"] == "exchanges"] - if df.empty: - return pd.DataFrame() - df.drop("Category", axis=1, inplace=True) - return df.head(limit) + + if response: + data = response.get("results") + return ( + pd.DataFrame( + data, + columns=[ + "dappId", + "name", + "description", + "fullDescription", + "chains", + "categories", + "logo", + "link", + "website", + ], + ) + .rename( + columns={ + "dappId": "Dapp ID", + "name": "Name", + "description": "Description", + "fullDescription": "Full Description", + "chains": "Chains", + "categories": "Categories", + "logo": "Logo", + "link": "Link", + "website": "Website", + } + ) + .head(resultPerPage) # DappRadar resultsPerPage is broken + ) + return pd.DataFrame() @log_start_end(log=logger) -def get_top_games(sortby: str = "", limit: int = 10) -> pd.DataFrame: - """Get top blockchain games by daily volume and users [Source: https://dappradar.com/] +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_dapp_categories() -> pd.DataFrame: + """Get dapp categories [Source: https://dappradar.com/] + + Returns + ------- + pd.DataFrame + Columns: Category + """ + + response = _make_request( + "https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/categories" + ) + if response: + data = response.get("categories") + + return pd.DataFrame( + data, + columns=["Category"], + ) + return pd.DataFrame() - Parameters - ---------- - limit: int - Number of records to display - sortby: str - Key by which to sort data + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_dapp_chains() -> pd.DataFrame: + """Get dapp chains [Source: https://dappradar.com/] Returns ------- pd.DataFrame - Top blockchain games. Columns: Name, Daily Users, Daily Volume [$] + Columns: Chain """ - sortby = sortby.replace("_", " ").title() + response = _make_request("https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/chains") + if response: + data = response.get("chains") - data = _make_request( - # pragma: allowlist nextline secret - "https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMX" - # pragma: allowlist nextline secret - "RZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbU5oZEdWbmIzSjVQV2R" - # pragma: allowlist nextline secret - "oYldWekpuTnZjblE5ZFhObGNpWnZjbVJsY2oxa1pYTmpKbXhwYldsMFBUSTI=" - ) - if data: - arr = [ - [ - dex["name"], - dex["category"], - dex["statistic"]["userActivity"], - dex["statistic"]["totalVolumeInFiat"], - ] - for dex in data["dapps"] - ] - - df = pd.DataFrame( - arr, - columns=DEX_COLUMNS, - ).sort_values("Daily Users", ascending=False) - if sortby in df.columns: - df = df.sort_values(by=sortby, ascending=False) - df = df[df["Category"] == "games"] - df.drop("Category", axis=1, inplace=True) - return df.head(limit) + return pd.DataFrame( + data, + columns=["Chain"], + ) return pd.DataFrame() @log_start_end(log=logger) -def get_top_dapps(sortby: str = "", limit: int = 10) -> pd.DataFrame: - """Get top decentralized applications by daily volume and users [Source: https://dappradar.com/] +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_dapp_metrics( + dappId: int, chain: str = "", time_range: str = "" +) -> pd.DataFrame: + """Get dapp metrics [Source: https://dappradar.com/] Parameters ---------- - sortby: str - Key by which to sort data + dappId: int + Dapp ID + chain: str + Name of the chain if the dapp is multi-chain + range: str + Time range for the metrics. Can be 24h, 7d, 30d Returns ------- pd.DataFrame - Top decentralized exchanges. - Columns: Name, Category, Protocols, Daily Users, Daily Volume [$] + Columns: Transactions, Transactions Change [%], Users, UAW, UAW Change [%], + Volume [$], Volume Change [%], Balance [$], Balance Change [%] """ + if not dappId: + console.print("[red]Please provide a dappId[/red]") + return pd.DataFrame() - sortby = sortby.replace("_", " ").title() + query_string = ( + f"range={time_range}" if not chain else f"chain={chain}&range={time_range}" + ) - data = _make_request( - # pragma: allowlist nextline secret - "https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMX" - # pragma: allowlist nextline secret - "RZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbk52Y25ROWRYTmxjaVp" - # pragma: allowlist nextline secret - "2Y21SbGNqMWtaWE5qSm14cGJXbDBQVEky", - False, + response = _make_request( + f"https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/{dappId}?{query_string}" ) - if data: - arr = [ - [ - dex["name"], - dex["category"], - dex["activeProtocols"], - dex["statistic"]["userActivity"], - dex["statistic"]["totalVolumeInFiat"], - ] - for dex in data["dapps"] - ] - - df = pd.DataFrame( - arr, - columns=DAPPS_COLUMNS, - ).sort_values("Daily Users", ascending=False) - df["Protocols"] = df["Protocols"].apply(lambda x: ",".join(x)) - if sortby in DAPPS_COLUMNS: - df = df.sort_values(by=sortby, ascending=False) - return df.head(limit) + + if response: + data = response["results"].get("metrics") + return pd.DataFrame( + data, + columns=[ + "transactions", + "transactionsPercentageChange", + "users", + "uaw", + "uawPercentageChange", + "volume", + "volumePercentageChange", + "balance", + "balancePercentageChange", + ], + index=[response["results"]["name"]], + ).rename( + columns={ + "transactions": "Transactions", + "transactionsPercentageChange": "Transactions Change [%]", + "users": "Users", + "uaw": "UAW", + "uawPercentageChange": "UAW Change [%]", + "volume": "Volume [$]", + "volumePercentageChange": "Volume Change [%]", + "balance": "Balance [$]", + "balancePercentageChange": "Balance Change [%]", + } + ) + + return pd.DataFrame() + + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_defi_chains() -> pd.DataFrame: + """Get defi chains [Source: https://dappradar.com/] + + Returns + ------- + pd.DataFrame + Columns: Chains + """ + + response = _make_request("https://api.dappradar.com/4tsxo4vuhotaojtl/defi/chains") + if response: + data = response.get("chains") + + return pd.DataFrame( + data, + columns=["Chains"], + ) + return pd.DataFrame() + + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def get_token_chains() -> pd.DataFrame: + """Get chains that support tokens [Source: https://dappradar.com/] + + Returns + ------- + pd.DataFrame + Columns: Chains + """ + + response = _make_request("https://api.dappradar.com/4tsxo4vuhotaojtl/tokens/chains") + if response: + data = response.get("chains") + + return pd.DataFrame( + data, + columns=["Chains"], + ) return pd.DataFrame() diff --git a/openbb_terminal/cryptocurrency/discovery/dappradar_view.py b/openbb_terminal/cryptocurrency/discovery/dappradar_view.py index c969ab86c6ce..7dc746d13991 100644 --- a/openbb_terminal/cryptocurrency/discovery/dappradar_view.py +++ b/openbb_terminal/cryptocurrency/discovery/dappradar_view.py @@ -11,7 +11,7 @@ lambda_very_long_number_formatter, ) from openbb_terminal.cryptocurrency.discovery import dappradar_model -from openbb_terminal.decorators import log_start_end +from openbb_terminal.decorators import check_api_key, log_start_end from openbb_terminal.helper_funcs import export_data, print_rich_table from openbb_terminal.rich_config import console @@ -19,29 +19,43 @@ @log_start_end(log=logger) -def display_top_nfts( +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_nft_marketplaces( limit: int = 10, sortby: str = "", + order: str = "", + chain: str = "", export: str = "", sheet_name: Optional[str] = None, ) -> None: - """Prints table showing top nft collections [Source: https://dappradar.com/] + """Prints table showing nft marketplaces [Source: https://dappradar.com/] Parameters ---------- + chain: str + Name of the chain + order: str + Order of sorting (asc/desc) limit: int Number of records to display sortby: str Key by which to sort data export : str Export dataframe data to csv,json,xlsx file + sheet_name: str + Name of the sheet in excel or csv file """ - df = dappradar_model.get_top_nfts(sortby, limit) + df = dappradar_model.get_nft_marketplaces( + chain=chain, + sortby=sortby, + order=order, + limit=limit, + ) if df.empty: console.print("[red]Failed to fetch data from DappRadar[/red]") return - for col in ["Floor Price [$]", "Avg Price [$]", "Market Cap [$]", "Volume [$]"]: + for col in ["Avg Price [$]", "Volume [$]"]: if col in df.columns: df[col] = ( df[col] @@ -53,7 +67,7 @@ def display_top_nfts( df, headers=list(df.columns), show_index=False, - title="Top NFT collections", + title="NFT marketplaces", export=bool(export), ) @@ -67,129 +81,254 @@ def display_top_nfts( @log_start_end(log=logger) -def display_top_games( - limit: int = 10, +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_nft_marketplace_chains( export: str = "", sheet_name: Optional[str] = None, - sortby: str = "", ) -> None: - """Prints table showing top blockchain games [Source: https://dappradar.com/] + """Prints table showing nft marketplaces chains [Source: https://dappradar.com/] Parameters ---------- - limit: int - Number of records to display - sortby: str - Key by which to sort data export : str Export dataframe data to csv,json,xlsx file + sheet_name: str + Name of the sheet in excel or csv file """ - df = dappradar_model.get_top_games(sortby, limit) + df = dappradar_model.get_nft_marketplace_chains() if df.empty: console.print("[red]Failed to fetch data from DappRadar[/red]") return - for col in ["Daily Users", "Daily Volume [$]"]: - if col in df.columns: - df[col] = df[col].apply(lambda x: lambda_very_long_number_formatter(x)) print_rich_table( df, headers=list(df.columns), show_index=False, - title="Top Blockchain Games", + title="NFT marketplace chains", export=bool(export), ) export_data( export, os.path.dirname(os.path.abspath(__file__)), - "drgames", + "drnftchains", df, sheet_name, ) @log_start_end(log=logger) -def display_top_dexes( - limit: int = 10, +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_dapps( + chain: str = "", + page: int = 1, + resultPerPage: int = 15, export: str = "", sheet_name: Optional[str] = None, - sortby: str = "", -) -> None: - """Prints table showing top decentralized exchanges [Source: https://dappradar.com/] +): + """Prints table showing dapps [Source: https://dappradar.com/] Parameters ---------- - limit: int - Number of records to display - sortby: str - Key by which to sort data + chain: str + Name of the chain + page: int + Page number + resultPerPage: int + Number of records per page export : str Export dataframe data to csv,json,xlsx file + sheet_name: str + Name of the sheet in excel or csv file """ - df = dappradar_model.get_top_dexes(sortby, limit) + df = dappradar_model.get_dapps( + chain=chain, + page=page, + resultPerPage=resultPerPage, + ) if df.empty: console.print("[red]Failed to fetch data from DappRadar[/red]") return - for col in ["Daily Users", "Daily Volume [$]"]: - if col in df.columns: - df[col] = df[col].apply(lambda x: lambda_very_long_number_formatter(x)) + print_rich_table( df, headers=list(df.columns), show_index=False, - title="Top Decentralized Exchanges", + title="Dapps", export=bool(export), ) export_data( export, os.path.dirname(os.path.abspath(__file__)), - "drdex", + "drdapps", df, sheet_name, ) @log_start_end(log=logger) -def display_top_dapps( - limit: int = 10, +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_dapp_categories( export: str = "", sheet_name: Optional[str] = None, - sortby: str = "", ) -> None: - """Prints table showing top decentralized exchanges [Source: https://dappradar.com/] + """Prints table showing dapp categories [Source: https://dappradar.com/]""" + + df = dappradar_model.get_dapp_categories() + if df.empty: + console.print("[red]Failed to fetch data from DappRadar[/red]") + return + print_rich_table( + df, + headers=list(df.columns), + show_index=False, + title="Dapp categories", + ) + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "drdappcategories", + df, + sheet_name, + ) + + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_dapp_chains( + export: str = "", + sheet_name: Optional[str] = None, +) -> None: + """Prints table showing dapp chains [Source: https://dappradar.com/]""" + + df = dappradar_model.get_dapp_chains() + if df.empty: + console.print("[red]Failed to fetch data from DappRadar[/red]") + return + print_rich_table( + df, + headers=list(df.columns), + show_index=False, + title="Dapp chains", + ) + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "drdappchains", + df, + sheet_name, + ) + + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_dapp_metrics( + dappId: int, + chain: str = "", + time_range: str = "", + export: str = "", + sheet_name: Optional[str] = None, +) -> None: + """Prints table showing dapp metrics [Source: https://dappradar.com/] Parameters ---------- - limit: int - Number of records to display - sortby: str - Key by which to sort data + dappId: int + Dapp id + chain: str + Name of the chain + range: str + Range of data to display (24h, 7d, 30d) export : str Export dataframe data to csv,json,xlsx file + sheet_name: str + Name of the sheet in excel or csv file """ - df = dappradar_model.get_top_dapps(sortby, limit) + df = dappradar_model.get_dapp_metrics( + dappId=dappId, + chain=chain, + time_range=time_range, + ) if df.empty: console.print("[red]Failed to fetch data from DappRadar[/red]") return - for col in ["Daily Users", "Daily Volume [$]"]: + for col in ["Volume [$]", "Balance [$]"]: if col in df.columns: - df[col] = df[col].apply(lambda x: lambda_very_long_number_formatter(x)) + df[col] = ( + df[col] + .fillna(-1) + .apply(lambda x: lambda_very_long_number_formatter(x)) + .replace(-1, np.nan) + ) + print_rich_table( + df.T, + show_index=True, + title=f"Dapp metrics for dappId: {dappId}", + export=bool(export), + ) + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "drdappmetrics", + df, + sheet_name, + ) + + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_defi_chains(export: str = "", sheet_name: Optional[str] = None) -> None: + """Prints table showing defi chains [Source: https://dappradar.com/]""" + + df = dappradar_model.get_defi_chains() + if df.empty: + console.print("[red]Failed to fetch data from DappRadar[/red]") + return print_rich_table( df, headers=list(df.columns), show_index=False, - title="Top Decentralized Applications", - export=bool(export), + title="Defi chains", ) export_data( export, os.path.dirname(os.path.abspath(__file__)), - "drdapps", + "drdefichains", + df, + sheet_name, + ) + + +@log_start_end(log=logger) +@check_api_key(["API_DAPPRADAR_KEY"]) +def display_token_chains( + export: str = "", + sheet_name: Optional[str] = None, +) -> None: + """Prints table showing chains that support tokens [Source: https://dappradar.com/]""" + + df = dappradar_model.get_token_chains() + if df.empty: + console.print("[red]Failed to fetch data from DappRadar[/red]") + return + print_rich_table( + df, + headers=list(df.columns), + show_index=False, + title="Token chains", + ) + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "drtokenchains", df, sheet_name, ) diff --git a/openbb_terminal/cryptocurrency/discovery/discovery_controller.py b/openbb_terminal/cryptocurrency/discovery/discovery_controller.py index 769614430c0d..4f61b471648e 100644 --- a/openbb_terminal/cryptocurrency/discovery/discovery_controller.py +++ b/openbb_terminal/cryptocurrency/discovery/discovery_controller.py @@ -19,10 +19,7 @@ ) from openbb_terminal.custom_prompt_toolkit import NestedCompleter from openbb_terminal.decorators import log_start_end -from openbb_terminal.helper_funcs import ( - EXPORT_ONLY_RAW_DATA_ALLOWED, - check_positive, -) +from openbb_terminal.helper_funcs import EXPORT_ONLY_RAW_DATA_ALLOWED, check_positive from openbb_terminal.menu import session from openbb_terminal.parent_classes import BaseController from openbb_terminal.rich_config import MenuText, console, get_ordered_list_sources @@ -40,10 +37,14 @@ class DiscoveryController(BaseController): "trending", "gainers", "losers", - "nft", - "games", + "nft_mktp_chains", + "nft_mktp", "dapps", - "dex", + "dapp_categories", + "dapp_chains", + "dapp_metrics", + "defi_chains", + "tokens", ] PATH = "/crypto/disc/" @@ -84,10 +85,14 @@ def print_help(self): mt.add_cmd("gainers") mt.add_cmd("losers") mt.add_cmd("search") - mt.add_cmd("nft") - mt.add_cmd("games") + mt.add_cmd("nft_mktp_chains") + mt.add_cmd("nft_mktp") mt.add_cmd("dapps") - mt.add_cmd("dex") + mt.add_cmd("dapp_categories") + mt.add_cmd("dapp_chains") + mt.add_cmd("dapp_metrics") + mt.add_cmd("defi_chains") + mt.add_cmd("tokens") console.print(text=mt.menu_text, menu="Cryptocurrency - Discovery") @log_start_end(log=logger) @@ -190,37 +195,44 @@ def call_dapps(self, other_args): add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=""" - Shows top decentralized applications [Source: https://dappradar.com/] - Accepts --sort {Name,Category,Protocols,Daily Users,Daily Volume [$]} - to sort by column + Shows available decentralized applications [Source: https://dappradar.com/] + Accepts --chain argument to filter by blockchain + --page argument to show a specific page. Default: 1 + --limit argument to limit the number of records per page. Default: 15 """, ) - + parser.add_argument( + "-c", + "--chain", + dest="chain", + help="Filter by blockchain", + metavar="CHAIN", + ) + parser.add_argument( + "-p", + "--page", + dest="page", + type=check_positive, + help="Page number", + default=1, + ) parser.add_argument( "-l", "--limit", dest="limit", type=check_positive, - help="Number of records to display", + help="Number of records to display per page", default=15, ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - nargs="+", - help="Sort by given column. Default: Daily Volume [$]", - default="Daily Volume [$]", - choices=stocks_helper.format_parse_choices(dappradar_model.DAPPS_COLUMNS), - metavar="SORTBY", - ) + ns_parser = self.parse_known_args_and_warn( parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED ) if ns_parser: - dappradar_view.display_top_dapps( - sortby=" ".join(ns_parser.sortby), - limit=ns_parser.limit, + dappradar_view.display_dapps( + chain=ns_parser.chain, + page=ns_parser.page, + resultPerPage=ns_parser.limit, export=ns_parser.export, sheet_name=" ".join(ns_parser.sheet_name) if ns_parser.sheet_name @@ -228,44 +240,21 @@ def call_dapps(self, other_args): ) @log_start_end(log=logger) - def call_games(self, other_args): - """Process games command""" + def call_dapp_categories(self, other_args): + """Process dapp_categories command""" parser = argparse.ArgumentParser( - prog="games", + prog="dapp_categories", add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=""" - Shows top blockchain games [Source: https://dappradar.com/] - Accepts --sort {Name,Daily Users,Daily Volume [$]} - to sort by column + Shows available dapp categories [Source: https://dappradar.com/] """, ) - - parser.add_argument( - "-l", - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=15, - ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - nargs="+", - help="Sort by given column. Default: Daily Volume [$]", - default="Daily Volume [$]", - choices=stocks_helper.format_parse_choices(dappradar_model.DEX_COLUMNS), - metavar="SORTBY", - ) ns_parser = self.parse_known_args_and_warn( parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED ) if ns_parser: - dappradar_view.display_top_games( - sortby=" ".join(ns_parser.sortby), - limit=ns_parser.limit, + dappradar_view.display_dapp_categories( export=ns_parser.export, sheet_name=" ".join(ns_parser.sheet_name) if ns_parser.sheet_name @@ -273,44 +262,21 @@ def call_games(self, other_args): ) @log_start_end(log=logger) - def call_dex(self, other_args): - """Process dex command""" + def call_dapp_chains(self, other_args): + """Process dapp_chains command""" parser = argparse.ArgumentParser( - prog="dex", + prog="dapp_chains", add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=""" - Shows top decentralized exchanges [Source: https://dappradar.com/] - Accepts --sort {Name,Daily Users,Daily Volume [$]} - to sort by column + Shows available dapp chains [Source: https://dappradar.com/] """, ) - - parser.add_argument( - "-l", - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=15, - ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - nargs="+", - help="Sort by given column. Default: Daily Volume [$]", - default="Daily Volume [$]", - choices=stocks_helper.format_parse_choices(dappradar_model.DEX_COLUMNS), - metavar="SORTBY", - ) ns_parser = self.parse_known_args_and_warn( parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED ) if ns_parser: - dappradar_view.display_top_dexes( - sortby=" ".join(ns_parser.sortby), - limit=ns_parser.limit, + dappradar_view.display_dapp_chains( export=ns_parser.export, sheet_name=" ".join(ns_parser.sheet_name) if ns_parser.sheet_name @@ -318,43 +284,51 @@ def call_dex(self, other_args): ) @log_start_end(log=logger) - def call_nft(self, other_args): - """Process nft command""" + def call_dapp_metrics(self, other_args): + """Process dapp_metrics command""" parser = argparse.ArgumentParser( - prog="nft", + prog="dapp_metrics", add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=""" - Shows top NFT collections [Source: https://dappradar.com/] - Accepts --sort {Name,Protocols,Floor Price [$],Avg Price [$],Market Cap,Volume [$]} - to sort by column + Shows dapp metrics [Source: https://dappradar.com/] + Accepts --dappId argument to specify the dapp + --chain argument to filter by blockchain for multi-chain dapps + --time_range argument to specify the time range. Default: 7d (can be 24h, 7d, 30d) """, ) parser.add_argument( - "-l", - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=15, + "-d", + "--dappId", + dest="dappId", + help="Dapp ID", + metavar="DAPP_ID", ) parser.add_argument( - "-s", - "--sort", - dest="sortby", - nargs="+", - help="Sort by given column. Default: Market Cap", - default="Market Cap", - choices=stocks_helper.format_parse_choices(dappradar_model.NFT_COLUMNS), - metavar="SORTBY", + "-c", + "--chain", + dest="chain", + help="Filter by blockchain", + metavar="CHAIN", ) + parser.add_argument( + "-t", + "--time_range", + dest="time_range", + help="Time range", + metavar="TIME_RANGE", + choices=["24h", "7d", "30d"], + default="7d", + ) + ns_parser = self.parse_known_args_and_warn( parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED ) if ns_parser: - dappradar_view.display_top_nfts( - sortby=" ".join(ns_parser.sortby), - limit=ns_parser.limit, + dappradar_view.display_dapp_metrics( + dappId=ns_parser.dappId, + chain=ns_parser.chain, + time_range=ns_parser.time_range, export=ns_parser.export, sheet_name=" ".join(ns_parser.sheet_name) if ns_parser.sheet_name @@ -610,3 +584,134 @@ def call_search(self, other_args): query=" ".join(ns_parser.query), category=ns_parser.category, ) + + @log_start_end(log=logger) + def call_nft_mktp_chains(self, other_args): + """Process nft_mktp_chains command""" + parser = argparse.ArgumentParser( + prog="nft_mktp_chains", + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=""" + Shows NFT marketplace chains [Source: https://dappradar.com/] + """, + ) + + ns_parser = self.parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + dappradar_view.display_nft_marketplace_chains( + export=ns_parser.export, + sheet_name=" ".join(ns_parser.sheet_name) + if ns_parser.sheet_name + else None, + ) + + @log_start_end(log=logger) + def call_defi_chains(self, other_args): + """Process defi_chains command""" + parser = argparse.ArgumentParser( + prog="defi_chains", + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=""" + Shows DeFi chains [Source: https://dappradar.com/] + """, + ) + + ns_parser = self.parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + dappradar_view.display_defi_chains( + export=ns_parser.export, + sheet_name=" ".join(ns_parser.sheet_name) + if ns_parser.sheet_name + else None, + ) + + @log_start_end(log=logger) + def call_nft_mktp(self, other_args): + """Process nft_mktp command""" + parser = argparse.ArgumentParser( + prog="nft_mktp", + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=""" + Shows NFT marketplaces [Source: https://dappradar.com/] + Accepts --chain to filter by blockchain + --sortby {name, avgPrice, volume, traders...} to sort by column + --order {asc, desc} to sort ascending or descending + --limit to limit number of records + """, + ) + parser.add_argument( + "-c", + "--chain", + dest="chain", + help="Name of the blockchain to filter by.", + ) + parser.add_argument( + "-s", + "--sortby", + dest="sortby", + nargs="+", + help="Sort by given column.", + choices=stocks_helper.format_parse_choices(dappradar_model.NFT_COLUMNS), + metavar="SORTBY", + ) + parser.add_argument( + "-o", + "--order", + dest="order", + help="Order of sorting. Default: desc", + default="desc", + ) + parser.add_argument( + "-l", + "--limit", + dest="limit", + type=check_positive, + help="Number of records to display", + default=10, + ) + ns_parser = self.parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + if ns_parser: + dappradar_view.display_nft_marketplaces( + sortby=ns_parser.sortby, + order=ns_parser.order, + chain=ns_parser.chain, + limit=ns_parser.limit, + export=ns_parser.export, + sheet_name=" ".join(ns_parser.sheet_name) + if ns_parser.sheet_name + else None, + ) + + @log_start_end(log=logger) + def call_tokens(self, other_args): + """Process tokens command""" + parser = argparse.ArgumentParser( + prog="tokens", + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=""" + Shows chains that support tokens [Source: https://dappradar.com/] + """, + ) + + ns_parser = self.parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + if ns_parser: + dappradar_view.display_token_chains( + export=ns_parser.export, + sheet_name=" ".join(ns_parser.sheet_name) + if ns_parser.sheet_name + else None, + ) diff --git a/openbb_terminal/helper_funcs.py b/openbb_terminal/helper_funcs.py index 925c5eed0102..faebb941b82d 100644 --- a/openbb_terminal/helper_funcs.py +++ b/openbb_terminal/helper_funcs.py @@ -42,10 +42,7 @@ from rich.table import Table from screeninfo import get_monitors -from openbb_terminal import ( - OpenBBFigure, - plots_backend, -) +from openbb_terminal import OpenBBFigure, plots_backend from openbb_terminal.core.config.paths import HOME_DIRECTORY from openbb_terminal.core.plots.plotly_ta.ta_class import PlotlyTA from openbb_terminal.core.session.current_system import get_current_system diff --git a/openbb_terminal/keys_controller.py b/openbb_terminal/keys_controller.py index 223fce83fbcd..ba33fdc2df96 100644 --- a/openbb_terminal/keys_controller.py +++ b/openbb_terminal/keys_controller.py @@ -7,10 +7,7 @@ import logging from typing import Callable, Dict, List, Optional -from openbb_terminal import ( - keys_model, - keys_view, -) +from openbb_terminal import keys_model, keys_view from openbb_terminal.core.session.constants import KEYS_URL from openbb_terminal.core.session.current_user import get_current_user, is_local from openbb_terminal.core.session.env_handler import get_reading_order @@ -1269,3 +1266,31 @@ def call_ultima(self, other_args: List[str]): self.status_dict["ultima"] = keys_model.set_ultima_key( key=ns_parser.key, persist=True, show_output=True ) + + @log_start_end(log=logger) + def call_dappradar(self, other_args: List[str]): + """Process dappradar command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="dappradar", + description="Set DappRadar API key.", + ) + parser.add_argument( + "-k", + "--key", + type=str, + dest="key", + help="key", + ) + if not other_args: + console.print("For your API Key, visit: https://dappradar.com/api") + return + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-k") + ns_parser = self.parse_simple_args(parser, other_args) + if ns_parser: + self.status_dict["dappradar"] = keys_model.set_dappradar_key( + key=ns_parser.key, persist=True, show_output=True + ) diff --git a/openbb_terminal/keys_model.py b/openbb_terminal/keys_model.py index c64bee69bb46..e9dcb2d56f3d 100644 --- a/openbb_terminal/keys_model.py +++ b/openbb_terminal/keys_model.py @@ -24,10 +24,7 @@ from prawcore.exceptions import ResponseException from tokenterminal import TokenTerminal -from openbb_terminal.core.session.current_user import ( - get_current_user, - set_credential, -) +from openbb_terminal.core.session.current_user import get_current_user, set_credential from openbb_terminal.core.session.env_handler import write_to_dotenv from openbb_terminal.cryptocurrency.coinbase_helpers import ( CoinbaseApiException, @@ -85,6 +82,7 @@ "tokenterminal": "TOKEN_TERMINAL", "shroom": "SHROOM", "stocksera": "STOCKSERA", + "dappradar": "DAPPRADAR", } # sorting api key section by name @@ -2844,3 +2842,74 @@ def check_ultima_key(show_output: bool = False) -> str: console.print(status.colorize()) return str(status) + + +def set_dappradar_key( + key: str, persist: bool = False, show_output: bool = False +) -> str: + """Set DappRadar key + + Parameters + ---------- + key: str + API key + persist: bool, optional + If False, api key change will be contained to where it was changed. For example, a Jupyter notebook session. + If True, api key change will be global, i.e. it will affect terminal environment variables. + By default, False. + show_output: bool, optional + Display status string or not. By default, False. + + Returns + ------- + str + Status of key set + + Examples + -------- + >>> from openbb_terminal.sdk import openbb + >>> openbb.keys.dappradar(key="example_key") + """ + + handle_credential("API_DAPPRADAR_KEY", key, persist) + return check_dappradar_key(show_output) + + +def check_dappradar_key(show_output: bool = False) -> str: + """Check DappRadar key + + Parameters + ---------- + show_output: bool + Display status string or not. By default, False. + + Returns + ------- + str + Status of key set + """ + + current_user = get_current_user() + + if current_user.credentials.API_DAPPRADAR_KEY == "REPLACE_ME": + logger.info("DappRadar key not defined") + status = KeyStatus.NOT_DEFINED + else: + r = request( + "https://api.dappradar.com/4tsxo4vuhotaojtl/tokens/chains", + headers={"X-BLOBR-KEY": current_user.credentials.API_DAPPRADAR_KEY}, + ) + if r.status_code in [403, 401, 429]: + logger.warning("DappRadar key defined, test failed") + status = KeyStatus.DEFINED_TEST_FAILED + elif r.status_code == 200: + logger.info("DappRadar key defined, test passed") + status = KeyStatus.DEFINED_TEST_PASSED + else: + logger.warning("DappRadar key defined, test inconclusive") + status = KeyStatus.DEFINED_TEST_INCONCLUSIVE + + if show_output: + console.print(status.colorize()) + + return str(status) diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index 674744e76356..6cabec05ecef 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -503,10 +503,14 @@ en: crypto/disc/gainers: top gainers crypto/disc/losers: top losers crypto/disc/search: search for coins - crypto/disc/nft: top non fungible tokens - crypto/disc/games: top blockchain games - crypto/disc/dapps: top decentralized apps - crypto/disc/dex: top decentralized exchanges + crypto/disc/nft_mktp_chains: nft marketplace chains + crypto/disc/nft_mktp: nft marketplaces + crypto/disc/dapps: available decentralized apps + crypto/disc/dapp_categories: show available dapp categories + crypto/disc/dapp_chains: show available dapp chains + crypto/disc/dapp_metrics: show dapp metrics + crypto/disc/defi_chains: show available defi chains + crypto/disc/tokens: show chains that support tokens crypto/ov/global: global crypto market statistics crypto/ov/defi: global DeFi market info crypto/ov/stables: stablecoins diff --git a/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_disc.openbb b/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_disc.openbb index 5b8b725ef9ef..368abaa52292 100644 --- a/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_disc.openbb +++ b/openbb_terminal/miscellaneous/integration_tests_scripts/cryptocurrency/test_crypto_disc.openbb @@ -10,21 +10,27 @@ top -s Market Cap -r trending # cggainers -gainers -gainers -s Price [$] -l 5 -i 14d +# gainers # bugged -> takes too long +# gainers -s Price [$] -l 5 -i 14d # bugged -> takes too long # cglosers -losers -losers -s Price [$] -l 5 -i 14d +#losers # bugged -> takes too long +# losers -s Price [$] -l 5 -i 14d # bugged -> takes too long # cpsearch CURRENTLY BUGGY search ${crypto=bitcoin} search -q ${crypto=bitcoin} -s name search -q ${crypto=bitcoin} -c exchanges -l 2 -nft -games +nft_mktp_chains +nft_mktp dapps -dex +dapp_categories +dapp_chains +dapp_metrics --dappId 3 +defi_chains +tokens +help +reset exit diff --git a/openbb_terminal/miscellaneous/models/hub_credentials.json b/openbb_terminal/miscellaneous/models/hub_credentials.json index 47891a407abe..d5f25fa555bd 100644 --- a/openbb_terminal/miscellaneous/models/hub_credentials.json +++ b/openbb_terminal/miscellaneous/models/hub_credentials.json @@ -32,5 +32,6 @@ "API_REDDIT_PASSWORD": "", "API_TWITTER_KEY": "", "API_TWITTER_SECRET_KEY": "", - "API_TWITTER_BEARER_TOKEN": "" + "API_TWITTER_BEARER_TOKEN": "", + "API_DAPPRADAR_KEY": "" } diff --git a/openbb_terminal/miscellaneous/sources/openbb_default.json b/openbb_terminal/miscellaneous/sources/openbb_default.json index 640172042dee..d6ea5b6f0433 100644 --- a/openbb_terminal/miscellaneous/sources/openbb_default.json +++ b/openbb_terminal/miscellaneous/sources/openbb_default.json @@ -1,11 +1,23 @@ { "stocks": { - "search": ["FinanceDatabase"], - "quote": ["FinancialModelingPrep"], - "tob": ["CBOE"], + "search": [ + "FinanceDatabase" + ], + "quote": [ + "FinancialModelingPrep" + ], + "tob": [ + "CBOE" + ], "candle": [], - "codes": ["Polygon"], - "news": ["Feedparser", "NewsApi", "Ultima"], + "codes": [ + "Polygon" + ], + "news": [ + "Feedparser", + "NewsApi", + "Ultima" + ], "load": [ "YahooFinance", "AlphaVantage", @@ -15,37 +27,85 @@ "DataBento" ], "th": { - "open": ["Bursa"], - "closed": ["Bursa"], - "all": ["Bursa"], - "exchange": ["Bursa"], - "holidays": ["PandasMarketCalendars"], - "symbol": ["FinanceDatabase"] + "open": [ + "Bursa" + ], + "closed": [ + "Bursa" + ], + "all": [ + "Bursa" + ], + "exchange": [ + "Bursa" + ], + "holidays": [ + "PandasMarketCalendars" + ], + "symbol": [ + "FinanceDatabase" + ] }, "options": { - "unu": ["FDScanner"], + "unu": [ + "FDScanner" + ], "calc": [], "screen": { - "view": ["Syncretism"], + "view": [ + "Syncretism" + ], "set": [], - "scr": ["Syncretism"] + "scr": [ + "Syncretism" + ] }, - "load": ["YahooFinance", "Tradier", "Nasdaq", "Intrinio"], - "pcr": ["AlphaQuery"], - "info": ["Barchart"], - "hist": ["ChartExchange", "Tradier", "Intrinio"], - "vsurf": ["YahooFinance"], - "grhist": ["Syncretism", "Intrinio"], - "plot": ["YahooFinance"], - "parity": ["YahooFinance"], - "binom": ["YahooFinance"], - "greeks": ["YahooFinance"], - "eodchain": ["Intrinio"], + "load": [ + "YahooFinance", + "Tradier", + "Nasdaq", + "Intrinio" + ], + "pcr": [ + "AlphaQuery" + ], + "info": [ + "Barchart" + ], + "hist": [ + "ChartExchange", + "Tradier", + "Intrinio" + ], + "vsurf": [ + "YahooFinance" + ], + "grhist": [ + "Syncretism", + "Intrinio" + ], + "plot": [ + "YahooFinance" + ], + "parity": [ + "YahooFinance" + ], + "binom": [ + "YahooFinance" + ], + "greeks": [ + "YahooFinance" + ], + "eodchain": [ + "Intrinio" + ], "pricing": { "add": [], "rmv": [], "show": [], - "rnval": ["YahooFinance"] + "rnval": [ + "YahooFinance" + ] }, "hedge": { "list": [], @@ -53,7 +113,9 @@ "add": [], "rmv": [], "sop": [], - "plot": ["YahooFinance"] + "plot": [ + "YahooFinance" + ] } }, "disc": { @@ -111,131 +173,360 @@ ] }, "sia": { - "select": ["YahooFinance"], + "select": [ + "YahooFinance" + ], "clear": [], - "industry": ["FinanceDatabase"], - "sector": ["FinanceDatabase"], - "country": ["FinanceDatabase"], - "mktcap": ["FinanceDatabase"], - "exchange": ["FinanceDatabase"], - "period": ["StockAnalysis"], - "cps": ["FinanceDatabase"], - "cpic": ["FinanceDatabase"], - "cpis": ["FinanceDatabase"], - "cpcs": ["FinanceDatabase"], - "cpci": ["FinanceDatabase"], - "metric": ["YahooFinance"], - "vis": ["StockAnalysis"] + "industry": [ + "FinanceDatabase" + ], + "sector": [ + "FinanceDatabase" + ], + "country": [ + "FinanceDatabase" + ], + "mktcap": [ + "FinanceDatabase" + ], + "exchange": [ + "FinanceDatabase" + ], + "period": [ + "StockAnalysis" + ], + "cps": [ + "FinanceDatabase" + ], + "cpic": [ + "FinanceDatabase" + ], + "cpis": [ + "FinanceDatabase" + ], + "cpcs": [ + "FinanceDatabase" + ], + "cpci": [ + "FinanceDatabase" + ], + "metric": [ + "YahooFinance" + ], + "vis": [ + "StockAnalysis" + ] }, "dps": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], - "shorted": ["YahooFinance"], - "ctb": ["InteractiveBrokers", "Stocksera"], - "hsi": ["Shortinterest"], - "prom": ["FINRA"], - "pos": ["Stockgrid"], - "sidtc": ["Stockgrid"], - "dpotc": ["FINRA"], - "ftd": ["SEC"], - "spos": ["Stockgrid"], - "psi": ["Stockgrid", "Quandl"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], + "shorted": [ + "YahooFinance" + ], + "ctb": [ + "InteractiveBrokers", + "Stocksera" + ], + "hsi": [ + "Shortinterest" + ], + "prom": [ + "FINRA" + ], + "pos": [ + "Stockgrid" + ], + "sidtc": [ + "Stockgrid" + ], + "dpotc": [ + "FINRA" + ], + "ftd": [ + "SEC" + ], + "spos": [ + "Stockgrid" + ], + "psi": [ + "Stockgrid", + "Quandl" + ] }, "scr": { "view": [], "set": [], - "historical": ["YahooFinance"], - "overview": ["Finviz"], - "valuation": ["Finviz"], - "financial": ["Finviz"], - "ownership": ["Finviz"], - "performance": ["Finviz"], - "technical": ["Finviz"], - "arktrades": ["Cathiesark"] + "historical": [ + "YahooFinance" + ], + "overview": [ + "Finviz" + ], + "valuation": [ + "Finviz" + ], + "financial": [ + "Finviz" + ], + "ownership": [ + "Finviz" + ], + "performance": [ + "Finviz" + ], + "technical": [ + "Finviz" + ], + "arktrades": [ + "Cathiesark" + ] }, "ins": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], "view": [], "set": [], - "filter": ["OpenInsider"], - "lcb": ["OpenInsider"], - "lpsb": ["OpenInsider"], - "lit": ["OpenInsider"], - "lip": ["OpenInsider"], - "blip": ["OpenInsider"], - "blop": ["OpenInsider"], - "blcp": ["OpenInsider"], - "lis": ["OpenInsider"], - "blis": ["OpenInsider"], - "blos": ["OpenInsider"], - "blcs": ["OpenInsider"], - "topt": ["OpenInsider"], - "toppw": ["OpenInsider"], - "toppm": ["OpenInsider"], - "tipt": ["OpenInsider"], - "tippw": ["OpenInsider"], - "tippm": ["OpenInsider"], - "tist": ["OpenInsider"], - "tispw": ["OpenInsider"], - "tispm": ["OpenInsider"], - "stats": ["OpenInsider"], - "act": ["BusinessInsider"], - "lins": ["Finviz"] + "filter": [ + "OpenInsider" + ], + "lcb": [ + "OpenInsider" + ], + "lpsb": [ + "OpenInsider" + ], + "lit": [ + "OpenInsider" + ], + "lip": [ + "OpenInsider" + ], + "blip": [ + "OpenInsider" + ], + "blop": [ + "OpenInsider" + ], + "blcp": [ + "OpenInsider" + ], + "lis": [ + "OpenInsider" + ], + "blis": [ + "OpenInsider" + ], + "blos": [ + "OpenInsider" + ], + "blcs": [ + "OpenInsider" + ], + "topt": [ + "OpenInsider" + ], + "toppw": [ + "OpenInsider" + ], + "toppm": [ + "OpenInsider" + ], + "tipt": [ + "OpenInsider" + ], + "tippw": [ + "OpenInsider" + ], + "tippm": [ + "OpenInsider" + ], + "tist": [ + "OpenInsider" + ], + "tispw": [ + "OpenInsider" + ], + "tispm": [ + "OpenInsider" + ], + "stats": [ + "OpenInsider" + ], + "act": [ + "BusinessInsider" + ], + "lins": [ + "Finviz" + ] }, "gov": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], - "lasttrades": ["QuiverQuant"], - "topbuys": ["QuiverQuant"], - "topsells": ["QuiverQuant"], - "lastcontracts": ["QuiverQuant"], - "qtrcontracts": ["QuiverQuant"], - "toplobbying": ["QuiverQuant"], - "gtrades": ["QuiverQuant"], - "contracts": ["QuiverQuant"], - "histcont": ["QuiverQuant"], - "lobbying": ["QuiverQuant"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], + "lasttrades": [ + "QuiverQuant" + ], + "topbuys": [ + "QuiverQuant" + ], + "topsells": [ + "QuiverQuant" + ], + "lastcontracts": [ + "QuiverQuant" + ], + "qtrcontracts": [ + "QuiverQuant" + ], + "toplobbying": [ + "QuiverQuant" + ], + "gtrades": [ + "QuiverQuant" + ], + "contracts": [ + "QuiverQuant" + ], + "histcont": [ + "QuiverQuant" + ], + "lobbying": [ + "QuiverQuant" + ] }, "ba": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], - "headlines": ["FinBrain"], - "snews": ["Finnhub"], - "wsb": ["Reddit"], - "spacc": ["Reddit"], - "redditsent": ["Reddit"], - "popular": ["Reddit"], - "getdd": ["Reddit"], - "trending": ["Stocktwits"], - "stalker": ["Stocktwits"], - "bullbear": ["Stocktwits"], - "messages": ["Stocktwits"], - "infer": ["Twitter"], - "sentiment": ["Twitter"], - "mentions": ["Google"], - "regions": ["Google"], - "interest": ["Google"], - "queries": ["Google"], - "rise": ["Google"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], + "headlines": [ + "FinBrain" + ], + "snews": [ + "Finnhub" + ], + "wsb": [ + "Reddit" + ], + "spacc": [ + "Reddit" + ], + "redditsent": [ + "Reddit" + ], + "popular": [ + "Reddit" + ], + "getdd": [ + "Reddit" + ], + "trending": [ + "Stocktwits" + ], + "stalker": [ + "Stocktwits" + ], + "bullbear": [ + "Stocktwits" + ], + "messages": [ + "Stocktwits" + ], + "infer": [ + "Twitter" + ], + "sentiment": [ + "Twitter" + ], + "mentions": [ + "Google" + ], + "regions": [ + "Google" + ], + "interest": [ + "Google" + ], + "queries": [ + "Google" + ], + "rise": [ + "Google" + ] }, "ca": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], - "tsne": ["YahooFinance"], - "get": ["Finviz", "Polygon", "Finnhub"], + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], + "tsne": [ + "YahooFinance" + ], + "get": [ + "Finviz", + "Polygon", + "Finnhub" + ], "set": [], "add": [], "rmv": [], - "historical": ["YahooFinance"], - "hcorr": ["YahooFinance"], - "volume": ["YahooFinance"], - "income": ["MarketWatch"], - "balance": ["MarketWatch"], - "cashflow": ["MarketWatch"], - "sentiment": ["FinBrain"], - "scorr": ["FinBrain"], - "overview": ["Finviz"], - "valuation": ["Finviz"], - "financial": ["Finviz"], - "ownership": ["Finviz"], - "performance": ["Finviz"], - "technical": ["Finviz"] + "historical": [ + "YahooFinance" + ], + "hcorr": [ + "YahooFinance" + ], + "volume": [ + "YahooFinance" + ], + "income": [ + "MarketWatch" + ], + "balance": [ + "MarketWatch" + ], + "cashflow": [ + "MarketWatch" + ], + "sentiment": [ + "FinBrain" + ], + "scorr": [ + "FinBrain" + ], + "overview": [ + "Finviz" + ], + "valuation": [ + "Finviz" + ], + "financial": [ + "Finviz" + ], + "ownership": [ + "Finviz" + ], + "performance": [ + "Finviz" + ], + "technical": [ + "Finviz" + ] }, "fa": { "load": [ @@ -360,277 +651,766 @@ ] }, "bt": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], - "whatif": ["YahooFinance"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], + "whatif": [ + "YahooFinance" + ] }, "ta": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"], - "recom": ["TradingView"], - "summary": ["FinBrain"], - "tv": ["TradingView"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ], + "recom": [ + "TradingView" + ], + "summary": [ + "FinBrain" + ], + "tv": [ + "TradingView" + ] }, "qa": { - "load": ["YahooFinance", "AlphaVantage", "Polygon", "EODHD"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon", + "EODHD" + ] } }, "crypto": { - "price": ["Pyth"], - "load": ["YahooFinance", "CoinGecko", "CCXT"], - "find": ["CoinGecko", "CoinPaprika", "Binance", "Coinbase", "YahooFinance"], - "headlines": ["FinBrain"], - "prt": ["CoinGecko"], + "price": [ + "Pyth" + ], + "load": [ + "YahooFinance", + "CoinGecko", + "CCXT" + ], + "find": [ + "CoinGecko", + "CoinPaprika", + "Binance", + "Coinbase", + "YahooFinance" + ], + "headlines": [ + "FinBrain" + ], + "prt": [ + "CoinGecko" + ], "disc": { - "top": ["CoinGecko", "CoinMarketCap"], - "trending": ["CoinGecko"], - "gainers": ["CoinGecko"], - "losers": ["CoinGecko"], - "search": ["CoinPaprika"], - "nft": ["DappRadar"], - "games": ["DappRadar"], - "dapps": ["DappRadar"], - "dex": ["DappRadar"] + "top": [ + "CoinGecko", + "CoinMarketCap" + ], + "trending": [ + "CoinGecko" + ], + "gainers": [ + "CoinGecko" + ], + "losers": [ + "CoinGecko" + ], + "search": [ + "CoinPaprika" + ], + "nft_mktp_chains": [ + "DappRadar" + ], + "nft_mktp": [ + "DappRadar" + ], + "dapps": [ + "DappRadar" + ], + "dapp_categories": [ + "DappRadar" + ], + "dapp_chains": [ + "DappRadar" + ], + "dapp_metrics": [ + "DappRadar" + ], + "defi_chains": [ + "DappRadar" + ], + "tokens": [ + "DappRadar" + ] }, "ov": { - "global": ["CoinGecko", "CoinPaprika"], - "defi": ["CoinGecko"], - "stables": ["CoinGecko"], - "exchanges": ["CoinGecko", "CoinPaprika"], - "exrates": ["CoinGecko"], - "indexes": ["CoinGecko"], - "derivatives": ["CoinGecko"], - "categories": ["CoinGecko"], - "hold": ["CoinGecko"], - "hm": ["CoinGecko"], - "info": ["CoinPaprika"], - "markets": ["CoinPaprika"], - "exmarkets": ["CoinPaprika"], - "platforms": ["CoinPaprika"], - "contracts": ["CoinPaprika"], - "pairs": ["Coinbase"], - "news": ["CryptoPanic"], - "wf": ["WithdrawalFees"], - "ewf": ["WithdrawalFees"], - "wfpe": ["WithdrawalFees"], - "altindex": ["BlockchainCenter"], - "btcrb": ["BlockchainCenter"], - "ch": ["Rekt"], - "cr": ["LoanScan"], - "fun": ["TokenTerminal"] + "global": [ + "CoinGecko", + "CoinPaprika" + ], + "defi": [ + "CoinGecko" + ], + "stables": [ + "CoinGecko" + ], + "exchanges": [ + "CoinGecko", + "CoinPaprika" + ], + "exrates": [ + "CoinGecko" + ], + "indexes": [ + "CoinGecko" + ], + "derivatives": [ + "CoinGecko" + ], + "categories": [ + "CoinGecko" + ], + "hold": [ + "CoinGecko" + ], + "hm": [ + "CoinGecko" + ], + "info": [ + "CoinPaprika" + ], + "markets": [ + "CoinPaprika" + ], + "exmarkets": [ + "CoinPaprika" + ], + "platforms": [ + "CoinPaprika" + ], + "contracts": [ + "CoinPaprika" + ], + "pairs": [ + "Coinbase" + ], + "news": [ + "CryptoPanic" + ], + "wf": [ + "WithdrawalFees" + ], + "ewf": [ + "WithdrawalFees" + ], + "wfpe": [ + "WithdrawalFees" + ], + "altindex": [ + "BlockchainCenter" + ], + "btcrb": [ + "BlockchainCenter" + ], + "ch": [ + "Rekt" + ], + "cr": [ + "LoanScan" + ], + "fun": [ + "TokenTerminal" + ] }, "onchain": { - "hr": ["Glassnode"], - "btccp": ["Blockchain"], - "btcct": ["Blockchain"], - "btcblockdata": ["Blockchain"], - "gwei": ["ETHGasStations"], - "whales": ["WhaleAlert"], - "lt": ["BitQuery"], - "dvcp": ["BitQuery"], - "tv": ["BitQuery"], - "ueat": ["BitQuery"], - "ttcp": ["BitQuery"], - "baas": ["BitQuery"], - "query": ["Shroom"], - "address": ["Ethplorer"], - "top": ["Ethplorer"], - "balance": ["Ethplorer"], - "hist": ["Ethplorer"], - "info": ["Ethplorer"], - "holders": ["Ethplorer"], - "th": ["Ethplorer"], - "prices": ["Ethplorer"], - "tx": ["Ethplorer"] + "hr": [ + "Glassnode" + ], + "btccp": [ + "Blockchain" + ], + "btcct": [ + "Blockchain" + ], + "btcblockdata": [ + "Blockchain" + ], + "gwei": [ + "ETHGasStations" + ], + "whales": [ + "WhaleAlert" + ], + "lt": [ + "BitQuery" + ], + "dvcp": [ + "BitQuery" + ], + "tv": [ + "BitQuery" + ], + "ueat": [ + "BitQuery" + ], + "ttcp": [ + "BitQuery" + ], + "baas": [ + "BitQuery" + ], + "query": [ + "Shroom" + ], + "address": [ + "Ethplorer" + ], + "top": [ + "Ethplorer" + ], + "balance": [ + "Ethplorer" + ], + "hist": [ + "Ethplorer" + ], + "info": [ + "Ethplorer" + ], + "holders": [ + "Ethplorer" + ], + "th": [ + "Ethplorer" + ], + "prices": [ + "Ethplorer" + ], + "tx": [ + "Ethplorer" + ] }, "defi": { - "newsletter": ["Substack"], - "vaults": ["Coindix"], - "tokens": ["TheGraph"], - "stats": ["TheGraph"], - "pairs": ["TheGraph"], - "pools": ["TheGraph"], - "swaps": ["TheGraph"], - "ldapps": ["DeFiLlama"], - "gdapps": ["DeFiLlama"], - "stvl": ["DeFiLlama"], - "dtvl": ["DeFiLlama"], - "sinfo": ["TerraFCD"], - "validators": ["TerraFCD"], - "gacc": ["TerraFCD"], - "sreturn": ["TerraFCD"], - "lcsc": ["Smartstake"], - "anchor": ["CryptoSaurio"] + "newsletter": [ + "Substack" + ], + "vaults": [ + "Coindix" + ], + "tokens": [ + "TheGraph" + ], + "stats": [ + "TheGraph" + ], + "pairs": [ + "TheGraph" + ], + "pools": [ + "TheGraph" + ], + "swaps": [ + "TheGraph" + ], + "ldapps": [ + "DeFiLlama" + ], + "gdapps": [ + "DeFiLlama" + ], + "stvl": [ + "DeFiLlama" + ], + "dtvl": [ + "DeFiLlama" + ], + "sinfo": [ + "TerraFCD" + ], + "validators": [ + "TerraFCD" + ], + "gacc": [ + "TerraFCD" + ], + "sreturn": [ + "TerraFCD" + ], + "lcsc": [ + "Smartstake" + ], + "anchor": [ + "CryptoSaurio" + ] }, "tools": { "aprtoapy": [], "il": [] }, "nft": { - "stats": ["OpenSea"], - "fp": ["NFTPriceFloor"], - "collections": ["NFTPriceFloor"] + "stats": [ + "OpenSea" + ], + "fp": [ + "NFTPriceFloor" + ], + "collections": [ + "NFTPriceFloor" + ] }, "dd": { - "load": ["YahooFinance", "CoinGecko", "CCXT"], - "info": ["CoinGecko"], - "ath": ["CoinGecko"], - "atl": ["CoinGecko"], - "web": ["CoinGecko"], - "bc": ["CoinGecko"], - "pi": ["Messari"], - "gov": ["Messari"], - "basic": ["CoinPaprika"], - "stats": ["Coinbase"], - "desc": ["TokenTerminal"], - "market": ["CoinGecko"], - "mkt": ["CoinPaprika"], - "ex": ["CoinPaprika"], - "balance": ["Binance"], - "oi": ["Coinglass"], - "fundrate": ["Coinglass"], - "liquidations": ["Coinglass"], - "eb": ["Coinglass"], - "trades": ["CCXT"], - "ob": ["CCXT"], - "active": ["Glassnode"], - "nonzero": ["Glassnode"], - "change": ["Glassnode"], - "ps": ["CoinPaprika"], - "mcapdom": ["Messari"], - "mt": ["Messari"], - "funot": ["TokenTerminal"], - "team": ["Messari"], - "inv": ["Messari"], - "tk": ["Messari"], - "fr": ["Messari"], - "rm": ["Messari"], - "events": ["CoinPaprika"], - "news": ["CryptoPanic"], - "links": ["Messari"], - "twitter": ["CoinPaprika"], - "social": ["CoinGecko"], - "score": ["CoinGecko"], - "dev": ["CoinGecko"], - "gh": ["Santiment"] + "load": [ + "YahooFinance", + "CoinGecko", + "CCXT" + ], + "info": [ + "CoinGecko" + ], + "ath": [ + "CoinGecko" + ], + "atl": [ + "CoinGecko" + ], + "web": [ + "CoinGecko" + ], + "bc": [ + "CoinGecko" + ], + "pi": [ + "Messari" + ], + "gov": [ + "Messari" + ], + "basic": [ + "CoinPaprika" + ], + "stats": [ + "Coinbase" + ], + "desc": [ + "TokenTerminal" + ], + "market": [ + "CoinGecko" + ], + "mkt": [ + "CoinPaprika" + ], + "ex": [ + "CoinPaprika" + ], + "balance": [ + "Binance" + ], + "oi": [ + "Coinglass" + ], + "fundrate": [ + "Coinglass" + ], + "liquidations": [ + "Coinglass" + ], + "eb": [ + "Coinglass" + ], + "trades": [ + "CCXT" + ], + "ob": [ + "CCXT" + ], + "active": [ + "Glassnode" + ], + "nonzero": [ + "Glassnode" + ], + "change": [ + "Glassnode" + ], + "ps": [ + "CoinPaprika" + ], + "mcapdom": [ + "Messari" + ], + "mt": [ + "Messari" + ], + "funot": [ + "TokenTerminal" + ], + "team": [ + "Messari" + ], + "inv": [ + "Messari" + ], + "tk": [ + "Messari" + ], + "fr": [ + "Messari" + ], + "rm": [ + "Messari" + ], + "events": [ + "CoinPaprika" + ], + "news": [ + "CryptoPanic" + ], + "links": [ + "Messari" + ], + "twitter": [ + "CoinPaprika" + ], + "social": [ + "CoinGecko" + ], + "score": [ + "CoinGecko" + ], + "dev": [ + "CoinGecko" + ], + "gh": [ + "Santiment" + ] }, "ta": { - "load": ["YahooFinance", "CoinGecko", "CCXT"], - "tv": ["TradingView"] + "load": [ + "YahooFinance", + "CoinGecko", + "CCXT" + ], + "tv": [ + "TradingView" + ] }, "qa": { - "load": ["YahooFinance", "CoinGecko", "CCXT"] + "load": [ + "YahooFinance", + "CoinGecko", + "CCXT" + ] } }, "etf": { - "search": ["FinanceDatabase", "StockAnalysis"], - "load": ["YahooFinance"], + "search": [ + "FinanceDatabase", + "StockAnalysis" + ], + "load": [ + "YahooFinance" + ], "disc": { - "gainers": ["WallStreetJournal"], - "decliners": ["WallStreetJournal"], - "active": ["WallStreetJournal"] + "gainers": [ + "WallStreetJournal" + ], + "decliners": [ + "WallStreetJournal" + ], + "active": [ + "WallStreetJournal" + ] }, - "overview": ["StockAnalysis"], - "holdings": ["StockAnalysis"], - "weights": ["FinancialModelingPrep"], - "news": ["NewsApi"], - "compare": ["StockAnalysis"] + "overview": [ + "StockAnalysis" + ], + "holdings": [ + "StockAnalysis" + ], + "weights": [ + "FinancialModelingPrep" + ], + "news": [ + "NewsApi" + ], + "compare": [ + "StockAnalysis" + ] }, "economy": { - "overview": ["WallStreetJournal"], - "futures": ["WallStreetJournal", "Finviz"], - "map": ["Finviz"], - "bigmac": ["Nasdaq"], - "events": ["Nasdaq"], - "edebt": ["Wikipedia"], - "rtps": ["AlphaVantage"], - "valuation": ["Finviz"], - "performance": ["Finviz"], - "gdp": ["OECD"], - "rgdp": ["OECD"], - "fgdp": ["OECD"], - "debt": ["OECD"], - "cpi": ["FRED"], - "ccpi": ["OECD"], - "balance": ["OECD"], - "revenue": ["OECD"], - "spending": ["OECD"], - "trust": ["OECD"], - "treasury": ["EconDB"], - "fred": ["FRED"], - "index": ["YahooFinance"] + "overview": [ + "WallStreetJournal" + ], + "futures": [ + "WallStreetJournal", + "Finviz" + ], + "map": [ + "Finviz" + ], + "bigmac": [ + "Nasdaq" + ], + "events": [ + "Nasdaq" + ], + "edebt": [ + "Wikipedia" + ], + "rtps": [ + "AlphaVantage" + ], + "valuation": [ + "Finviz" + ], + "performance": [ + "Finviz" + ], + "gdp": [ + "OECD" + ], + "rgdp": [ + "OECD" + ], + "fgdp": [ + "OECD" + ], + "debt": [ + "OECD" + ], + "cpi": [ + "FRED" + ], + "ccpi": [ + "OECD" + ], + "balance": [ + "OECD" + ], + "revenue": [ + "OECD" + ], + "spending": [ + "OECD" + ], + "trust": [ + "OECD" + ], + "treasury": [ + "EconDB" + ], + "fred": [ + "FRED" + ], + "index": [ + "YahooFinance" + ] }, "forex": { - "load": ["YahooFinance", "AlphaVantage", "Polygon"], - "quote": ["YahooFinance", "AlphaVantage"], - "fwd": ["FXEmpire"] + "load": [ + "YahooFinance", + "AlphaVantage", + "Polygon" + ], + "quote": [ + "YahooFinance", + "AlphaVantage" + ], + "fwd": [ + "FXEmpire" + ] }, "funds": { - "country": ["MorningStar"], - "search": ["MorningStar"], - "load": ["MorningStar"], - "info": ["MorningStar"], - "plot": ["MorningStar"], - "sector": ["MorningStar"], - "carbon": ["MorningStar"], - "exclusion": ["MorningStar"], - "holdings": ["MorningStar"], - "alswe": ["Avanza"], - "infoswe": ["Avanza"] + "country": [ + "MorningStar" + ], + "search": [ + "MorningStar" + ], + "load": [ + "MorningStar" + ], + "info": [ + "MorningStar" + ], + "plot": [ + "MorningStar" + ], + "sector": [ + "MorningStar" + ], + "carbon": [ + "MorningStar" + ], + "exclusion": [ + "MorningStar" + ], + "holdings": [ + "MorningStar" + ], + "alswe": [ + "Avanza" + ], + "infoswe": [ + "Avanza" + ] }, "futures": { - "search": ["YahooFinance"], - "historical": ["YahooFinance", "DataBento"], - "curve": ["YahooFinance"] + "search": [ + "YahooFinance" + ], + "historical": [ + "YahooFinance", + "DataBento" + ], + "curve": [ + "YahooFinance" + ] }, "fixedincome": { - "estr": ["FRED", "ECB"], - "sofr": ["FRED"], - "sonia": ["FRED"], - "ameribor": ["FRED"], - "fed": ["FRED"], - "iorb": ["FRED"], - "projection": ["FRED"], - "dwpcr": ["FRED"], - "ecb": ["FRED"], - "treasury": ["OECD"], - "usrates": ["FRED"], - "ycrv": ["FRED"], - "ecbycrv": ["ECB"], - "icebofa": ["FRED"], - "moody": ["FRED"], - "spot": ["FRED"], - "cp": ["FRED"], - "hqm": ["FRED"], - "icespread": ["FRED"], - "tmc": ["FRED"], - "ffrmc": ["FRED"], - "tbffr": ["FRED"] + "estr": [ + "FRED", + "ECB" + ], + "sofr": [ + "FRED" + ], + "sonia": [ + "FRED" + ], + "ameribor": [ + "FRED" + ], + "fed": [ + "FRED" + ], + "iorb": [ + "FRED" + ], + "projection": [ + "FRED" + ], + "dwpcr": [ + "FRED" + ], + "ecb": [ + "FRED" + ], + "treasury": [ + "OECD" + ], + "usrates": [ + "FRED" + ], + "ycrv": [ + "FRED" + ], + "ecbycrv": [ + "ECB" + ], + "icebofa": [ + "FRED" + ], + "moody": [ + "FRED" + ], + "spot": [ + "FRED" + ], + "cp": [ + "FRED" + ], + "hqm": [ + "FRED" + ], + "icespread": [ + "FRED" + ], + "tmc": [ + "FRED" + ], + "ffrmc": [ + "FRED" + ], + "tbffr": [ + "FRED" + ] }, "portfolio": { "po": { - "maxsharpe": ["YahooFinance"], - "minrisk": ["YahooFinance"], - "maxutil": ["YahooFinance"], - "maxret": ["YahooFinance"], - "maxdiv": ["YahooFinance"], - "maxdecorr": ["YahooFinance"], - "blacklitterman": ["FinancialModelingPrep"], - "ef": ["YahooFinance"], - "riskparity": ["YahooFinance"], - "relriskparity": ["YahooFinance"], - "hrp": ["YahooFinance"], - "herc": ["YahooFinance"], - "nco": ["YahooFinance"], - "equal": ["YahooFinance"], - "mktcap": ["FinancialModelingPrep"] + "maxsharpe": [ + "YahooFinance" + ], + "minrisk": [ + "YahooFinance" + ], + "maxutil": [ + "YahooFinance" + ], + "maxret": [ + "YahooFinance" + ], + "maxdiv": [ + "YahooFinance" + ], + "maxdecorr": [ + "YahooFinance" + ], + "blacklitterman": [ + "FinancialModelingPrep" + ], + "ef": [ + "YahooFinance" + ], + "riskparity": [ + "YahooFinance" + ], + "relriskparity": [ + "YahooFinance" + ], + "hrp": [ + "YahooFinance" + ], + "herc": [ + "YahooFinance" + ], + "nco": [ + "YahooFinance" + ], + "equal": [ + "YahooFinance" + ], + "mktcap": [ + "FinancialModelingPrep" + ] } }, "alternative": { "oss": { - "rossidx": ["RunaCapital"], - "rs": ["GitHub"], - "sh": ["GitHub"], - "tr": ["GitHub"] + "rossidx": [ + "RunaCapital" + ], + "rs": [ + "GitHub" + ], + "sh": [ + "GitHub" + ], + "tr": [ + "GitHub" + ] }, - "hn": ["HackerNews"] + "hn": [ + "HackerNews" + ] } } diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index e47632c4b176..772854ee3627 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -1,32 +1,48 @@ """OpenBB Terminal SDK.""" + # ######### THIS FILE IS AUTO GENERATED - ANY CHANGES WILL BE VOID ######### # + # flake8: noqa + # pylint: disable=unused-import,wrong-import-order + # pylint: disable=C0302,W0611,R0902,R0903,C0412,C0301,not-callable + import logging import openbb_terminal.config_terminal as cfg + from openbb_terminal import helper_funcs as helper # noqa: F401 + from openbb_terminal.core.plots.plotly_helper import theme # noqa: F401 from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model import Coin + from openbb_terminal.dashboards.dashboards_controller import DashboardsController + from openbb_terminal.helper_classes import TerminalStyle # noqa: F401 + from openbb_terminal.reports import widget_helpers as widgets # noqa: F401 + from openbb_terminal.reports.reports_controller import ReportController import openbb_terminal.core.sdk.sdk_init as lib + from openbb_terminal.core.sdk import ( controllers as ctrl, models as model, ) + from openbb_terminal.core.session.current_system import get_current_system + from openbb_terminal.core.session.current_user import is_local + from openbb_terminal.terminal_helper import is_auth_enabled cfg.setup_config_terminal(is_sdk=True) logger = logging.getLogger(__name__) + cfg.theme.applyMPLstyle() diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].yaml deleted file mode 100644 index b61c977e59c2..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXRZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbk52Y25ROWRYTmxjaVp2Y21SbGNqMWtaWE5qSm14cGJXbDBQVEky - response: - body: - string: '{"page":1,"resultsPerPage":10,"pageCount":323,"resultCount":8403,"dapps":[{"id":3803,"name":"Splinterlands","slug":"splinterlands","new":false,"statistic":{"balance":415049.781,"balanceInFiat":387563.94,"totalBalanceInFiat":387563.94,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/hive_3803_f4080b58e0396f39f4e6ba94a0fd5884.png","exchangeRate":1,"currencyName":"usd","transactionCount":2443065,"userActivity":305103,"volumeInFiat":7976.610000000001,"totalVolumeInFiat":7976.610000000001,"totalVolumeChangeInFiat":-19.86,"changes":{"dau":{"status":"+4.54%","label":"positive"},"volume":{"status":"-58.81%","label":"negative"},"tx":{"status":"+4.24%","label":"positive"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-19.86%","label":"negative"},"totalBalance":{"status":"-2.26%","label":"negative"}}},"godzillaId":20,"slugs":{"multichain":"splinterlands","hive":"splinterlands","wax":"splinterlands"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3803\/splinterlands-dapp-games-hive-logo-50x50_a226c66bc5a85c250400e213a02de3a0.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3803","mobileFriendly":false,"featured":false,"protocols":["hive","wax"],"activeProtocols":["hive","wax"],"category":"games","tracked":true},{"id":4600,"name":"PancakeSwap","slug":"pancakeswap","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":1787218283.97,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/bsc_4600_0966d2b554616381f9ed607c38e69a29.png","exchangeRate":1,"currencyName":"usd","transactionCount":825950,"userActivity":289333,"volumeInFiat":90647866.04,"totalVolumeInFiat":223688791.05,"totalVolumeChangeInFiat":-13.66,"changes":{"dau":{"status":"-7.74%","label":"negative"},"volume":{"status":"-13.58%","label":"negative"},"tx":{"status":"-2.27%","label":"negative"},"tokenVolume":{"status":"-13.71%","label":"negative"},"totalVolume":{"status":"-13.66%","label":"negative"},"totalBalance":{"status":"+1.06%","label":"positive"}}},"godzillaId":null,"slugs":{"binance-smart-chain":"pancakeswap"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4600\/pancakeswap-dapp-defi-bsc-logo-50x50_20e5d8b6c50c2cead9eb33120e4e1417.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4600","mobileFriendly":false,"featured":false,"protocols":["binance-smart-chain"],"activeProtocols":["binance-smart-chain"],"category":"defi","tracked":true},{"id":5314,"name":"Alien - Worlds","slug":"alien-worlds","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":11928214.27,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_5314_f7d222dc85596eab5a1666bb5d9398f0.png","exchangeRate":1,"currencyName":"usd","transactionCount":9905453,"userActivity":235631,"volumeInFiat":0,"totalVolumeInFiat":759203.57,"totalVolumeChangeInFiat":-51.58,"changes":{"dau":{"status":"-1.40%","label":"negative"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+5.00%","label":"positive"},"tokenVolume":{"status":"-53.63%","label":"negative"},"totalVolume":{"status":"-51.58%","label":"negative"},"totalBalance":{"status":"+0.95%","label":"positive"}}},"godzillaId":null,"slugs":{"multichain":"alien-worlds","wax":"alien-worlds","binance-smart-chain":"alien-worlds"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/5314\/alienworlds-dapp-games-wax-logo-50x50_7eb46e879e197fbebc312a031961d539.png","deepLink":"https:\/\/dappradar.com\/deeplink\/5314","mobileFriendly":false,"featured":false,"protocols":["wax","binance-smart-chain"],"activeProtocols":["wax","binance-smart-chain"],"category":"games","tracked":true},{"id":8430,"name":"Farmers - World","slug":"farmers-world","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":0,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_8430_9a6a61dfbdb9a5904fe1253fd86052f1.png","exchangeRate":1,"currencyName":"usd","transactionCount":6838275,"userActivity":111680,"volumeInFiat":0,"totalVolumeInFiat":2300.16,"totalVolumeChangeInFiat":-11.11,"changes":{"dau":{"status":"+1.44%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+4.18%","label":"positive"},"tokenVolume":{"status":"-11.11%","label":"negative"},"totalVolume":{"status":"-11.11%","label":"negative"},"totalBalance":{"status":"-","label":"neutral"}}},"godzillaId":null,"slugs":{"wax":"farmers-world"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/8430\/farmersworld-dapp-games-wax-logo-50x50_81f91937d65e727d9601165d9a61848e.png","deepLink":"https:\/\/dappradar.com\/deeplink\/8430","mobileFriendly":false,"featured":false,"protocols":["wax"],"activeProtocols":["wax"],"category":"games","tracked":true},{"id":4098,"name":"AtomicAssets","slug":"atomicassets","new":false,"statistic":{"balance":398.4151,"balanceInFiat":908.39,"totalBalanceInFiat":908.39,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_4098_5fc5dc3b0234cbfb438d68c7958c74cb.png","exchangeRate":1,"currencyName":"usd","transactionCount":790849,"userActivity":108877,"volumeInFiat":226318.76,"totalVolumeInFiat":226318.76,"totalVolumeChangeInFiat":-28.59,"changes":{"dau":{"status":"+14.95%","label":"positive"},"volume":{"status":"-28.59%","label":"negative"},"tx":{"status":"-53.52%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-28.59%","label":"negative"},"totalBalance":{"status":"+93.93%","label":"positive"}}},"godzillaId":47,"slugs":{"multichain":"atomicassets","wax":"atomicassets","eos":"atomicassets"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4098\/atomicassets-dapp-other-wax-logo-50x50_0b09297a60fe708557fb504c0de8a6c7.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4098","mobileFriendly":false,"featured":false,"protocols":["wax","eos"],"activeProtocols":["wax","eos"],"category":"other","tracked":true},{"id":9495,"name":"Axie - Infinity","slug":"axie-infinity","new":false,"statistic":{"balance":32.371094028017,"balanceInFiat":81169.51000000001,"totalBalanceInFiat":2320591139.55,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_9495_41dd8d5cfd545d4340ec61aa9d6fc072.png","exchangeRate":1,"currencyName":"usd","transactionCount":259669,"userActivity":90876,"volumeInFiat":0,"totalVolumeInFiat":11619801.91,"totalVolumeChangeInFiat":4.59,"changes":{"dau":{"status":"+5.34%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+1.00%","label":"positive"},"tokenVolume":{"status":"+4.59%","label":"positive"},"totalVolume":{"status":"+4.59%","label":"positive"},"totalBalance":{"status":"-2.03%","label":"negative"}}},"godzillaId":null,"slugs":{"multichain":"axie-infinity","ronin":"axie-infinity","ethereum":"axie-infinity"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/266\/axieinfinity-dapp-games-eth-logo-50x50_29c76363b3775610e92c2ac9737572b6.png","deepLink":"https:\/\/dappradar.com\/deeplink\/9495","mobileFriendly":false,"featured":false,"protocols":["ronin","ethereum"],"activeProtocols":["ronin","ethereum"],"category":"games","tracked":true},{"id":3388,"name":"Upland","slug":"upland","new":false,"statistic":{"balance":22514.1054,"balanceInFiat":51332.16,"totalBalanceInFiat":51332.16,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/eos_3388_7d7b564d6231858405bc39967b0d5083.png","exchangeRate":1,"currencyName":"usd","transactionCount":304007,"userActivity":63279,"volumeInFiat":0,"totalVolumeInFiat":0,"totalVolumeChangeInFiat":0,"changes":{"dau":{"status":"+5.37%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"-2.20%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-","label":"neutral"},"totalBalance":{"status":"-4.42%","label":"negative"}}},"godzillaId":1211,"slugs":{"eos":"upland"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3388\/upland-games-eos-logo-50x50_e6b347dd682126c7dceb525b4e414d9a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3388","mobileFriendly":false,"featured":false,"protocols":["eos"],"activeProtocols":["eos"],"category":"games","tracked":true},{"id":13,"name":"OpenSea","slug":"opensea","new":false,"statistic":{"balance":12.682916074666,"balanceInFiat":32221.71,"totalBalanceInFiat":92279.32,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ethereum_13_ce5d74cf5c891702d865935b06049cb7.png","exchangeRate":1,"currencyName":"usd","transactionCount":103737,"userActivity":53953,"volumeInFiat":199956341.32999998,"totalVolumeInFiat":199956343.81,"totalVolumeChangeInFiat":30.92,"changes":{"dau":{"status":"+3.28%","label":"positive"},"volume":{"status":"+30.92%","label":"positive"},"tx":{"status":"+0.76%","label":"positive"},"tokenVolume":{"status":"-85.98%","label":"negative"},"totalVolume":{"status":"+30.92%","label":"positive"},"totalBalance":{"status":"-1.75%","label":"negative"}}},"godzillaId":15,"slugs":{"multichain":"opensea","ethereum":"opensea","polygon":"opensea"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/13\/opensea-dapp-marketplaces-ethereum-logo-50x50_82cc11d79baa6aed6b181907d9e4360a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/13","mobileFriendly":false,"featured":false,"protocols":["ethereum","polygon"],"activeProtocols":["ethereum","polygon"],"category":"marketplaces","tracked":true},{"id":10507,"name":"Katana","slug":"katana","new":false,"statistic":{"balance":99281077.886568,"balanceInFiat":24044823.9,"totalBalanceInFiat":643217935.92,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_10507_7019d066cfc6579ecc7008c476d1b7e3.png","exchangeRate":1,"currencyName":"usd","transactionCount":102052,"userActivity":45918,"volumeInFiat":1342331.29,"totalVolumeInFiat":92685103.3,"totalVolumeChangeInFiat":-24.54,"changes":{"dau":{"status":"+9.02%","label":"positive"},"volume":{"status":"+19.51%","label":"positive"},"tx":{"status":"+2.76%","label":"positive"},"tokenVolume":{"status":"-24.95%","label":"negative"},"totalVolume":{"status":"-24.54%","label":"negative"},"totalBalance":{"status":"-5.64%","label":"negative"}}},"godzillaId":null,"slugs":{"ronin":"katana"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10507\/katana-dapp-defi-hive-logo-50x50_b15ee35de6674acc8020df7a9dec7d43.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10507","mobileFriendly":false,"featured":false,"protocols":["ronin"],"activeProtocols":["ronin"],"category":"defi","tracked":true},{"id":10734,"name":"Magic - Eden","slug":"magic-eden","new":false,"statistic":{"balance":1375.495356155,"balanceInFiat":125046.28,"totalBalanceInFiat":125057.42,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/solana_10734_2266d84bfe002e2300044475ff95816b.png","exchangeRate":1,"currencyName":"usd","transactionCount":253762,"userActivity":40235,"volumeInFiat":18465616.7,"totalVolumeInFiat":18465616.7,"totalVolumeChangeInFiat":2.38,"changes":{"dau":{"status":"+2.12%","label":"positive"},"volume":{"status":"+2.38%","label":"positive"},"tx":{"status":"-2.72%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"+2.38%","label":"positive"},"totalBalance":{"status":"-52.34%","label":"negative"}}},"godzillaId":null,"slugs":{"solana":"magic-eden"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10734\/magiceden-dapp-marketplaces-solana-logo-50x50_46a7bd19acf0de71fa9f4c1d3dc12301.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10734","mobileFriendly":false,"featured":false,"protocols":["solana"],"activeProtocols":["solana"],"category":"marketplaces","tracked":true}],"ad":null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d66512078d33ffb-CDG - Cache-Control: - - public, max-age=31536000 - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Mon, 31 Jan 2022 22:18:37 GMT - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Cache-Status: - - MISS - X-Frame-Options: - - SAMEORIGIN - expires: - - '-1' - pragma: - - no-cache - status: - code: 206 - message: Partial Content -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].yaml deleted file mode 100644 index 005574bf901c..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXRZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbU5oZEdWbmIzSjVQV1Y0WTJoaGJtZGxjeVp6YjNKMFBYUnZkR0ZzVm05c2RXMWxTVzVHYVdGMEptOXlaR1Z5UFdSbGMyTW1iR2x0YVhROU1qWT0= - response: - body: - string: '{"page":1,"resultsPerPage":10,"pageCount":323,"resultCount":8403,"dapps":[{"id":3803,"name":"Splinterlands","slug":"splinterlands","new":false,"statistic":{"balance":415049.781,"balanceInFiat":387563.94,"totalBalanceInFiat":387563.94,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/hive_3803_f4080b58e0396f39f4e6ba94a0fd5884.png","exchangeRate":1,"currencyName":"usd","transactionCount":2443065,"userActivity":305103,"volumeInFiat":7976.610000000001,"totalVolumeInFiat":7976.610000000001,"totalVolumeChangeInFiat":-19.86,"changes":{"dau":{"status":"+4.54%","label":"positive"},"volume":{"status":"-58.81%","label":"negative"},"tx":{"status":"+4.24%","label":"positive"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-19.86%","label":"negative"},"totalBalance":{"status":"-2.26%","label":"negative"}}},"godzillaId":20,"slugs":{"multichain":"splinterlands","hive":"splinterlands","wax":"splinterlands"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3803\/splinterlands-dapp-games-hive-logo-50x50_a226c66bc5a85c250400e213a02de3a0.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3803","mobileFriendly":false,"featured":false,"protocols":["hive","wax"],"activeProtocols":["hive","wax"],"category":"games","tracked":true},{"id":4600,"name":"PancakeSwap","slug":"pancakeswap","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":1787218283.97,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/bsc_4600_0966d2b554616381f9ed607c38e69a29.png","exchangeRate":1,"currencyName":"usd","transactionCount":825950,"userActivity":289333,"volumeInFiat":90647866.04,"totalVolumeInFiat":223688791.05,"totalVolumeChangeInFiat":-13.66,"changes":{"dau":{"status":"-7.74%","label":"negative"},"volume":{"status":"-13.58%","label":"negative"},"tx":{"status":"-2.27%","label":"negative"},"tokenVolume":{"status":"-13.71%","label":"negative"},"totalVolume":{"status":"-13.66%","label":"negative"},"totalBalance":{"status":"+1.06%","label":"positive"}}},"godzillaId":null,"slugs":{"binance-smart-chain":"pancakeswap"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4600\/pancakeswap-dapp-defi-bsc-logo-50x50_20e5d8b6c50c2cead9eb33120e4e1417.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4600","mobileFriendly":false,"featured":false,"protocols":["binance-smart-chain"],"activeProtocols":["binance-smart-chain"],"category":"defi","tracked":true},{"id":5314,"name":"Alien - Worlds","slug":"alien-worlds","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":11928214.27,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_5314_f7d222dc85596eab5a1666bb5d9398f0.png","exchangeRate":1,"currencyName":"usd","transactionCount":9905453,"userActivity":235631,"volumeInFiat":0,"totalVolumeInFiat":759203.57,"totalVolumeChangeInFiat":-51.58,"changes":{"dau":{"status":"-1.40%","label":"negative"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+5.00%","label":"positive"},"tokenVolume":{"status":"-53.63%","label":"negative"},"totalVolume":{"status":"-51.58%","label":"negative"},"totalBalance":{"status":"+0.95%","label":"positive"}}},"godzillaId":null,"slugs":{"multichain":"alien-worlds","wax":"alien-worlds","binance-smart-chain":"alien-worlds"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/5314\/alienworlds-dapp-games-wax-logo-50x50_7eb46e879e197fbebc312a031961d539.png","deepLink":"https:\/\/dappradar.com\/deeplink\/5314","mobileFriendly":false,"featured":false,"protocols":["wax","binance-smart-chain"],"activeProtocols":["wax","binance-smart-chain"],"category":"games","tracked":true},{"id":8430,"name":"Farmers - World","slug":"farmers-world","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":0,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_8430_9a6a61dfbdb9a5904fe1253fd86052f1.png","exchangeRate":1,"currencyName":"usd","transactionCount":6838275,"userActivity":111680,"volumeInFiat":0,"totalVolumeInFiat":2300.16,"totalVolumeChangeInFiat":-11.11,"changes":{"dau":{"status":"+1.44%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+4.18%","label":"positive"},"tokenVolume":{"status":"-11.11%","label":"negative"},"totalVolume":{"status":"-11.11%","label":"negative"},"totalBalance":{"status":"-","label":"neutral"}}},"godzillaId":null,"slugs":{"wax":"farmers-world"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/8430\/farmersworld-dapp-games-wax-logo-50x50_81f91937d65e727d9601165d9a61848e.png","deepLink":"https:\/\/dappradar.com\/deeplink\/8430","mobileFriendly":false,"featured":false,"protocols":["wax"],"activeProtocols":["wax"],"category":"games","tracked":true},{"id":4098,"name":"AtomicAssets","slug":"atomicassets","new":false,"statistic":{"balance":398.4151,"balanceInFiat":908.39,"totalBalanceInFiat":908.39,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_4098_5fc5dc3b0234cbfb438d68c7958c74cb.png","exchangeRate":1,"currencyName":"usd","transactionCount":790849,"userActivity":108877,"volumeInFiat":226318.76,"totalVolumeInFiat":226318.76,"totalVolumeChangeInFiat":-28.59,"changes":{"dau":{"status":"+14.95%","label":"positive"},"volume":{"status":"-28.59%","label":"negative"},"tx":{"status":"-53.52%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-28.59%","label":"negative"},"totalBalance":{"status":"+93.93%","label":"positive"}}},"godzillaId":47,"slugs":{"multichain":"atomicassets","wax":"atomicassets","eos":"atomicassets"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4098\/atomicassets-dapp-other-wax-logo-50x50_0b09297a60fe708557fb504c0de8a6c7.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4098","mobileFriendly":false,"featured":false,"protocols":["wax","eos"],"activeProtocols":["wax","eos"],"category":"other","tracked":true},{"id":9495,"name":"Axie - Infinity","slug":"axie-infinity","new":false,"statistic":{"balance":32.371094028017,"balanceInFiat":81169.51000000001,"totalBalanceInFiat":2320591139.55,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_9495_41dd8d5cfd545d4340ec61aa9d6fc072.png","exchangeRate":1,"currencyName":"usd","transactionCount":259669,"userActivity":90876,"volumeInFiat":0,"totalVolumeInFiat":11619801.91,"totalVolumeChangeInFiat":4.59,"changes":{"dau":{"status":"+5.34%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+1.00%","label":"positive"},"tokenVolume":{"status":"+4.59%","label":"positive"},"totalVolume":{"status":"+4.59%","label":"positive"},"totalBalance":{"status":"-2.03%","label":"negative"}}},"godzillaId":null,"slugs":{"multichain":"axie-infinity","ronin":"axie-infinity","ethereum":"axie-infinity"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/266\/axieinfinity-dapp-games-eth-logo-50x50_29c76363b3775610e92c2ac9737572b6.png","deepLink":"https:\/\/dappradar.com\/deeplink\/9495","mobileFriendly":false,"featured":false,"protocols":["ronin","ethereum"],"activeProtocols":["ronin","ethereum"],"category":"games","tracked":true},{"id":3388,"name":"Upland","slug":"upland","new":false,"statistic":{"balance":22514.1054,"balanceInFiat":51332.16,"totalBalanceInFiat":51332.16,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/eos_3388_7d7b564d6231858405bc39967b0d5083.png","exchangeRate":1,"currencyName":"usd","transactionCount":304007,"userActivity":63279,"volumeInFiat":0,"totalVolumeInFiat":0,"totalVolumeChangeInFiat":0,"changes":{"dau":{"status":"+5.37%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"-2.20%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-","label":"neutral"},"totalBalance":{"status":"-4.42%","label":"negative"}}},"godzillaId":1211,"slugs":{"eos":"upland"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3388\/upland-games-eos-logo-50x50_e6b347dd682126c7dceb525b4e414d9a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3388","mobileFriendly":false,"featured":false,"protocols":["eos"],"activeProtocols":["eos"],"category":"games","tracked":true},{"id":13,"name":"OpenSea","slug":"opensea","new":false,"statistic":{"balance":12.682916074666,"balanceInFiat":32221.71,"totalBalanceInFiat":92279.32,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ethereum_13_ce5d74cf5c891702d865935b06049cb7.png","exchangeRate":1,"currencyName":"usd","transactionCount":103737,"userActivity":53953,"volumeInFiat":199956341.32999998,"totalVolumeInFiat":199956343.81,"totalVolumeChangeInFiat":30.92,"changes":{"dau":{"status":"+3.28%","label":"positive"},"volume":{"status":"+30.92%","label":"positive"},"tx":{"status":"+0.76%","label":"positive"},"tokenVolume":{"status":"-85.98%","label":"negative"},"totalVolume":{"status":"+30.92%","label":"positive"},"totalBalance":{"status":"-1.75%","label":"negative"}}},"godzillaId":15,"slugs":{"multichain":"opensea","ethereum":"opensea","polygon":"opensea"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/13\/opensea-dapp-marketplaces-ethereum-logo-50x50_82cc11d79baa6aed6b181907d9e4360a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/13","mobileFriendly":false,"featured":false,"protocols":["ethereum","polygon"],"activeProtocols":["ethereum","polygon"],"category":"marketplaces","tracked":true},{"id":10507,"name":"Katana","slug":"katana","new":false,"statistic":{"balance":99281077.886568,"balanceInFiat":24044823.9,"totalBalanceInFiat":643217935.92,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_10507_7019d066cfc6579ecc7008c476d1b7e3.png","exchangeRate":1,"currencyName":"usd","transactionCount":102052,"userActivity":45918,"volumeInFiat":1342331.29,"totalVolumeInFiat":92685103.3,"totalVolumeChangeInFiat":-24.54,"changes":{"dau":{"status":"+9.02%","label":"positive"},"volume":{"status":"+19.51%","label":"positive"},"tx":{"status":"+2.76%","label":"positive"},"tokenVolume":{"status":"-24.95%","label":"negative"},"totalVolume":{"status":"-24.54%","label":"negative"},"totalBalance":{"status":"-5.64%","label":"negative"}}},"godzillaId":null,"slugs":{"ronin":"katana"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10507\/katana-dapp-defi-hive-logo-50x50_b15ee35de6674acc8020df7a9dec7d43.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10507","mobileFriendly":false,"featured":false,"protocols":["ronin"],"activeProtocols":["ronin"],"category":"defi","tracked":true},{"id":10734,"name":"Magic - Eden","slug":"magic-eden","new":false,"statistic":{"balance":1375.495356155,"balanceInFiat":125046.28,"totalBalanceInFiat":125057.42,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/solana_10734_2266d84bfe002e2300044475ff95816b.png","exchangeRate":1,"currencyName":"usd","transactionCount":253762,"userActivity":40235,"volumeInFiat":18465616.7,"totalVolumeInFiat":18465616.7,"totalVolumeChangeInFiat":2.38,"changes":{"dau":{"status":"+2.12%","label":"positive"},"volume":{"status":"+2.38%","label":"positive"},"tx":{"status":"-2.72%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"+2.38%","label":"positive"},"totalBalance":{"status":"-52.34%","label":"negative"}}},"godzillaId":null,"slugs":{"solana":"magic-eden"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10734\/magiceden-dapp-marketplaces-solana-logo-50x50_46a7bd19acf0de71fa9f4c1d3dc12301.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10734","mobileFriendly":false,"featured":false,"protocols":["solana"],"activeProtocols":["solana"],"category":"marketplaces","tracked":true}],"ad":null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d66511d7e034081-CDG - Cache-Control: - - public, max-age=31536000 - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Mon, 31 Jan 2022 22:18:37 GMT - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Cache-Status: - - MISS - X-Frame-Options: - - SAMEORIGIN - expires: - - '-1' - pragma: - - no-cache - status: - code: 206 - message: Partial Content -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_games-kwargs2].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_games-kwargs2].yaml deleted file mode 100644 index 9ace4bba7f41..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_games-kwargs2].yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXRZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbU5oZEdWbmIzSjVQV2RoYldWekpuTnZjblE5ZFhObGNpWnZjbVJsY2oxa1pYTmpKbXhwYldsMFBUSTI= - response: - body: - string: '{"page":1,"resultsPerPage":10,"pageCount":323,"resultCount":8403,"dapps":[{"id":3803,"name":"Splinterlands","slug":"splinterlands","new":false,"statistic":{"balance":415049.781,"balanceInFiat":387563.94,"totalBalanceInFiat":387563.94,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/hive_3803_f4080b58e0396f39f4e6ba94a0fd5884.png","exchangeRate":1,"currencyName":"usd","transactionCount":2443065,"userActivity":305103,"volumeInFiat":7976.610000000001,"totalVolumeInFiat":7976.610000000001,"totalVolumeChangeInFiat":-19.86,"changes":{"dau":{"status":"+4.54%","label":"positive"},"volume":{"status":"-58.81%","label":"negative"},"tx":{"status":"+4.24%","label":"positive"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-19.86%","label":"negative"},"totalBalance":{"status":"-2.26%","label":"negative"}}},"godzillaId":20,"slugs":{"multichain":"splinterlands","hive":"splinterlands","wax":"splinterlands"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3803\/splinterlands-dapp-games-hive-logo-50x50_a226c66bc5a85c250400e213a02de3a0.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3803","mobileFriendly":false,"featured":false,"protocols":["hive","wax"],"activeProtocols":["hive","wax"],"category":"games","tracked":true},{"id":4600,"name":"PancakeSwap","slug":"pancakeswap","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":1787218283.97,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/bsc_4600_0966d2b554616381f9ed607c38e69a29.png","exchangeRate":1,"currencyName":"usd","transactionCount":825950,"userActivity":289333,"volumeInFiat":90647866.04,"totalVolumeInFiat":223688791.05,"totalVolumeChangeInFiat":-13.66,"changes":{"dau":{"status":"-7.74%","label":"negative"},"volume":{"status":"-13.58%","label":"negative"},"tx":{"status":"-2.27%","label":"negative"},"tokenVolume":{"status":"-13.71%","label":"negative"},"totalVolume":{"status":"-13.66%","label":"negative"},"totalBalance":{"status":"+1.06%","label":"positive"}}},"godzillaId":null,"slugs":{"binance-smart-chain":"pancakeswap"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4600\/pancakeswap-dapp-defi-bsc-logo-50x50_20e5d8b6c50c2cead9eb33120e4e1417.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4600","mobileFriendly":false,"featured":false,"protocols":["binance-smart-chain"],"activeProtocols":["binance-smart-chain"],"category":"defi","tracked":true},{"id":5314,"name":"Alien - Worlds","slug":"alien-worlds","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":11928214.27,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_5314_f7d222dc85596eab5a1666bb5d9398f0.png","exchangeRate":1,"currencyName":"usd","transactionCount":9905453,"userActivity":235631,"volumeInFiat":0,"totalVolumeInFiat":759203.57,"totalVolumeChangeInFiat":-51.58,"changes":{"dau":{"status":"-1.40%","label":"negative"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+5.00%","label":"positive"},"tokenVolume":{"status":"-53.63%","label":"negative"},"totalVolume":{"status":"-51.58%","label":"negative"},"totalBalance":{"status":"+0.95%","label":"positive"}}},"godzillaId":null,"slugs":{"multichain":"alien-worlds","wax":"alien-worlds","binance-smart-chain":"alien-worlds"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/5314\/alienworlds-dapp-games-wax-logo-50x50_7eb46e879e197fbebc312a031961d539.png","deepLink":"https:\/\/dappradar.com\/deeplink\/5314","mobileFriendly":false,"featured":false,"protocols":["wax","binance-smart-chain"],"activeProtocols":["wax","binance-smart-chain"],"category":"games","tracked":true},{"id":8430,"name":"Farmers - World","slug":"farmers-world","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":0,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_8430_9a6a61dfbdb9a5904fe1253fd86052f1.png","exchangeRate":1,"currencyName":"usd","transactionCount":6838275,"userActivity":111680,"volumeInFiat":0,"totalVolumeInFiat":2300.16,"totalVolumeChangeInFiat":-11.11,"changes":{"dau":{"status":"+1.44%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+4.18%","label":"positive"},"tokenVolume":{"status":"-11.11%","label":"negative"},"totalVolume":{"status":"-11.11%","label":"negative"},"totalBalance":{"status":"-","label":"neutral"}}},"godzillaId":null,"slugs":{"wax":"farmers-world"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/8430\/farmersworld-dapp-games-wax-logo-50x50_81f91937d65e727d9601165d9a61848e.png","deepLink":"https:\/\/dappradar.com\/deeplink\/8430","mobileFriendly":false,"featured":false,"protocols":["wax"],"activeProtocols":["wax"],"category":"games","tracked":true},{"id":4098,"name":"AtomicAssets","slug":"atomicassets","new":false,"statistic":{"balance":398.4151,"balanceInFiat":908.39,"totalBalanceInFiat":908.39,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_4098_5fc5dc3b0234cbfb438d68c7958c74cb.png","exchangeRate":1,"currencyName":"usd","transactionCount":790849,"userActivity":108877,"volumeInFiat":226318.76,"totalVolumeInFiat":226318.76,"totalVolumeChangeInFiat":-28.59,"changes":{"dau":{"status":"+14.95%","label":"positive"},"volume":{"status":"-28.59%","label":"negative"},"tx":{"status":"-53.52%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-28.59%","label":"negative"},"totalBalance":{"status":"+93.93%","label":"positive"}}},"godzillaId":47,"slugs":{"multichain":"atomicassets","wax":"atomicassets","eos":"atomicassets"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4098\/atomicassets-dapp-other-wax-logo-50x50_0b09297a60fe708557fb504c0de8a6c7.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4098","mobileFriendly":false,"featured":false,"protocols":["wax","eos"],"activeProtocols":["wax","eos"],"category":"other","tracked":true},{"id":9495,"name":"Axie - Infinity","slug":"axie-infinity","new":false,"statistic":{"balance":32.371094028017,"balanceInFiat":81169.51000000001,"totalBalanceInFiat":2320591139.55,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_9495_41dd8d5cfd545d4340ec61aa9d6fc072.png","exchangeRate":1,"currencyName":"usd","transactionCount":259669,"userActivity":90876,"volumeInFiat":0,"totalVolumeInFiat":11619801.91,"totalVolumeChangeInFiat":4.59,"changes":{"dau":{"status":"+5.34%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+1.00%","label":"positive"},"tokenVolume":{"status":"+4.59%","label":"positive"},"totalVolume":{"status":"+4.59%","label":"positive"},"totalBalance":{"status":"-2.03%","label":"negative"}}},"godzillaId":null,"slugs":{"multichain":"axie-infinity","ronin":"axie-infinity","ethereum":"axie-infinity"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/266\/axieinfinity-dapp-games-eth-logo-50x50_29c76363b3775610e92c2ac9737572b6.png","deepLink":"https:\/\/dappradar.com\/deeplink\/9495","mobileFriendly":false,"featured":false,"protocols":["ronin","ethereum"],"activeProtocols":["ronin","ethereum"],"category":"games","tracked":true},{"id":3388,"name":"Upland","slug":"upland","new":false,"statistic":{"balance":22514.1054,"balanceInFiat":51332.16,"totalBalanceInFiat":51332.16,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/eos_3388_7d7b564d6231858405bc39967b0d5083.png","exchangeRate":1,"currencyName":"usd","transactionCount":304007,"userActivity":63279,"volumeInFiat":0,"totalVolumeInFiat":0,"totalVolumeChangeInFiat":0,"changes":{"dau":{"status":"+5.37%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"-2.20%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-","label":"neutral"},"totalBalance":{"status":"-4.42%","label":"negative"}}},"godzillaId":1211,"slugs":{"eos":"upland"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3388\/upland-games-eos-logo-50x50_e6b347dd682126c7dceb525b4e414d9a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3388","mobileFriendly":false,"featured":false,"protocols":["eos"],"activeProtocols":["eos"],"category":"games","tracked":true},{"id":13,"name":"OpenSea","slug":"opensea","new":false,"statistic":{"balance":12.682916074666,"balanceInFiat":32221.71,"totalBalanceInFiat":92279.32,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ethereum_13_ce5d74cf5c891702d865935b06049cb7.png","exchangeRate":1,"currencyName":"usd","transactionCount":103737,"userActivity":53953,"volumeInFiat":199956341.32999998,"totalVolumeInFiat":199956343.81,"totalVolumeChangeInFiat":30.92,"changes":{"dau":{"status":"+3.28%","label":"positive"},"volume":{"status":"+30.92%","label":"positive"},"tx":{"status":"+0.76%","label":"positive"},"tokenVolume":{"status":"-85.98%","label":"negative"},"totalVolume":{"status":"+30.92%","label":"positive"},"totalBalance":{"status":"-1.75%","label":"negative"}}},"godzillaId":15,"slugs":{"multichain":"opensea","ethereum":"opensea","polygon":"opensea"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/13\/opensea-dapp-marketplaces-ethereum-logo-50x50_82cc11d79baa6aed6b181907d9e4360a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/13","mobileFriendly":false,"featured":false,"protocols":["ethereum","polygon"],"activeProtocols":["ethereum","polygon"],"category":"marketplaces","tracked":true},{"id":10507,"name":"Katana","slug":"katana","new":false,"statistic":{"balance":99281077.886568,"balanceInFiat":24044823.9,"totalBalanceInFiat":643217935.92,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_10507_7019d066cfc6579ecc7008c476d1b7e3.png","exchangeRate":1,"currencyName":"usd","transactionCount":102052,"userActivity":45918,"volumeInFiat":1342331.29,"totalVolumeInFiat":92685103.3,"totalVolumeChangeInFiat":-24.54,"changes":{"dau":{"status":"+9.02%","label":"positive"},"volume":{"status":"+19.51%","label":"positive"},"tx":{"status":"+2.76%","label":"positive"},"tokenVolume":{"status":"-24.95%","label":"negative"},"totalVolume":{"status":"-24.54%","label":"negative"},"totalBalance":{"status":"-5.64%","label":"negative"}}},"godzillaId":null,"slugs":{"ronin":"katana"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10507\/katana-dapp-defi-hive-logo-50x50_b15ee35de6674acc8020df7a9dec7d43.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10507","mobileFriendly":false,"featured":false,"protocols":["ronin"],"activeProtocols":["ronin"],"category":"defi","tracked":true},{"id":10734,"name":"Magic - Eden","slug":"magic-eden","new":false,"statistic":{"balance":1375.495356155,"balanceInFiat":125046.28,"totalBalanceInFiat":125057.42,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/solana_10734_2266d84bfe002e2300044475ff95816b.png","exchangeRate":1,"currencyName":"usd","transactionCount":253762,"userActivity":40235,"volumeInFiat":18465616.7,"totalVolumeInFiat":18465616.7,"totalVolumeChangeInFiat":2.38,"changes":{"dau":{"status":"+2.12%","label":"positive"},"volume":{"status":"+2.38%","label":"positive"},"tx":{"status":"-2.72%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"+2.38%","label":"positive"},"totalBalance":{"status":"-52.34%","label":"negative"}}},"godzillaId":null,"slugs":{"solana":"magic-eden"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10734\/magiceden-dapp-marketplaces-solana-logo-50x50_46a7bd19acf0de71fa9f4c1d3dc12301.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10734","mobileFriendly":false,"featured":false,"protocols":["solana"],"activeProtocols":["solana"],"category":"marketplaces","tracked":true}],"ad":null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d66511f0be50847-CDG - Cache-Control: - - public, max-age=31536000 - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Mon, 31 Jan 2022 22:18:37 GMT - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Cache-Status: - - MISS - X-Frame-Options: - - SAMEORIGIN - expires: - - '-1' - pragma: - - no-cache - status: - code: 206 - message: Partial Content -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].yaml deleted file mode 100644 index ac65a02f331b..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].yaml +++ /dev/null @@ -1,98 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://nft-sales-service.dappradar.com/v2/collection/day?limit=20&page=1¤cy=USD&sort=marketCapInFiat&order=desc - response: - body: - string: !!binary | - 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 - headers: - Access-Control-Allow-Origin: - - '*' - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d55cb3feb0a408d-CDG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json; charset=utf-8 - Date: - - Sat, 29 Jan 2022 22:11:02 GMT - ETag: - - W/"2fcd-75fowYbi+vrXVMLtEb3DqoeCUT8" - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Powered-By: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].yaml deleted file mode 100644 index a9951a365364..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXRZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbk52Y25ROWRYTmxjaVp2Y21SbGNqMWtaWE5qSm14cGJXbDBQVEky - response: - body: - string: '{"page":1,"resultsPerPage":10,"pageCount":323,"resultCount":8403,"dapps":[{"id":3803,"name":"Splinterlands","slug":"splinterlands","new":false,"statistic":{"balance":415049.781,"balanceInFiat":387563.94,"totalBalanceInFiat":387563.94,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/hive_3803_f4080b58e0396f39f4e6ba94a0fd5884.png","exchangeRate":1,"currencyName":"usd","transactionCount":2443065,"userActivity":305103,"volumeInFiat":7976.610000000001,"totalVolumeInFiat":7976.610000000001,"totalVolumeChangeInFiat":-19.86,"changes":{"dau":{"status":"+4.54%","label":"positive"},"volume":{"status":"-58.81%","label":"negative"},"tx":{"status":"+4.24%","label":"positive"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-19.86%","label":"negative"},"totalBalance":{"status":"-2.26%","label":"negative"}}},"godzillaId":20,"slugs":{"multichain":"splinterlands","hive":"splinterlands","wax":"splinterlands"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3803\/splinterlands-dapp-games-hive-logo-50x50_a226c66bc5a85c250400e213a02de3a0.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3803","mobileFriendly":false,"featured":false,"protocols":["hive","wax"],"activeProtocols":["hive","wax"],"category":"games","tracked":true},{"id":4600,"name":"PancakeSwap","slug":"pancakeswap","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":1787218283.97,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/bsc_4600_0966d2b554616381f9ed607c38e69a29.png","exchangeRate":1,"currencyName":"usd","transactionCount":825950,"userActivity":289333,"volumeInFiat":90647866.04,"totalVolumeInFiat":223688791.05,"totalVolumeChangeInFiat":-13.66,"changes":{"dau":{"status":"-7.74%","label":"negative"},"volume":{"status":"-13.58%","label":"negative"},"tx":{"status":"-2.27%","label":"negative"},"tokenVolume":{"status":"-13.71%","label":"negative"},"totalVolume":{"status":"-13.66%","label":"negative"},"totalBalance":{"status":"+1.06%","label":"positive"}}},"godzillaId":null,"slugs":{"binance-smart-chain":"pancakeswap"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4600\/pancakeswap-dapp-defi-bsc-logo-50x50_20e5d8b6c50c2cead9eb33120e4e1417.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4600","mobileFriendly":false,"featured":false,"protocols":["binance-smart-chain"],"activeProtocols":["binance-smart-chain"],"category":"defi","tracked":true},{"id":5314,"name":"Alien - Worlds","slug":"alien-worlds","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":11928214.27,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_5314_f7d222dc85596eab5a1666bb5d9398f0.png","exchangeRate":1,"currencyName":"usd","transactionCount":9905453,"userActivity":235631,"volumeInFiat":0,"totalVolumeInFiat":759203.57,"totalVolumeChangeInFiat":-51.58,"changes":{"dau":{"status":"-1.40%","label":"negative"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+5.00%","label":"positive"},"tokenVolume":{"status":"-53.63%","label":"negative"},"totalVolume":{"status":"-51.58%","label":"negative"},"totalBalance":{"status":"+0.95%","label":"positive"}}},"godzillaId":null,"slugs":{"multichain":"alien-worlds","wax":"alien-worlds","binance-smart-chain":"alien-worlds"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/5314\/alienworlds-dapp-games-wax-logo-50x50_7eb46e879e197fbebc312a031961d539.png","deepLink":"https:\/\/dappradar.com\/deeplink\/5314","mobileFriendly":false,"featured":false,"protocols":["wax","binance-smart-chain"],"activeProtocols":["wax","binance-smart-chain"],"category":"games","tracked":true},{"id":8430,"name":"Farmers - World","slug":"farmers-world","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":0,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_8430_9a6a61dfbdb9a5904fe1253fd86052f1.png","exchangeRate":1,"currencyName":"usd","transactionCount":6838275,"userActivity":111680,"volumeInFiat":0,"totalVolumeInFiat":2300.16,"totalVolumeChangeInFiat":-11.11,"changes":{"dau":{"status":"+1.44%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+4.18%","label":"positive"},"tokenVolume":{"status":"-11.11%","label":"negative"},"totalVolume":{"status":"-11.11%","label":"negative"},"totalBalance":{"status":"-","label":"neutral"}}},"godzillaId":null,"slugs":{"wax":"farmers-world"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/8430\/farmersworld-dapp-games-wax-logo-50x50_81f91937d65e727d9601165d9a61848e.png","deepLink":"https:\/\/dappradar.com\/deeplink\/8430","mobileFriendly":false,"featured":false,"protocols":["wax"],"activeProtocols":["wax"],"category":"games","tracked":true},{"id":4098,"name":"AtomicAssets","slug":"atomicassets","new":false,"statistic":{"balance":398.4151,"balanceInFiat":908.39,"totalBalanceInFiat":908.39,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_4098_5fc5dc3b0234cbfb438d68c7958c74cb.png","exchangeRate":1,"currencyName":"usd","transactionCount":790849,"userActivity":108877,"volumeInFiat":226318.76,"totalVolumeInFiat":226318.76,"totalVolumeChangeInFiat":-28.59,"changes":{"dau":{"status":"+14.95%","label":"positive"},"volume":{"status":"-28.59%","label":"negative"},"tx":{"status":"-53.52%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-28.59%","label":"negative"},"totalBalance":{"status":"+93.93%","label":"positive"}}},"godzillaId":47,"slugs":{"multichain":"atomicassets","wax":"atomicassets","eos":"atomicassets"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4098\/atomicassets-dapp-other-wax-logo-50x50_0b09297a60fe708557fb504c0de8a6c7.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4098","mobileFriendly":false,"featured":false,"protocols":["wax","eos"],"activeProtocols":["wax","eos"],"category":"other","tracked":true},{"id":9495,"name":"Axie - Infinity","slug":"axie-infinity","new":false,"statistic":{"balance":32.371094028017,"balanceInFiat":81169.51000000001,"totalBalanceInFiat":2320591139.55,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_9495_41dd8d5cfd545d4340ec61aa9d6fc072.png","exchangeRate":1,"currencyName":"usd","transactionCount":259669,"userActivity":90876,"volumeInFiat":0,"totalVolumeInFiat":11619801.91,"totalVolumeChangeInFiat":4.59,"changes":{"dau":{"status":"+5.34%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+1.00%","label":"positive"},"tokenVolume":{"status":"+4.59%","label":"positive"},"totalVolume":{"status":"+4.59%","label":"positive"},"totalBalance":{"status":"-2.03%","label":"negative"}}},"godzillaId":null,"slugs":{"multichain":"axie-infinity","ronin":"axie-infinity","ethereum":"axie-infinity"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/266\/axieinfinity-dapp-games-eth-logo-50x50_29c76363b3775610e92c2ac9737572b6.png","deepLink":"https:\/\/dappradar.com\/deeplink\/9495","mobileFriendly":false,"featured":false,"protocols":["ronin","ethereum"],"activeProtocols":["ronin","ethereum"],"category":"games","tracked":true},{"id":3388,"name":"Upland","slug":"upland","new":false,"statistic":{"balance":22514.1054,"balanceInFiat":51332.16,"totalBalanceInFiat":51332.16,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/eos_3388_7d7b564d6231858405bc39967b0d5083.png","exchangeRate":1,"currencyName":"usd","transactionCount":304007,"userActivity":63279,"volumeInFiat":0,"totalVolumeInFiat":0,"totalVolumeChangeInFiat":0,"changes":{"dau":{"status":"+5.37%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"-2.20%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-","label":"neutral"},"totalBalance":{"status":"-4.42%","label":"negative"}}},"godzillaId":1211,"slugs":{"eos":"upland"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3388\/upland-games-eos-logo-50x50_e6b347dd682126c7dceb525b4e414d9a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3388","mobileFriendly":false,"featured":false,"protocols":["eos"],"activeProtocols":["eos"],"category":"games","tracked":true},{"id":13,"name":"OpenSea","slug":"opensea","new":false,"statistic":{"balance":12.682916074666,"balanceInFiat":32221.71,"totalBalanceInFiat":92279.32,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ethereum_13_ce5d74cf5c891702d865935b06049cb7.png","exchangeRate":1,"currencyName":"usd","transactionCount":103737,"userActivity":53953,"volumeInFiat":199956341.32999998,"totalVolumeInFiat":199956343.81,"totalVolumeChangeInFiat":30.92,"changes":{"dau":{"status":"+3.28%","label":"positive"},"volume":{"status":"+30.92%","label":"positive"},"tx":{"status":"+0.76%","label":"positive"},"tokenVolume":{"status":"-85.98%","label":"negative"},"totalVolume":{"status":"+30.92%","label":"positive"},"totalBalance":{"status":"-1.75%","label":"negative"}}},"godzillaId":15,"slugs":{"multichain":"opensea","ethereum":"opensea","polygon":"opensea"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/13\/opensea-dapp-marketplaces-ethereum-logo-50x50_82cc11d79baa6aed6b181907d9e4360a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/13","mobileFriendly":false,"featured":false,"protocols":["ethereum","polygon"],"activeProtocols":["ethereum","polygon"],"category":"marketplaces","tracked":true},{"id":10507,"name":"Katana","slug":"katana","new":false,"statistic":{"balance":99281077.886568,"balanceInFiat":24044823.9,"totalBalanceInFiat":643217935.92,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_10507_7019d066cfc6579ecc7008c476d1b7e3.png","exchangeRate":1,"currencyName":"usd","transactionCount":102052,"userActivity":45918,"volumeInFiat":1342331.29,"totalVolumeInFiat":92685103.3,"totalVolumeChangeInFiat":-24.54,"changes":{"dau":{"status":"+9.02%","label":"positive"},"volume":{"status":"+19.51%","label":"positive"},"tx":{"status":"+2.76%","label":"positive"},"tokenVolume":{"status":"-24.95%","label":"negative"},"totalVolume":{"status":"-24.54%","label":"negative"},"totalBalance":{"status":"-5.64%","label":"negative"}}},"godzillaId":null,"slugs":{"ronin":"katana"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10507\/katana-dapp-defi-hive-logo-50x50_b15ee35de6674acc8020df7a9dec7d43.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10507","mobileFriendly":false,"featured":false,"protocols":["ronin"],"activeProtocols":["ronin"],"category":"defi","tracked":true},{"id":10734,"name":"Magic - Eden","slug":"magic-eden","new":false,"statistic":{"balance":1375.495356155,"balanceInFiat":125046.28,"totalBalanceInFiat":125057.42,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/solana_10734_2266d84bfe002e2300044475ff95816b.png","exchangeRate":1,"currencyName":"usd","transactionCount":253762,"userActivity":40235,"volumeInFiat":18465616.7,"totalVolumeInFiat":18465616.7,"totalVolumeChangeInFiat":2.38,"changes":{"dau":{"status":"+2.12%","label":"positive"},"volume":{"status":"+2.38%","label":"positive"},"tx":{"status":"-2.72%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"+2.38%","label":"positive"},"totalBalance":{"status":"-52.34%","label":"negative"}}},"godzillaId":null,"slugs":{"solana":"magic-eden"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10734\/magiceden-dapp-marketplaces-solana-logo-50x50_46a7bd19acf0de71fa9f4c1d3dc12301.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10734","mobileFriendly":false,"featured":false,"protocols":["solana"],"activeProtocols":["solana"],"category":"marketplaces","tracked":true}],"ad":null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d66570a0fbbedfb-CDG - Cache-Control: - - public, max-age=31536000 - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Mon, 31 Jan 2022 22:22:39 GMT - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Cache-Status: - - MISS - X-Frame-Options: - - SAMEORIGIN - expires: - - '-1' - pragma: - - no-cache - status: - code: 206 - message: Partial Content -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].yaml deleted file mode 100644 index 3d8ae837ffa4..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXRZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbU5oZEdWbmIzSjVQV1Y0WTJoaGJtZGxjeVp6YjNKMFBYUnZkR0ZzVm05c2RXMWxTVzVHYVdGMEptOXlaR1Z5UFdSbGMyTW1iR2x0YVhROU1qWT0= - response: - body: - string: '{"page":1,"resultsPerPage":10,"pageCount":323,"resultCount":8403,"dapps":[{"id":3803,"name":"Splinterlands","slug":"splinterlands","new":false,"statistic":{"balance":415049.781,"balanceInFiat":387563.94,"totalBalanceInFiat":387563.94,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/hive_3803_f4080b58e0396f39f4e6ba94a0fd5884.png","exchangeRate":1,"currencyName":"usd","transactionCount":2443065,"userActivity":305103,"volumeInFiat":7976.610000000001,"totalVolumeInFiat":7976.610000000001,"totalVolumeChangeInFiat":-19.86,"changes":{"dau":{"status":"+4.54%","label":"positive"},"volume":{"status":"-58.81%","label":"negative"},"tx":{"status":"+4.24%","label":"positive"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-19.86%","label":"negative"},"totalBalance":{"status":"-2.26%","label":"negative"}}},"godzillaId":20,"slugs":{"multichain":"splinterlands","hive":"splinterlands","wax":"splinterlands"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3803\/splinterlands-dapp-games-hive-logo-50x50_a226c66bc5a85c250400e213a02de3a0.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3803","mobileFriendly":false,"featured":false,"protocols":["hive","wax"],"activeProtocols":["hive","wax"],"category":"games","tracked":true},{"id":4600,"name":"PancakeSwap","slug":"pancakeswap","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":1787218283.97,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/bsc_4600_0966d2b554616381f9ed607c38e69a29.png","exchangeRate":1,"currencyName":"usd","transactionCount":825950,"userActivity":289333,"volumeInFiat":90647866.04,"totalVolumeInFiat":223688791.05,"totalVolumeChangeInFiat":-13.66,"changes":{"dau":{"status":"-7.74%","label":"negative"},"volume":{"status":"-13.58%","label":"negative"},"tx":{"status":"-2.27%","label":"negative"},"tokenVolume":{"status":"-13.71%","label":"negative"},"totalVolume":{"status":"-13.66%","label":"negative"},"totalBalance":{"status":"+1.06%","label":"positive"}}},"godzillaId":null,"slugs":{"binance-smart-chain":"pancakeswap"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4600\/pancakeswap-dapp-defi-bsc-logo-50x50_20e5d8b6c50c2cead9eb33120e4e1417.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4600","mobileFriendly":false,"featured":false,"protocols":["binance-smart-chain"],"activeProtocols":["binance-smart-chain"],"category":"defi","tracked":true},{"id":5314,"name":"Alien - Worlds","slug":"alien-worlds","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":11928214.27,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_5314_f7d222dc85596eab5a1666bb5d9398f0.png","exchangeRate":1,"currencyName":"usd","transactionCount":9905453,"userActivity":235631,"volumeInFiat":0,"totalVolumeInFiat":759203.57,"totalVolumeChangeInFiat":-51.58,"changes":{"dau":{"status":"-1.40%","label":"negative"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+5.00%","label":"positive"},"tokenVolume":{"status":"-53.63%","label":"negative"},"totalVolume":{"status":"-51.58%","label":"negative"},"totalBalance":{"status":"+0.95%","label":"positive"}}},"godzillaId":null,"slugs":{"multichain":"alien-worlds","wax":"alien-worlds","binance-smart-chain":"alien-worlds"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/5314\/alienworlds-dapp-games-wax-logo-50x50_7eb46e879e197fbebc312a031961d539.png","deepLink":"https:\/\/dappradar.com\/deeplink\/5314","mobileFriendly":false,"featured":false,"protocols":["wax","binance-smart-chain"],"activeProtocols":["wax","binance-smart-chain"],"category":"games","tracked":true},{"id":8430,"name":"Farmers - World","slug":"farmers-world","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":0,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_8430_9a6a61dfbdb9a5904fe1253fd86052f1.png","exchangeRate":1,"currencyName":"usd","transactionCount":6838275,"userActivity":111680,"volumeInFiat":0,"totalVolumeInFiat":2300.16,"totalVolumeChangeInFiat":-11.11,"changes":{"dau":{"status":"+1.44%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+4.18%","label":"positive"},"tokenVolume":{"status":"-11.11%","label":"negative"},"totalVolume":{"status":"-11.11%","label":"negative"},"totalBalance":{"status":"-","label":"neutral"}}},"godzillaId":null,"slugs":{"wax":"farmers-world"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/8430\/farmersworld-dapp-games-wax-logo-50x50_81f91937d65e727d9601165d9a61848e.png","deepLink":"https:\/\/dappradar.com\/deeplink\/8430","mobileFriendly":false,"featured":false,"protocols":["wax"],"activeProtocols":["wax"],"category":"games","tracked":true},{"id":4098,"name":"AtomicAssets","slug":"atomicassets","new":false,"statistic":{"balance":398.4151,"balanceInFiat":908.39,"totalBalanceInFiat":908.39,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_4098_5fc5dc3b0234cbfb438d68c7958c74cb.png","exchangeRate":1,"currencyName":"usd","transactionCount":790849,"userActivity":108877,"volumeInFiat":226318.76,"totalVolumeInFiat":226318.76,"totalVolumeChangeInFiat":-28.59,"changes":{"dau":{"status":"+14.95%","label":"positive"},"volume":{"status":"-28.59%","label":"negative"},"tx":{"status":"-53.52%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-28.59%","label":"negative"},"totalBalance":{"status":"+93.93%","label":"positive"}}},"godzillaId":47,"slugs":{"multichain":"atomicassets","wax":"atomicassets","eos":"atomicassets"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4098\/atomicassets-dapp-other-wax-logo-50x50_0b09297a60fe708557fb504c0de8a6c7.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4098","mobileFriendly":false,"featured":false,"protocols":["wax","eos"],"activeProtocols":["wax","eos"],"category":"other","tracked":true},{"id":9495,"name":"Axie - Infinity","slug":"axie-infinity","new":false,"statistic":{"balance":32.371094028017,"balanceInFiat":81169.51000000001,"totalBalanceInFiat":2320591139.55,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_9495_41dd8d5cfd545d4340ec61aa9d6fc072.png","exchangeRate":1,"currencyName":"usd","transactionCount":259669,"userActivity":90876,"volumeInFiat":0,"totalVolumeInFiat":11619801.91,"totalVolumeChangeInFiat":4.59,"changes":{"dau":{"status":"+5.34%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+1.00%","label":"positive"},"tokenVolume":{"status":"+4.59%","label":"positive"},"totalVolume":{"status":"+4.59%","label":"positive"},"totalBalance":{"status":"-2.03%","label":"negative"}}},"godzillaId":null,"slugs":{"multichain":"axie-infinity","ronin":"axie-infinity","ethereum":"axie-infinity"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/266\/axieinfinity-dapp-games-eth-logo-50x50_29c76363b3775610e92c2ac9737572b6.png","deepLink":"https:\/\/dappradar.com\/deeplink\/9495","mobileFriendly":false,"featured":false,"protocols":["ronin","ethereum"],"activeProtocols":["ronin","ethereum"],"category":"games","tracked":true},{"id":3388,"name":"Upland","slug":"upland","new":false,"statistic":{"balance":22514.1054,"balanceInFiat":51332.16,"totalBalanceInFiat":51332.16,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/eos_3388_7d7b564d6231858405bc39967b0d5083.png","exchangeRate":1,"currencyName":"usd","transactionCount":304007,"userActivity":63279,"volumeInFiat":0,"totalVolumeInFiat":0,"totalVolumeChangeInFiat":0,"changes":{"dau":{"status":"+5.37%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"-2.20%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-","label":"neutral"},"totalBalance":{"status":"-4.42%","label":"negative"}}},"godzillaId":1211,"slugs":{"eos":"upland"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3388\/upland-games-eos-logo-50x50_e6b347dd682126c7dceb525b4e414d9a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3388","mobileFriendly":false,"featured":false,"protocols":["eos"],"activeProtocols":["eos"],"category":"games","tracked":true},{"id":13,"name":"OpenSea","slug":"opensea","new":false,"statistic":{"balance":12.682916074666,"balanceInFiat":32221.71,"totalBalanceInFiat":92279.32,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ethereum_13_ce5d74cf5c891702d865935b06049cb7.png","exchangeRate":1,"currencyName":"usd","transactionCount":103737,"userActivity":53953,"volumeInFiat":199956341.32999998,"totalVolumeInFiat":199956343.81,"totalVolumeChangeInFiat":30.92,"changes":{"dau":{"status":"+3.28%","label":"positive"},"volume":{"status":"+30.92%","label":"positive"},"tx":{"status":"+0.76%","label":"positive"},"tokenVolume":{"status":"-85.98%","label":"negative"},"totalVolume":{"status":"+30.92%","label":"positive"},"totalBalance":{"status":"-1.75%","label":"negative"}}},"godzillaId":15,"slugs":{"multichain":"opensea","ethereum":"opensea","polygon":"opensea"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/13\/opensea-dapp-marketplaces-ethereum-logo-50x50_82cc11d79baa6aed6b181907d9e4360a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/13","mobileFriendly":false,"featured":false,"protocols":["ethereum","polygon"],"activeProtocols":["ethereum","polygon"],"category":"marketplaces","tracked":true},{"id":10507,"name":"Katana","slug":"katana","new":false,"statistic":{"balance":99281077.886568,"balanceInFiat":24044823.9,"totalBalanceInFiat":643217935.92,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_10507_7019d066cfc6579ecc7008c476d1b7e3.png","exchangeRate":1,"currencyName":"usd","transactionCount":102052,"userActivity":45918,"volumeInFiat":1342331.29,"totalVolumeInFiat":92685103.3,"totalVolumeChangeInFiat":-24.54,"changes":{"dau":{"status":"+9.02%","label":"positive"},"volume":{"status":"+19.51%","label":"positive"},"tx":{"status":"+2.76%","label":"positive"},"tokenVolume":{"status":"-24.95%","label":"negative"},"totalVolume":{"status":"-24.54%","label":"negative"},"totalBalance":{"status":"-5.64%","label":"negative"}}},"godzillaId":null,"slugs":{"ronin":"katana"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10507\/katana-dapp-defi-hive-logo-50x50_b15ee35de6674acc8020df7a9dec7d43.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10507","mobileFriendly":false,"featured":false,"protocols":["ronin"],"activeProtocols":["ronin"],"category":"defi","tracked":true},{"id":10734,"name":"Magic - Eden","slug":"magic-eden","new":false,"statistic":{"balance":1375.495356155,"balanceInFiat":125046.28,"totalBalanceInFiat":125057.42,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/solana_10734_2266d84bfe002e2300044475ff95816b.png","exchangeRate":1,"currencyName":"usd","transactionCount":253762,"userActivity":40235,"volumeInFiat":18465616.7,"totalVolumeInFiat":18465616.7,"totalVolumeChangeInFiat":2.38,"changes":{"dau":{"status":"+2.12%","label":"positive"},"volume":{"status":"+2.38%","label":"positive"},"tx":{"status":"-2.72%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"+2.38%","label":"positive"},"totalBalance":{"status":"-52.34%","label":"negative"}}},"godzillaId":null,"slugs":{"solana":"magic-eden"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10734\/magiceden-dapp-marketplaces-solana-logo-50x50_46a7bd19acf0de71fa9f4c1d3dc12301.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10734","mobileFriendly":false,"featured":false,"protocols":["solana"],"activeProtocols":["solana"],"category":"marketplaces","tracked":true}],"ad":null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d665708785bcd7b-CDG - Cache-Control: - - public, max-age=31536000 - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Mon, 31 Jan 2022 22:22:39 GMT - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Cache-Status: - - MISS - X-Frame-Options: - - SAMEORIGIN - expires: - - '-1' - pragma: - - no-cache - status: - code: 206 - message: Partial Content -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_games-kwargs1].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_games-kwargs1].yaml deleted file mode 100644 index cfa837d24f2f..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_games-kwargs1].yaml +++ /dev/null @@ -1,50 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://dappradar.com/v2/api/dapps?params=WkdGd2NISmhaR0Z5Y0dGblpUMHhKbk5uY205MWNEMXRZWGdtWTNWeWNtVnVZM2s5VlZORUptWmxZWFIxY21Wa1BURW1jbUZ1WjJVOVpHRjVKbU5oZEdWbmIzSjVQV2RoYldWekpuTnZjblE5ZFhObGNpWnZjbVJsY2oxa1pYTmpKbXhwYldsMFBUSTI= - response: - body: - string: '{"page":1,"resultsPerPage":10,"pageCount":323,"resultCount":8403,"dapps":[{"id":3803,"name":"Splinterlands","slug":"splinterlands","new":false,"statistic":{"balance":415049.781,"balanceInFiat":387563.94,"totalBalanceInFiat":387563.94,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/hive_3803_f4080b58e0396f39f4e6ba94a0fd5884.png","exchangeRate":1,"currencyName":"usd","transactionCount":2443065,"userActivity":305103,"volumeInFiat":7976.610000000001,"totalVolumeInFiat":7976.610000000001,"totalVolumeChangeInFiat":-19.86,"changes":{"dau":{"status":"+4.54%","label":"positive"},"volume":{"status":"-58.81%","label":"negative"},"tx":{"status":"+4.24%","label":"positive"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-19.86%","label":"negative"},"totalBalance":{"status":"-2.26%","label":"negative"}}},"godzillaId":20,"slugs":{"multichain":"splinterlands","hive":"splinterlands","wax":"splinterlands"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3803\/splinterlands-dapp-games-hive-logo-50x50_a226c66bc5a85c250400e213a02de3a0.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3803","mobileFriendly":false,"featured":false,"protocols":["hive","wax"],"activeProtocols":["hive","wax"],"category":"games","tracked":true},{"id":4600,"name":"PancakeSwap","slug":"pancakeswap","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":1787218283.97,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/bsc_4600_0966d2b554616381f9ed607c38e69a29.png","exchangeRate":1,"currencyName":"usd","transactionCount":825950,"userActivity":289333,"volumeInFiat":90647866.04,"totalVolumeInFiat":223688791.05,"totalVolumeChangeInFiat":-13.66,"changes":{"dau":{"status":"-7.74%","label":"negative"},"volume":{"status":"-13.58%","label":"negative"},"tx":{"status":"-2.27%","label":"negative"},"tokenVolume":{"status":"-13.71%","label":"negative"},"totalVolume":{"status":"-13.66%","label":"negative"},"totalBalance":{"status":"+1.06%","label":"positive"}}},"godzillaId":null,"slugs":{"binance-smart-chain":"pancakeswap"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4600\/pancakeswap-dapp-defi-bsc-logo-50x50_20e5d8b6c50c2cead9eb33120e4e1417.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4600","mobileFriendly":false,"featured":false,"protocols":["binance-smart-chain"],"activeProtocols":["binance-smart-chain"],"category":"defi","tracked":true},{"id":5314,"name":"Alien - Worlds","slug":"alien-worlds","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":11928214.27,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_5314_f7d222dc85596eab5a1666bb5d9398f0.png","exchangeRate":1,"currencyName":"usd","transactionCount":9905453,"userActivity":235631,"volumeInFiat":0,"totalVolumeInFiat":759203.57,"totalVolumeChangeInFiat":-51.58,"changes":{"dau":{"status":"-1.40%","label":"negative"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+5.00%","label":"positive"},"tokenVolume":{"status":"-53.63%","label":"negative"},"totalVolume":{"status":"-51.58%","label":"negative"},"totalBalance":{"status":"+0.95%","label":"positive"}}},"godzillaId":null,"slugs":{"multichain":"alien-worlds","wax":"alien-worlds","binance-smart-chain":"alien-worlds"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/5314\/alienworlds-dapp-games-wax-logo-50x50_7eb46e879e197fbebc312a031961d539.png","deepLink":"https:\/\/dappradar.com\/deeplink\/5314","mobileFriendly":false,"featured":false,"protocols":["wax","binance-smart-chain"],"activeProtocols":["wax","binance-smart-chain"],"category":"games","tracked":true},{"id":8430,"name":"Farmers - World","slug":"farmers-world","new":false,"statistic":{"balance":0,"balanceInFiat":0,"totalBalanceInFiat":0,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_8430_9a6a61dfbdb9a5904fe1253fd86052f1.png","exchangeRate":1,"currencyName":"usd","transactionCount":6838275,"userActivity":111680,"volumeInFiat":0,"totalVolumeInFiat":2300.16,"totalVolumeChangeInFiat":-11.11,"changes":{"dau":{"status":"+1.44%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+4.18%","label":"positive"},"tokenVolume":{"status":"-11.11%","label":"negative"},"totalVolume":{"status":"-11.11%","label":"negative"},"totalBalance":{"status":"-","label":"neutral"}}},"godzillaId":null,"slugs":{"wax":"farmers-world"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/8430\/farmersworld-dapp-games-wax-logo-50x50_81f91937d65e727d9601165d9a61848e.png","deepLink":"https:\/\/dappradar.com\/deeplink\/8430","mobileFriendly":false,"featured":false,"protocols":["wax"],"activeProtocols":["wax"],"category":"games","tracked":true},{"id":4098,"name":"AtomicAssets","slug":"atomicassets","new":false,"statistic":{"balance":398.4151,"balanceInFiat":908.39,"totalBalanceInFiat":908.39,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/wax_4098_5fc5dc3b0234cbfb438d68c7958c74cb.png","exchangeRate":1,"currencyName":"usd","transactionCount":790849,"userActivity":108877,"volumeInFiat":226318.76,"totalVolumeInFiat":226318.76,"totalVolumeChangeInFiat":-28.59,"changes":{"dau":{"status":"+14.95%","label":"positive"},"volume":{"status":"-28.59%","label":"negative"},"tx":{"status":"-53.52%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-28.59%","label":"negative"},"totalBalance":{"status":"+93.93%","label":"positive"}}},"godzillaId":47,"slugs":{"multichain":"atomicassets","wax":"atomicassets","eos":"atomicassets"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/4098\/atomicassets-dapp-other-wax-logo-50x50_0b09297a60fe708557fb504c0de8a6c7.png","deepLink":"https:\/\/dappradar.com\/deeplink\/4098","mobileFriendly":false,"featured":false,"protocols":["wax","eos"],"activeProtocols":["wax","eos"],"category":"other","tracked":true},{"id":9495,"name":"Axie - Infinity","slug":"axie-infinity","new":false,"statistic":{"balance":32.371094028017,"balanceInFiat":81169.51000000001,"totalBalanceInFiat":2320591139.55,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_9495_41dd8d5cfd545d4340ec61aa9d6fc072.png","exchangeRate":1,"currencyName":"usd","transactionCount":259669,"userActivity":90876,"volumeInFiat":0,"totalVolumeInFiat":11619801.91,"totalVolumeChangeInFiat":4.59,"changes":{"dau":{"status":"+5.34%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"+1.00%","label":"positive"},"tokenVolume":{"status":"+4.59%","label":"positive"},"totalVolume":{"status":"+4.59%","label":"positive"},"totalBalance":{"status":"-2.03%","label":"negative"}}},"godzillaId":null,"slugs":{"multichain":"axie-infinity","ronin":"axie-infinity","ethereum":"axie-infinity"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/266\/axieinfinity-dapp-games-eth-logo-50x50_29c76363b3775610e92c2ac9737572b6.png","deepLink":"https:\/\/dappradar.com\/deeplink\/9495","mobileFriendly":false,"featured":false,"protocols":["ronin","ethereum"],"activeProtocols":["ronin","ethereum"],"category":"games","tracked":true},{"id":3388,"name":"Upland","slug":"upland","new":false,"statistic":{"balance":22514.1054,"balanceInFiat":51332.16,"totalBalanceInFiat":51332.16,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/eos_3388_7d7b564d6231858405bc39967b0d5083.png","exchangeRate":1,"currencyName":"usd","transactionCount":304007,"userActivity":63279,"volumeInFiat":0,"totalVolumeInFiat":0,"totalVolumeChangeInFiat":0,"changes":{"dau":{"status":"+5.37%","label":"positive"},"volume":{"status":"-","label":"neutral"},"tx":{"status":"-2.20%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"-","label":"neutral"},"totalBalance":{"status":"-4.42%","label":"negative"}}},"godzillaId":1211,"slugs":{"eos":"upland"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/3388\/upland-games-eos-logo-50x50_e6b347dd682126c7dceb525b4e414d9a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/3388","mobileFriendly":false,"featured":false,"protocols":["eos"],"activeProtocols":["eos"],"category":"games","tracked":true},{"id":13,"name":"OpenSea","slug":"opensea","new":false,"statistic":{"balance":12.682916074666,"balanceInFiat":32221.71,"totalBalanceInFiat":92279.32,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ethereum_13_ce5d74cf5c891702d865935b06049cb7.png","exchangeRate":1,"currencyName":"usd","transactionCount":103737,"userActivity":53953,"volumeInFiat":199956341.32999998,"totalVolumeInFiat":199956343.81,"totalVolumeChangeInFiat":30.92,"changes":{"dau":{"status":"+3.28%","label":"positive"},"volume":{"status":"+30.92%","label":"positive"},"tx":{"status":"+0.76%","label":"positive"},"tokenVolume":{"status":"-85.98%","label":"negative"},"totalVolume":{"status":"+30.92%","label":"positive"},"totalBalance":{"status":"-1.75%","label":"negative"}}},"godzillaId":15,"slugs":{"multichain":"opensea","ethereum":"opensea","polygon":"opensea"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/13\/opensea-dapp-marketplaces-ethereum-logo-50x50_82cc11d79baa6aed6b181907d9e4360a.png","deepLink":"https:\/\/dappradar.com\/deeplink\/13","mobileFriendly":false,"featured":false,"protocols":["ethereum","polygon"],"activeProtocols":["ethereum","polygon"],"category":"marketplaces","tracked":true},{"id":10507,"name":"Katana","slug":"katana","new":false,"statistic":{"balance":99281077.886568,"balanceInFiat":24044823.9,"totalBalanceInFiat":643217935.92,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/ronin_10507_7019d066cfc6579ecc7008c476d1b7e3.png","exchangeRate":1,"currencyName":"usd","transactionCount":102052,"userActivity":45918,"volumeInFiat":1342331.29,"totalVolumeInFiat":92685103.3,"totalVolumeChangeInFiat":-24.54,"changes":{"dau":{"status":"+9.02%","label":"positive"},"volume":{"status":"+19.51%","label":"positive"},"tx":{"status":"+2.76%","label":"positive"},"tokenVolume":{"status":"-24.95%","label":"negative"},"totalVolume":{"status":"-24.54%","label":"negative"},"totalBalance":{"status":"-5.64%","label":"negative"}}},"godzillaId":null,"slugs":{"ronin":"katana"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10507\/katana-dapp-defi-hive-logo-50x50_b15ee35de6674acc8020df7a9dec7d43.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10507","mobileFriendly":false,"featured":false,"protocols":["ronin"],"activeProtocols":["ronin"],"category":"defi","tracked":true},{"id":10734,"name":"Magic - Eden","slug":"magic-eden","new":false,"statistic":{"balance":1375.495356155,"balanceInFiat":125046.28,"totalBalanceInFiat":125057.42,"graph":"https:\/\/s3.amazonaws.com\/dapp-activity.dappradar.com\/solana_10734_2266d84bfe002e2300044475ff95816b.png","exchangeRate":1,"currencyName":"usd","transactionCount":253762,"userActivity":40235,"volumeInFiat":18465616.7,"totalVolumeInFiat":18465616.7,"totalVolumeChangeInFiat":2.38,"changes":{"dau":{"status":"+2.12%","label":"positive"},"volume":{"status":"+2.38%","label":"positive"},"tx":{"status":"-2.72%","label":"negative"},"tokenVolume":{"status":"-","label":"neutral"},"totalVolume":{"status":"+2.38%","label":"positive"},"totalBalance":{"status":"-52.34%","label":"negative"}}},"godzillaId":null,"slugs":{"solana":"magic-eden"},"logo":"https:\/\/dashboard-assets.dappradar.com\/document\/10734\/magiceden-dapp-marketplaces-solana-logo-50x50_46a7bd19acf0de71fa9f4c1d3dc12301.png","deepLink":"https:\/\/dappradar.com\/deeplink\/10734","mobileFriendly":false,"featured":false,"protocols":["solana"],"activeProtocols":["solana"],"category":"marketplaces","tracked":true}],"ad":null}' - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d6657070dba32b0-CDG - Cache-Control: - - public, max-age=31536000 - Connection: - - keep-alive - Content-Type: - - application/json - Date: - - Mon, 31 Jan 2022 22:22:39 GMT - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Cache-Status: - - MISS - X-Frame-Options: - - SAMEORIGIN - expires: - - '-1' - pragma: - - no-cache - status: - code: 206 - message: Partial Content -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].yaml b/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].yaml deleted file mode 100644 index 0381e71edfe5..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/cassettes/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].yaml +++ /dev/null @@ -1,98 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - method: GET - uri: https://nft-sales-service.dappradar.com/v2/collection/day?limit=20&page=1¤cy=USD&sort=marketCapInFiat&order=desc - response: - body: - string: !!binary | - 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 - headers: - Access-Control-Allow-Origin: - - '*' - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 6d55fa407c6f4049-CDG - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json; charset=utf-8 - Date: - - Sat, 29 Jan 2022 22:43:08 GMT - ETag: - - W/"2fb9-tDa+m51Ly42+zME3oIHTXn6QM9s" - Expect-CT: - - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Powered-By: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].csv b/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].csv deleted file mode 100644 index c83828f1edb8..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dapps-kwargs3].csv +++ /dev/null @@ -1,11 +0,0 @@ -,Name,Category,Protocols,Daily Users,Daily Volume [$] -0,Splinterlands,games,"hive,wax",305103,7976.610000000001 -1,PancakeSwap,defi,binance-smart-chain,289333,223688791.05 -2,Alien Worlds,games,"wax,binance-smart-chain",235631,759203.57 -3,Farmers World,games,wax,111680,2300.16 -4,AtomicAssets,other,"wax,eos",108877,226318.76 -5,Axie Infinity,games,"ronin,ethereum",90876,11619801.91 -6,Upland,games,eos,63279,0.0 -7,OpenSea,marketplaces,"ethereum,polygon",53953,199956343.81 -8,Katana,defi,ronin,45918,92685103.3 -9,Magic Eden,marketplaces,solana,40235,18465616.7 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].csv b/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].csv deleted file mode 100644 index e16c76dff888..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_dexes-kwargs1].csv +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_games-kwargs2].csv b/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_games-kwargs2].csv deleted file mode 100644 index 815c20aa1053..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_games-kwargs2].csv +++ /dev/null @@ -1,6 +0,0 @@ -,Name,Daily Users,Daily Volume [$] -0,Splinterlands,305103,7976.610000000001 -2,Alien Worlds,235631,759203.57 -3,Farmers World,111680,2300.16 -5,Axie Infinity,90876,11619801.91 -6,Upland,63279,0.0 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].csv b/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].csv deleted file mode 100644 index e16c76dff888..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/csv/test_dappradar_model/test_call_func[get_top_nfts-kwargs0].csv +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].yaml new file mode 100644 index 000000000000..6671cf47e3e2 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].yaml @@ -0,0 +1,68 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/categories + response: + body: + string: '{"success":true,"categories":["games","defi","gambling","exchanges","collectibles","marketplaces","social","other","high-risk"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - keep-alive + Content-Length: + - '128' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:48 GMT + Etag: + - W/"80-l4BgmpYzZEMJNeksc1dNIvBvlUk" + Via: + - 1.1 4ca98b546b8d71c72caf6a3d8f75dc24.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfsGEweliAFioQ= + X-Amz-Cf-Id: + - iJ4uZ1DW4l89xGvZSagfbQ0KwCqUe04-sr9o99e9TEIz5V64VZdBHQ== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '128' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:48 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - c4401f6c-c23e-4786-97c3-f67d7f46b9e2 + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682602368294166500-YXdzLWV1LXdlc3QtMQ==-41b898e33f9e40b29e56a9514040b5aa9f08c15d461f4892b90f48a6f175d990 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].yaml new file mode 100644 index 000000000000..e0e060bee273 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/chains + response: + body: + string: '{"success":true,"chains":["algorand","arbitrum","astar","aurora","avalanche","binance-smart-chain","cardano","celo","cronos","defikingdoms","dep","eos","ethereum","everscale","fantom","flow","harmony","hedera","hive","immutablex","iotex","kardiachain","klaytn","mooi","moonbeam","moonriver","near","oasis","ontology","optimism","other","platon","polygon","rangers","ronin","shiden","solana","stacks","steem","sxnetwork","telos","telosevm","tezos","theta","thundercore","tron","vechain","vulcanforged","wax","zilliqa"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=165 + Connection: + - keep-alive + Content-Length: + - '518' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:48 GMT + Etag: + - W/"206-PLMOElwlzD+0EthZgK2V4/XtiXY" + Via: + - 1.1 ba761cfda8bfa6cbda2b6c433d6201f6.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfsDFm6liAFc0g= + X-Amz-Cf-Id: + - _uCzpbs9eEPFBQXp7CsoS1WFrjVz8Q-qJyjk_2gpJYAt-v9ldtWL7A== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '518' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:48 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - c5103300-e5a9-4555-bb25-844e8bf54a1c + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682602367968336391-YXdzLWV1LXdlc3QtMQ==-a14a645e05cb4b8db121520499978d3185743fb32833481693e32fca7c095209 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapps-kwargs2].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapps-kwargs2].yaml new file mode 100644 index 000000000000..9587ca91261d --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_dapps-kwargs2].yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/dapps?page=1 + response: + body: + string: !!binary | + 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 + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:47 GMT + Etag: + - W/"3859-Anik6B5zYeZ4H9IDXJoO26Ic3Fc" + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + Via: + - 1.1 4ca98b546b8d71c72caf6a3d8f75dc24.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfr-HNMFiAFmUw= + X-Amz-Cf-Id: + - r-2GQF-B69oMPpsEDsA43u8VodXqEAUMX_3AcsCkSPO0Fz4bHo7zhw== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '14425' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:47 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - bbb20019-5f60-4a45-8631-e82ee4772845 + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682602367448566684-YXdzLWV1LXdlc3QtMQ==-f93ff265d65f4af381bb32fa2219665555c21eb96da74fec94f19f2fab984392 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].yaml new file mode 100644 index 000000000000..e73c2b4ef79a --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/defi/chains + response: + body: + string: '{"success":true,"chains":["aurora","avalanche","binance-smart-chain","celo","cronos","ethereum","fantom","hedera","moonbeam","moonriver","near","optimism","polygon","ronin","solana","stacks","tezos"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=175 + Connection: + - keep-alive + Content-Length: + - '200' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:49 GMT + Etag: + - W/"c8-NfzqctiQnk5HSyAtETf9e/pkF+A" + Via: + - 1.1 07ba06e632a891feeba3436a80d00ee4.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfsOGH4liAFQrQ= + X-Amz-Cf-Id: + - T3N-43gGJe2FH4Z0UKH5-y9DA4qr87yLL9SXTfJ0ax0WDPs80Y_vqQ== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '200' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:49 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - 743e062f-107c-44fb-b290-66d817c5ac36 + X-Amzn-Trace-Id: + - Root=1-644a7981-7960d3b4a1812628870030ed + X-Blobr-Request-Id: + - 1682602369068086514-YXdzLWV1LXdlc3QtMQ==-34e0475404514805ab9db134dc0305f85d2f425f437b420fa6791256e87f11ca + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].yaml new file mode 100644 index 000000000000..7ea28b6436c9 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/nfts/marketplaces/chains + response: + body: + string: '{"success":true,"chains":["algorand","aurora","avalanche","binance-smart-chain","celo","ethereum","flow","hedera","immutablex","loopring","moonbeam","moonriver","near","polygon","ronin","solana","stacks","tezos","theta","tron","waves","wax","zilliqa"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=171 + Connection: + - keep-alive + Content-Length: + - '252' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:47 GMT + Etag: + - W/"fc-Nhjxoe6YsA2gDFImWUnsPfbWOT8" + Via: + - 1.1 881b12332738e10f6e80298fbdcd7e8e.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfr6FyDliAFd3g= + X-Amz-Cf-Id: + - OiDAnzQ9B5U_CQV8O_mxKURk-rrxQlUwpRtM0rOo9NhMqlDq9kCAyw== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '252' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:47 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - ae044ac7-eef3-40f7-b3ac-582020ff7039 + X-Amzn-Trace-Id: + - Root=1-644a797f-a2f465a1f9c1235b39f21a12 + X-Blobr-Request-Id: + - 1682602367076997510-YXdzLWV1LXdlc3QtMQ==-bc865967fcdf444fafad4c02f5b59ac7e1f5ec8336604111a493d8ca305442d1 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].yaml new file mode 100644 index 000000000000..38e7fd993756 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].yaml @@ -0,0 +1,92 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/nfts/marketplaces?resultsPerPage=10 + response: + body: + string: !!binary | + H4sIAAAAAAAAA7yXWW/jNhDHv0qgZ5sihxwefsumRQ+gbYDsQ4uiWNASZXtXlgRJziZY5LvvyDlM + uSkf2mYDx7CO4Yi/+c+hL9lwKIowDNlq7A9hkfW+2YRslYHaZotsaPuRDm7b+rAPdNz2ZejpRBmG + gg6Lrd812ao51DVZhuFQj7TQn1+yxu+nRd7Vh/75tulCFsZt6MNhn/21yOp209I923HshlWeN9W4 + 3IfRD6G/3RWBlb7rel/6nhXtPvfdLt+HcufzwddhyH1zP1nke99/CmNXe9pDviZ3rGs25HKy/qnM + VsC1wkXmbzfXPa2arYQWhqEAAANCSift6ep16IvQjH4TrraPGJaOGTJ/2j8Zc6tQCYbWKO6ctc/X + XjEVnFm5yEbaROhp9wq1ejl85X7OpHlYvLD7rQvNTfAzfL5f7yhM+2x6Zl/7pthOUVnvGvoZlgPR + GJePQVmcWC+yrq3vN21zDChZ+bfB39ITD8GfRUDIGL8xzDkUBoXjznCpk/QFMBvh18KiAsccl1Kj + VCJF3zKuI/pCIbcJ/EDRQh3/RbH4Hf6Ab6jjO7gH9rELc4yoZyQ1KsfQgEZAcFy4JEnUDCESMudA + UmZaoJXaqQRICUxADNKlVAyKyZjcVX/fje31ofk0fEOAxdFrN3k9VyPMigGXVhumTJKdQibsiR1w + Y6RiSWhasqnsnHI/lfhSMikjZj9f/3BxM7Z9mBErfF/6pn0FWOmH7bqly0s/DGEczoiVbUEP2Yy5 + sMpB/rHbDNPiy+muZYxt+eRiOa2/FFrf0f+HwB3KqnLAFWBYY6i80VAVWLpybWV5DnhyEjN2lIhg + HZVbY+Eonn9GTSVTRSIFKSktpeModCrVFVNxoRXSmBRv8iIg4v3ru8uL9213cbNtxxnyqm4/v41A + m7UnfQ7k8AwfIopZvWQowWiuKNEpaZ3GFD/NQJz4KSqxiRIJyFRcIcHZFDbHlIigXd7twsUvpz29 + nt00FbQNdaM3gejpEc7wOeXwDJ9WJFdjuaG2w0VSfdTXZYSPWjw1BS7RKqUh1WwmkcYkZZLkUlOr + iVC+3xKH7/q2mzEcp7P/Jdu1ECY/rlLS2q+k+/HaPNkNWo8IAtfOgxWWV0Wh6NvSapXmf+vtk4+Y + tyRiQO0djJKSQ7q7g2Qu5o1cGhq3nBAURZmSLjV3O2vuwiV40xQBcU+6HNv9rvjxsJ7x/uzv3kim + R3ePp8740SZncuXUVajk0axihXGKdJcEKI8jzjM/MjSahIjCOqON4yZVM48t7QWgdkakujqzccH8 + vg6TxOaj6b+ZR/8n3keL0o8+f/aR87ugfEHtRqoiVCSt4EtwCirv/JqLUNiq4EUlrMhL6mj04vJB + K/qcBciidHGAkMYbS+ER0hlDX5CKj5oKShwgoSWNEkaTxC0omdA3jRyam9kEoWWypyHj+EA8O39c + 4PHHVXugMFFbfX47ezoxdeGn1zVa6/rRhD98BQAA//8DAAjczkYNDgAA + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - no-cache + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:46 GMT + Etag: + - W/"e0d-612H85k+TIxGeMwKHPKi7bl2ebw" + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + Via: + - 1.1 b0311c7e530c126dd286898583b59e4c.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfr1Gz5FiAFX5w= + X-Amz-Cf-Id: + - rTNpPVFDje8cq3q1uXYD9H49H_b2CFhqp6LucpGZfFs9McrLarXRVQ== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '3597' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:46 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - a3d04c3c-d54a-4fd0-b797-0df1ac6350ae + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682602366559162816-YXdzLWV1LXdlc3QtMQ==-a07133d696ac4abbb3098ae685029a1d7f7150fe7d8646928aaf230a57ba1a0f + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_token_chains-kwargs5].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_token_chains-kwargs5].yaml new file mode 100644 index 000000000000..2a7d2f106a5a --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_model/test_call_func[get_token_chains-kwargs5].yaml @@ -0,0 +1,68 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/tokens/chains + response: + body: + string: '{"success":true,"chains":["algorand","arbitrum","astar","aurora","avalanche","binancechain","bitcoin","bitcoincash","bora","binance-smart-chain","cardano","celo","cosmos","cronos","defikingdoms","dep","elysium","eos","ethereum","everscale","evmos","fantom","flow","fuse","fusion","harmony","heco","hedera","hive","immutablex","iost","iotex","kardiachain","klaytn","kusama","litecoin","loom","polygon","mooi","moonbeam","moonriver","near","neo","ninechronicles","notblockchain","oasis","oasyschainverse","oasyshomeverse","oasysmainnet","oasysmchverse","oasyssaakuruverse","oasystcgverse","oec","ontology","optimism","platon","polkadot","rangers","ripple","ronin","rsk","shiden","skale","skalecalypso","skaleeuropa","skaleomnus","skalerazor","solana","stacks","stargaze","steem","sxnetwork","telos","telosevm","tezos","theta","thundercore","tron","vechain","vulcanforged","waves","wax","zcash","zilliqa"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - no-cache + Connection: + - keep-alive + Content-Length: + - '903' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:32:48 GMT + Etag: + - W/"387-N4MidH2QEjnbzNiLplkhnV9FxGs" + Via: + - 1.1 19cd9c9f4eb51e9e5c75add1d4b6f304.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECfsKFCeFiAFWZA= + X-Amz-Cf-Id: + - MYSqTav0oYOQbg7jFUDJV3U6okQslXt0kjJJa8ZyT3iVbCai11PTpQ== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '903' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:32:48 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - d6c1a1fa-4f7b-4edb-b5ad-e682e0caf120 + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682602368698177666-YXdzLWV1LXdlc3QtMQ==-20336dad9c1d4a5eab7c4df4f6be8099ec00f8fb65c74e86a36ae6580aeccabf + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].yaml new file mode 100644 index 000000000000..1d68db9e44c8 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/categories + response: + body: + string: '{"success":true,"categories":["games","defi","gambling","exchanges","collectibles","marketplaces","social","other","high-risk"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=70 + Connection: + - keep-alive + Content-Length: + - '128' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:58 GMT + Etag: + - W/"80-l4BgmpYzZEMJNeksc1dNIvBvlUk" + Via: + - 1.1 a64e3ccdb085056758f4ef32e887b5dc.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZYGjNFiAFu1A= + X-Amz-Cf-Id: + - o6BkCCxuCOMAbK5xHiqJEwQCo41kKKi-83PwKwmoEMoXo8lHeTj9fw== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '128' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:58 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - 69da0c99-cb0d-4758-b512-b3349e44ae48 + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682601838854665941-YXdzLWV1LXdlc3QtMQ==-6e0e1d1bbd8040099aba866034f8e9c7153c6ff82a3444d58f337e00204fe555 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].yaml new file mode 100644 index 000000000000..5e1da3b4bf11 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/dapps/chains + response: + body: + string: '{"success":true,"chains":["algorand","arbitrum","astar","aurora","avalanche","binance-smart-chain","cardano","celo","cronos","defikingdoms","dep","eos","ethereum","everscale","fantom","flow","harmony","hedera","hive","immutablex","iotex","kardiachain","klaytn","mooi","moonbeam","moonriver","near","oasis","ontology","optimism","other","platon","polygon","rangers","ronin","shiden","solana","stacks","steem","sxnetwork","telos","telosevm","tezos","theta","thundercore","tron","vechain","vulcanforged","wax","zilliqa"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=286 + Connection: + - keep-alive + Content-Length: + - '518' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:59 GMT + Etag: + - W/"206-PLMOElwlzD+0EthZgK2V4/XtiXY" + Via: + - 1.1 de5338eac881cf5d87f2d811c3b7417c.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZaE6EliAFUpA= + X-Amz-Cf-Id: + - -apTlekrhwtrHYr-YVKF-IMHa1U3LNwDLgZUbOLgLtSUzP0DbOJH6g== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '518' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:59 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - 63a21847-95ce-43ea-b209-f7cdaaf4f5fd + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682601839119585884-YXdzLWV1LXdlc3QtMQ==-637ff1d1fd1e4b9b8c93bdbc39233bdb79ec117329804897bbee3bb0e74c19ad + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapps-kwargs2].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapps-kwargs2].yaml new file mode 100644 index 000000000000..1ac535aa87ac --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_dapps-kwargs2].yaml @@ -0,0 +1,135 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/dapps?page=1 + response: + body: + string: !!binary | + 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 + 98acWTgAAA== + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=48 + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:58 GMT + Etag: + - W/"3859-Anik6B5zYeZ4H9IDXJoO26Ic3Fc" + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + Via: + - 1.1 4fcd504c9be280bceae32e94ae54e04e.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZVH5MFiAFe7g= + X-Amz-Cf-Id: + - 7egs2Tq3nMVtPJHmpLI6haz6T-NgXHY5Ak1ZEucLSITf9HoKBndw3w== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '14425' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:58 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - 48480ee2-903b-47c5-9e4e-180f0de7d083 + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682601838566136230-YXdzLWV1LXdlc3QtMQ==-2fcfabe8521848bc88903d72f0b8d2c11315737d1be34b0d85d2318d95600aa1 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].yaml new file mode 100644 index 000000000000..d69397d0ae1e --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/defi/chains + response: + body: + string: '{"success":true,"chains":["aurora","avalanche","binance-smart-chain","celo","cronos","ethereum","fantom","hedera","moonbeam","moonriver","near","optimism","polygon","ronin","solana","stacks","tezos"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=48 + Connection: + - keep-alive + Content-Length: + - '200' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:59 GMT + Etag: + - W/"c8-NfzqctiQnk5HSyAtETf9e/pkF+A" + Via: + - 1.1 015d563c1df00e18321ce956266180b0.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZfECgFiAFpAg= + X-Amz-Cf-Id: + - 75QNDfnpBm4jV35BEeE4Nt7UfmEJ-dFMYMC_q0xNVaCmB5FGsXza2Q== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '200' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:59 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - 2895e803-5336-478a-83ca-b828efe17250 + X-Amzn-Trace-Id: + - Root=1-644a776f-e9ec35e03d00100aefd54b41 + X-Blobr-Request-Id: + - 1682601839630250767-YXdzLWV1LXdlc3QtMQ==-908c9177540e46ebab56413ecb0c1d3382e82498424a48978d13673788377efc + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].yaml new file mode 100644 index 000000000000..7da661fa5ce1 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/nfts/marketplaces/chains + response: + body: + string: '{"success":true,"chains":["algorand","aurora","avalanche","binance-smart-chain","celo","ethereum","flow","hedera","immutablex","loopring","moonbeam","moonriver","near","polygon","ronin","solana","stacks","tezos","theta","tron","waves","wax","zilliqa"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=80 + Connection: + - keep-alive + Content-Length: + - '252' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:58 GMT + Etag: + - W/"fc-Nhjxoe6YsA2gDFImWUnsPfbWOT8" + Via: + - 1.1 4e3b2e1fa2acb7612ea516b89c06af70.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZSF8oFiAFuUw= + X-Amz-Cf-Id: + - nFZwzVm-8bC4ArVTJqkSduPBm9Pd09grld3KqdrCHtVrUz7_Dl67ng== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '252' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:58 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - d21ba0db-0c95-487d-a37e-8acbd04d9d81 + X-Amzn-Trace-Id: + - Root=1-644a776e-9fe8578a8428221f836e8265 + X-Blobr-Request-Id: + - 1682601838314911917-YXdzLWV1LXdlc3QtMQ==-96618217751b48deaad97087f1aae38f035b8ed57ee2419fab85504b992d2fb9 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].yaml new file mode 100644 index 000000000000..7e83a692b69d --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].yaml @@ -0,0 +1,96 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/nfts/marketplaces?resultsPerPage=10 + response: + body: + string: !!binary | + H4sIAAAAAAAAA7yXbW/bNhDHv0qg1xbFZ/L8rs2GPQDbAqQvNgxFQUuU7VYWBUlOExT57js5cUy5 + Ll9sSw3bkETxTvzd8X+nL9mwL0s/DNly7Pd+kfWuXftsmXG5yRbZEPoRT+5Cs995PA995Xu8UPmh + xNNy47Zttmz3TYMz/bBvRjT095esdbvJyNtm3x9vmwYyP2587/e77P0ia8I64D2bceyGZVG09Zjv + /OgG399tS08q13W9q1xPyrArXLctdr7aumJwjR8K1z5MM4qd6z/5sWscrqFYoTvStWt0Oc3+pcqW + nGqpFpm7W9/0aDVbMi0kAQ3ANaPSCCVPoze+L307urW/3jxhyDkxi+PycS43mnFFNJPCcC2PQxcm + ArF8kY24At/j0qXS+uX0oh/KHxcv4P7ofHvr3Yyd61dbjNEumx7YNa4tN1NIVtsWD30+IIoxf4rI + 4gR6kXWheViH9hBNnOVeh33AJx68O8PPRMzeGAKgmFEMKBgqdBI948SqE3zNrJIcCFAhtBKSJeAz + S6iO6DOpqE3g5xRd6fgTxeJP/hf/jkl8zx84+dj5OUalZyS1spYooMZaSSlwliSpGIlAMkqZ1IoY + ACs0pJJYcAI25gg8QZEZtBmBu+4fujHc7NtPw3fkVx68dpPX82TkMyGgwmpDpEmik4owe2LHqTGT + fqSgaUEmyTlt/dS+F4IIETH79eanq9sx9H5GrHR95dpwAVjlhs0q4HDuhsGPwxmxKpT4kO1YMCuB + Fx+79TAZz6e78hhb/uwin+znTOt7/H3wFJSoa+BUcuVXytfOaF6XqoJqZUV1DnhyEjMGTXCvg6AK + jJSSQoo17tlYazm1EtNPCUZtaqsbMstQoVmKN4qKYBHvdxvMth/60M14j9PV/0JbM2aKg5UKbV/A + fRibwzbKOqU4Uytw3DJL67KU+G/RWq3pV9I6+YhhCwFES6RFrRCUJ8VVEBMpgqIgNcHqxrhE4PBt + 3JjblsW4GaQEgRMeK+nvb99cvQvd1e0mjDPedRM+v44atCuHYjCgwzN8Sik2q01ECazu2BJMjQEF + rVL8NOHsxE9iOUuUI2wYZFyNOFiToAZExhn65n7rr347remylGL7FVqs/K8C0eEjnOEDTJQzfEpj + 0mJCUAPG8hQ9Rli006VRmmNLJbhk0lqm0l1VDFJAKv1yg35UjHIMu2358341Y/jZ3b8StoO7p0tn + +ASwGT6KJUVwrMvKMgPSynRXKg7tzREgTjSaCOysLBht4CSjlwTwUM9eEGowKb3EFixuS39s/KRv + 87b03/Si/xPvw4zKja44+ijovZeuZIhTlr7Gvs+7ioPktQO3osyXti5pWWOmFhWWM3xj+aAlfs8C + ZA8yeAqQkkRRCSivGDq0KpLqaiihkT4IxjUlKCxYR1FixbfDg40escLM2gclkgVNEtxt6hGJdu5g + 4ungOuwxUNjlHF/Mni9Mrcvzmxpau3maQh//AQAA//8DAGxwggcIDgAA + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=175 + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:58 GMT + Etag: + - W/"e08-eDRtmvwVwQKLHeGEVfvlAxT7GfU" + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + Via: + - 1.1 642d71984e3d1baa43fcd1fe0b0c012e.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZPH4ZliAFUeQ= + X-Amz-Cf-Id: + - sZWZPrPVATF163t6eww_I0S1F5I5dWCcLwJY517lCO0D1e1aCpTK-g== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '3592' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:58 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - f990f922-6b76-49cd-9d01-231a564afb44 + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682601837957505581-YXdzLWV1LXdlc3QtMQ==-e17af3f4f44648a3a35998b23a780b3fd5f13242858244a8b67b5be95bf31c30 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_token_chains-kwargs5].yaml b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_token_chains-kwargs5].yaml new file mode 100644 index 000000000000..f793616a3cd1 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/http/test_dappradar_view/test_call_func[display_token_chains-kwargs5].yaml @@ -0,0 +1,72 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + X-BLOBR-KEY: + - MOCK_API_KEY + method: GET + uri: https://api.dappradar.com/4tsxo4vuhotaojtl/tokens/chains + response: + body: + string: '{"success":true,"chains":["algorand","arbitrum","astar","aurora","avalanche","binancechain","bitcoin","bitcoincash","bora","binance-smart-chain","cardano","celo","cosmos","cronos","defikingdoms","dep","elysium","eos","ethereum","everscale","evmos","fantom","flow","fuse","fusion","harmony","heco","hedera","hive","immutablex","iost","iotex","kardiachain","klaytn","kusama","litecoin","loom","polygon","mooi","moonbeam","moonriver","near","neo","ninechronicles","notblockchain","oasis","oasyschainverse","oasyshomeverse","oasysmainnet","oasysmchverse","oasyssaakuruverse","oasystcgverse","oec","ontology","optimism","platon","polkadot","rangers","ripple","ronin","rsk","shiden","skale","skalecalypso","skaleeuropa","skaleomnus","skalerazor","solana","stacks","stargaze","steem","sxnetwork","telos","telosevm","tezos","theta","thundercore","tron","vechain","vulcanforged","waves","wax","zcash","zilliqa"]}' + headers: + Access-Control-Allow-Headers: + - '*' + Access-Control-Allow-Methods: + - '*' + Access-Control-Allow-Origin: + - '*' + Apicache-Store: + - memory + Apicache-Version: + - 1.6.3 + Cache-Control: + - max-age=225 + Connection: + - keep-alive + Content-Length: + - '903' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 27 Apr 2023 13:23:59 GMT + Etag: + - W/"387-N4MidH2QEjnbzNiLplkhnV9FxGs" + Via: + - 1.1 e544866f1454c4458d3a6644b47d065e.cloudfront.net (CloudFront) + X-Amz-Apigw-Id: + - ECeZdHwYliAFa5Q= + X-Amz-Cf-Id: + - 7ZdNHZxhePRfdv42JucDPkOf9sFnZMzC2EG9WKtPvWGZK-mo-7wzjA== + X-Amz-Cf-Pop: + - VIE50-C2 + X-Amzn-Remapped-Connection: + - keep-alive + X-Amzn-Remapped-Content-Length: + - '903' + X-Amzn-Remapped-Date: + - Thu, 27 Apr 2023 13:23:59 GMT + X-Amzn-Remapped-Server: + - nginx/1.23.3 + X-Amzn-Requestid: + - 9ed57bfc-febe-46f6-b87e-711d57fbbc9d + X-Amzn-Trace-Id: + - Root=1-00000000-000000000000000000000000 + X-Blobr-Request-Id: + - 1682601839373384806-YXdzLWV1LXdlc3QtMQ==-0db76536220c4990b57271e6dd7a85812283853259c5416aa284173a7d3a5654 + X-Blobr-Version: + - 2.9.0 + X-Cache: + - Miss from cloudfront + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].json new file mode 100644 index 000000000000..96ebb83d8fb7 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_categories-kwargs4].json @@ -0,0 +1 @@ +["c08b394e7bf7bb41d620699a1670d6392d1b877e906d64f225cb121ad7caeb3a"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].json new file mode 100644 index 000000000000..1e504c9110f5 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapp_chains-kwargs3].json @@ -0,0 +1 @@ +["ac0a5cf893f2d69e860fb04904a49df360f2e2e9c3971c03dbad07523491af5b"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapps-kwargs2].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapps-kwargs2].json new file mode 100644 index 000000000000..5b7d787f1c50 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_dapps-kwargs2].json @@ -0,0 +1 @@ +["4b0ec413ca4de6469a03eb542e3fb0964f275b3017d81275b91317bd4fc8c13b"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].json new file mode 100644 index 000000000000..b7e72ddd29e9 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_defi_chains-kwargs6].json @@ -0,0 +1 @@ +["bfae6b900dd8b0811c10d5631ee7878b83d1c4f7d6321111492a83695bf63297"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].json new file mode 100644 index 000000000000..face9cd3eef5 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplace_chains-kwargs1].json @@ -0,0 +1 @@ +["0af804b86a99c2ac6fea672723d7cde80dd02bafa76acca5f281003121811a3e"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].json new file mode 100644 index 000000000000..577bf4e6a5c6 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_nft_marketplaces-kwargs0].json @@ -0,0 +1 @@ +["f7fa64f6dee094182c410ddbada2915698b1a883c0702b8821860067772edbec"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_token_chains-kwargs5].json b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_token_chains-kwargs5].json new file mode 100644 index 000000000000..68e83a6ca149 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/object_hash/test_dappradar_model/test_call_func[get_token_chains-kwargs5].json @@ -0,0 +1 @@ +["c4982faf79d3d9bd9e0033e3b45f1a43165cb53326214632aa6d22fbfff9bc48"] \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].json new file mode 100644 index 000000000000..a049dbcc4f56 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_categories-kwargs3].json @@ -0,0 +1 @@ +{"out": "f28d8d829ec7c230fe85846074269139028322ddd62556e263f19809c4b3ec08", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].json new file mode 100644 index 000000000000..1ad07c29a769 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapp_chains-kwargs4].json @@ -0,0 +1 @@ +{"out": "ccea807795929f688b98601468bd08a0b422e3895a220e4c10ba54af9c5291bf", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapps-kwargs2].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapps-kwargs2].json new file mode 100644 index 000000000000..937ac066d52b --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_dapps-kwargs2].json @@ -0,0 +1 @@ +{"out": "9887412bd79827134971829d965e7ba58f30d3e32d91554ae7f97caf668216b5", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].json new file mode 100644 index 000000000000..663b7dc7b2fe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_defi_chains-kwargs6].json @@ -0,0 +1 @@ +{"out": "46f805ffe84dc3520b612a7418ac525df6689a9a6dff2182eadee91d09c53b2a", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].json new file mode 100644 index 000000000000..9095ac94cfc9 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplace_chains-kwargs1].json @@ -0,0 +1 @@ +{"out": "0622464faca68cbeb3fe07eab9866dc826d014fe6f5b51097cd19decd56e6c4f", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].json new file mode 100644 index 000000000000..0f46e41c1da6 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_nft_marketplaces-kwargs0].json @@ -0,0 +1 @@ +{"out": "f1d267cc4538b0b0e64d3572d15bf5a04246251a5a3ae31dda79c3de65821404", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_token_chains-kwargs5].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_token_chains-kwargs5].json new file mode 100644 index 000000000000..8585ea842b46 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func[display_token_chains-kwargs5].json @@ -0,0 +1 @@ +{"out": "660364de996057709de040c9633b8a9636df8c493b409d287ffa78dc2ddc5a73", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_categories-kwargs3-get_dapp_categories].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_categories-kwargs3-get_dapp_categories].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_categories-kwargs3-get_dapp_categories].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_chains-kwargs4-get_dapp_chains].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_chains-kwargs4-get_dapp_chains].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapp_chains-kwargs4-get_dapp_chains].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapps-kwargs2-get_dapps].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapps-kwargs2-get_dapps].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_dapps-kwargs2-get_dapps].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_defi_chains-kwargs6-get_defi_chains].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_defi_chains-kwargs6-get_defi_chains].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_defi_chains-kwargs6-get_defi_chains].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplace_chains-kwargs1-get_nft_marketplace_chains].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplace_chains-kwargs1-get_nft_marketplace_chains].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplace_chains-kwargs1-get_nft_marketplace_chains].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nf_marketplaces].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nf_marketplaces].json new file mode 100644 index 000000000000..fbd02c2eb225 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nf_marketplaces].json @@ -0,0 +1 @@ +{"out": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nft_marketplaces].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nft_marketplaces].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_nft_marketplaces-kwargs0-get_nft_marketplaces].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_token_chains-kwargs5-get_token_chains].json b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_token_chains-kwargs5-get_token_chains].json new file mode 100644 index 000000000000..1428c02a9abe --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/discovery/record/screen/test_dappradar_view/test_call_func_empty_df[display_token_chains-kwargs5-get_token_chains].json @@ -0,0 +1 @@ +{"out": "32aa68185642b5d7a4d24c0384e3c4172bc43eec7ffa683a8a3fe8a9bdf7c1b9", "err": ""} \ No newline at end of file diff --git a/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_model.py b/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_model.py index 43d403b5bfd3..728e2b228c4c 100644 --- a/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_model.py +++ b/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_model.py @@ -12,21 +12,24 @@ @pytest.fixture(scope="module") def vcr_config(): return { - "filter_headers": [("User-Agent", None)], + "filter_headers": [("User-Agent", None), ("X-BLOBR-KEY", "MOCK_API_KEY")], } -@pytest.mark.vcr +@pytest.mark.record_http @pytest.mark.parametrize( "func, kwargs", [ - ("get_top_nfts", dict()), - ("get_top_dexes", dict()), - ("get_top_games", dict()), - ("get_top_dapps", dict()), + ("get_nft_marketplaces", dict()), + ("get_nft_marketplace_chains", dict()), + ("get_dapps", dict()), + ("get_dapp_chains", dict()), + ("get_dapp_categories", dict()), + ("get_token_chains", dict()), + ("get_defi_chains", dict()), ], ) -def test_call_func(func, kwargs, recorder): +def test_call_func(func, kwargs, record): result = getattr(dappradar_model, func)(**kwargs) - recorder.capture(result) + record.add_verify(result) diff --git a/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_view.py b/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_view.py index f0f67d5f96fd..68b08c707df4 100644 --- a/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_view.py +++ b/tests/openbb_terminal/cryptocurrency/discovery/test_dappradar_view.py @@ -10,19 +10,25 @@ @pytest.fixture(scope="module") def vcr_config(): return { - "filter_headers": [("User-Agent", None)], + "filter_headers": [ + ("User-Agent", None), + ("X-BLOBR-KEY", "MOCK_API_KEY"), + ], } -@pytest.mark.vcr -@pytest.mark.record_stdout +@pytest.mark.record_http +@pytest.mark.record_verify_screen @pytest.mark.parametrize( "func, kwargs", [ - ("display_top_nfts", dict()), - ("display_top_games", dict()), - ("display_top_dexes", dict()), - ("display_top_dapps", dict()), + ("display_nft_marketplaces", dict()), + ("display_nft_marketplace_chains", dict()), + ("display_dapps", dict()), + ("display_dapp_categories", dict()), + ("display_dapp_chains", dict()), + ("display_token_chains", dict()), + ("display_defi_chains", dict()), ], ) def test_call_func(func, kwargs, mocker): @@ -34,30 +40,44 @@ def test_call_func(func, kwargs, mocker): getattr(dappradar_view, func)(**kwargs) -@pytest.mark.vcr(record_mode="none") -@pytest.mark.record_stdout +@pytest.mark.record_verify_screen @pytest.mark.parametrize( "func, kwargs, mocked_func", [ ( - "display_top_nfts", + "display_nft_marketplaces", dict(), - "get_top_nfts", + "get_nft_marketplaces", ), ( - "display_top_games", + "display_nft_marketplace_chains", dict(), - "get_top_games", + "get_nft_marketplace_chains", ), ( - "display_top_dexes", + "display_dapps", dict(), - "get_top_dexes", + "get_dapps", ), ( - "display_top_dapps", + "display_dapp_categories", dict(), - "get_top_dapps", + "get_dapp_categories", + ), + ( + "display_dapp_chains", + dict(), + "get_dapp_chains", + ), + ( + "display_token_chains", + dict(), + "get_token_chains", + ), + ( + "display_defi_chains", + dict(), + "get_defi_chains", ), ], ) diff --git a/tests/openbb_terminal/cryptocurrency/discovery/test_discovery_controller.py b/tests/openbb_terminal/cryptocurrency/discovery/test_discovery_controller.py index 93464a4bae94..0991d598dc26 100644 --- a/tests/openbb_terminal/cryptocurrency/discovery/test_discovery_controller.py +++ b/tests/openbb_terminal/cryptocurrency/discovery/test_discovery_controller.py @@ -6,10 +6,7 @@ import pytest # IMPORTATION INTERNAL -from openbb_terminal.core.session.current_user import ( - PreferencesModel, - copy_user, -) +from openbb_terminal.core.session.current_user import PreferencesModel, copy_user from openbb_terminal.cryptocurrency.discovery import discovery_controller @@ -209,30 +206,23 @@ def test_call_func_expect_queue(expected_queue, func, queue): dict(), ), ( - "call_dapps", - [], - "dappradar_view.display_top_dapps", - [], - dict(), - ), - ( - "call_games", + "call_dapp_categories", [], - "dappradar_view.display_top_games", + "dappradar_view.display_dapp_categories", [], dict(), ), ( - "call_dex", + "call_dapp_chains", [], - "dappradar_view.display_top_dexes", + "dappradar_view.display_dapp_chains", [], dict(), ), ( - "call_nft", + "call_nft_mktp", [], - "dappradar_view.display_top_nfts", + "dappradar_view.display_nft_marketplaces", [], dict(), ), @@ -271,6 +261,27 @@ def test_call_func_expect_queue(expected_queue, func, queue): [], dict(), ), + ( + "call_nft_mktp_chains", + [], + "dappradar_view.display_nft_marketplace_chains", + [], + dict(), + ), + ( + "call_defi_chains", + [], + "dappradar_view.display_defi_chains", + [], + dict(), + ), + ( + "call_tokens", + [], + "dappradar_view.display_token_chains", + [], + dict(), + ), ], ) def test_call_func( diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].txt deleted file mode 100644 index aed61d5da4b5..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dapps-kwargs3].txt +++ /dev/null @@ -1,11 +0,0 @@ - Name Category Protocols Daily Users Daily Volume [$] -0 Splinterlands games hive,wax 305103 7.976610e+03 -1 PancakeSwap defi binance-smart-chain 289333 2.236888e+08 -2 Alien Worlds games wax,binance-smart-chain 235631 7.592036e+05 -3 Farmers World games wax 111680 2.300160e+03 -4 AtomicAssets other wax,eos 108877 2.263188e+05 -5 Axie Infinity games ronin,ethereum 90876 1.161980e+07 -6 Upland games eos 63279 0.000000e+00 -7 OpenSea marketplaces ethereum,polygon 53953 1.999563e+08 -8 Katana defi ronin 45918 9.268510e+07 -9 Magic Eden marketplaces solana 40235 1.846562e+07 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].txt deleted file mode 100644 index 7f03f228d350..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_dexes-kwargs2].txt +++ /dev/null @@ -1 +0,0 @@ -[red]Failed to fetch data from DappRadar[/red] diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_games-kwargs1].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_games-kwargs1].txt deleted file mode 100644 index c8fc3f0a73cd..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_games-kwargs1].txt +++ /dev/null @@ -1,6 +0,0 @@ - Name Daily Users Daily Volume [$] -0 Splinterlands 305103 7976.61 -2 Alien Worlds 235631 759203.57 -3 Farmers World 111680 2300.16 -5 Axie Infinity 90876 11619801.91 -6 Upland 63279 0.00 diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].txt deleted file mode 100644 index 7f03f228d350..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func[display_top_nfts-kwargs0].txt +++ /dev/null @@ -1 +0,0 @@ -[red]Failed to fetch data from DappRadar[/red] diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dapps-kwargs3-get_top_dapps].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dapps-kwargs3-get_top_dapps].txt deleted file mode 100644 index 7f03f228d350..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dapps-kwargs3-get_top_dapps].txt +++ /dev/null @@ -1 +0,0 @@ -[red]Failed to fetch data from DappRadar[/red] diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dexes-kwargs2-get_top_dexes].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dexes-kwargs2-get_top_dexes].txt deleted file mode 100644 index 7f03f228d350..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_dexes-kwargs2-get_top_dexes].txt +++ /dev/null @@ -1 +0,0 @@ -[red]Failed to fetch data from DappRadar[/red] diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_games-kwargs1-get_top_games].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_games-kwargs1-get_top_games].txt deleted file mode 100644 index 7f03f228d350..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_games-kwargs1-get_top_games].txt +++ /dev/null @@ -1 +0,0 @@ -[red]Failed to fetch data from DappRadar[/red] diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_nfts-kwargs0-get_top_nfts].txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_nfts-kwargs0-get_top_nfts].txt deleted file mode 100644 index 7f03f228d350..000000000000 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_dappradar_view/test_call_func_empty_df[display_top_nfts-kwargs0-get_top_nfts].txt +++ /dev/null @@ -1 +0,0 @@ -[red]Failed to fetch data from DappRadar[/red] diff --git a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_discovery_controller/test_print_help.txt b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_discovery_controller/test_print_help.txt index 3d49604c0169..469a40043059 100644 --- a/tests/openbb_terminal/cryptocurrency/discovery/txt/test_discovery_controller/test_print_help.txt +++ b/tests/openbb_terminal/cryptocurrency/discovery/txt/test_discovery_controller/test_print_help.txt @@ -3,8 +3,12 @@ gainers top gainers [CoinGecko] losers top losers [CoinGecko] search search for coins [CoinPaprika] - nft top non fungible tokens [DappRadar] - games top blockchain games [DappRadar] - dapps top decentralized apps [DappRadar] - dex top decentralized exchanges [DappRadar] + nft_mktp_chains nft marketplace chains [DappRadar] + nft_mktp nft marketplaces [DappRadar] + dapps available decentralized apps [DappRadar] + dapp_categories show available dapp categories [DappRadar] + dapp_chains show available dapp chains [DappRadar] + dapp_metrics show dapp metrics [DappRadar] + defi_chains show available defi chains [DappRadar] + tokens show chains that support tokens [DappRadar] diff --git a/tests/openbb_terminal/cryptocurrency/overview/test_sdk_helpers.py b/tests/openbb_terminal/cryptocurrency/overview/test_sdk_helpers.py index c25029d0c417..2faa09dfee35 100644 --- a/tests/openbb_terminal/cryptocurrency/overview/test_sdk_helpers.py +++ b/tests/openbb_terminal/cryptocurrency/overview/test_sdk_helpers.py @@ -24,7 +24,7 @@ def test_globe(source): "source", [ "CoinGecko", - "CoinPaprika", + # "CoinPaprika", ], ) def test_exchanges(source): From 02339c43cc88f412c3fc907c5863e0b811b876dc Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Wed, 3 May 2023 05:40:12 -0700 Subject: [PATCH 24/70] Hotfix/stocks quote help description: replaces help dialogue description for `--ticker`. (#4953) * fixes help dialogue * ruff - unused import --- openbb_terminal/stocks/stocks_controller.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openbb_terminal/stocks/stocks_controller.py b/openbb_terminal/stocks/stocks_controller.py index f78cb1cf6a4b..953b4f3eb542 100644 --- a/openbb_terminal/stocks/stocks_controller.py +++ b/openbb_terminal/stocks/stocks_controller.py @@ -26,7 +26,7 @@ ) from openbb_terminal.menu import session from openbb_terminal.parent_classes import StockBaseController -from openbb_terminal.rich_config import MenuText, console, translate +from openbb_terminal.rich_config import MenuText, console from openbb_terminal.stocks import cboe_view, stocks_helper, stocks_view from openbb_terminal.terminal_helper import suppress_stdout @@ -324,7 +324,7 @@ def call_quote(self, other_args: List[str]): add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, prog="quote", - description="Current quote for stock ticker", + description="Current quote for the loaded stock ticker.", ) parser.add_argument( "-t", @@ -333,7 +333,7 @@ def call_quote(self, other_args: List[str]): dest="s_ticker", required=False, default=self.ticker, - help=translate("stocks/QUOTE_ticker"), + help="Get a quote for a specific ticker, or comma-separated list of tickers.", ) # For the case where a user uses: 'quote BB' From 7c10fac330cbe50c3ee31907f7b403eb6ad1d705 Mon Sep 17 00:00:00 2001 From: Henrique Joaquim Date: Wed, 3 May 2023 13:40:32 +0100 Subject: [PATCH 25/70] removing wrong transposition (#4959) --- .../stocks/fundamental_analysis/av_view.py | 6 +++--- .../stocks/fundamental_analysis/eodhd_view.py | 2 +- .../stocks/fundamental_analysis/fmp_view.py | 12 ++++++------ .../stocks/fundamental_analysis/polygon_view.py | 2 +- .../fundamental_analysis/yahoo_finance_view.py | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/openbb_terminal/stocks/fundamental_analysis/av_view.py b/openbb_terminal/stocks/fundamental_analysis/av_view.py index 922d0f71f00e..8c55f1025395 100644 --- a/openbb_terminal/stocks/fundamental_analysis/av_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/av_view.py @@ -77,7 +77,7 @@ def display_key(symbol: str, export: str = "", sheet_name: Optional[str] = None) export, os.path.dirname(os.path.abspath(__file__)), "key", - df_key.transpose(), + df_key, sheet_name, ) @@ -271,7 +271,7 @@ def display_balance_sheet( export, os.path.dirname(os.path.abspath(__file__)), "balance", - df_balance.transpose(), + df_balance, sheet_name, fig, ) @@ -366,7 +366,7 @@ def display_cash_flow( export, os.path.dirname(os.path.abspath(__file__)), "cash", - df_cash.transpose(), + df_cash, sheet_name, fig, ) diff --git a/openbb_terminal/stocks/fundamental_analysis/eodhd_view.py b/openbb_terminal/stocks/fundamental_analysis/eodhd_view.py index 7bef2ae96fbb..ca6583e4bb35 100644 --- a/openbb_terminal/stocks/fundamental_analysis/eodhd_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/eodhd_view.py @@ -141,7 +141,7 @@ def display_fundamentals( export, os.path.dirname(os.path.abspath(__file__)), statement, - fundamentals.transpose(), + fundamentals, sheet_name, fig, ) diff --git a/openbb_terminal/stocks/fundamental_analysis/fmp_view.py b/openbb_terminal/stocks/fundamental_analysis/fmp_view.py index a8a255cd1ee9..4391c44918d5 100644 --- a/openbb_terminal/stocks/fundamental_analysis/fmp_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/fmp_view.py @@ -347,7 +347,7 @@ def display_income_statement( export, os.path.dirname(os.path.abspath(__file__)), "income", - income.transpose(), + income, sheet_name, fig, ) @@ -451,7 +451,7 @@ def display_balance_sheet( export, os.path.dirname(os.path.abspath(__file__)), "balance", - balance.transpose(), + balance, sheet_name, fig, ) @@ -555,7 +555,7 @@ def display_cash_flow( export, os.path.dirname(os.path.abspath(__file__)), "cash", - cash.transpose(), + cash, sheet_name, fig, ) @@ -604,7 +604,7 @@ def display_key_metrics( export, os.path.dirname(os.path.abspath(__file__)), "metrics", - key_metrics.transpose(), + key_metrics, sheet_name, ) else: @@ -652,7 +652,7 @@ def display_financial_ratios( export, os.path.dirname(os.path.abspath(__file__)), "grratiosowth", - ratios.transpose(), + ratios, sheet_name, ) else: @@ -699,7 +699,7 @@ def display_financial_statement_growth( export, os.path.dirname(os.path.abspath(__file__)), "growth", - growth.transpose(), + growth, sheet_name, ) else: diff --git a/openbb_terminal/stocks/fundamental_analysis/polygon_view.py b/openbb_terminal/stocks/fundamental_analysis/polygon_view.py index ce9c27709db2..a0c647f6e4e3 100644 --- a/openbb_terminal/stocks/fundamental_analysis/polygon_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/polygon_view.py @@ -131,7 +131,7 @@ def display_fundamentals( export, os.path.dirname(os.path.abspath(__file__)), statement, - fundamentals.transpose(), + fundamentals, sheet_name, fig, ) diff --git a/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py b/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py index 32e3dc781364..7eed78530205 100644 --- a/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py +++ b/openbb_terminal/stocks/fundamental_analysis/yahoo_finance_view.py @@ -459,7 +459,7 @@ def display_fundamentals( export, os.path.dirname(os.path.abspath(__file__)), statement, - fundamentals.transpose(), + fundamentals, sheet_name, fig, ) From cfb0f77f77c12f18d9c4e283bd8e729868e7e54e Mon Sep 17 00:00:00 2001 From: Pratyush Shukla Date: Wed, 3 May 2023 18:11:08 +0530 Subject: [PATCH 26/70] Fixed `--help` arg not working (#4956) --- openbb_terminal/keys_controller.py | 34 +++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/openbb_terminal/keys_controller.py b/openbb_terminal/keys_controller.py index ba33fdc2df96..9fae2982f083 100644 --- a/openbb_terminal/keys_controller.py +++ b/openbb_terminal/keys_controller.py @@ -490,7 +490,7 @@ def call_reddit(self, other_args: List[str]): type=str, dest="client_id", help="Client ID", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-s", @@ -498,7 +498,7 @@ def call_reddit(self, other_args: List[str]): type=str, dest="client_secret", help="Client Secret", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-u", @@ -506,7 +506,7 @@ def call_reddit(self, other_args: List[str]): type=str, dest="username", help="Username", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-p", @@ -514,7 +514,7 @@ def call_reddit(self, other_args: List[str]): type=str, dest="password", help="Password", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-a", @@ -522,7 +522,7 @@ def call_reddit(self, other_args: List[str]): type=str, dest="user_agent", help="User agent", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, nargs="+", ) if not other_args: @@ -560,7 +560,7 @@ def call_twitter(self, other_args: List[str]): type=str, dest="key", help="Key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-s", @@ -568,7 +568,7 @@ def call_twitter(self, other_args: List[str]): type=str, dest="secret", help="Secret key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-t", @@ -576,7 +576,7 @@ def call_twitter(self, other_args: List[str]): type=str, dest="token", help="Bearer token", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) if not other_args: console.print("For your API Key, visit: https://developer.twitter.com") @@ -641,7 +641,7 @@ def call_degiro(self, other_args: List[str]): type=str, dest="username", help="username", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-p", @@ -649,7 +649,7 @@ def call_degiro(self, other_args: List[str]): type=str, dest="password", help="password", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-s", @@ -730,7 +730,7 @@ def call_binance(self, other_args: List[str]): type=str, dest="key", help="Key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-s", @@ -738,7 +738,7 @@ def call_binance(self, other_args: List[str]): type=str, dest="secret", help="Secret key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) if not other_args: console.print("For your API Key, visit: https://binance.com") @@ -794,7 +794,7 @@ def call_coinbase(self, other_args: List[str]): type=str, dest="key", help="Key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-s", @@ -802,7 +802,7 @@ def call_coinbase(self, other_args: List[str]): type=str, dest="secret", help="Secret key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-p", @@ -810,7 +810,7 @@ def call_coinbase(self, other_args: List[str]): type=str, dest="passphrase", help="Passphrase", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) if not other_args: console.print("For your API Key, visit: https://docs.pro.coinbase.com/") @@ -983,7 +983,7 @@ def call_smartstake(self, other_args: List[str]): type=str, dest="key", help="Key", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) parser.add_argument( "-t", @@ -991,7 +991,7 @@ def call_smartstake(self, other_args: List[str]): type=str, dest="token", help="Token", - required="-h" not in other_args, + required="-h" not in other_args and "--help" not in other_args, ) if not other_args: console.print("For your API Key, visit: https://www.smartstake.io") From 696494790417fd8e6a46f0d300890e059f3ab5be Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Wed, 3 May 2023 12:18:54 -0700 Subject: [PATCH 27/70] hotfix/stock-screener-remove-delimiter: Gets rid of commas in Company column. (#4954) * gets rid of comma in company name column * re-records tests --- .../stocks/screener/finviz_model.py | 4 + .../stocks/screener/finviz_view.py | 2 +- .../test_get_screener_data[overview].csv | 196 +++++----- .../test_get_screener_data_no_limit.csv | 28 +- .../test_finviz_view/test_screener[False].txt | 366 +++++++++--------- .../test_finviz_view/test_screener[True].txt | 366 +++++++++--------- .../test_screener_sort_matches[MOCK_SORT].txt | 366 +++++++++--------- .../test_screener_sort_matches[Ticker].txt | 366 +++++++++--------- 8 files changed, 849 insertions(+), 845 deletions(-) diff --git a/openbb_terminal/stocks/screener/finviz_model.py b/openbb_terminal/stocks/screener/finviz_model.py index 3d5f7d6faf47..20c37832efae 100644 --- a/openbb_terminal/stocks/screener/finviz_model.py +++ b/openbb_terminal/stocks/screener/finviz_model.py @@ -188,6 +188,10 @@ def get_screener_data( else: df_screen = screen.screener_view(ascend=ascend) + df_screen = df_screen.rename(columns={"\n\nTicker": "Ticker"}) + if "Company" in df_screen.columns: + df_screen["Company"] = df_screen["Company"].str.replace(",", "") + return df_screen diff --git a/openbb_terminal/stocks/screener/finviz_view.py b/openbb_terminal/stocks/screener/finviz_view.py index e8cdaaa6a370..b21f337e388b 100644 --- a/openbb_terminal/stocks/screener/finviz_view.py +++ b/openbb_terminal/stocks/screener/finviz_view.py @@ -252,7 +252,7 @@ def screener( sheet_name, ) - return list(df_screen["Ticker"].values) + return df_screen.Ticker.tolist() console.print( "Error: The preset selected did not return results." diff --git a/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[overview].csv b/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[overview].csv index eefc35470815..9ed8c90e7666 100644 --- a/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[overview].csv +++ b/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data[overview].csv @@ -1,122 +1,122 @@ ,Ticker,Company,Sector,Industry,Country,Market Cap,P/E,Price,Change,Volume -0,CDIO,"Cardio Diagnostics Holdings, Inc.",Healthcare,Biotechnology,USA,33570000.0,,3.45,1.5847,100099160.0 +0,CDIO,Cardio Diagnostics Holdings Inc.,Healthcare,Biotechnology,USA,33570000.0,,3.45,1.5847,100099160.0 1,LION,Lionheart III Corp,Financial,Shell Companies,USA,241920000.0,,14.6,1.0563,739802.0 -2,CHS,"Chico's FAS, Inc.",Consumer Cyclical,Apparel Retail,USA,714780000.0,6.4,5.75,0.1616,6759202.0 -3,VTNR,"Vertex Energy, Inc.",Energy,Oil & Gas Refining & Marketing,USA,743680000.0,,9.47,0.1591,11711654.0 -4,HYPR,"Hyperfine, Inc.",Healthcare,Medical Devices,USA,119220000.0,,1.61,0.1583,1064605.0 -5,CNSP,"CNS Pharmaceuticals, Inc.",Healthcare,Biotechnology,USA,2350000.0,,1.85,0.1562,338736.0 -6,PBLA,"Panbela Therapeutics, Inc.",Healthcare,Biotechnology,USA,8840000.0,,1.37,0.15130000000000002,3973317.0 +2,CHS,Chico's FAS Inc.,Consumer Cyclical,Apparel Retail,USA,714780000.0,6.4,5.75,0.1616,6759202.0 +3,VTNR,Vertex Energy Inc.,Energy,Oil & Gas Refining & Marketing,USA,743680000.0,,9.47,0.1591,11711654.0 +4,HYPR,Hyperfine Inc.,Healthcare,Medical Devices,USA,119220000.0,,1.61,0.1583,1064605.0 +5,CNSP,CNS Pharmaceuticals Inc.,Healthcare,Biotechnology,USA,2350000.0,,1.85,0.1562,338736.0 +6,PBLA,Panbela Therapeutics Inc.,Healthcare,Biotechnology,USA,8840000.0,,1.37,0.15130000000000002,3973317.0 7,GGE,Green Giant Inc.,Real Estate,Real Estate - Development,China,134070000.0,,2.37,0.1505,21798.0 8,AMAM,Ambrx Biopharma Inc.,Healthcare,Biotechnology,USA,322400000.0,,6.43,0.1503,2721628.0 -9,CLOV,"Clover Health Investments, Corp.",Healthcare,Healthcare Plans,USA,659880000.0,,1.32,0.1478,20513328.0 -10,HSII,"Heidrick & Struggles International, Inc.",Industrials,Staffing & Employment Services,USA,699650000.0,9.23,34.33,0.1474,455535.0 +9,CLOV,Clover Health Investments Corp.,Healthcare,Healthcare Plans,USA,659880000.0,,1.32,0.1478,20513328.0 +10,HSII,Heidrick & Struggles International Inc.,Industrials,Staffing & Employment Services,USA,699650000.0,9.23,34.33,0.1474,455535.0 11,GOGO,Gogo Inc.,Communication Services,Telecom Services,USA,2200000000.0,10.99,16.46,0.1438,1542316.0 -12,CDNA,"CareDx, Inc",Healthcare,Diagnostics & Research,USA,892470000.0,,16.82,0.1434,2145992.0 -13,CCO,"Clear Channel Outdoor Holdings, Inc.",Communication Services,Advertising Agencies,USA,880150000.0,,1.77,0.1419,4386783.0 +12,CDNA,CareDx Inc,Healthcare,Diagnostics & Research,USA,892470000.0,,16.82,0.1434,2145992.0 +13,CCO,Clear Channel Outdoor Holdings Inc.,Communication Services,Advertising Agencies,USA,880150000.0,,1.77,0.1419,4386783.0 14,CING,Cingulate Inc.,Healthcare,Biotechnology,USA,14460000.0,,1.79,0.1329,1401411.0 15,AZ,A2Z Smart Technologies Corp.,Industrials,Aerospace & Defense,Canada,72910000.0,,1.71,0.1325,61520.0 -16,DUOT,"Duos Technologies Group, Inc.",Technology,Software - Application,USA,32320000.0,,5.18,0.1322,226033.0 +16,DUOT,Duos Technologies Group Inc.,Technology,Software - Application,USA,32320000.0,,5.18,0.1322,226033.0 17,MSC,Studio City International Holdings Limited,Consumer Cyclical,Resorts & Casinos,Hong Kong,1650000000.0,,7.0,0.1309,38358.0 -18,FOUR,"Shift4 Payments, Inc.",Technology,Software - Infrastructure,USA,5390000000.0,163.71,64.5,0.1304,4936592.0 -19,TRDA,"Entrada Therapeutics, Inc.",Healthcare,Biotechnology,USA,417050000.0,,12.75,0.1283,91273.0 -20,DRQ,"Dril-Quip, Inc.",Energy,Oil & Gas Equipment & Services,USA,1160000000.0,,34.25,0.12369999999999999,610429.0 +18,FOUR,Shift4 Payments Inc.,Technology,Software - Infrastructure,USA,5390000000.0,163.71,64.5,0.1304,4936592.0 +19,TRDA,Entrada Therapeutics Inc.,Healthcare,Biotechnology,USA,417050000.0,,12.75,0.1283,91273.0 +20,DRQ,Dril-Quip Inc.,Energy,Oil & Gas Equipment & Services,USA,1160000000.0,,34.25,0.12369999999999999,610429.0 21,CNTB,Connect Biopharma Holdings Limited,Healthcare,Biotechnology,China,69750000.0,,1.29,0.1217,194127.0 -22,RDNT,"RadNet, Inc.",Healthcare,Diagnostics & Research,USA,1380000000.0,,23.58,0.1204,688194.0 +22,RDNT,RadNet Inc.,Healthcare,Diagnostics & Research,USA,1380000000.0,,23.58,0.1204,688194.0 23,XPON,Expion360 Inc.,Industrials,Electrical Equipment & Parts,USA,31650000.0,,4.47,0.1175,604501.0 -24,SKYT,"SkyWater Technology, Inc.",Technology,Semiconductors,USA,579430000.0,,13.13,0.1174,1111233.0 +24,SKYT,SkyWater Technology Inc.,Technology,Semiconductors,USA,579430000.0,,13.13,0.1174,1111233.0 25,CMND,Clearmind Medicine Inc.,Healthcare,Biotechnology,Canada,10890000.0,,3.24,0.11720000000000001,34343.0 -26,AAON,"AAON, Inc.",Industrials,Building Products & Equipment,USA,4770000000.0,72.42,90.96,0.1162,1325186.0 -27,MRSN,"Mersana Therapeutics, Inc.",Healthcare,Biotechnology,USA,644180000.0,,6.06,0.11599999999999999,1302610.0 +26,AAON,AAON Inc.,Industrials,Building Products & Equipment,USA,4770000000.0,72.42,90.96,0.1162,1325186.0 +27,MRSN,Mersana Therapeutics Inc.,Healthcare,Biotechnology,USA,644180000.0,,6.06,0.11599999999999999,1302610.0 28,NCNA,NuCana plc,Healthcare,Biotechnology,United Kingdom,98350000.0,,1.45,0.11539999999999999,60524.0 29,SKIN,The Beauty Health Company,Consumer Defensive,Household & Personal Products,USA,1720000000.0,70.06,12.61,0.114,6050024.0 30,BON,Bon Natural Life Limited,Consumer Defensive,Packaged Foods,China,29010000.0,3.3,2.45,0.11359999999999999,107052.0 31,DOMH,Dominari Holdings Inc.,Healthcare,Biotechnology,USA,22910000.0,,4.02,0.11359999999999999,44559.0 32,NGL,NGL Energy Partners LP,Energy,Oil & Gas Midstream,USA,407850000.0,,3.44,0.1097,2528463.0 -33,BFLY,"Butterfly Network, Inc.",Healthcare,Medical Devices,USA,511340000.0,,2.46,0.1081,2578906.0 -34,OMGA,"Omega Therapeutics, Inc.",Healthcare,Biotechnology,USA,316930000.0,,6.46,0.1081,113341.0 +33,BFLY,Butterfly Network Inc.,Healthcare,Medical Devices,USA,511340000.0,,2.46,0.1081,2578906.0 +34,OMGA,Omega Therapeutics Inc.,Healthcare,Biotechnology,USA,316930000.0,,6.46,0.1081,113341.0 35,ILAG,Intelligent Living Application Group Inc.,Industrials,Building Products & Equipment,Hong Kong,24610000.0,,1.34,0.1074,7407350.0 36,GRFX,Graphex Group Limited,Basic Materials,Other Industrial Metals & Mining,Hong Kong,58220000.0,,1.76,0.1069,81932.0 -37,TYRA,"Tyra Biosciences, Inc.",Healthcare,Biotechnology,USA,543590000.0,,13.21,0.10640000000000001,30531.0 -38,GNPX,"Genprex, Inc.",Healthcare,Biotechnology,USA,62870000.0,,1.28,0.10339999999999999,534141.0 -39,GSAT,"Globalstar, Inc.",Communication Services,Telecom Services,USA,2390000000.0,,1.28,0.10339999999999999,9356512.0 +37,TYRA,Tyra Biosciences Inc.,Healthcare,Biotechnology,USA,543590000.0,,13.21,0.10640000000000001,30531.0 +38,GNPX,Genprex Inc.,Healthcare,Biotechnology,USA,62870000.0,,1.28,0.10339999999999999,534141.0 +39,GSAT,Globalstar Inc.,Communication Services,Telecom Services,USA,2390000000.0,,1.28,0.10339999999999999,9356512.0 40,AMRN,Amarin Corporation plc,Healthcare,Drug Manufacturers - General,Ireland,845840000.0,,2.03,0.1033,18472440.0 -41,ROVR,"Rover Group, Inc.",Consumer Cyclical,Personal Services,USA,782160000.0,,4.18,0.10289999999999999,1000494.0 -42,THMO,"ThermoGenesis Holdings, Inc.",Healthcare,Medical Devices,USA,3410000.0,,3.22,0.1027,26165.0 -43,RCON,"Recon Technology, Ltd.",Energy,Oil & Gas Equipment & Services,China,71500000.0,4.76,2.05,0.10220000000000001,1381984.0 -44,CJJD,"China Jo-Jo Drugstores, Inc.",Healthcare,Pharmaceutical Retailers,China,149200000.0,,7.46,0.10189999999999999,156598.0 +41,ROVR,Rover Group Inc.,Consumer Cyclical,Personal Services,USA,782160000.0,,4.18,0.10289999999999999,1000494.0 +42,THMO,ThermoGenesis Holdings Inc.,Healthcare,Medical Devices,USA,3410000.0,,3.22,0.1027,26165.0 +43,RCON,Recon Technology Ltd.,Energy,Oil & Gas Equipment & Services,China,71500000.0,4.76,2.05,0.10220000000000001,1381984.0 +44,CJJD,China Jo-Jo Drugstores Inc.,Healthcare,Pharmaceutical Retailers,China,149200000.0,,7.46,0.10189999999999999,156598.0 45,XRAY,DENTSPLY SIRONA Inc.,Healthcare,Medical Instruments & Supplies,USA,8390000000.000001,,38.07,0.10189999999999999,5997282.0 46,WIMI,WiMi Hologram Cloud Inc.,Communication Services,Advertising Agencies,China,109690000.0,,1.19,0.10189999999999999,387869.0 -47,COIN,"Coinbase Global, Inc.",Financial,Financial Data & Stock Exchanges,USA,16010000000.000002,,64.83,0.09960000000000001,24843894.0 +47,COIN,Coinbase Global Inc.,Financial,Financial Data & Stock Exchanges,USA,16010000000.000002,,64.83,0.09960000000000001,24843894.0 48,VRTV,Veritiv Corporation,Industrials,Conglomerates,USA,2109999999.9999998,6.95,151.44,0.09949999999999999,344220.0 49,PPTA,Perpetua Resources Corp.,Basic Materials,Other Precious Metals & Mining,USA,311660000.0,,3.57,0.09849999999999999,115746.0 50,DLHC,DLH Holdings Corp.,Industrials,Specialty Business Services,USA,181430000.0,10.71,12.75,0.09820000000000001,68625.0 -51,RVMD,"Revolution Medicines, Inc.",Healthcare,Biotechnology,USA,2380000000.0,,26.76,0.0981,5593266.0 -52,NNVC,"NanoViricides, Inc.",Healthcare,Biotechnology,USA,16890000.0,,1.38,0.09720000000000001,72467.0 -53,CHCI,"Comstock Holding Companies, Inc.",Real Estate,Real Estate - Diversified,USA,59180000.0,6.26,6.44,0.0967,64010.0 +51,RVMD,Revolution Medicines Inc.,Healthcare,Biotechnology,USA,2380000000.0,,26.76,0.0981,5593266.0 +52,NNVC,NanoViricides Inc.,Healthcare,Biotechnology,USA,16890000.0,,1.38,0.09720000000000001,72467.0 +53,CHCI,Comstock Holding Companies Inc.,Real Estate,Real Estate - Diversified,USA,59180000.0,6.26,6.44,0.0967,64010.0 54,AMST,Amesite Inc.,Technology,Software - Application,USA,6880000.0,,2.98,0.0956,319511.0 -55,BLX,"Banco Latinoamericano de Comercio Exterior, S. A.",Financial,Banks - Regional,Panama,672710000.0,8.24,18.3,0.0925,311037.0 -56,DBGI,"Digital Brands Group, Inc.",Consumer Cyclical,Apparel Retail,USA,8160000.0,,1.54,0.0922,1582629.0 -57,PIXY,"ShiftPixy, Inc.",Industrials,Staffing & Employment Services,USA,49420000.0,,5.11,0.0919,210951.0 -58,AEVA,"Aeva Technologies, Inc.",Consumer Cyclical,Auto Parts,USA,402910000.0,,1.79,0.0915,1334633.0 +55,BLX,Banco Latinoamericano de Comercio Exterior S. A.,Financial,Banks - Regional,Panama,672710000.0,8.24,18.3,0.0925,311037.0 +56,DBGI,Digital Brands Group Inc.,Consumer Cyclical,Apparel Retail,USA,8160000.0,,1.54,0.0922,1582629.0 +57,PIXY,ShiftPixy Inc.,Industrials,Staffing & Employment Services,USA,49420000.0,,5.11,0.0919,210951.0 +58,AEVA,Aeva Technologies Inc.,Consumer Cyclical,Auto Parts,USA,402910000.0,,1.79,0.0915,1334633.0 59,AUPH,Aurinia Pharmaceuticals Inc.,Healthcare,Biotechnology,Canada,1320000000.0,,9.09,0.09119999999999999,5665507.0 -60,OUST,"Ouster, Inc.",Technology,Electronic Components,USA,476500000.0,,1.2,0.0909,2677185.0 -61,BGRY,"Berkshire Grey, Inc.",Industrials,Specialty Industrial Machinery,USA,339060000.0,,1.32,0.0909,843515.0 +60,OUST,Ouster Inc.,Technology,Electronic Components,USA,476500000.0,,1.2,0.0909,2677185.0 +61,BGRY,Berkshire Grey Inc.,Industrials,Specialty Industrial Machinery,USA,339060000.0,,1.32,0.0909,843515.0 62,INTZ,Intrusion Inc.,Technology,Software - Infrastructure,USA,56220000.0,,2.42,0.0901,16811.0 -63,NBY,"NovaBay Pharmaceuticals, Inc.",Healthcare,Biotechnology,USA,4420000.0,,2.3,0.09,29723.0 -64,SCU,"Sculptor Capital Management, Inc.",Financial,Asset Management,USA,531289999.99999994,,8.97,0.08990000000000001,653746.0 +63,NBY,NovaBay Pharmaceuticals Inc.,Healthcare,Biotechnology,USA,4420000.0,,2.3,0.09,29723.0 +64,SCU,Sculptor Capital Management Inc.,Financial,Asset Management,USA,531289999.99999994,,8.97,0.08990000000000001,653746.0 65,CTIB,Yunhong CTI Ltd.,Consumer Cyclical,Specialty Retail,USA,30780000.0,,1.83,0.08929999999999999,40708.0 -66,PXMD,"PaxMedica, Inc.",Healthcare,Biotechnology,USA,25000000.0,,2.08,0.08900000000000001,102509.0 -67,FTCI,"FTC Solar, Inc.",Technology,Solar,USA,331190000.0,,3.07,0.08869999999999999,1500641.0 +66,PXMD,PaxMedica Inc.,Healthcare,Biotechnology,USA,25000000.0,,2.08,0.08900000000000001,102509.0 +67,FTCI,FTC Solar Inc.,Technology,Solar,USA,331190000.0,,3.07,0.08869999999999999,1500641.0 68,MUX,McEwen Mining Inc.,Basic Materials,Other Precious Metals & Mining,Canada,332520000.0,,6.8,0.08800000000000001,800089.0 -69,DYAI,"Dyadic International, Inc.",Healthcare,Biotechnology,USA,40330000.0,,1.37,0.0873,12204.0 -70,SDPI,"Superior Drilling Products, Inc.",Energy,Oil & Gas Equipment & Services,USA,32720000.0,23.27,1.14,0.08529999999999999,272010.0 -71,AAOI,"Applied Optoelectronics, Inc.",Technology,Semiconductors,USA,93350000.0,,2.81,0.0849,177264.0 +69,DYAI,Dyadic International Inc.,Healthcare,Biotechnology,USA,40330000.0,,1.37,0.0873,12204.0 +70,SDPI,Superior Drilling Products Inc.,Energy,Oil & Gas Equipment & Services,USA,32720000.0,23.27,1.14,0.08529999999999999,272010.0 +71,AAOI,Applied Optoelectronics Inc.,Technology,Semiconductors,USA,93350000.0,,2.81,0.0849,177264.0 72,BIVI,BioVie Inc.,Healthcare,Biotechnology,USA,297220000.0,,7.69,0.08310000000000001,636821.0 73,ARBK,Argo Blockchain plc,Financial,Capital Markets,United Kingdom,85940000.0,,1.7,0.0828,112313.0 74,QH,Quhuo Limited,Technology,Software - Application,China,8630000.0,,1.44,0.0827,42565.0 75,DPRO,Draganfly Inc.,Industrials,Aerospace & Defense,Canada,104350000.0,175.0,2.1,0.0825,612276.0 -76,BFRG,"Bullfrog AI Holdings, Inc.",Healthcare,Health Information Services,USA,18940000.0,,2.95,0.0806,403699.0 -77,LAW,"CS Disco, Inc.",Technology,Software - Application,USA,587650000.0,,7.0,0.0802,876122.0 +76,BFRG,Bullfrog AI Holdings Inc.,Healthcare,Health Information Services,USA,18940000.0,,2.95,0.0806,403699.0 +77,LAW,CS Disco Inc.,Technology,Software - Application,USA,587650000.0,,7.0,0.0802,876122.0 78,CMCL,Caledonia Mining Corporation Plc,Basic Materials,Gold,USA,244720000.0,5.93,14.04,0.08,74027.0 79,TDW,Tidewater Inc.,Energy,Oil & Gas Equipment & Services,USA,2440000000.0,,48.84,0.0793,1519154.0 80,SOPH,SOPHiA GENETICS SA,Healthcare,Health Information Services,Switzerland,189800000.0,,2.6,0.0788,41698.0 81,ATAT,Atour Lifestyle Holdings Limited,Consumer Cyclical,Lodging,China,3450000000.0,146.83,26.43,0.0788,263611.0 82,SOPA,Society Pass Incorporated,Technology,Software - Application,Singapore,29580000.0,,1.1,0.0784,344242.0 -83,COEP,"Coeptis Therapeutics Holdings, Inc.",Healthcare,Biotechnology,USA,32240000.000000004,13.98,1.65,0.0784,203948.0 -84,ISUN,"iSun, Inc.",Technology,Solar,USA,21220000.0,,1.38,0.0781,39688.0 -85,XERS,"Xeris Biopharma Holdings, Inc.",Healthcare,Biotechnology,USA,184700000.0,,1.38,0.0781,1836987.0 -86,HTGM,"HTG Molecular Diagnostics, Inc.",Healthcare,Diagnostics & Research,USA,7290000.0,,3.59,0.0781,278852.0 -87,ITRI,"Itron, Inc.",Technology,Scientific & Technical Instruments,USA,2560000000.0,,55.77,0.0779,592725.0 -88,TKLF,"Yoshitsu Co., Ltd",Consumer Defensive,Household & Personal Products,Japan,44330000.0,11.8,1.18,0.0776,41188.0 -89,ICD,"Independence Contract Drilling, Inc.",Energy,Oil & Gas Drilling,USA,49860000.0,,3.8,0.0765,149828.0 -90,JRVR,"James River Group Holdings, Ltd.",Financial,Insurance - Specialty,Bermuda,917010000.0,,24.1,0.07490000000000001,376197.0 +83,COEP,Coeptis Therapeutics Holdings Inc.,Healthcare,Biotechnology,USA,32240000.000000004,13.98,1.65,0.0784,203948.0 +84,ISUN,iSun Inc.,Technology,Solar,USA,21220000.0,,1.38,0.0781,39688.0 +85,XERS,Xeris Biopharma Holdings Inc.,Healthcare,Biotechnology,USA,184700000.0,,1.38,0.0781,1836987.0 +86,HTGM,HTG Molecular Diagnostics Inc.,Healthcare,Diagnostics & Research,USA,7290000.0,,3.59,0.0781,278852.0 +87,ITRI,Itron Inc.,Technology,Scientific & Technical Instruments,USA,2560000000.0,,55.77,0.0779,592725.0 +88,TKLF,Yoshitsu Co. Ltd,Consumer Defensive,Household & Personal Products,Japan,44330000.0,11.8,1.18,0.0776,41188.0 +89,ICD,Independence Contract Drilling Inc.,Energy,Oil & Gas Drilling,USA,49860000.0,,3.8,0.0765,149828.0 +90,JRVR,James River Group Holdings Ltd.,Financial,Insurance - Specialty,Bermuda,917010000.0,,24.1,0.07490000000000001,376197.0 91,ENVX,Enovix Corporation,Industrials,Electrical Equipment & Parts,USA,1520000000.0,,9.22,0.0746,4405546.0 -92,LOOP,"Loop Industries, Inc.",Basic Materials,Specialty Chemicals,Canada,121890000.0,,2.6,0.07440000000000001,35421.0 +92,LOOP,Loop Industries Inc.,Basic Materials,Specialty Chemicals,Canada,121890000.0,,2.6,0.07440000000000001,35421.0 93,FA,First Advantage Corporation,Industrials,Specialty Business Services,USA,2220000000.0,36.92,14.51,0.07400000000000001,579272.0 -94,HOTH,"Hoth Therapeutics, Inc.",Healthcare,Biotechnology,USA,4040000.0,,2.91,0.0738,1089768.0 +94,HOTH,Hoth Therapeutics Inc.,Healthcare,Biotechnology,USA,4040000.0,,2.91,0.0738,1089768.0 95,BKSY,BlackSky Technology Inc.,Technology,Scientific & Technical Instruments,USA,235830000.0,,1.91,0.073,543765.0 96,PLM,PolyMet Mining Corp.,Basic Materials,Other Industrial Metals & Mining,USA,261500000.0,,2.5,0.073,179881.0 -97,IIPR,"Innovative Industrial Properties, Inc.",Real Estate,REIT - Industrial,USA,2330000000.0,17.0,88.41,0.07139999999999999,780148.0 +97,IIPR,Innovative Industrial Properties Inc.,Real Estate,REIT - Industrial,USA,2330000000.0,17.0,88.41,0.07139999999999999,780148.0 98,KAL,Kalera Public Limited Company,Consumer Defensive,Farm Products,USA,4520000.0,,4.66,0.0713,291222.0 99,CENX,Century Aluminum Company,Basic Materials,Aluminum,USA,1070000000.0000001,7.42,12.07,0.07,2665182.0 -100,VMEO,"Vimeo, Inc.",Technology,Software - Application,USA,670980000.0,,3.83,0.0698,3840159.0 -101,DBD,"Diebold Nixdorf, Incorporated",Technology,Software - Application,USA,262620000.0,,3.22,0.0698,1377507.0 +100,VMEO,Vimeo Inc.,Technology,Software - Application,USA,670980000.0,,3.83,0.0698,3840159.0 +101,DBD,Diebold Nixdorf Incorporated,Technology,Software - Application,USA,262620000.0,,3.22,0.0698,1377507.0 102,GRRR,Gorilla Technology Group Inc.,Technology,Software - Infrastructure,Taiwan,552890000.0,,7.71,0.0697,32262.0 -103,VLCN,"Volcon, Inc.",Consumer Cyclical,Auto Manufacturers,USA,42300000.0,,1.69,0.0696,263204.0 -104,MULN,"Mullen Automotive, Inc.",Consumer Cyclical,Auto Manufacturers,USA,424400000.0,,0.23,0.0696,238359920.0 -105,CXDO,"Crexendo, Inc.",Communication Services,Telecom Services,USA,46080000.0,,2.0,0.0695,74009.0 -106,ACRV,"Acrivon Therapeutics, Inc.",Healthcare,Biotechnology,USA,424380000.0,,20.32,0.0695,35883.0 -107,USAP,"Universal Stainless & Alloy Products, Inc.",Basic Materials,Steel,USA,86110000.0,,9.73,0.0692,50727.0 +103,VLCN,Volcon Inc.,Consumer Cyclical,Auto Manufacturers,USA,42300000.0,,1.69,0.0696,263204.0 +104,MULN,Mullen Automotive Inc.,Consumer Cyclical,Auto Manufacturers,USA,424400000.0,,0.23,0.0696,238359920.0 +105,CXDO,Crexendo Inc.,Communication Services,Telecom Services,USA,46080000.0,,2.0,0.0695,74009.0 +106,ACRV,Acrivon Therapeutics Inc.,Healthcare,Biotechnology,USA,424380000.0,,20.32,0.0695,35883.0 +107,USAP,Universal Stainless & Alloy Products Inc.,Basic Materials,Steel,USA,86110000.0,,9.73,0.0692,50727.0 108,ESTA,Establishment Labs Holdings Inc.,Healthcare,Medical Devices,Costa Rica,1820000000.0,,71.66,0.0689,298301.0 109,OLK,Olink Holding AB (publ),Healthcare,Diagnostics & Research,Sweden,2960000000.0,,23.44,0.0689,171895.0 -110,SLNO,"Soleno Therapeutics, Inc.",Healthcare,Biotechnology,USA,16990000.0,,2.03,0.0684,57839.0 -111,AMRS,"Amyris, Inc.",Basic Materials,Specialty Chemicals,USA,472250000.0,,1.25,0.0684,6857576.0 +110,SLNO,Soleno Therapeutics Inc.,Healthcare,Biotechnology,USA,16990000.0,,2.03,0.0684,57839.0 +111,AMRS,Amyris Inc.,Basic Materials,Specialty Chemicals,USA,472250000.0,,1.25,0.0684,6857576.0 112,TCRR,TCR2 Therapeutics Inc.,Healthcare,Biotechnology,USA,52270000.0,,1.25,0.0684,234751.0 -113,SHPH,"Shuttle Pharmaceuticals Holdings, Inc.",Healthcare,Drug Manufacturers - Specialty & Generic,USA,26870000.0,,1.88,0.0682,40273.0 -114,NVAX,"Novavax, Inc.",Healthcare,Biotechnology,USA,809140000.0,,9.26,0.0681,11462643.0 -115,VANI,"Vivani Medical, Inc.",Healthcare,Medical Devices,USA,58450000.0,,1.1,0.068,28435.0 +113,SHPH,Shuttle Pharmaceuticals Holdings Inc.,Healthcare,Drug Manufacturers - Specialty & Generic,USA,26870000.0,,1.88,0.0682,40273.0 +114,NVAX,Novavax Inc.,Healthcare,Biotechnology,USA,809140000.0,,9.26,0.0681,11462643.0 +115,VANI,Vivani Medical Inc.,Healthcare,Medical Devices,USA,58450000.0,,1.1,0.068,28435.0 116,YGMZ,MingZhu Logistics Holdings Limited,Industrials,Trucking,China,33830000.0,36.67,1.43,0.0672,42664.0 -117,BLI,"Berkeley Lights, Inc.",Healthcare,Biotechnology,USA,129389999.99999999,,1.75,0.06709999999999999,633722.0 +117,BLI,Berkeley Lights Inc.,Healthcare,Biotechnology,USA,129389999.99999999,,1.75,0.06709999999999999,633722.0 118,JFU,9F Inc.,Technology,Information Technology Services,China,26280000.0,,2.24,0.0667,84047.0 119,VZIO,VIZIO Holding Corp.,Technology,Consumer Electronics,USA,2020000000.0,,10.25,0.0666,1124843.0 120,ACAD,ACADIA Pharmaceuticals Inc.,Healthcare,Biotechnology,USA,3380000000.0,,20.69,0.0665,3622781.0 @@ -124,60 +124,60 @@ 122,MCG,Membership Collective Group Inc.,Consumer Cyclical,Lodging,USA,385410000.0,,6.69,0.0653,252929.0 123,GPCR,Structure Therapeutics Inc.,Healthcare,Biotechnology,USA,935500000.0,,25.56,0.065,60619.0 124,VACC,Vaccitech plc,Healthcare,Biotechnology,United Kingdom,123210000.0,7.5,2.79,0.0649,16656.0 -125,ATUS,"Altice USA, Inc.",Communication Services,Telecom Services,USA,1810000000.0,9.23,3.96,0.0645,14007096.0 +125,ATUS,Altice USA Inc.,Communication Services,Telecom Services,USA,1810000000.0,9.23,3.96,0.0645,14007096.0 126,NVTA,Invitae Corporation,Healthcare,Diagnostics & Research,USA,557020000.0,,2.15,0.0644,9365563.0 -127,ALT,"Altimmune, Inc.",Healthcare,Biotechnology,USA,612130000.0,,12.59,0.0642,968850.0 -128,BRFH,"Barfresh Food Group, Inc.",Consumer Defensive,Beverages - Non-Alcoholic,USA,17030000.0,,1.16,0.0642,24318.0 -129,AXSM,"Axsome Therapeutics, Inc.",Healthcare,Biotechnology,USA,3000000000.0,,68.19,0.0641,1863069.0 +127,ALT,Altimmune Inc.,Healthcare,Biotechnology,USA,612130000.0,,12.59,0.0642,968850.0 +128,BRFH,Barfresh Food Group Inc.,Consumer Defensive,Beverages - Non-Alcoholic,USA,17030000.0,,1.16,0.0642,24318.0 +129,AXSM,Axsome Therapeutics Inc.,Healthcare,Biotechnology,USA,3000000000.0,,68.19,0.0641,1863069.0 130,GTEC,Greenland Technologies Holding Corporation,Industrials,Specialty Industrial Machinery,USA,30050000.0,5.13,2.17,0.0637,31561.0 -131,LCTX,"Lineage Cell Therapeutics, Inc.",Healthcare,Biotechnology,USA,238910000.0,,1.35,0.063,264324.0 +131,LCTX,Lineage Cell Therapeutics Inc.,Healthcare,Biotechnology,USA,238910000.0,,1.35,0.063,264324.0 132,BYRN,Byrna Technologies Inc.,Industrials,Aerospace & Defense,USA,185830000.0,,8.27,0.063,41566.0 133,CRGO,Freightos Limited,Industrials,Integrated Freight & Logistics,Israel,247900000.0,,4.4,0.06280000000000001,99095.0 134,CECO,CECO Environmental Corp.,Industrials,Pollution & Treatment Controls,USA,540020000.0,53.16,15.63,0.0625,765578.0 -135,STIX,"Semantix, Inc.",Technology,Software - Application,Brazil,233210000.0,,3.4,0.0625,188753.0 +135,STIX,Semantix Inc.,Technology,Software - Application,Brazil,233210000.0,,3.4,0.0625,188753.0 136,HIPO,Hippo Holdings Inc.,Financial,Insurance - Specialty,USA,400650000.0,,17.21,0.0623,105293.0 -137,CETX,"Cemtrex, Inc.",Technology,Software - Infrastructure,USA,6720000.0,,8.09,0.0622,10692.0 +137,CETX,Cemtrex Inc.,Technology,Software - Infrastructure,USA,6720000.0,,8.09,0.0622,10692.0 138,BNR,Burning Rock Biotech Limited,Healthcare,Diagnostics & Research,China,362970000.0,,3.26,0.061900000000000004,177162.0 -139,LWLG,"Lightwave Logic, Inc.",Basic Materials,Specialty Chemicals,USA,716670000.0,,5.9,0.061200000000000004,739016.0 -140,TNGX,"Tango Therapeutics, Inc.",Healthcare,Biotechnology,USA,480220000.0,,5.23,0.060899999999999996,161934.0 -141,AFRM,"Affirm Holdings, Inc.",Technology,Software - Infrastructure,USA,4190000000.0000005,,13.62,0.060700000000000004,25098420.0 +139,LWLG,Lightwave Logic Inc.,Basic Materials,Specialty Chemicals,USA,716670000.0,,5.9,0.061200000000000004,739016.0 +140,TNGX,Tango Therapeutics Inc.,Healthcare,Biotechnology,USA,480220000.0,,5.23,0.060899999999999996,161934.0 +141,AFRM,Affirm Holdings Inc.,Technology,Software - Infrastructure,USA,4190000000.0000005,,13.62,0.060700000000000004,25098420.0 142,EH,EHang Holdings Limited,Industrials,Aerospace & Defense,China,685590000.0,,11.48,0.06,1002032.0 143,ISO,IsoPlexis Corporation,Healthcare,Medical Devices,USA,43670000.0,,1.06,0.06,59812.0 -144,NAUT,"Nautilus Biotechnology, Inc.",Healthcare,Biotechnology,USA,274770000.0,,2.12,0.06,109728.0 +144,NAUT,Nautilus Biotechnology Inc.,Healthcare,Biotechnology,USA,274770000.0,,2.12,0.06,109728.0 145,X,United States Steel Corporation,Basic Materials,Steel,USA,6950000000.0,3.43,30.63,0.059500000000000004,9773440.0 -146,SNCR,"Synchronoss Technologies, Inc.",Technology,Software - Infrastructure,USA,98250000.0,,1.07,0.0594,111641.0 +146,SNCR,Synchronoss Technologies Inc.,Technology,Software - Infrastructure,USA,98250000.0,,1.07,0.0594,111641.0 147,EDBL,Edible Garden AG Incorporated,Consumer Defensive,Farm Products,USA,8340000.0,,3.39,0.0594,120986.0 148,PRIM,Primoris Services Corporation,Industrials,Engineering & Construction,USA,1450000000.0,12.24,27.5,0.0593,924778.0 149,FUTU,Futu Holdings Limited,Financial,Capital Markets,Hong Kong,7450000000.0,22.94,49.21,0.059000000000000004,2959332.0 150,NCTY,The9 Limited,Communication Services,Electronic Gaming & Multimedia,China,28170000.0,,1.08,0.0588,99372.0 -151,TRVN,"Trevena, Inc.",Healthcare,Biotechnology,USA,8550000.0,,1.08,0.0588,35252.0 -152,UVE,"Universal Insurance Holdings, Inc.",Financial,Insurance - Property & Casualty,USA,490210000.0,,19.33,0.058600000000000006,870749.0 +151,TRVN,Trevena Inc.,Healthcare,Biotechnology,USA,8550000.0,,1.08,0.0588,35252.0 +152,UVE,Universal Insurance Holdings Inc.,Financial,Insurance - Property & Casualty,USA,490210000.0,,19.33,0.058600000000000006,870749.0 153,MOVE,Movano Inc.,Healthcare,Medical Devices,USA,44500000.0,,1.27,0.0583,60538.0 154,IXHL,Incannex Healthcare Limited,Healthcare,Drug Manufacturers - Specialty & Generic,Australia,163700000.0,,2.55,0.0581,11497.0 155,ODV,Osisko Development Corp.,Basic Materials,Gold,Canada,462440000.0,,4.38,0.057999999999999996,24847.0 -156,SWAG,"Stran & Company, Inc.",Communication Services,Advertising Agencies,USA,32150000.0,,1.83,0.0579,41844.0 -157,INSW,"International Seaways, Inc.",Energy,Oil & Gas Midstream,USA,2450000000.0,18.86,51.44,0.057800000000000004,2173649.0 -158,GSHD,"Goosehead Insurance, Inc",Financial,Insurance - Diversified,USA,1730000000.0,2332.5,46.65,0.057300000000000004,432319.0 +156,SWAG,Stran & Company Inc.,Communication Services,Advertising Agencies,USA,32150000.0,,1.83,0.0579,41844.0 +157,INSW,International Seaways Inc.,Energy,Oil & Gas Midstream,USA,2450000000.0,18.86,51.44,0.057800000000000004,2173649.0 +158,GSHD,Goosehead Insurance Inc,Financial,Insurance - Diversified,USA,1730000000.0,2332.5,46.65,0.057300000000000004,432319.0 159,ASTL,Algoma Steel Group Inc.,Basic Materials,Steel,Canada,840580000.0,2.26,8.02,0.0567,1768517.0 -160,KULR,"KULR Technology Group, Inc.",Technology,Electronic Components,USA,151480000.0,,1.31,0.0565,1318247.0 +160,KULR,KULR Technology Group Inc.,Technology,Electronic Components,USA,151480000.0,,1.31,0.0565,1318247.0 161,WKHS,Workhorse Group Inc.,Consumer Cyclical,Auto Manufacturers,USA,352240000.0,,2.06,0.0564,3301611.0 162,MFIN,Medallion Financial Corp.,Financial,Credit Services,USA,194940000.0,4.6,8.45,0.0562,131481.0 -163,GRPH,"Graphite Bio, Inc.",Healthcare,Biotechnology,USA,154780000.0,,2.63,0.0562,176325.0 -164,RLMD,"Relmada Therapeutics, Inc.",Healthcare,Biotechnology,USA,108970000.0,,3.6,0.0557,207424.0 -165,RXRX,"Recursion Pharmaceuticals, Inc.",Healthcare,Biotechnology,USA,1590000000.0,,8.15,0.0557,1362852.0 -166,CRDF,"Cardiff Oncology, Inc.",Healthcare,Biotechnology,USA,83440000.0,,1.73,0.054900000000000004,139553.0 +163,GRPH,Graphite Bio Inc.,Healthcare,Biotechnology,USA,154780000.0,,2.63,0.0562,176325.0 +164,RLMD,Relmada Therapeutics Inc.,Healthcare,Biotechnology,USA,108970000.0,,3.6,0.0557,207424.0 +165,RXRX,Recursion Pharmaceuticals Inc.,Healthcare,Biotechnology,USA,1590000000.0,,8.15,0.0557,1362852.0 +166,CRDF,Cardiff Oncology Inc.,Healthcare,Biotechnology,USA,83440000.0,,1.73,0.054900000000000004,139553.0 167,CVNA,Carvana Co.,Consumer Cyclical,Auto & Truck Dealerships,USA,2240000000.0,,9.42,0.054900000000000004,20225034.0 168,SNBR,Sleep Number Corporation,Consumer Cyclical,"Furnishings, Fixtures & Appliances",USA,882900000.0,24.83,39.86,0.0548,448341.0 -169,VINC,"Vincerx Pharma, Inc.",Healthcare,Biotechnology,USA,25230000.0,,1.16,0.0545,50389.0 +169,VINC,Vincerx Pharma Inc.,Healthcare,Biotechnology,USA,25230000.0,,1.16,0.0545,50389.0 170,MNSO,MINISO Group Holding Limited,Consumer Cyclical,Specialty Retail,China,6390000000.0,42.72,17.9,0.0542,13542189.0 -171,OLMA,"Olema Pharmaceuticals, Inc.",Healthcare,Biotechnology,USA,175190000.0,,4.1,0.054000000000000006,42010.0 +171,OLMA,Olema Pharmaceuticals Inc.,Healthcare,Biotechnology,USA,175190000.0,,4.1,0.054000000000000006,42010.0 172,TWLO,Twilio Inc.,Communication Services,Internet Content & Information,USA,12540000000.0,,67.21,0.053899999999999997,11497556.0 173,NUTX,Nutex Health Inc.,Healthcare,Health Information Services,USA,967920000.0,,1.37,0.0538,958889.0 174,MEGL,Magic Empire Global Limited,Financial,Capital Markets,Hong Kong,36830000.0,80.45,1.77,0.0536,153745.0 175,HCM,HUTCHMED (China) Limited,Healthcare,Drug Manufacturers - Specialty & Generic,Hong Kong,2880000000.0,,16.55,0.0535,201450.0 -176,ZEUS,"Olympic Steel, Inc.",Basic Materials,Steel,USA,576450000.0,5.42,52.5,0.053399999999999996,217386.0 -177,TNYA,"Tenaya Therapeutics, Inc.",Healthcare,Biotechnology,USA,214010000.0,,3.07,0.053200000000000004,245867.0 -178,YEXT,"Yext, Inc.",Technology,Software - Infrastructure,USA,918530000.0,,7.34,0.053099999999999994,1114565.0 +176,ZEUS,Olympic Steel Inc.,Basic Materials,Steel,USA,576450000.0,5.42,52.5,0.053399999999999996,217386.0 +177,TNYA,Tenaya Therapeutics Inc.,Healthcare,Biotechnology,USA,214010000.0,,3.07,0.053200000000000004,245867.0 +178,YEXT,Yext Inc.,Technology,Software - Infrastructure,USA,918530000.0,,7.34,0.053099999999999994,1114565.0 179,NM,Navios Maritime Holdings Inc.,Industrials,Marine Shipping,Cayman Islands,59110000.0,,2.8,0.0526,168721.0 180,VZLA,Vizsla Silver Corp.,Basic Materials,Other Industrial Metals & Mining,Canada,325740000.0,,1.32,0.0518,130191.0 -181,HROW,"Harrow Health, Inc.",Healthcare,Drug Manufacturers - Specialty & Generic,USA,525240000.0,,17.92,0.0516,462882.0 +181,HROW,Harrow Health Inc.,Healthcare,Drug Manufacturers - Specialty & Generic,USA,525240000.0,,17.92,0.0516,462882.0 diff --git a/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data_no_limit.csv b/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data_no_limit.csv index 438551fef32d..663ce9878062 100644 --- a/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data_no_limit.csv +++ b/tests/openbb_terminal/stocks/screener/csv/test_finviz_model/test_get_screener_data_no_limit.csv @@ -1,24 +1,24 @@ ,Ticker,Company,Sector,Industry,Country,Market Cap,P/E,Price,Change,Volume -0,ALPS,"Alpine Summit Energy Partners, Inc.",Energy,Oil & Gas E&P,USA,68570000.0,5.58,2.01,-0.0383,109999.0 +0,ALPS,Alpine Summit Energy Partners Inc.,Energy,Oil & Gas E&P,USA,68570000.0,5.58,2.01,-0.0383,109999.0 1,WATT,Energous Corporation,Technology,Scientific & Technical Instruments,USA,47910000.0,,0.58,-0.026699999999999998,425358.0 -2,INFI,"Infinity Pharmaceuticals, Inc.",Healthcare,Biotechnology,USA,22100000.0,,0.21,-0.1157,2137949.0 +2,INFI,Infinity Pharmaceuticals Inc.,Healthcare,Biotechnology,USA,22100000.0,,0.21,-0.1157,2137949.0 3,GSMG,Glory Star New Media Group Holdings Limited,Communication Services,Advertising Agencies,China,53220000.0,1.75,0.75,-0.0169,33975.0 -4,ASTI,"Ascent Solar Technologies, Inc.",Technology,Solar,USA,19310000.0,,0.49,0.0103,219740.0 -5,JAGX,"Jaguar Health, Inc.",Healthcare,Biotechnology,USA,4190000.0000000005,,1.92,-0.030299999999999997,1114262.0 +4,ASTI,Ascent Solar Technologies Inc.,Technology,Solar,USA,19310000.0,,0.49,0.0103,219740.0 +5,JAGX,Jaguar Health Inc.,Healthcare,Biotechnology,USA,4190000.0000000005,,1.92,-0.030299999999999997,1114262.0 6,GOOD,Gladstone Commercial Corporation,Real Estate,REIT - Diversified,USA,609850000.0,,13.68,-0.0318,511965.0 -7,SMSI,"Smith Micro Software, Inc.",Technology,Software - Application,USA,88480000.0,,1.4,-0.1195,1528649.0 +7,SMSI,Smith Micro Software Inc.,Technology,Software - Application,USA,88480000.0,,1.4,-0.1195,1528649.0 8,UEIC,Universal Electronics Inc.,Technology,Consumer Electronics,USA,169180000.0,385.45,12.72,-0.0327,173747.0 -9,FNGR,"FingerMotion, Inc.",Communication Services,Telecom Services,USA,77830000.0,,1.44,-0.1166,354671.0 -10,CCSI,"Consensus Cloud Solutions, Inc.",Technology,Software - Infrastructure,USA,864710000.0,11.3,41.04,-0.0291,378590.0 +9,FNGR,FingerMotion Inc.,Communication Services,Telecom Services,USA,77830000.0,,1.44,-0.1166,354671.0 +10,CCSI,Consensus Cloud Solutions Inc.,Technology,Software - Infrastructure,USA,864710000.0,11.3,41.04,-0.0291,378590.0 11,GRNA,GreenLight Biosciences Holdings,Healthcare,Biotechnology,USA,78900000.0,,0.48,-0.013000000000000001,1392599.0 -12,IBRX,"ImmunityBio, Inc.",Healthcare,Biotechnology,USA,1070000000.0000001,,2.44,-0.0317,2822114.0 -13,GRNT,"Granite Ridge Resources, Inc.",Financial,Shell Companies,USA,776680000.0,,5.29,-0.0554,49952.0 +12,IBRX,ImmunityBio Inc.,Healthcare,Biotechnology,USA,1070000000.0000001,,2.44,-0.0317,2822114.0 +13,GRNT,Granite Ridge Resources Inc.,Financial,Shell Companies,USA,776680000.0,,5.29,-0.0554,49952.0 14,SBSW,Sibanye Stillwater Limited,Basic Materials,Gold,South Africa,5820000000.0,5.2,8.1,-0.0276,4403774.0 -15,NOTE,"FiscalNote Holdings, Inc.",Technology,Information Technology Services,USA,351940000.0,,2.35,-0.0637,372421.0 -16,UFAB,"Unique Fabricating, Inc.",Consumer Cyclical,Auto Parts,USA,2950000.0,,0.26,-0.0583,1696839.0 -17,TWKS,"Thoughtworks Holding, Inc.",Technology,Information Technology Services,USA,2480000000.0,,7.36,-0.1721,4361752.0 +15,NOTE,FiscalNote Holdings Inc.,Technology,Information Technology Services,USA,351940000.0,,2.35,-0.0637,372421.0 +16,UFAB,Unique Fabricating Inc.,Consumer Cyclical,Auto Parts,USA,2950000.0,,0.26,-0.0583,1696839.0 +17,TWKS,Thoughtworks Holding Inc.,Technology,Information Technology Services,USA,2480000000.0,,7.36,-0.1721,4361752.0 18,KT,KT Corporation,Communication Services,Telecom Services,South Korea,6400000000.0,5.0,11.57,0.0105,1278821.0 19,CISO,Cerberus Cyber Sentinel Corporation,Technology,Software - Infrastructure,USA,91890000.0,,0.57,0.0179,656013.0 20,ENSV,Enservco Corporation,Energy,Oil & Gas Equipment & Services,USA,6570000.0,,0.59,-0.0168,236172.0 -21,ETAO,"ETAO International Co., Ltd.",Healthcare,Health Information Services,Cayman Islands,8210000.000000001,,2.28,-0.1231,605377.0 -22,GETR,"Getaround, Inc.",Technology,Software - Application,USA,60230000.0,,0.47,0.0387,139168.0 +21,ETAO,ETAO International Co. Ltd.,Healthcare,Health Information Services,Cayman Islands,8210000.000000001,,2.28,-0.1231,605377.0 +22,GETR,Getaround Inc.,Technology,Software - Application,USA,60230000.0,,0.47,0.0387,139168.0 diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt index 9fc411274fbe..67bb6a08d292 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt @@ -1,183 +1,183 @@ - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -71 AAOI Applied Optoelectronics, Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -26 AAON AAON, Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -106 ACRV Acrivon Therapeutics, Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -58 AEVA Aeva Technologies, Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -141 AFRM Affirm Holdings, Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -127 ALT Altimmune, Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -111 AMRS Amyris, Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -125 ATUS Altice USA, Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -129 AXSM Axsome Therapeutics, Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -33 BFLY Butterfly Network, Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -76 BFRG Bullfrog AI Holdings, Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -61 BGRY Berkshire Grey, Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -117 BLI Berkeley Lights, Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -55 BLX Banco Latinoamericano de Comercio Exterior, S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -128 BRFH Barfresh Food Group, Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -13 CCO Clear Channel Outdoor Holdings, Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -0 CDIO Cardio Diagnostics Holdings, Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -12 CDNA CareDx, Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -137 CETX Cemtrex, Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -53 CHCI Comstock Holding Companies, Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -2 CHS Chico's FAS, Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -44 CJJD China Jo-Jo Drugstores, Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -9 CLOV Clover Health Investments, Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -5 CNSP CNS Pharmaceuticals, Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -83 COEP Coeptis Therapeutics Holdings, Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -47 COIN Coinbase Global, Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -166 CRDF Cardiff Oncology, Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -105 CXDO Crexendo, Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -101 DBD Diebold Nixdorf, Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -56 DBGI Digital Brands Group, Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -20 DRQ Dril-Quip, Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -16 DUOT Duos Technologies Group, Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -69 DYAI Dyadic International, Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -18 FOUR Shift4 Payments, Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -67 FTCI FTC Solar, Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -38 GNPX Genprex, Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -163 GRPH Graphite Bio, Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -39 GSAT Globalstar, Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -158 GSHD Goosehead Insurance, Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -94 HOTH Hoth Therapeutics, Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -181 HROW Harrow Health, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K -10 HSII Heidrick & Struggles International, Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -86 HTGM HTG Molecular Diagnostics, Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -4 HYPR Hyperfine, Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -89 ICD Independence Contract Drilling, Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -97 IIPR Innovative Industrial Properties, Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -157 INSW International Seaways, Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -84 ISUN iSun, Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -87 ITRI Itron, Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -90 JRVR James River Group Holdings, Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -160 KULR KULR Technology Group, Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -77 LAW CS Disco, Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -131 LCTX Lineage Cell Therapeutics, Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -92 LOOP Loop Industries, Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -139 LWLG Lightwave Logic, Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -27 MRSN Mersana Therapeutics, Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -104 MULN Mullen Automotive, Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -144 NAUT Nautilus Biotechnology, Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -63 NBY NovaBay Pharmaceuticals, Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -52 NNVC NanoViricides, Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -114 NVAX Novavax, Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -171 OLMA Olema Pharmaceuticals, Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -34 OMGA Omega Therapeutics, Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -60 OUST Ouster, Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -6 PBLA Panbela Therapeutics, Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -57 PIXY ShiftPixy, Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -66 PXMD PaxMedica, Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -43 RCON Recon Technology, Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -22 RDNT RadNet, Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -164 RLMD Relmada Therapeutics, Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -41 ROVR Rover Group, Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -51 RVMD Revolution Medicines, Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -165 RXRX Recursion Pharmaceuticals, Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -64 SCU Sculptor Capital Management, Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -70 SDPI Superior Drilling Products, Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -113 SHPH Shuttle Pharmaceuticals Holdings, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -24 SKYT SkyWater Technology, Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -110 SLNO Soleno Therapeutics, Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -146 SNCR Synchronoss Technologies, Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -135 STIX Semantix, Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -156 SWAG Stran & Company, Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -42 THMO ThermoGenesis Holdings, Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -88 TKLF Yoshitsu Co., Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -140 TNGX Tango Therapeutics, Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -177 TNYA Tenaya Therapeutics, Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -19 TRDA Entrada Therapeutics, Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -151 TRVN Trevena, Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -37 TYRA Tyra Biosciences, Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -107 USAP Universal Stainless & Alloy Products, Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -152 UVE Universal Insurance Holdings, Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -115 VANI Vivani Medical, Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -169 VINC Vincerx Pharma, Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -103 VLCN Volcon, Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -100 VMEO Vimeo, Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -3 VTNR Vertex Energy, Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -85 XERS Xeris Biopharma Holdings, Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -178 YEXT Yext, Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -176 ZEUS Olympic Steel, Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M +127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M +54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K +72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M +14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M +67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K +38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K +84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K +118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M +77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K +1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K +162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M +153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K +114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M +155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K +60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K +74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K +135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K +100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M +145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M +178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt index 9fc411274fbe..67bb6a08d292 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt @@ -1,183 +1,183 @@ - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -71 AAOI Applied Optoelectronics, Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -26 AAON AAON, Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -106 ACRV Acrivon Therapeutics, Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -58 AEVA Aeva Technologies, Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -141 AFRM Affirm Holdings, Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -127 ALT Altimmune, Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -111 AMRS Amyris, Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -125 ATUS Altice USA, Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -129 AXSM Axsome Therapeutics, Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -33 BFLY Butterfly Network, Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -76 BFRG Bullfrog AI Holdings, Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -61 BGRY Berkshire Grey, Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -117 BLI Berkeley Lights, Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -55 BLX Banco Latinoamericano de Comercio Exterior, S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -128 BRFH Barfresh Food Group, Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -13 CCO Clear Channel Outdoor Holdings, Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -0 CDIO Cardio Diagnostics Holdings, Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -12 CDNA CareDx, Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -137 CETX Cemtrex, Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -53 CHCI Comstock Holding Companies, Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -2 CHS Chico's FAS, Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -44 CJJD China Jo-Jo Drugstores, Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -9 CLOV Clover Health Investments, Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -5 CNSP CNS Pharmaceuticals, Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -83 COEP Coeptis Therapeutics Holdings, Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -47 COIN Coinbase Global, Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -166 CRDF Cardiff Oncology, Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -105 CXDO Crexendo, Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -101 DBD Diebold Nixdorf, Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -56 DBGI Digital Brands Group, Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -20 DRQ Dril-Quip, Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -16 DUOT Duos Technologies Group, Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -69 DYAI Dyadic International, Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -18 FOUR Shift4 Payments, Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -67 FTCI FTC Solar, Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -38 GNPX Genprex, Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -163 GRPH Graphite Bio, Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -39 GSAT Globalstar, Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -158 GSHD Goosehead Insurance, Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -94 HOTH Hoth Therapeutics, Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -181 HROW Harrow Health, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K -10 HSII Heidrick & Struggles International, Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -86 HTGM HTG Molecular Diagnostics, Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -4 HYPR Hyperfine, Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -89 ICD Independence Contract Drilling, Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -97 IIPR Innovative Industrial Properties, Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -157 INSW International Seaways, Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -84 ISUN iSun, Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -87 ITRI Itron, Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -90 JRVR James River Group Holdings, Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -160 KULR KULR Technology Group, Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -77 LAW CS Disco, Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -131 LCTX Lineage Cell Therapeutics, Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -92 LOOP Loop Industries, Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -139 LWLG Lightwave Logic, Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -27 MRSN Mersana Therapeutics, Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -104 MULN Mullen Automotive, Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -144 NAUT Nautilus Biotechnology, Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -63 NBY NovaBay Pharmaceuticals, Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -52 NNVC NanoViricides, Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -114 NVAX Novavax, Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -171 OLMA Olema Pharmaceuticals, Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -34 OMGA Omega Therapeutics, Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -60 OUST Ouster, Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -6 PBLA Panbela Therapeutics, Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -57 PIXY ShiftPixy, Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -66 PXMD PaxMedica, Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -43 RCON Recon Technology, Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -22 RDNT RadNet, Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -164 RLMD Relmada Therapeutics, Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -41 ROVR Rover Group, Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -51 RVMD Revolution Medicines, Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -165 RXRX Recursion Pharmaceuticals, Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -64 SCU Sculptor Capital Management, Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -70 SDPI Superior Drilling Products, Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -113 SHPH Shuttle Pharmaceuticals Holdings, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -24 SKYT SkyWater Technology, Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -110 SLNO Soleno Therapeutics, Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -146 SNCR Synchronoss Technologies, Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -135 STIX Semantix, Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -156 SWAG Stran & Company, Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -42 THMO ThermoGenesis Holdings, Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -88 TKLF Yoshitsu Co., Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -140 TNGX Tango Therapeutics, Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -177 TNYA Tenaya Therapeutics, Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -19 TRDA Entrada Therapeutics, Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -151 TRVN Trevena, Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -37 TYRA Tyra Biosciences, Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -107 USAP Universal Stainless & Alloy Products, Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -152 UVE Universal Insurance Holdings, Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -115 VANI Vivani Medical, Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -169 VINC Vincerx Pharma, Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -103 VLCN Volcon, Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -100 VMEO Vimeo, Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -3 VTNR Vertex Energy, Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -85 XERS Xeris Biopharma Holdings, Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -178 YEXT Yext, Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -176 ZEUS Olympic Steel, Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M +127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M +54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K +72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M +14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M +67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K +38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K +84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K +118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M +77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K +1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K +162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M +153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K +114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M +155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K +60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K +74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K +135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K +100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M +145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M +178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt index b2508b013794..a87fd8e91da8 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt @@ -1,184 +1,184 @@ Wrong sort column provided! Provide one of these: Ticker, Company, Sector, Industry, Country, Market Cap, P/E, Price, Change, Volume - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -0 CDIO Cardio Diagnostics Holdings, Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -2 CHS Chico's FAS, Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -3 VTNR Vertex Energy, Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -4 HYPR Hyperfine, Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -5 CNSP CNS Pharmaceuticals, Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -6 PBLA Panbela Therapeutics, Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -9 CLOV Clover Health Investments, Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -10 HSII Heidrick & Struggles International, Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -12 CDNA CareDx, Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -13 CCO Clear Channel Outdoor Holdings, Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -16 DUOT Duos Technologies Group, Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -18 FOUR Shift4 Payments, Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -19 TRDA Entrada Therapeutics, Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -20 DRQ Dril-Quip, Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -22 RDNT RadNet, Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -24 SKYT SkyWater Technology, Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -26 AAON AAON, Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -27 MRSN Mersana Therapeutics, Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -33 BFLY Butterfly Network, Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -34 OMGA Omega Therapeutics, Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -37 TYRA Tyra Biosciences, Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -38 GNPX Genprex, Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -39 GSAT Globalstar, Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -41 ROVR Rover Group, Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -42 THMO ThermoGenesis Holdings, Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -43 RCON Recon Technology, Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -44 CJJD China Jo-Jo Drugstores, Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -47 COIN Coinbase Global, Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -51 RVMD Revolution Medicines, Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -52 NNVC NanoViricides, Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -53 CHCI Comstock Holding Companies, Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -55 BLX Banco Latinoamericano de Comercio Exterior, S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -56 DBGI Digital Brands Group, Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -57 PIXY ShiftPixy, Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -58 AEVA Aeva Technologies, Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -60 OUST Ouster, Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -61 BGRY Berkshire Grey, Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -63 NBY NovaBay Pharmaceuticals, Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -64 SCU Sculptor Capital Management, Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -66 PXMD PaxMedica, Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -67 FTCI FTC Solar, Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -69 DYAI Dyadic International, Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -70 SDPI Superior Drilling Products, Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -71 AAOI Applied Optoelectronics, Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -76 BFRG Bullfrog AI Holdings, Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -77 LAW CS Disco, Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -83 COEP Coeptis Therapeutics Holdings, Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -84 ISUN iSun, Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -85 XERS Xeris Biopharma Holdings, Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -86 HTGM HTG Molecular Diagnostics, Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -87 ITRI Itron, Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -88 TKLF Yoshitsu Co., Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -89 ICD Independence Contract Drilling, Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -90 JRVR James River Group Holdings, Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -92 LOOP Loop Industries, Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -94 HOTH Hoth Therapeutics, Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -97 IIPR Innovative Industrial Properties, Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -100 VMEO Vimeo, Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -101 DBD Diebold Nixdorf, Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -103 VLCN Volcon, Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -104 MULN Mullen Automotive, Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -105 CXDO Crexendo, Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -106 ACRV Acrivon Therapeutics, Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -107 USAP Universal Stainless & Alloy Products, Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -110 SLNO Soleno Therapeutics, Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -111 AMRS Amyris, Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -113 SHPH Shuttle Pharmaceuticals Holdings, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -114 NVAX Novavax, Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -115 VANI Vivani Medical, Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -117 BLI Berkeley Lights, Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -125 ATUS Altice USA, Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -127 ALT Altimmune, Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -128 BRFH Barfresh Food Group, Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -129 AXSM Axsome Therapeutics, Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -131 LCTX Lineage Cell Therapeutics, Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -135 STIX Semantix, Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -137 CETX Cemtrex, Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -139 LWLG Lightwave Logic, Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -140 TNGX Tango Therapeutics, Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -141 AFRM Affirm Holdings, Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -144 NAUT Nautilus Biotechnology, Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -146 SNCR Synchronoss Technologies, Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -151 TRVN Trevena, Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -152 UVE Universal Insurance Holdings, Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -156 SWAG Stran & Company, Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -157 INSW International Seaways, Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -158 GSHD Goosehead Insurance, Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -160 KULR KULR Technology Group, Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -163 GRPH Graphite Bio, Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -164 RLMD Relmada Therapeutics, Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -165 RXRX Recursion Pharmaceuticals, Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -166 CRDF Cardiff Oncology, Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -169 VINC Vincerx Pharma, Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -171 OLMA Olema Pharmaceuticals, Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -176 ZEUS Olympic Steel, Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K -177 TNYA Tenaya Therapeutics, Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -178 YEXT Yext, Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -181 HROW Harrow Health, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M +1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M +14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K +38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K +54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M +60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K +67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K +72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K +74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K +77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K +84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M +100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K +114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K +118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M +127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K +135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K +145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K +153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K +155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M +162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K +178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt index 9fc411274fbe..67bb6a08d292 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt @@ -1,183 +1,183 @@ - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -71 AAOI Applied Optoelectronics, Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -26 AAON AAON, Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -106 ACRV Acrivon Therapeutics, Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -58 AEVA Aeva Technologies, Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -141 AFRM Affirm Holdings, Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -127 ALT Altimmune, Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -111 AMRS Amyris, Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -125 ATUS Altice USA, Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -129 AXSM Axsome Therapeutics, Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -33 BFLY Butterfly Network, Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -76 BFRG Bullfrog AI Holdings, Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -61 BGRY Berkshire Grey, Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -117 BLI Berkeley Lights, Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -55 BLX Banco Latinoamericano de Comercio Exterior, S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -128 BRFH Barfresh Food Group, Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -13 CCO Clear Channel Outdoor Holdings, Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -0 CDIO Cardio Diagnostics Holdings, Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -12 CDNA CareDx, Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -137 CETX Cemtrex, Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -53 CHCI Comstock Holding Companies, Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -2 CHS Chico's FAS, Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -44 CJJD China Jo-Jo Drugstores, Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -9 CLOV Clover Health Investments, Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -5 CNSP CNS Pharmaceuticals, Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -83 COEP Coeptis Therapeutics Holdings, Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -47 COIN Coinbase Global, Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -166 CRDF Cardiff Oncology, Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -105 CXDO Crexendo, Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -101 DBD Diebold Nixdorf, Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -56 DBGI Digital Brands Group, Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -20 DRQ Dril-Quip, Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -16 DUOT Duos Technologies Group, Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -69 DYAI Dyadic International, Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -18 FOUR Shift4 Payments, Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -67 FTCI FTC Solar, Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -38 GNPX Genprex, Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -163 GRPH Graphite Bio, Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -39 GSAT Globalstar, Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -158 GSHD Goosehead Insurance, Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -94 HOTH Hoth Therapeutics, Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -181 HROW Harrow Health, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K -10 HSII Heidrick & Struggles International, Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -86 HTGM HTG Molecular Diagnostics, Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -4 HYPR Hyperfine, Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -89 ICD Independence Contract Drilling, Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -97 IIPR Innovative Industrial Properties, Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -157 INSW International Seaways, Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -84 ISUN iSun, Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -87 ITRI Itron, Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -90 JRVR James River Group Holdings, Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -160 KULR KULR Technology Group, Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -77 LAW CS Disco, Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -131 LCTX Lineage Cell Therapeutics, Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -92 LOOP Loop Industries, Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -139 LWLG Lightwave Logic, Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -27 MRSN Mersana Therapeutics, Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -104 MULN Mullen Automotive, Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -144 NAUT Nautilus Biotechnology, Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -63 NBY NovaBay Pharmaceuticals, Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -52 NNVC NanoViricides, Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -114 NVAX Novavax, Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -171 OLMA Olema Pharmaceuticals, Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -34 OMGA Omega Therapeutics, Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -60 OUST Ouster, Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -6 PBLA Panbela Therapeutics, Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -57 PIXY ShiftPixy, Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -66 PXMD PaxMedica, Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -43 RCON Recon Technology, Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -22 RDNT RadNet, Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -164 RLMD Relmada Therapeutics, Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -41 ROVR Rover Group, Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -51 RVMD Revolution Medicines, Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -165 RXRX Recursion Pharmaceuticals, Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -64 SCU Sculptor Capital Management, Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -70 SDPI Superior Drilling Products, Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -113 SHPH Shuttle Pharmaceuticals Holdings, Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -24 SKYT SkyWater Technology, Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -110 SLNO Soleno Therapeutics, Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -146 SNCR Synchronoss Technologies, Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -135 STIX Semantix, Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -156 SWAG Stran & Company, Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -42 THMO ThermoGenesis Holdings, Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -88 TKLF Yoshitsu Co., Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -140 TNGX Tango Therapeutics, Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -177 TNYA Tenaya Therapeutics, Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -19 TRDA Entrada Therapeutics, Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -151 TRVN Trevena, Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -37 TYRA Tyra Biosciences, Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -107 USAP Universal Stainless & Alloy Products, Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -152 UVE Universal Insurance Holdings, Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -115 VANI Vivani Medical, Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -169 VINC Vincerx Pharma, Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -103 VLCN Volcon, Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -100 VMEO Vimeo, Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -3 VTNR Vertex Energy, Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -85 XERS Xeris Biopharma Holdings, Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -178 YEXT Yext, Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -176 ZEUS Olympic Steel, Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M +127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M +54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K +72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M +14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M +67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K +38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K +84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K +118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M +77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K +1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K +162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M +153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K +114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M +155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K +60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K +74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K +135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K +100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M +145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M +178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K From aa72d4ae8dfb626d21e36949e87f97cbe15ae832 Mon Sep 17 00:00:00 2001 From: James Maslek Date: Thu, 4 May 2023 10:41:24 -0400 Subject: [PATCH 28/70] Hotfix/kill cov (#4971) * bump pywry * fix rm command (#4890) Co-authored-by: Henrique Joaquim * Fix `crypto/defi/anchor` (#4892) * handle defi anchor exceptions * reason * mypy --------- Co-authored-by: Henrique Joaquim * fix windows pyinstaller subprocess fail if space in path * remove API_IEX_TOKEN * remove API_SENTIMENTINVESTOR_TOKEN * remove codecov --------- Co-authored-by: teh_coderer Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Henrique Joaquim --- .github/workflows/unit-test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 26e24de25afa..3fe240543b16 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -104,9 +104,6 @@ jobs: source $VENV pytest tests/ --optimization --cov --cov-fail-under=50 --autodoc -n auto --durations=10 --timeout=30 --cov-report=xml - - name: Upload coverage reports to Codecov with GitHub Action - uses: codecov/codecov-action@v3 - - name: Start Terminal and exit run: | source $VENV From 30076a590b6630bb5290d81ad77ec2de3d864868 Mon Sep 17 00:00:00 2001 From: Disorder AA Date: Thu, 4 May 2023 17:21:01 +0200 Subject: [PATCH 29/70] feat(docs): add math katex support (#4972) --- website/docusaurus.config.js | 11 ++ website/package-lock.json | 110 ++++++++++++++++++ website/package.json | 3 + .../static/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 63632 bytes .../static/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 33516 bytes .../katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 28076 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 12368 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 7716 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 6912 bytes .../katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 12344 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 7656 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 6908 bytes .../static/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 19584 bytes .../katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 13296 bytes .../katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 11348 bytes .../katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 19572 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 13208 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 11316 bytes .../static/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 51336 bytes .../static/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 29912 bytes .../static/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 25324 bytes .../katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 32968 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 19412 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 16780 bytes .../static/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 33580 bytes .../static/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 19676 bytes .../katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 16988 bytes .../static/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 53580 bytes .../katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 30772 bytes .../katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 26272 bytes .../katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 31196 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 18668 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 16400 bytes .../static/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 31308 bytes .../static/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 18748 bytes .../katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 16440 bytes .../katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 24504 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 14408 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 12216 bytes .../katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 22364 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 14112 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 12028 bytes .../katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 19436 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 12316 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 10344 bytes .../katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 16648 bytes .../katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 10588 bytes .../katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 9644 bytes .../katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12228 bytes .../katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6496 bytes .../katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5468 bytes .../katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 11508 bytes .../katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6188 bytes .../katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5208 bytes .../katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 7588 bytes .../katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4420 bytes .../katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3624 bytes .../katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 10364 bytes .../katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 5980 bytes .../katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 4928 bytes .../katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 27556 bytes .../katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 16028 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 13568 bytes website/static/katex/katex.min.css | 1 + website/yarn.lock | 67 ++++++++++- 65 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 website/static/katex/fonts/KaTeX_AMS-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_AMS-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 website/static/katex/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 website/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 website/static/katex/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 website/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Main-Bold.ttf create mode 100644 website/static/katex/fonts/KaTeX_Main-Bold.woff create mode 100644 website/static/katex/fonts/KaTeX_Main-Bold.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 website/static/katex/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 website/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Main-Italic.ttf create mode 100644 website/static/katex/fonts/KaTeX_Main-Italic.woff create mode 100644 website/static/katex/fonts/KaTeX_Main-Italic.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Main-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Main-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Main-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 website/static/katex/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 website/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Math-Italic.ttf create mode 100644 website/static/katex/fonts/KaTeX_Math-Italic.woff create mode 100644 website/static/katex/fonts/KaTeX_Math-Italic.woff2 create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Script-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Script-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Script-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Size1-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Size1-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Size2-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Size2-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Size3-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Size3-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Size4-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Size4-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 website/static/katex/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 website/static/katex/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 website/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 website/static/katex/katex.min.css diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 7cb96d467ab7..82cf9dc12e93 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -3,6 +3,8 @@ const lightCodeTheme = require("prism-react-renderer/themes/vsLight"); const darkCodeTheme = require("prism-react-renderer/themes/vsDark"); +const math = require("remark-math"); +const katex = require("rehype-katex"); /** @type {import('@docusaurus/types').Config} */ const config = { @@ -84,6 +86,8 @@ const config = { "https://github.com/OpenBB-finance/OpenBBTerminal/edit/main/website/", routeBasePath: "/", path: "content", + remarkPlugins: [math], + rehypePlugins: [katex], }, theme: { customCss: require.resolve("./src/css/custom.css"), @@ -113,6 +117,13 @@ const config = { contextualSearch: false, }, }), + + stylesheets: [ + { + href: "/katex/katex.min.css", + type: "text/css", + }, + ], }; module.exports = config; diff --git a/website/package-lock.json b/website/package-lock.json index 88b19c750673..18a45bd2facf 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -18,10 +18,13 @@ "@radix-ui/react-tooltip": "^1.0.5", "clsx": "^1.2.1", "fuse.js": "^6.6.2", + "hast-util-is-element": "^1.1.0", "posthog-js": "^1.53.4", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", + "rehype-katex": "^5.0.0", + "remark-math": "^3.0.1", "tailwindcss-radix": "^2.7.0" }, "devDependencies": { @@ -3801,6 +3804,11 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "node_modules/@types/katex": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz", + "integrity": "sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==" + }, "node_modules/@types/mdast": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", @@ -7191,6 +7199,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -7242,6 +7259,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-text": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz", + "integrity": "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==", + "dependencies": { + "hast-util-is-element": "^1.0.0", + "repeat-string": "^1.0.0", + "unist-util-find-after": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hastscript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", @@ -8091,6 +8122,29 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/katex": { + "version": "0.13.24", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.13.24.tgz", + "integrity": "sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.0.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, "node_modules/keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -10553,6 +10607,41 @@ "jsesc": "bin/jsesc" } }, + "node_modules/rehype-katex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-5.0.0.tgz", + "integrity": "sha512-ksSuEKCql/IiIadOHiKRMjypva9BLhuwQNascMqaoGLDVd0k2NlE2wMvgZ3rpItzRKCd6vs8s7MFbb8pcR0AEg==", + "dependencies": { + "@types/katex": "^0.11.0", + "hast-util-to-text": "^2.0.0", + "katex": "^0.13.0", + "rehype-parse": "^7.0.0", + "unified": "^9.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz", + "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==", + "dependencies": { + "hast-util-from-parse5": "^6.0.0", + "parse5": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -10580,6 +10669,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-math": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-3.0.1.tgz", + "integrity": "sha512-epT77R/HK0x7NqrWHdSV75uNLwn8g9qTyMqCRCDujL0vj/6T6+yhdrR7mjELWtkse+Fw02kijAaBuVcHBor1+Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-mdx": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", @@ -12265,6 +12363,18 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-find-after": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz", + "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-generated": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", diff --git a/website/package.json b/website/package.json index df6dc4fae1b6..4aca5bdd4171 100644 --- a/website/package.json +++ b/website/package.json @@ -26,10 +26,13 @@ "@radix-ui/react-tooltip": "^1.0.5", "clsx": "^1.2.1", "fuse.js": "^6.6.2", + "hast-util-is-element": "^1.1.0", "posthog-js": "^1.53.4", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-dom": "^17.0.2", + "rehype-katex": "^5.0.0", + "remark-math": "^3.0.1", "tailwindcss-radix": "^2.7.0" }, "devDependencies": { diff --git a/website/static/katex/fonts/KaTeX_AMS-Regular.ttf b/website/static/katex/fonts/KaTeX_AMS-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c6f9a5e7c03f9e64e9c7b4773a8e37ade8eaf406 GIT binary patch literal 63632 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_AMS-Regular.woff2 b/website/static/katex/fonts/KaTeX_AMS-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0acaaff03d4bb7606de02a827aeee338e5a86910 GIT binary patch literal 28076 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 G2<`xUL{2yW literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/website/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f522294ff0f3f8c52dfdaef7ebfaa06ebfcfaabf GIT binary patch literal 12344 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 Mepdy)y#Y}F4=Hd9=l}o! literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/website/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..75344a1f98e37e2c631e178065854c3a81fb842f GIT binary patch literal 6908 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 CFgb+) literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Fraktur-Bold.ttf b/website/static/katex/fonts/KaTeX_Fraktur-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4e98259c3b54076d684bf3459baeaeae8dbce97a GIT binary patch literal 19584 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/website/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..395f28beac23c7b0f7f3a1e714bd8dac253dd3bc GIT binary patch literal 11348 zcmV-aEUVLZPew8T0RR9104!7h4gdfE08HQj04x0f0RR9100000000000000000000 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 Y{My=5Zj3WbM|mX<0#Lulu=APmKiR?A3IG5A literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Bold.woff b/website/static/katex/fonts/KaTeX_Main-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..f38136ac1cc2dcdc9d9b10b8521487468b1f768c GIT binary patch literal 29912 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 bnfbLfgSm6Day;iB;wah|00962|Nj6Fv8wea literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Bold.woff2 b/website/static/katex/fonts/KaTeX_Main-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ab2ad21da6fbe6c171bb869240954d0ead8f68fd GIT binary patch literal 25324 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 PaXk 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-BoldItalic.woff b/website/static/katex/fonts/KaTeX_Main-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..67807b0bd4f867853271f5917fb3adf377f93f53 GIT binary patch literal 19412 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Italic.ttf b/website/static/katex/fonts/KaTeX_Main-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0e9b0f354ad460202bba554359f5adcc8da666b7 GIT binary patch literal 33580 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Italic.woff b/website/static/katex/fonts/KaTeX_Main-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..6f43b594b6c1d863a0e3f93b001f8dd503316464 GIT binary patch literal 19676 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Italic.woff2 b/website/static/katex/fonts/KaTeX_Main-Italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b50920e138807f385d0b0359f4f0f09891f18406 GIT binary patch literal 16988 zcmV(>K-j-`Pew8T0RR91076^<4gdfE0E4su073x(0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Regular.ttf b/website/static/katex/fonts/KaTeX_Main-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dd45e1ed2e18b32c516d9b481ebed3cb8bffa711 GIT binary patch literal 53580 zcmd442bd&Rc`n@NRIci-?&_|t>YUT0p3ptrljF|J##wFDMrl{lYJ<`$AR#0nAqkX0 zB*_AcWPEL|Ot6Fyw%{5tV8CQ!urb%h27>@|eYu1m8*T6Zo>M&=KoUHD{`)-t&g@Kg zRdv<(edo*JjF0$yKGS!HPw*Yux?^x;=`S{p`+QG+5JwMPdez~Rm4EvFoX_`^?ehsc zFTL@G9K9;u_W3?l!})!epFDciCG}Ic`g|WchMV}09=`r0j)#1{udKsw_2`v1U;ang zqqx`bO~kGc*cp6`!wRHLPmGDvmsI z*~kcup8C-U`BPl8>Lb3tqM!E#eQBTiv=h=P9qEfSTa6JXYEwln7OE8*aqz}_J=$!o z7UQvUjZiC0No_WsO9mo67A?{@M+#7xRgd8%o*f;Adap z7`erk{R?~jMllgDR&oQ=t)6u71r7nWvC}hx2H1A^4g$7)yG9gFg?0n5F_>%`Rl2Vk zS@6aqNKsMjF33eiW)uPv;nDW_Z*UBE0+PjwgdglPjrN%N)7~CY^oQv-@=?5!bvbYW zc`~TW7hP;eZ@5m@gX{wD@HrQlp^w#qxue_+?)KiMBp9)GK>h2_pSM9N-iiqZLd zfhqyNBy8S71ljPe(3JowQ+`SJr4k5AxI&T%er^Wa``V{JLq0-j#9Xz|4Rs5=j&G^x88+PKDM3+Xqqt5z`Sj zn{mbT9x>RH=o#8Lp45f9d{HGU5Gmc8nWti;Sa0+SGNqH6K>DW}&pJ7wIwBGhC6p3- zXK&xk0oPFLbrP8D8@Hs0lXaaeq3aCtpMnui9U5IZ5!DCl;feZOSc

viU|OFj=e4 z`Uxek5bnO)*l=hG;s=iTjG%%}ZQlmpKHt^8z?^>c!0y$B@v7KFUtox@44PgPo6#*c!mgM)V7_u8yDJFU<+E>Q< z=VsLG1*xEJrDJ6OkpnxLJ%YBWktwz|1P8s9o5mnqXSf9d&j~U83151~XwRJqpdeN^bFejq6nT zsi2R%ls>)jjD{=~pf!U@XwCCAWM*)-2@UDPeJ?sKlP%!xm`{GnB)G3+LwQvz7E{(O z$UL(SiX3tsvLzf)q907xk1Jsz;FpcJzSa1NCWqfm#$Ivc@k4S@kOk3r_o;{9ZQ#Cb z+_!@JCUM^&yKkgD(r94mEZhw%p)duCCxn=$m=Yz)f9BqPze4o4zEvmm#{{?UeCC!* z-^Ok)s>J_Jdc!;YL}ifAkvZ}do-l(aG@~9x7$da-J^RfVrP=~tIj%B8*?S-Y-s1Q$ zF?3z7#j0(_SeFH(M&yQ93%X+(;C9#X!*uj}_tp*XjG~Z;8H{+RWb&9B zG&QX~E2tsIkY&1qJYs|`|0AKgOJvz_Lh3?~tC^7yKeuUfeK^!w;n>54B3 z94r|)w3_YwC>I7R@7PM-k_%NUKW36XqH6(#^ag{SuPX_q^S3`vD33f6z&kajcD`GdK<3QzYtp9#SknMHu(BNAppG=ud6fz@7^4@}t7Bacb} z)lWKqD9Jj0AE4jWiC>YPU($6$)rF73o>x!*kbIuL#b^75Vb4oWfG~Rwq?zJe!<#GT zas_zHip>;+r$gG{Z)k}Mw8NpX!yDSkNVzZ7>g~IJv@cFbdS}K7Q9{L#lkDwDIw28n zLUhBnkwou~*S~f9L?U{8`&$p*Je$k83)|!c=TK#N+R0>`>E+5HXF=Y!z$mu^Kb`=5 zdEgjhw8=Bg4zd@rG}_nACE+Kj)eo%R!DFp zpMWyKYEelDle$pU1A^T7+s@a5b@nWHf#lVU=~S{;o`6ryE>J-YV+=E1GJdhRhpaJ{J1X4qFzgN9-?H&RoTU*nTZk=1u34* zllPVq>yIAX6b?=_dN*XJ$B0C1V_XoP5hAug58hnezj(=B!n-ciI2Pd1mW5uz-=vc9obPEz47|pMukip|iPq>SlX%E{!?j@NxToYcqE$<9$rsJ*Uv6sI zK3x?_=hUN*Q5p%$2M!QP9Zo;_4_AR1hzJAS9I1c*IYQ-5v)<@2C56=ghOBm&r20lc zZN?Kzp!QS&)Nb>@5qSH$v# zs3HVsdRMZMWTLWK6BWaP=LL@}Jil&bUX|2sw`Sw|_*BGM+;#iG+5U)G&3!!|cXLv% zcdESqXeqx=5oGa+%ywgp%88U14jh*0pVTGm#;yDBF8ZT`(+DRh=atTGOmpJ{|16=ic1jS((~)(xL)1dLNg^ zxA-c)acFY=nT=DUeMyD;Wgs1>#VjZ&$@BvgLH3$c*#i+F9av(GzOKu3Dq&t1ely9$ zYEKl)T8fvX$q5pZTb*C- z9`9MStfIQf%xkKD)>g^Z-12x|dZ4{BCWjq$VF=6*Cu3^ww(Iwm8m_vzC7Mt5O{t{h z=KA7Nxk7?+U+0^XTMEfUx-YK|Yf(sP&t&2ZSH0CYq zdGIOhjYB`AnVoOG?qNlx)25;+WP9hI-c4glL=N7+Zb{M&iG+i)DwFDctEXk)Hs*UZ z{VKV}r{mtBUqJOTB<(!oekosx!a2(bc%83|ne?`x+4)506QK~jl_-J`Jaw1J0(2!{ zs6=`yC=p3eM7%#2X6Ba#m|qrVG!k7GKAtQ|MJ{M%c&?@DPEA%w<>A*U3hn%3=i72v z5J~QrC-3ci8_aG7805A@@4J_VC0V-n#?kqECARi$A0h9cABTRK1MK6CxCVX>v(*Ou zM_^pQyWW~WdOfxtWun@K{bYewp)1)Drsuooo2|R+*{SLP9wolI7HnUH2aAG%bs$08 zNr&~mp|NsA5PN3MriN(RU0+N{WNSJz+q-xmR!R9Ok!b(aTu*NtCZ`WXy8P49dT-w{CNPm4*bB2mb34(vAc27P%xv^ZoP>$?r3$Zv0gC#W_ z)GNiIeN)p@Q(G<$xVP=L^V1IxE0emcY`poETh?v9+)tjoU9~o|SG4ojMi7~cR z_?vlI&Xa>fE9*)l1UE~i{q9v;R+}3vvI9 zoGa*(mh3N7-f&pYzu~X^1g{P`?|>V4VsXbvQ!vN$&+B900hWCG0wU~&ZweHgXq!y_ z8w^j+#|(#oJ&VD@jBxNVirsS~AYK)jEYCtVq7kODS?=m|`0!r85?pVSV@HV)(rl4@ zEQTnrnbCqLUlr5?%dyxGY+I14j`VwJ#~x`Mxtw{ZRb&T9gQ!F%r#`&`-x1ELP!H4f zE0dG5BnGTH*?-~OB)cgvw>D&!u4-o(3g)O zS_oXS6!`kr^F0xr+&bDz;t;_E4G6-How}gN)se*1;E~IaQ<5(l?hW@f=+!X0bwV{8 zEY~}?M7l!{FP6Y;xR~^pfEFS_PMu>m}L=_g5GjG?S!F3P{`X*Vra#y-k zPMmx!Oo;WCleq}>3o(5|E09TwL7#Z zw`zsF{)+dwGRQLOua@zt&U1)jx4%51EN}gzo0lio9bbt@6vTuSHpWLkiB(JZM!{`; z87K#MHGqw+7-){~^VjL@B3Vc$FsbE`1DQMd!aPxPE_t;HdcF3_z-K?pS45+3K9hIY zdJw9s7tU`gt@e-gcNc+3(f@X}UAM1!C+r9#J)Pxr?>yJ}9+JG&PR~Di$p=o-0?ap&{Z;vXG*WAN6hbRN}@>Cq@KB4m~?)vL%m|X(Q7Jym%H!!P9 z;1#CnIASw`hZZEXh@>rBgtJ=U3@QUaMU?$PH}51a9_o{!@0-1qyuq+B@|E5uQ9~)C zob)Fiygg$48W!0?J)R6nk|c=qRkst-E*GMm=c0u&bjKZc02!_duvnfH{E+?=q+l;# z?@ci&U|fN3=&2|N+Y3P;$^Qk}@ED9OF7k-va)gwEmjG6i$^a<0^joIQX%EHNznU#e|1Z5K_6)vMBouSW#ixX9l%3vIN=DiX< z^CqHqzC+G??}?VjU9Wh>&lq!hZ%%#b>}wLd=iamLAYD-`<__S|13YXm%aLR1nY+;z z%kg=s+#ExTGh*#k|lpInjSLTf$Zjz2ACVmXme(-yRe z9+DlI+FXc_*82+yRY7h6sT;72Njr`@yPaw?{gR$7t;z7W0sCPF`)}|8qZkWy@zq2{ zrkfN$BPNgx**;^^QL(`#oH>|ThvXo=scqK!}k-R3_@yb!tjc z9Y2xHP5si7{~+sTxHqcOVAd{auZW_kA{eU|N@gNZ7u3l$zJe;_rV&_L^!MNT+SiGK z>L3%rQ5H+mpU}=TT2O^202&DOge-?%ewS#*{R0u!tV_ z$coT4AZ%5es3t*M$mi>0BYel3!v190NQIa&7UboX#N?PE2)0dQ^whs|t+fU)bL?O= zo)egTwpKStaT^)7&S^nnRs}G@ga|hQCT2an%$g^Z@Iu2;tP8%G!h*p5hICHR(JEDt z#ucKnZAT;L`d#o-?q;HS;YLmj&Mt0?agvYk4-^qd$mm!S#YG?yDkU2~|YS0wwA*$u9}?iCw!Qi`I z(yXiYIhlnZJ>65Ol}DF!>FDsRBd=>NNKvxu(XWZtJFkuR-gBZ9n$gI5tGNA!FiC{N zi7Pgx#{Xt}4>9NV{Ly&ou{AH~BsinOeePyY>Krc!Fae}9-s*42AgO@HXZ=>DqY#R5 zXXx3FDO+v|Q0hN4>m0f0JTW7C678vkKOQEgAgpYW7u$iZKP2y4RGp|gz9S%!m)~?& zsA$$Pm_Pc^LquNKFxX%|_t@!K`gfq~sBgFLGWgsFF5I@#??={0>c)&H;fk0@gk8~OBAQPo z4cqzJqj~M*?sFDxD1772;k--|>PWQ^kisj6bsA4hP6erdUwK4}jQiEZu6Mm|=dJ)5 zFr7V*e{y$Npj4U5MxrTQ6ZFUs^K-$0-@*!C06M8pAJ{Q+&I*Gb-WLz5VXpaG{J=Ml zIiQ_*N`lb}Hidl;QqT2b+St?6P#=sH3UW7qVSX{F$Qj}Ne;yI^f#Ss`*)@SuFBR1F z7O`QoEioVk3|m0$UoFN%i8s4QzG^)QePO|~=%H8M-qjz+^b7X}D+EsT#HRI0%jmKT zTxu;cv_mq+b|NB&judJO;;mw-AXCGx8H%KrCQ;HlVcZ%`R#i&wy6ddXC;vEAVJvm` z-GQXlTgyR5vJB_Xz){)*?S~WUFci!mx+C3aq1%1F6fc05|R+@{8*N)SN4P!M+@U2 z$&OIx_{#QcgLDGPoGeO0^2=_b$hHtfsy_N&Wc8=71^>l zFJQ6Hctp%0Vv_F(6*9Xe5~i1uFyaR#ZdIaVN!JjFYL!}u!bhU2}rBg8R2qTGp~NRV?^tQ_(AeSFDm}l zCA$rzY@B~4sN7Nk&OE&m2|-3V0#A*0Z1QC#5@qju$f9Kop)rto>I*dH%Ilr%A>EPp>cyg z!Pvl2Wu^1Q&ey1$h9X=y zJ}ywxExMOMa!iNTvFZkB@Gqdj+zZfP6p6$0XaExM1!jiuEKf2Lcy2h0xv3nwP@mn@Z(;Ep7@_y85m;GhHOi6I?3@!t0dCg;;2 zefV{E+=W(@G+#(@fV|@^$Bv5(X~2wrMmhwT>wq~aKp&&YXq2b2WuH94YR>rfG8s@> zEPp=Q3Wr&90AGyal0p6!eA0Q4rpEVb^Xme#QX`?C`~<@B(LaAUuz8aq+T>a7^GPfT z5l+1iL4-Cop4_0R6zK_-Q1lasWB{s)NXzSEHU&&KBF}yr6@LXV@je1x@)LSGuuzOG zS@kAA*;Zi?K}Mm^3&7b zKiex2g<&8+ohg^GAil!spOYVxk0I~372d?g`6}x_?B?lPa1|gSOc0n-f&N8U12C9{ z9A&G*O{JFrM>8I@MWtAX;(C`i*>Mr#?%4zNj2c)STR4m=1X}*gfGoqdXhZpURT0AC z@O*Q-saD;>x)Y|XkCYdkH=zV`U&R=Z)ziW*Ei@0uXmdOKdI4;4`n^4ZAc>!527x^vX0n|(H~q#(0{ zdMD#NwwQpM;|5BbG)RlwDnekI1Xw{-m@B}j;5n3z_$DgAMQLvj2Ujkpf$Mi|X)8Ka zV3}>32yQ-1+A(FhSC%q^f$&^eRsH@beZqM3_b4RYym?O~wC$Qn*14ona8xfD5F-KV zx}EO}6Y5WtA*`<96z4XUXW1IEReC#CiB)U+v)~_}=M`6~3^u00yPyFhj)!LwS+&%2 zYjBWU-=6{fwS?P94`zFo;*nnTa|BE|KC*vg;8GijgX3FBNPd+A;mkO0P@+W44PL!{ za9WR!tD-DKYU|y`O>$FNJ*ks*n(2D{LtRj|hH91ibfY)O;~_>_mQi6E6i!F6Te##& z4A7dh3M1_~^-9JlZPM?N738CDM)TnKhUM0bNp9V}ae~uy)4;mnO5Ezr4i@JkBFNeK za_5VJ9iVlcw3VU3_Fgr4_|D(Hy8|=&hX6)fW0(psFi8jdFmCpC<(w@GwZ3uF}79u;QBJuHk5&xB2MScIp z+qHScZ02qGi$7PC;Ks_voSiddUDTS3lCgcFR6cOKPOezE$`!~^Zk*TS5?JIL;H!>d zeb4L4@x%^Vd$iqMOU9?XiJ)DqfM21-qp)BMetaSLwZd0jVj>gNtCE!!Gze{AT)pUs%-J>rnshEx4(a8+IradouQ>h59?*#k(!* z&>iX1BjjJnr;u^j>${G1OCH#{d59oBLywf#!2x=;o9$5s5f99|WjoHC3^shNNf@Uq zB&p4+XY79qH$emkCWd%Hk8n>FxqI%EuHAvrf=eIS&_5o}*rA+6B_c{O8->w)a`4bl z!$@e>?9SM=kZ<#qtJ|k%OqvZ^Mk(E&jBXxm^najG&($PB@Gqo$CE*87yOCZD*sh?C zmBaa5xI7M@&8;e;2puN{3Xo@(>BvB8c4EEZU&0=6 ziD6U#kzCex)lH~2Mn<`7#^qeGS+|(&*wN^Dm$Z>ZY$1!-Y_eP;*cPIdl%Pasw%_6> zMC~;~YT(lWHKdLLd?lM3KyB*W+E1o>_k{r+UUqTT28pd15A* z`DtfDbkEwtBlvZ8L7Q^3g(M%#D|cDJvsF`5q8yd9zzN0mqqryqmIgQ8u9(HFA^SI7 z5>S$p^h^vl0VZToExa6DAN6Uz#W_L z_~r%KgD~zO3h?d&-l)T`@jWaB=XlSL2Q&O84k_u4u(uqt@Bu)}72FzVolkZC@+F@O zc@rAs&wa1Nb5m!Y3)>If?zk?r%5RlC*^Z_t!s+t_?{|_-tOrCB?rc{u#n%H9(z^7p zLt{c?-EF^%c2fA6fD&bXT{B6c#KNsbvblH2eKDe(3EcjlfFi{~$N-PIKRMhU%d03?^UHrx#~)XMIzI<%};qyUE<`YV~&zcd4L6 z0U`5KVQ4+!SEsi)`tn6o-!h%at!t|1*o3o`Os_P1R(cDqnLZIzO(c|lYQEyaNND~d zSMOJLUAQJGkQHxFIv-i42?E<+0>S?eevA#Xm2H>EcVD~JS_hj20~_? z;HOhP>9Ic93d&3Q;i;+qvHPz~*d)+atJTiGbiUn%pYA8S_M+);ad>&*3TUCw#;!)b z5-_vMXYW}K=Z*>J?|EFX#LT-E-^HcGgwnnhZo=%9RYe?4(nUWuR^+t4d{0wVDc~ov83vU889<=dF_jNV`wY{>#+`Kq(dvD zIyQWOYW?-`=xmtm+C0^-YG}e>`AdKO)U{=V`vooS`Jz6e;s)9`K-7?D& zh9RL_=uzZ2<)_?k?95$Wh8bsbgr#2S1|&vD;VeUXAFADR4-%wiv0o=O$r$Zx&7lcQ zD<|r7Pw>O_hi}UVt1BuTj=EhNnQSNz-B%XUL(DeE5i4fE2~&7p&sk2u!}!yn8(0aA zFE6}RJerZX8|HvHIG3~2+?h#=k1}O170_iip?7^OL^ht~dV{F+RwISEWt_o9`iKD* zc>2R~GOVSxk=$_qa3};FjNsjY&5!{E zS-cb=%lZ|nv|6X|2^$OnejH8`QY}13Nw!OUrSTZD?qPZtMUq*1kcdHlEGFw0UK~`- zs?ca;rxGEk1SIE#ve$X&)0=_pR?xLpICugh9Q(05q$hUMj$#0TYH< zei6#(EC{@|ATZb})hef2Rp2B&10(3_VoavZ`SQ#M$tQ>Q(VpJ4ttx@->(D(*3}G;I zqZp2eWT?JNm+<0FC6shzW7|GJU+M2BMp!G#nxGYIS>Jd7e*LRL>S>>J(<@{v0*sKw zQu;dYR~2&aYo4nrD!IO!ccnpc$1BC`Na}JcA!-~~#vd&A24eUw0)|mW?{hlZy5JT( zOgXi=?*?IF**D;N1``&y192H65R8w{x^^rJS!JhqwIUk*Y;fmBLpE3P;$VGZl49C2 zlTu2H{iCv4npNXTh!7P;NeS%Uj8@IzT+oRrX&RcDr@=`})^{HWYl7iyBh!Ky)X}U{ zm-6Dw)ao{5;wj6wN`|mUEfhpW3$c)g5yVoQtX>hKyY^5oNr{+|Y-huKXLzp3d2Svw zm~ue_hsS`dw}DAy3v@Uy1zCtjn(Z#bompX|S)h%Wz>GGBdQ%}o6fqTQW=auj{U&8V z3o6F0i!4qi^^7j0qh>-xxGMX{8hy_^%Yn5{`^a_I zX`u*5u1Np>N6wU=3|C#O9h-i5J=Sg*aA$a(1op^FLV8QV%nhLDjquR(JPiqj=xclV zbR6l0tnQSFWi96J8k&jq*-?esc8I+H{j4Vpt)&x-R@{ssH>uFK3aYI8Nz6Ua_Z0H_ ziPQxlq`E)C(%o>xarNbxAC-gd1sY(RM~?AHw!)+de-?7#Sp5-`u9>-wq=2u zV`W>Gh<^1o8kEqw9+L{+56F#{a(^_p7nR!VfSiyAvi`)4_bIt(KhpJn)b50IFcP@u zPID9W9vP4mVbgV(y{U5Q%!|5q!3h%zS6}XD$X1si z%N*I(wP<84jlvzd>SEO<8+cV6pTb=+bBD=P(V;I*?CXzM`{Onoo4| z<>!ePJP14t+46{ln1*o#)Jjn?F@GT=zG3=>OJxgCu9?b8wb})9E&l>y!*a5;5-WY; zW#yC~E<{ACAI&>sQ*#y6?d1)%~(M(-mi;NFh;`{ zO~;3mX}3PFMFx>c)HaPEuY`_qnvBlLZKn_&EGEh3uuZmaHD6vfHcuTd#tM`uN7fA~ zPqVQdAxnfERxKC}A*(LQNep3Pe!&n`s*djr1;c@QfTsPbpqCnKiBIg3f1a>H!l1?| zw{*HmZloVWPWuojxBG%Vfm4pTG$01Z!sL%$vGo zava8Z0vMl(LUj}~qtsN?fTC-pW01v!BIrK}1g^LOP`wfU)*<@WKFe1CRLQWn69i*c zwkAxLKy6G-am$D$!#Ah=o784$Ga9!NE7g`tj+PTyDJBI-+%f$0o^-Vx2uA|#N(Rk7 zbCC?|jB}G|9p;O&XLW4;XJ*HyZ(GC2St5aWBJuKXu9iO72cuN3JXC=WjI%6?+L z0%Ne9za?`C<;`yvb-jG!8`&i6zheLvzlnwCw9(bFjC@B0&x!EaLPlS-__5hzjv6wG zP>=j4L>NL0zQZ!SWikr3a$*J%;WT@!WEH}35jV|Ntdur=;s$spn`Xy?-H!jq5Zs{e{FUU3MSkxqO@eQ zo&(H+!oPtJ6J_?Q+q#Us7$7f98L|0iuhhqzmYHeW;YDS&=FFj721jLR>()oS_F;1 zgK_EiG*=?SLyPO+-Bi#z7_N&jLE^&V5X^v%Bxi1pbp_AmZoUPHk)XG zJ`ryR%`l>eD@`IjcrRhq!#DagdL#J}?+i>bj)xg#yoypCXIjQko<|6k!I;^FAIw;c z>t`4@dZS;H3R{jHKY>m^H9%2&J$6)}eihBYCypQ6Qjj#icntraPZUyr!&^UV+amw zRW8C%ac7%dg)auL0!j0dk8p{?p=z~&iYH&dR+|nyu({Y0I|v?7DK`R7dD+C1ab74hy4{_;49( zfeIhyTD{KgGMm0{^On;tXQ6(A#!Qd+3~L!qH~-~jq&+RqjGkvExjyG9VSI#(33EUM zt5{^stat7Ad+Ep3RRq9+0~6yH+Qxic8{crr%7P=uBjI>dz{H|kR^-Wi4Y96&s15EZ z51{oKeiPaPz=gc>vSHOA(%@vHCy{P$2}`+~w{AWzjs{IT5sM@-Or{VC)rg)~PUP8E zDl!q)jqPxxzM|6kR_A{*m5%i;!%KJu8LSHsk(|VOUv*^P_8t@KeYT2=rS|yFmDfsL ze2v)>vq*z!Xqo+lmi5-2Azk4f3@~TJVpQ`+lo&%aQ05?BNDHRB5p?uYW@` zYj5g{ZRy{-AAOdce?6E@<(i04goGf={_#>Gwtr4Z9GcuU5SyI7B9=kiTT3f$QkIY) z1ARz{yw{nm6mkkZdbIN#cBn9BFEPdbLUX-W2##kl43e&0xhqUX|9w6FdKFc6L9(h7 zesx7H^^K%U6Ft3}7%i%~LDX|twi@N+pzDasg(5-$Drf$?T1FSKNyNdLVP=P>y$-~0 zL2lx(Ur|g)>(69kc1WXKZn!XXy#kS0HB<~;Po%p?$xJ2Fw1i4-I4pGj)1%vFZeZzL30h)SeK zDk&_Shu6o#0={A#KFBr8_jwZQw%Zi-G%OpJ0IViCFh@f{s#!`_aK)KB4z_#NiGrpH z!h$4K`>VM_t$L3j6T522@ztVT*mvWfQY|3aspD}aE|T|LO{t=Zp_Dm_n)~vBi(eJJ z0bvYUjL3CVl(GjK8zzQZ5h7IB{tYX&U6=JfeplynaOGs8T$XF^@8i2<@cIz4E6nm@ zKxwT407%b9z-u70YEbS)YCuSoyinc8w~T(MzlZ0yA5}{A>0<|D%x8u>iO3Cn%2^#m z>gqU_;R1>9Xl}IN-{Bl++U`Y`gbnc3JzO!-xhR6Y*g;j(!>yy|!%T2B#Hc?%=z-N^(Zi!SIOnVA@2a zn#D`9F=W$qddtmJ>KSJ9JHtH^z2{zLx*@E^V2k0rkpM2dICBN>Cq+ z)Siz3bwYovbiRA58itt{n5K}d3nr891^x2;Wiz8YEI@m7tABOe^`qb`&h6j6w{xI8 zSeptMk#xRqs5C&z%8VEcn{$?Y?C394#sAI(-RbFt#=IO^)OHrzC)8L*-*Q|XutSO{ zZ#`Knj+FE37B(g_rJ<{?ZeE3*nj~kdW3s+FuYL$VWm(5__>?I-U_c_m1iJ%B~@0G zYNdg32n^sKgx(<7QOG2XmKdhbB2+WU%mh^M;);wcn(qYeQN=xY=hIpi0NbBsDC_Lz zx2jf7q^zJ(>4i^- z6W+qqRRfhOOB_3Qs&n$HHhHm? zmVKY*b!GV}WCHk|y%>cDh7X-77oS%VMz}#jh;shtuSYqA*=5fUd$A~oSpT&!2U!X_ ziW%(R|NkOOL0|i#S&CPX4tY2I2zEE*`}hUD34D(O&~my~X<$TJd;6tGN<;FG}CliO6t^h-?*BDxZf&QRn?J3r|B@VqHO3M=gs!kB9|;VGz3quS)nHIFuZ zp4$v3S*bP!Fs+N+#127>xspJ3NRR$vY~3xtU|sVc78ON2wH`0`3*;BqKJYyE+) z9i)#}j)ZhH=#A%cjRTqCWOUzu)P7Z~{p!U=Px>+HedCV7rTOZXD_sBh$c|SZ-aNUh zbJN=k1$;A&!6v`oOuv8~Jdh)2I)`-$!3?-gIGhnj9E87TS{X)0D;TK17aaRW#&~m{fx&&^#SjPu@VB<(Nz5YD`kCOSTzuU@=HOMn8!ViFQ8T z`5&@`@d=*MMtR`t-?{EOK@5ahf?GoS;Zf+bUch-0ee*6nzG+arT8blt1jQrF@6Sb9 zkWk=hpB%UsuURCGDO(UV9~Izyv3we*d#=s&9CoW|;JQKNe*1}1Qx&tbimXTNK#eqO zwa({XMHJgs1X)j!`%^kbpwTO+kW-P@!t-T6Xk=VKz&akGzx=aC1K*wJ?Z*^4kn+P$ zW2(TP8lX7Pm4~lE9#}W6b*?8`7GC0 z&yHKrY1C8y`RseP<}J|jEyxbAHFsEUy$ndA`CQdOK7&yQIWv|F&397-qddT1`~G0t z3GDB}3CQwKqYd0AMmzu9`A1~b1tAogOW*R!Td;ox$&qZTX3p-a-gW#~tc8AF;peBK z(=)LOvedQzNBFTIiYNw1k?{KbgHOEAM2n#33mw{~iLc9Vj)WDl^BfVvvDyLbp~$k; ztSgz#bFBx|4Q?rT3=cTDVs>4uswZwNUW9+cwj}Cm8Z?7AT}`t#O9AL1d&~=$kLUqY zBg)2c+rF*>MB?qi`D`LTq=X{ajiA`fj$q?BZ*Do#`Fe!U2AYN#zFZC$M`=kFrLZ!+ zDrKGy67#zDV8B|%v;f*mNv2Y0-X8vgcb?Hom==7~`*I%&lM0VxfYD=EhYjd1yBIuu zaM#u?H6M67e`ewXP!<6s`&v^d=-)+WI;&YWoVBS~EFW7PAg(YAyoN1y({bSuL)pqM z6BBlyqD9Sc=bPSyqlw5hxPE3g5&+ijne{wVt1>K5l zdb{&5wh|F^du;UQON&#}0ZcriGzZ-FqF7NF+K5?KdE-z4RmZ)UsJ<6Q04D@;mm4#bFEu5%zC4wvbNN~6kje{J6?bi zY`0a$37i{{OG8={wuXOosl-*+Iefs#Qd!a@A_R(kO3{yPWm?IsMqY>(K-1X|2g6@f z`umaBkzFHz&kejOu*M?i5clsC5-`Xq*}+6R)p}zSx3?0S@QrVrPnBej$y?+MO{vFmNv0>`Q&85sxwH?FZNVA>yV(kb_x98I}veyd_WAfh=GT$`E4w z!UV#LoET^DFGNZnZAMXGmcc7sZ>Dh;YRHoMTLDqPRmkfFLkBjxKv~V^bmeGo@8zwmtmiO(q5L`By$i$I zk~x4{11O#xaR-jJ%DGH((^V?jGP01&4*8AlP33RJv+W8bDm^@v!H66PZ#2qXo&g;kkB@C|GY>-cA`K&94}R~0}*rc zc!r7wY!lyCnDvnU-`Rna`tHDP$zKK3-aZ;VX_NIM`CbC@7e7VhB9ID_bC9wkiGP2g zgXAkCCCt(#l=BhA{*Nzk6uIdC|L*C`vi>#lYSsQH;LI19Yv6j>zZMg*3YHUqvLl=Za`CtshRe(U+k6T-Y-7eo=FuIE#QW&m|vq( zdTxEm&VaV<(+v*)lJ5@qx0f!Ln137Ql|z;y``o{h$_# z-1!F<8QQ=>=#CJ-2O8F)N`He2-B15I1(0fFYUkLMVydQF@v<6)6Yn>i z3hF)lR5@m)Vv+Db_r!L;g8BI_Q8>Ls#gD6B=rH~GV5&WB5kaCT-!WpdJuR_+%4|FB z#N$r7J;hHNW+LJ+(}W#qX4|RG(ZTd&Ey0M$shg-xdY5+(g0i4FJIX9G_Cphw_`ak` zOrq$|6jN+ZG+5?FH`na)q;&oz-ksgEjQr8rEz-`uJa>1r7kdrek@58)CpN?*cJv;= z4tnt#Rb-~(!|m3m6BSC{OT}2?8VNH+C0Ejw&IJ@*B4}RvgboLvbb6?C`a7skmw+5T zg&jk?+MU@1Q(%+ioFj_tp6yFx0VrMUFk#3>Uk+MWpfF&nfAEPX0s(qUC93)*F^J@n zf$lN~@FBUbYmpj3QY!$MhmeozLri~>&&O)u-0>(@u$>z?lDXm7ER@&OiYOd0?(%FC zoE9GV;|TX+JlSGqiLt372PxxJ24v!jJ`9cXpL=8>PXy{ItMJr8;egkH5iuF3LB@dRL(QTY_)K*%Df)* zUSg>@MV$t6FVI^|+&!lj%gE##cXOfh+c)oA-PD>4nMQV4g@c7UhoHm{_1AjGn#pJ^ zW%o{~WPD^!!Qklahg2Ndklj(tIqEJFW&Pg>Uob5=O0MhnH5WvWYg ztJ!B@qMG`Y)Bi>u0=3yL>%I~+HYZUPxn8gcYXAVz88Pt1*sp8KnValI;@n&GHk)VU zjoOTiNQCWGL)Nb8JyC&7izs{PJ$d3*whUo6a60IxH2o)P1pQ1@ibgAStq^x*F_z8t zhl93qMN&Ez(L-Bb6P)y`s$RuLuZA$O_ifk1(;ZOb3Ga+nvJxxclSUep01&(C)PP_xw;fZzGsnQt67a+74=8cJ=MLlxpG|z z9$BqniazCU>+!_Il`6Sp^_W#2+xLDyRRexe=t&=`R^HQ&s>PEh_VroXKy~u8FO{Um zR4(AB7g9l)n#8V8)K|k4`d=fT^N{atK3|*l&Ol~hqRxbJ-58&>GB9E=-NI|wJk;aL zjq5&M)%Lg{%&j_VHlQOujk+(B8tf&_saj=a8+Q9Dax*x>cnh-WDPP7}U?{frbi{G7 zeVi9#@uKqWkdZ)sRh3X6cKb7>ToV1Y;^tHq6{WBdL>7T6<$^{VvCZYYE0_Us!>vLD z#RK{fl^#HvpXStDQIKQEi|iJN*~&R-)NrmMnl)Ug_00y+m~5z)jZ6!w(ZNq!blbMj zp6N`+KU?g*0zQT)xr5uPfAxV}uYY|bkIm2qGHT)tgE!4?cc2isZ6l7-7IRVH>-4mJzz9xS%5 ziK;A$wu#Ce`PB5rJ|a~V;rjL%HDhsD0~WXU(Pw-&K^KlNH;TBBuu)XTm{j7un-Sr7 zc+0?u3xxHbeYGYgyrO8ks zqbQM>>>n~nXeh__Jfa^84EGz@V>9-Qr7PiJ$(i+IFQCAbihV!=Vo1;0VJCppmtk9B zMf1PMvJolHq~fVTSHnkzTi%$G#EGjzqFXA~Lg^ylL9H5lF;IUb91a!xi*{yaXPAb@ zs#(cQ2U!ihefsCZ2gqsk?fZPJ!pX_RIkQ?}xP!3X-;v;^Rmlq<2%Zv!qd7V1SFmK^ zBP&56ymBOr^~UD-*qI@7T%gYrIi?C*Z*c?zE`+|}x|A#h#ME^g1V1LjsUbKw?GRWj zWu2ZS-$4ZcyM{-Qb3@$#k_N?t?{>>YEi=kAlLJ-kU;xhMX0FP+XP5vbQPGm1M7Nv_ z5IF$%%(`+D-eQJTm$e(_6|~PN_09!sg-J6B{t}S zU8gQzr)ldhcNCE-{-~V2@|1wh@<%s8>5CYk*X-!xaTi5X_xNHog1>$tIJaHE=`jv^ zd6Z{=Q3-O;^I=31}Y( zoZNCQO)&lI2UWHX?LI@4$n~r60Z9-khHW?7=Me=hz}H|8AM;d!6XqO#S-|qKbXk`z z0M$#9=Y{#I1#2dQJd9`Fc7?}NFGRabUWnnyPju1aqzi6ijP`;weIX{~`%YP%|4qIl zh}iAy1vn3MeKFo+L}pn3`qFULe4)iTmr*xeW1{It#CSWkuG)C+val6#&s{p~;Eqd! zSD(+&jGO=M?84o!8Wsheb2D~_I**%?AFH@$uk@B!7sSYx8_wr@+UfFq`t-E$0s3Xu zC+B6zc=*Th)T&`nbQq(8j(&)hZgmaIz`b+E5afWNt&wS~rF)j%_XN zutO!6KGY!(V*4

BY{=wtTlfAdMMhvn`ujFIpPcu`>wC2}V)FW-5a~_rT`xNgLaRaH3Q6 zozG0?gG*!II!i?Ipa^Y*bWZ1GBd_1OvxHrf^~~`LtuEaSGy^2iPRpQ81KJM&+8L(v zIBa~mZS2>{Yg~Nw;eoTvl_$~%c3D9pg-|< z9CWq>9*sRs-2~S%3bIa4EHF>mzl6GmizZ{2!qMh9cG860efK4GcZ%p?w1K|I(Cz6> zFRjEkP20L&x&MhSY+@a@722HT(tf*f1%L3=I#Z=$edqY^U}>ik!O7l4Vw^m5+2RW+ zyK^nBlnXnBnn1&B6q#9m4jr~)<2!+S!p*uheis53+PlW%3I6ooX86WQ&t;2tn06ok z()8ny`M$@kFOt-#AF)7$_3^cNcL@}b!g{grw_-&7-YGNyXcG2Ll8257LLeCYo~&Z8 zp>1y@0(xK&f!}q305|!J-7-=21D|-^T+EKMX1FzPr;Q!FE)52s|EZK!HkU9X5yBtT zn0+-WUOqT-F;z+`tA{Q86%zAJ7hwBg)=})i=>X_8-@t{VqU2Fv$TMR=pR#d}sT<*_ z3Ci=2qi@%2Y)4n>&kQN>&}Ki8Bs3Z%l*)B8EZgCE9VVL;XI@8F-Et{w!zF@`AzZ2$ z4@^n2pP}q-Z#@5h;8iGS`rq}2fCO}BudVQ`0c3){-RH2X^@~78UW5oQ0`aN4UyL~P zO}~jt=b9HH7{~BAKo(%0JnJYr&ntjm!8^^Zxkil zP{fU|>#d`URKNW3I{eG9RBY(mh+M2e{H@sln$kpL&s|AotdR(ll6UPfLf9zbR>z45f*(MxFw}p##YX88$|;2m$@F-1p8)5d@+RW?lNuK9&nn)ZDPq`BLYL z0gFE9A6^ip@gaZb!{<<%dDh@1fCFX6^dqDBn*Rz&x%UcY#qT_1jH%8l|I-4OGAc(E zxYHN>VJ>A^ATma-Y)0f$kDDR-&>D$PT_0k9a{vTp{+OV=eaTd$kd(N4za}8i=j07a zYt+Sbkk6y+hZz?T_7{inTxL^v`T<0P=>r&SD=2PgZ~@L^`K<^b$4hJs+9I#_YsBB2 z^9Z{4RVh3%^{TxdEoWQU?h_3>sGe(OM$U?c4G03*f$U4haLyxT|Kpc4occW~W-*01 zOh!ZnGj$^P=g$Je^PuIhpFV`YP=?CG>F*1lrY0)Jdjazqzt?V{k)cakmN@HD7VBdq9U7q09YPIz0T2X+&y2N5XDwe zJGD>izM}sP^zb2z)X#g)Kpv}`pT&ZrP4xfm?#tubDz5$STwh)`-nfkcEq^vevrte9gAf;urf> zhN>=DrLm3})xFDXHY+=sZPlA_>7a^b+_-bay2sXa7ne$2olA1=Y+Y$mY8n1xmOJexY*+nA}>-P8bbqLl}%cRr4B3o{aoe-0S=g)Tb0nS4a$Iyrai zv4QZTmmx)XD0vuv4P;Fk8uOPQ9*jz4Y%Z%1wu@iFWIqPi!!&SNEC7wK(-?Aw* zY(RX%RG5LC486tUH|F{`-TS$Xk4fA+|l(N?ow+&VN+CjKDsx1 zrRMq?R?vLAclO!b!u<1wH7m2L4%ZnCups$s>a~?~$057+5SMc2qXFukqD&PDJi&G) zE_(chD)}&sO@kmG7H>>y#lNxl#V>Ar%G+2I^;tdnXwPty^l$?&fyHxu06Tk7g(Vjiwgx?)z%BUTzhtz zGUB_P=ig{my?@E)j7(#K>KIem;%!b7v{zyF&e=L*!37eyV^*1Q5NDokHL=s1wW0%u@NyE`r#a(sEHbmxRT$uK3$s1cE^ZjN1VeXN!gAzyE@ql>Uv6T zyk25pfgv@7h znClFf#WpAiJc$XLJR_~2+l-rj-V+K_)Q&jveT#e?qy=CKTq1ki^n+^_Q;KLRwHEv5 z$)5r~(nb3T&oTK9fVk!2VioRDz3n#Y0=TT1=9KCC4KZ$Ed-)%^*-%bR_w$+ww}jdc zZT+xW@L~${GM%LGyH&A8E^myZ@1%MmI=6j(69F3tv~EY=3)P|N_^iAZd^FV|IUoCt z$q9u-lg*@Rbh*@O6V8IKR#$G;;V?(3m@?6omu4aXk{9Zh8mTCL%bB7)WJTmP-h z&?&yzqO!KMLAXw%dYJv-hYF2CGHBGv{3O&e*?r40)ymo$9H}P{u`jWN3VMFD9sz}Z z4ZE}Lyq6OJU@W2BWl2uz=zM1#6^95A(d;tlACv0~FPt->tNHjQLH)?O(SZ!7rhI&b z)~nQ7torpUb5~Rba$MP>BG=jx@dhB{rP6G?(&MgPRouEFTf4Clwz8Yd5R$80@ygH* zBQ~G0t5fBNt+(M4oocWd2lF-R+T191-L=L~WH=`~x^|0}IDOlI14?}y54xXh*> zc3TXNi+k4W&(*lYx?T1s3Al@lHM$*!>rsAX5 z{DuwYp-hF#YwpOHeaeCj$9gqcAyBgR8(NZoW_lQ*&7$kVM73VL5fZ*ym;~ti-0I|u zoQo}J^$Ta!=NEE_sI|>e;F<|+rxf^nG<};Pb70O%!0uwzDK+b*1pAI zaU)3{ldLfb8uQ~iked(Ij}@4O1B6L6l%Y}!rJ>K!P7~^5bznxpmw>Q6$Y*+@ z7*=H%bss2zVWLOHw_2@+ZzYq9a!>voN_{Aud0FY=Qt$$t*VWQ2nI4n~8st-Js*_0T z4&JF~tQ`cmS2A6p@6yh7*ST@g5{;XpzOe9u|_`-Q5u%UzvT38gpbvUL>XLeqfN*8dL z=08}h2A#!OZS}Z{{DF(?Q2nsx;$%qA^jfvk^W{Sq-Lvgr2CK-=U;Ig@EBAbQ_RpLB zE=416qtqRJ*g0eT00ba-iRsagX4&-4mw$j9Fw09rLK#Mfkoax0Qd?JCkf+VFSN4RQ zW&Vn&MTavwGt;hFp*Pr!xgn{5!UGg?jAZLZK)ec$jUaSFD zLd)`>X|FV(OD|vi2U~IW($iknDE5BH#!Y@6dp$<%QqAA$NY#_)CBXl$q4|xItTg^p zq$rQNOK6cZF5U_>iq(eHGX18B_nawE?Ugkym%F&I-D|EW(b$6iYHBQ{uAw|DQ#2~e zgW^X5rD}v%Vk!pzVklyxt z$zrKreTGQ6T8czifs`At@+Rii*uArb<}1v_I505q4l4IonU~9aMee`!mHG)S7b8Z? zWrvM94)gVw87(lYfgyDB*3OlyI=5~%h`JxNE$?jKx;evOF-Iq6n5%VnaLOI_QFmWOEc;zigo)!6j_=dcYum_^E*I!PnLVi zQUb&cjMS}AH)4r=h48_+c|r7+dO_~ZI@sla8X)Z)5)X0vvd9OI zW7cAbcR_F}!y{UT-GYL1;sgoy?Ge9TK5(Bf(W{6SngePIIK{R3c zg?m)#I#RXDDjvQ8S9y_*cFiofzRVCn8)+yUxDOpQM2}FSctEmn2Wqizq2}v#Fb`JD z3NT17z6^EtP27c^E_zIDy5R;I;}`Bkozu*gr3J)9EJ9_meIta! zc6q;>368UT60b69VT290Yb41?g;)fU28CIzn4KeIbK$dmEP<6R)u(S#;zD2*D~EiF z%8Vn#K(m`|bu@#iKJ?wadD{zD4cu z9gsAcPUpeKYA`wM7&47>=dz{@qau54{rP^UsL5>HjiWr;sgX;jiLN|1A@M9uN$B+a z>;Y4flvoQ2#xEEW@4>jI^xqcyn_Xqel8ems9B^x`N-SEm{tbWXZq?hF*`SAM97R^` zLr$k$tS)24geSwUP}!Q6?Q~*>&Fe1T+nnCDTCmDPaDW-fQzc%u{R6vJwnBf{ z^ABV)P5%TGtMxr$cYapUk(VT#q%<-vf|rTOn>zj z974+bR*zxds)F-bzM$Z2h!8?j^z-{xz)gC`3foq+X_YFAHm$UG-JSwSlEU4vqNMK* zd-FI*v}MKgS8Z9mWd)eD=Dh7IEmoUlWeO^+^+ZsG%$qAorw?3lvBjcu;f8P4VsN0H zy$^#U+^1ZPt*{@m%?o>cXF*o7UEVTF@$Sbkg6tIboC#|ymSe6-lzb}M(omiTeduE; z9*|}QX?OlZx*INh;2{@6)Aa+0hl)C{pSbIT4S+qv51@axP_7_xTzN%Xf|Dlnkq@~B zW1L!O*P2riOjuwzgV_q|S?Eu7=U$^FH&`t9h%_!J**)9~Jxhp-o^$1vd|qeJ8T!{@ zsjkXy>DSqH{ryUVLD}D*qN(qpwdA=(>cAO$oP0*%S19HO`K{1L?gd4>DAr;uKZbpL zy+zyz@BL~M*k7<>_e-te77Z~ip;HO? z-J=jZ*VC*3wmit2tb(Nj3j{s$AjYbheE~0G0s8r(Txxu2tBCGQNDm_;RWB?vl6gej z^n^WRLvl`Oq%2Gsv%kVM1{t$202yG^m_a;@IbjFRMhYRTSuHFF{qyFgW+s+_mIm_# z4X83@q1WtU3h;U}-3-^W+QHLmSe-kQFGD}Q^O}#3#zf}g*(4_4O}@Y^+{?6D92c5yrg`N&^j^MCe+I}oz$8rs9pY^0+;O03*?c;9#W-NI z6y!P1zt$jj&3?u3$sL+pmuAN&PY2``1e?lsWdT;)sXph{>y2ZZxOF|AZn+Z75Lm{KPRMDeEu zmlMUVXmd{9-uAqeF8Fk|Q0wcyTxL|dOUpe$Tt|EwIz9pgjP+}Gt*UR{44ozN78R{- z=t};fAb_38GB@m>;}`@xRp1JwlLWy4nJWMuhkSCgjrf2bHu~7pIIf8jKM+40G0 z?P9gGunU}$%<Q-K5y$4pzyUQ4UyQug#-?YNE?7n9_8XT>@F-s6dI*T zlROGet`~4l!G15;Xdjza?BG|t3v#vw7U1w>J{tP7PNST``bV6BR+{RUr2GHN7oUE5 zODx8I3;&E#tHpN;#qNXZmv24&bZpBOs>K@N8R2=>fb$z6ykzCPpk4ROlEpC6D1;35 zC)oPKY>{R}wKV`Mn-1GiS!^O`pb>@HGe0t*Wvh>-(wM#0{J4NA4a$ONaq-eBr3&Uv zhR)Y(+{Nwf#cn7xomW!58G=WQ<%-{gZk_SlOfsqpA&9OND~>@h-R*C0_q(y5tb8Qf zSpi`mBlYdvxxXvM*xv*-=TkzF#iPtpIvm9JAy$$a0HENXi4G#q101B90$!%VcaNne zRHSGTlMk>>VktDY)Z!Pvo6nwl8JhL5)}?|?ZFsaVf3C3bJNMzEQJbu(PV9n8smL}3 z+0p04=U55!7Pd`gvWWu_UNW#514KLzoNu#E#$Y?~-Mk%5y5wH=9KpI~?hWC2#r427 z={yRKCHPjH3qio~t&0$#D=KmLM%OzB@xYWgd zg5aPqqPzmKvnecaX$>$kP&W2!mhRpxef#Eo-A}LYDL%EhsN{d1`3*Gu2u^11opO8%T>A?3f8@v9+w?EQ(JjX_^V9 z#Y~hY7E>6FiizEN#eX9Wb_>)np9}@9r6oIvE{W06&`RY$18F31x>$@#AAetIRJ;Iw zb8;;&erd@z&L45IN&FHeXNLZcg`Q#epi6I5#A15!Z6pj~mV_;QNP{U71bJAv6cVJ@ z(X5cSJdGe>0DvEmPt|Zs8g-A>q%ZG0cyHC^Q)A6~lU8RulzcDwmqW%&O=_Jf5*}8o znww%Ko!Vr5`e{r8Dc?iL_i{S3=Q~GeOo_K?Y8EEX!(^7F*BSLqKW6%un~Vl4Q#Lqu z+*H%t61;hbqXC_Iht`= z^<){GaKL|bzYKrF5MIOOuQcj+81q&3>I~QrQfwxLM{wAIW=N=L2W=v|ax70Y?wRV0 z^!P;Ri8Hox(tOn4RKWC8*Q$D_iWCYQ3^q>5V;nF4Es|Uh6UOKo95pm>2!C`vgv{w+ zjF7Gz3elxQ#QEq)CVz-L5D(zspJj_yku_N1!~#!#)!>c`rKnp|;hP0@ttoMq=i;1Q zDSmX7(xg*V3{?fyqy9-zdxf)1{&00OM7Y47^uF$n)+vk?fJ)H_OG6ft6k2@d8FJWd zHh(RH$x=n5c{ZOU0LQSus!@LRiMr%tEcrN2J9P#~(!oqSOjwJ_FC`y>P49 zcr1GrJk|-D#ME2TjFc8E3mmpM%};aFT=OMb13aJRrReKM(FhrkOfHwq*F)LZV}3(S?uN4^3rgBNEn zV5>#8n!TaJVnvNge2Ioc7GWDqS~Huy3q$@wZLIucn1~*Ih_4We__zQSG#WzKt27+2 z7r&>};SBaDj5`{&CGtR_&k!%3QmE`I#qXezm+X|s0oq@$2iytBq2+U#EqU2VT}!iQ zDMAzx4&j^!h4Rz?`3aqTcnF1z@krA^;}!R1ica7CdzaOh=WV*ZCX&G%-rK~F{^)jH z>9W%O_hqY$&a2PsSYx-`dtonb8hp%dFMIiByQ_QkzPs~`s*K_8_(u%BH60h+k=%Lz z+cst>c;X6gX+!n)J0MAGJs7(d_r+peeWmyl@fD(+l)YXoi?KqMVFtDdR31Xi5%2gB z@YL0K?TB+=C+sIJt+nmAEfY54lo6#te0f4Rdf;AT6dNeUsRTvn@NULGt2tQ+OGTgop#EUM^Z7*u5w88XiWkXSW?&TMWHuaiu zB)5IBr>%Ly@AMSGaA<+k-y7O;-qWQe4Nil(x(CV?yyja`^PhveE(5cro%sRRshO~vpoE2-X4Fu`~rJ7TTl()z4Sr5j42U&Zt zVZVa-2HJzOLySg#1vC#y-yKZ>DFie`k3p*|sjtDcz0Cf7iwWw7OgSCOsRC!|F3lC+ zRwuuwc140}XRhv!n<3qC8M|E6BnP(HGqq*cexdukMwHqz=Vqb&Eo&)+K*aR;r#Y zHfdg5zq^Cof1lq*(oJEM(<}Z&*dkzoRE)hgq9=@X8Z|mfU7cD(0o+dosmb^*ils{z zmb?*gn9`y4Bp!i1W1t5o+#riohIr9nx}|~8daI~`R!N4Eq!-yh83b-%!-bkTgRUxu zMUh3`bR=d1(?cYvbjzvXTb1uwHLy)JfSVH4t*wwTRfw52%~Hk@C>20ZCbM>xh-;)u zJVqQ8sqVjT(aR2)5J&8sHQS|(T{|)KIoEF2$Qj*#pT@z~7)*}jF%qZ|CNTT!MeAo{ z4uCf2G%u2wkZ>4dJe2J|v-v!wRi{>bu=rx2JyOnN7M`PB8|FDpaTA!&*=aKa2lOBy;&f($Ie2C60mP|i5lb)Xd z;SL-wj+V_v7v>y`ra&|q`BQp|vG3H0&&}7B+|sY2X$XheD7-7aMN$p6rPCT19ijV< zi8#;)`t&etwpNC6v;QX&DA??GWyGPtAhF*U~eZ;`%&=W$(4BRpA~VwBd}( zrhVBrTzks=htEFe{;K+`tgCI~r?C#+898hB6LUXBTl-#BOGd`~Uq7Al?1Hv7Gh?IR z9GYXm$H3fQ)tM+8C$}F`BYMEBikwZW?)_&zj7BtM_cR8Siw!Q@htW$rCrbWyR+u#B zLe|-}*UpW{`nfmNnb3funMi8eWC_Svw4lEhf|v_=hlb9Ns+7(h1MsiD`mYcsNyXs3i&-=NF`wMbZ!NsdW*`ipfZF` zko;Ein-;V3S7+8U`g@`I_65x$EM_v!u4W|9Oy9(n+$M}3n+U_`nA9))ZVoAWEP9ON z+|Zt*NtjiYzqBq-&LcRa{LWcwwBpR|^>A86Y98@lJBv=$+1f9~D|mnXzv;!Q+RoZr zp8V(ZVsRrEtnNR=b%-$FV!{mzzPJw-J8Saf0tQ6+j2r>s5Z%en=j51f)!6yaO6%cN zvP^gCyRS*48Ka$sUVFCqvNkKb9Ge2V@@yx@KQZ}m@)0$Jeqt)Ed+_sb4T8 z&{7pUzNy3ca@ zk91d@u=yhh1!iok@_$y$OX$}j+{SWY^L(B7Cq=%ZOL3XvmoPtErCg;vPx%q$_hD;q zqw4!=lX^n^vZg?DI~MeH+KaVc(Edorbldd`{WkrphUJD&7?Q^GjlVQCo31gPFz+xY zGF%zEGoH5OSRToYWIkcdvhKD%W~;O%vh-O4S-Y|hXWfgn)i6#Z2m<4y9GT3cN8QG?S*>_zfkxE zsabkSdLO2F`rOyKzwZ8T&pyvH-UjdEMVpI0Q*0`3Dt^Nk_ub`t&i6at|N3+M&Hml~ zBmQss|EHw1WKYSRr9$aI>2&G)WgE(#DeozNH86V0Zz^zY;8J>K-z%HEYv zt$b@`a#h2sy{o>k>Q~K$&HJ0b+5GpG?v^Jb?U8#UZ$vYr1JRqJZ?*nsTV~t3w$HR3 zZx6QL)1m8F-Z9qkv5qfynmadlexu9UHP!XWuIa8HcKu;>;p(-k$5wy2Th-mseYpF@ z?zeihJ-(jyp2?p3dVbqm*BkG>qxXg0|5>wU%@^0Y*X~*SR$o!yVBeelrvA$Qo&D4O z@2o3dcgwoB*GJbsKaf4}v4LM~DBA#eQlc+%n5mwK`dIdu& z4aN84S&t`(rwmWtB0r@o=iyWa9^|o}@*$VKg0kSp>|7GRE#!$mhX17C5+4+D#E%O( zicJ13hm8r@qKJ1r!Y_h*n~;w*^j?p+F7BQ{x_}Ty9!2yGk4>o*tZ*H84B{~AU>7b1 zEK~Jh9&I2fm@tTMZFt`%-pO%)3$F{o`jl`5 zT1~<`4?~5MNOIZh=mO`#~@Ctmk+Wh}w{UGajO!tML&22==h@ zR)pDL_fde=M(D>Ozc9O7(171Z;V+@~KzgE&Ot@4ha?|hm3u!HM)~2L%1xI)?^3?0Z_V&G(SvtNzvLmjaonZL8s;>m zPql$UfpZ7)6aH1Aa1d?r2p)Ud7s|X;Sb;j{!lk|7Tn=YCZ`sY`{r@27 zmiWLyVS>AN2@g|xbr+r;!hj~q{q^wIYa#-yz&an>Ep7>D)6K z1Ls~Kru09ShdV3&ogJmoQapnD9R%THvdc~g)m-y49aXqm5Z)zbU?;xKHt* zq?YtjmXssqOK!<01*M<6Gu)YOo7?HmbJw|Vci-p!lKW}*H{36|f9e6N^{6~rkHKT} z>Q_LO@XJGkw^;+|2@g`Uej*Ltq^+~m34bFb$C&vTv^Jnwk^ zl8=H-}nDkjtmq+>hEMQnmRx zug(9WHtSHE=fv-duZX`?+_I=P_bMKcL`f&vB&U=oNvEmJQPk!^_fzg?QJWv3HX>@H zL2ay_Y)^iwHvSLPX2f%W=Q7VVoZ_IsT?(1_;&3$$5@wsDj({o>(yLIlSxx;e@=9=fEWYg@IXCIlpXZG%s ze>nNp$={v)&B^~d`Nqj#ojh^k@QFhwt~_!1iAzsha$?_!UB|zD{Nu+zcKpWU*B`&` z`1o<_arJTK%wJ~yH1oTe|C;&Q%vWcgnEA@gV>4f#d1U6_XC9h)aOQ!T`)58qbL-3} zXFf4=^URGiH_Ti*bIHuUnbDbTGh1dh&1{(Io#~#bnprlZpV7Vkm)Bo^z5lho*ScTp zd@cH#^A`{N;`6WiU-iCP@M`|gUi;a&G|TA@jr0G?^uiO3k0g|R2abuNh-?z> z(L6VW9y4dNNS*|*H*(CzZ20C)2z`U2L&xllVpb%SfrO$wksTeR@)GuFG!?-mjYx@S z`w~ju=3^zy6m1)BOQ_oh-3dkU(7N*m5!rQQP)hXmA*gxCB_-;~S3fi)P0O(XQ3--l zZ&IR)zE@GqXZr>vVB<(!O6dCrV+fJxo1T0j@`Ylq*wE0B3)o5+qr(Yd-C#oKrpRu* zySftvvP4|4GnsS+(S~LdHo>1xd<;QP%09dKtdNSKZa>1$GR4;-iR0E;*G=;;`SX0 zHVi-#nzD+7E+7%KW>iZlY)2Hp+Z-FBD6v)!tv+x}XBMJukuvu@;TQr-3CSqu!pZ?c z6jhH&ZAZLuYE+JF!9@*{kX!&V4JDe^8*i11Fr6WJ0<-Z16337`s+l*ov#rkcTn7D`y?Z5`e$yuC7!k%c2g0uF`& zcp@_zla9osL?+Nyk+2532L`8=BdtS43DcTPTYA2B)bX0$q_KXkipa*#x-HX`!WX!Tuk7v~6AKt)H%C*;LmM@PP`PHcbqjC0<{V2nQ-1jTMRd zb43MV4_#D>&TG~ZwFY=AO=2gU5rTejAds5!^^?D>;1bMDl8cnK{^Gm3`k#uY+5hI?`+&}oJQc_8-N0mNR?ofm{ ztsYDp9+i~Q*oZfw!k`Lfr;Ns3@W+P0A5KjZ2Wa5`-u8IC z%Zn1)QBOF$6y$fBLI4P{WHp!w8bbww!w7N;B*-yNqZI+6z~2-nT__90(wN2tCZ!3L zFNF(lBhb_||0$sdGm)frZwD1ht++D%jaNp-bV3*ytdtrtpcC|>9EeQknr+opy14r>2Mo63fdMM@T117uXs|tSCPM@*^5Mf}VaR*wCPr zi7J5D#;Z(Z?2|Dc#{?}RSDnb&i=I}Ao+nqRJut1uSVPp$DgPfM>5kJ8*gr$Xgm24ay5;*e*Q;*e(t#Uam54p%FDyEt6r z8{=@1?*a}N`7Y#ek#C&CMZVn}F7i!qxX8B$IBuM8z`gt}(Tool$=()tCkg2kEfK-n zK8&^SQk*H-OL6w|IP`(yT#Up`^SNHa-*}1xvX@d^DtjsVWyq&V&hm2EOA)S+y%gai zh`Vw=zbpA0&+jVPOVO{Ey%hbUNV!tZ?;6=l5w4ZJ6yZ9=T{WNILH@?`J0yE4`t`Dx zq8~=eRdRke$X<$YMD|jI8w1A-d}f??YD6uxw(?oQnf^F&T7w_%JQPI8p@`prejHrfWU(ER2tL|X zf}O1|!w%m{{{3-$f1Eu#_t&`^9*^?X;Z|tuG%0oP--Ac?Z32UH>qLlR!X zo_`g74bb@{Uo{>H<&6sac-#rRtw+o;giOF4g$$qsi$&zGgoebqa;_F?=X0({%5Ib% zM`}rEK@M@qIgJXt0a-Wv1Mm-GudNsUF~nJi_npFiVI1$1LObd(0m#XnMEEH32m%Iz zcRA1bgE>^3lE>*vIW^8kj1F-Cey9f0k7-dXe%wyFfW({z9 zE}SgIHsSNb;+tBn5qC|{uM&8Rqx@aM1#l1GUB=5wK=7|?m!&0Mm}1lyrTYzk7xwN->F`h9_ zwcGKRN?pK6oR`=l^uwjrTaLV_KTZLj<&ZI52Iz+Y@fhBx;IG6(d8Ki@43M{@2LDVN zkysD-(zWO}r}>97X$|-752R~*qqY=K7(L{#)ug@UKT9Atyq3%K>`nU7r+N| zpwHlf^^AO+=@g<)Zpf*7A)8qYUg!t4mf{@096X}}HCV>^OAvje7BXzGG66~L2Gn{5 zXu3&Q2~EdlaD@nZLmTSY0e#~xVKu0u2OMDy>fHydtwReA2piBco4_lEgw4Wv!ugPw z+zP%C6XG}zI4B$vZW6vITr1on92RDTqr$twCxjcYRX7f#3R>tu!2lUEG7~dH{nWxTnU&dC7RzS1*@ZcUW5T20%U==xLwHQM zM);=i5X->{y^G~RL$-hwGKsmFhk02M>~r{-pOwH=R~aj30an2(*)mo|HhozQt7Ua8 z#KNqeH3*+!%h?Ln$eP$n;T^V$HM17T%|}_Qa4%~UKFQiy2kT^A5U%fLJ;GhAm#txI zS)Xt}>u2lOdf`?`2@J3eY$Mym2H6nX%+6!yvn^~Z+s0xn&bG5*Ho`{P4z`o+Vq@$A zb|D*QyV(THnC)d3u}QX%O|kv#Vs;5Tz%C^TSat>b2)mM9#ja)_W!JE4*>&t7JH)PM zhuID62)hyYCVZUTglox;vQOap<6GFRn*9@FRaGrj+zr-*WjET8a$8bvMAZ@By*tj| zY8q-)1G`42;_9CG?(HLSad1rR8&j+czdBXyMrftEz(Z z4!0)d)~4LLlp9L9>G&<`-D4B`r$*)ARt{aTx~g5v3}tmo>U*k|)h!%p!RkmM|ba?x^&;@ zly>K2d}IuPn$hvm-Eg)0_7Crx+7+MT83e24<_K2H%@C{(8RN)ga%|s)yW^=+g4J@Z zgVhbjy_0+P?wOn#+cOa#SH&lGj?3*645so4*6GLh>>L}8kH;rQbSdwiN#ocAGTk>i zOes|WdC!Dq-`MW4@wnWK!CDzX&;r#B@0r*+xt~BLf(h2jC=AwB8AdPKKXx%1c49bH zYDh+RFcgvFhEwn12nQ4;?%xh1mvqg1rY}_G=^=+qP}nwr$(?9^1C|*tX7p>YkU|Rjay_TB|yF>U1UU@?v5D zAi#gig9QNpzx#sB|Fi%1{Qoa`WqKw6z~bmXukwE|5bcxVG`2N#001mG003Yt002aV zZ0}US*v*9i0C1}KkHhsJw190f+07ixZ2@XBpBBLOzc5i3*0K1{`Clx<|JelpfdmQz z0^Y*b#p6F-%zv@`#{+elC*ydxu{ZvYXM*vckNZFH^=qeE+ZuZOcdzl=|7i(;=HTb; z3~f#Si}}CYfb##-dgxdCCOFtTy8r+#A^+u71^_^asJbaN9Tqy4u;eOgen$MYFMjKr&ti>na+jqz-Ybx;jUT7rpi=M zufa(yA-TkdCn1q)EGvM2_hiax`gmi(0EflrdclzrY4)wlE?XoOGM65Zbzu31KryOv zDKlP~=VUIvYc(&_n4V2Nx|(ZkU{Ya`SLxl|_7eInvM;JKdC-~hF59%J{8gZ8s*xA(-Zy@VkPzVn;oDCiUoZ~y zd`=a4_!T~VIKf`-zr{LHRR`Z6oArG{z)^ZL&nGLA+uSoxbS8Ol`V7aokBT3Xo(hP( z+9AA$K0@4d8K?G(+Z{kE=#z$hPB}TJAG|HIE* zTQ)h#44y8HVIs_R_t=|UHjp!==565A(?KYTQlro?#(5^lyUz(WLb73Dy7B!}-xD1P zBH1c+Te}vNYtBs%bFya8%x)LtSejr>!emav;;Tc**d7miFAk0r&T!Ij7OY$jnucxy z%HMehZ4oCYujr8myR;h2H!=^$hH>=^?wg_l19r=c?+gwXnd~g$Cboc^n#T;Gt@e15 zn;uQUSO<7RPYBQesCs?#bF7jh#u$!u`;-2GfOQ>eAgjw|dNTNpOt#&dof28b+4b-D z1fmEtM39qlX9b~H_kRdEv@cz%FS=d&YVOA|qbvJy8))2-CdMgS5Wl}~c^%9v&l3l- zS+#zbDbs7Mcu{2*_CV!qJn2B{UA9m%FVT}&&KZ`nx4;WB%$(@KPfUVSfPtjFo-EwJfkt27^E z8Z)JXmXhG|m;gy3`tV#s08jr&+bll_DV@5LksaIScMWbwYM|7_m z*q7eiB(rN%wd`+50sA4=p8%zW24;l;l4=}Qre-<E_K3s81mK+|tN8@qM z@~FGC@FbM5wrjISp(V$f=I=6`o)0`4&8lfVAS#R~s{pImvBny$#a@WXCicNcM3rwr z`-uMJHht8Q6Am=sG#SWExcG^#6K@)Ywm`%UXh>yIZIxgkcN<5=Rp4C$Hy4XsKO|q6 z8Ah@dL1L9~vD(b4?ty|*nqYZL65V+vT2wCqWK=vUKmSi}pA38d*ZRRP<9Ny^nKR_g zJ!Mr2PCX~Dn0GYi;7d{_r@d3urdBG|ab=$i%To_h)LHWcu9_x}06{$Beo8A2s6@(^4B_=o#4

Yqh7OdB% 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�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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Main-Regular.woff2 b/website/static/katex/fonts/KaTeX_Main-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..eb24a7ba282b03d830fa6c63ee897d92a5188736 GIT binary patch literal 26272 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�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 bkH82T%!~T~dOL3iZSfI!+IWoKhyte*`46Vs literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Math-BoldItalic.ttf b/website/static/katex/fonts/KaTeX_Math-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..728ce7a1e2cb689df32c3a6c26e1bd072dcf2acb GIT binary patch literal 31196 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 T)YS6}E-Q5R&CfXgJ?`xQe`ny2 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Math-BoldItalic.woff b/website/static/katex/fonts/KaTeX_Math-BoldItalic.woff new file mode 100644 index 0000000000000000000000000000000000000000..0ae390d74c9f665cf8b1e5ea5483395da7513444 GIT binary patch literal 18668 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�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 J00IC101u*7EU^Fp literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/website/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..29657023adc09956249f6295746c8ce4469b50d3 GIT binary patch literal 16400 zcmV+rK<~eIPew8T0RR9106-7`4gdfE0D43K06(+<0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Math-Italic.ttf b/website/static/katex/fonts/KaTeX_Math-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..70d559b4e937ca1b805eb39f544cbebe3c58ca6f GIT binary patch literal 31308 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 G#ECDig^RoZ literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Math-Italic.woff b/website/static/katex/fonts/KaTeX_Math-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..eb5159d4c1ca83fb92b3190223698427df0e010c GIT binary patch literal 18748 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_SansSerif-Bold.woff b/website/static/katex/fonts/KaTeX_SansSerif-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..8d47c02d9408d34b2a9d566c0fe0d42bf82fb735 GIT binary patch literal 14408 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/website/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cfaa3bda59246b49e94298478d6de3b3208066c8 GIT binary patch literal 12216 zcmV;pFGtXKPew8T0RR91057-z4gdfE0AMHp054wv0RR9100000000000000000000 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 G>;nKVNojrn literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_SansSerif-Italic.ttf b/website/static/katex/fonts/KaTeX_SansSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d5850df98ec19de2eee9ff922ef59586efe471d0 GIT binary patch literal 22364 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_SansSerif-Italic.woff b/website/static/katex/fonts/KaTeX_SansSerif-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..7e02df963621a5e26d53d510f0b4992eebde1c60 GIT binary patch literal 14112 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 ZM6wWJ659DkbG}7@mjJD1@jO-Eqc8pH1xbNXy>V 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_SansSerif-Regular.woff b/website/static/katex/fonts/KaTeX_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..31b84829b42edae20d0148eeec0d922dad2108c4 GIT binary patch literal 12316 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 DqysK0 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/website/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a90eea85f6f7bded69ff5d40114447a6d8b48cfe GIT binary patch literal 10344 zcmV-uD3{lFPew8T0RR9104Qhx4gdfE08C&204NXu0RR9100000000000000000000 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 GG{*pT{>~Tx literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Script-Regular.ttf b/website/static/katex/fonts/KaTeX_Script-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fd679bf374af72f2a183b97b40c9c7e9e51fbe5e GIT binary patch literal 16648 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Script-Regular.woff b/website/static/katex/fonts/KaTeX_Script-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..0e7da821eee0dd05a0a6f0b16c2c1345dc573a84 GIT binary patch literal 10588 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size1-Regular.ttf b/website/static/katex/fonts/KaTeX_Size1-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..871fd7d19d8658f64d8696ed9cdfc82c821ed76d GIT binary patch literal 12228 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size1-Regular.woff2 b/website/static/katex/fonts/KaTeX_Size1-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c5a8462fbfe2c39a7c1857b9e296e62500a8a8a5 GIT binary patch literal 5468 zcmV-i6{G5RPew8T0RR9102N#S4gdfE059|a02KrP0RR9100000000000000000000 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 a^|k5z`r34UeQg~YeP3G~_EX$#+W!Ytlnjvo literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size2-Regular.woff b/website/static/katex/fonts/KaTeX_Size2-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..d241d9be2d317f7b39b401d96c8b18836acea0fa GIT binary patch literal 6188 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size2-Regular.woff2 b/website/static/katex/fonts/KaTeX_Size2-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1bccfe2403a4ed770c1697ae7c15b9e1cd9bc4e GIT binary patch literal 5208 zcmV-e6sPNVPew8T0RR9102EjN4gdfE04)>%02BcL0RR9100000000000000000000 z00006U;u$c2o4FH3=s$lsxYAz0X7081A!h3QUC-X1&II$f+P%q92+wyBN29Uw8B&T zjAYNE z*U5HIKt@(Y5~%9o_QfZTG-V({TgpY1umY=WfOG*epq`8% z1ttI4MeU-#t{R;oNdjV3`v1RHY2W=-wG4JSL>@>d!p4|Cue#>c|G%39Rl^N~Jtte$ zyJ6&>4iG9Q^=4aj#Y#*NCJeFlO8dM= z0T@1kwgCeG+ko8*0Gp&sMjwJBfPq-!GJqe%@a=c-d}@b9ec(lwnK(J)(Hg16J4t}8 zoj8ciNH-U5QF3U|av}lIkV4k)A{$6Xb{!U4>=^bq_AZWVCE5h7P5X$BXZXs5nFtee zW+ng<#jXuM5z~rRZ`MAjV;jCS!8iBrBJT}bZ87*?$$!rO1n*<-{r%q8@3p+Acr){L z-Rs)dHGn|;!_@F7K!B&viz4g)VC-%k=EL_u`ZCm8I+G^w3Ksc4TLz>W>WQ%ycmt^2 z7F3wL0|7EWb6`-b)`3In3w-9*i0>eyq~r@W)A1#>n_xUR7x)gwPOc$t&s(gki^-$u zJg{x?RyaF)@IXRLeJj&x#qB9@8%|@Z)UJMsh~WtZLz0uE^z@#pky?2079#uJQaZ}s zum|%fSn!B@KY}H0nr5T+wxPUx9*;ced5cn@m}{u$siaEKn#R+E5jm4)L%|SNC0UaQ z&6S0l+(C-b&;Tspa|qlA;9{w)=$j}~YEv%qKd}sP_wkP*WsG%>pcG>q6kiIIR39A- zNKYUl*8+<>0hW8%?v1s^a_(RzT_#Ecg;jdd;Xxpj^@C7|x*MM&=;*mjvdV5)-(Tm9 zT`k#yauk^A9Qsn&7*u#9DFOrwUqmyAw+Wh40gs(wPGT)Y_-2FkUKF>jnwu3#gW`@d zy6R{|!~tT^)Z2}m?U790V*!zA7ervEMXKAEO@WaDT}KB2se9=mbdSJ++)MhaS{Rkd zksBl4dmc#spg~2E4OAgENJuS@2b4vWrkrTx2R>+m%D?+PO^f+$5>0TowkhFwJo4GdZsbTH^) zNQEH{1_KNf3`Q7Cu(Ay@H*U!uPpER~C~G>Il_Za?a{FjtPoEp6?QlS3ASEqnp3>|4 z9>;0J0XY+^QW5qY)!pskXcvag_QLxZYtogZJ&r7=L%z^&pM??FpCix54@!i%wFGmQ zAhuJupi?DXXCuBs+>kjLL=gb2A0S5tsylNIPlqCiLsNrH6inuxNhJfoFPXm8X2XfU zPdQ6CF*btSw;t8mo39;N0Op8u4-whbu3z|a0FQ4@8=H&FH6FJ%*#)VVTL?_|CM`nu zjb)qOyKq6+q!~DnO)f=$yRC95jm|94eyYbsuo(E3mv}VY0>M-(4CcBvak*@gPPe<= zGz_!K%n+IO^ORAz?1KezeI0I+nO0ERSBVs1L zfsq9|H#IOkw*VLA_dWN`rA+4`+#x0SmhvhdLnU)+P4l`_U}PkO8PdL1-@znuxw|#* zl}!7{-)BCZG_$7D+nn7Tcyp!$FI3H3N>D$JVaM#nAak)Qw9dTItkt*SJ+rg_eg}Kl z>;e~ntkiF`5M-x@+_}<@VB_f^RYg|Nb5vA-xhhR&{10aM?i0Y{)K_D-R66A)UW~%+ z3Gesvk-bz5YMCSBo7p+%bjsMO+0;g|RMG((Z@5vVlH517I_H>nl?aq2XV3n83zxZn zqdUUgUN_}^6)2!wj*L{S1eu7c?h595DwXsbUBOwt8sj=g6%(sL3sPKAE0pR+Awj)R z-GD@iXk?(kC?p69jW^)}1PU^mEv1&xNYHAjZbJ(s+J%Y^p`uf$?(&Qx(TyX~gCo(4 zBOOAbRP^B#O#QB!W?RVIK@Nr10Lv5}jQ|k~nK{6KK?~8)XapFx(83W*407^lMpe0} zm$Ap-)8nakC-D0d?Ic2uh)z1lnsN|LZw|SxG1tz;JUiFS2ls#l-hmc6h!#0WExv~5 zVTqlGrFI^c*?Cy*0j+Qlt#puD<%j2EwVjVOc0ShH`B>)xt#=S@a8P-pOkiy|z5;B0`Dg&Duo z{{GExjj`Kag0huo_(dR^h~Ac9fGQZA5J)lG!fb|9YMK+p6$Ei|f*{3QRDUXpSRL25 zR%YDCSzjJY=y?X$m*(@e8O9XQOx5hp{ z367|%NIeBpe`Dq~DxN^fxg$6&KAc`mH#m)dpPOZz8%k&8IZ`WLTH|I|q=H{&X-$Y_ zY_4DH4_jJ4PsS?+#-Ide&dEEM+HF&9yZ+jUj}U@Afzie8yGN@iAA4)NvT{jDvaVgj zTJa=B%tbExX?KaZn`}p;VSO>w;$C-taFZ|lacbIf8+RtQ?;k37Cnxql3 zecblysBw18*zXr^xD;M!y|7IzGxSw#`2Vqwuk7$o{js0pv=}VjK4rV3n3nOK|X=sugo0QRG+Dm zV)13{zr%&7-`U14>_6$G;XOxc)+hO(s_0#W!&Bbydt{`EekLc?97ykv9K5GEtB6;S z>SHfoW=*8pTfno{38~p$Z_`XoB43wH?}qBDKoG61`&f5`pr z+uqNdLn_GgK(|@k@&)c=pJcD&^wr+R`*c!L9aE5|fHz)m5zU_^kv;evsS(btcTwGK zzJFU%2B?z2as?$q30E+9`I41j47Xf}8#pxtl;@KsZQ2CZNcC}>w<*ivmM!x9d1l9Q z)C?@vS)!Ad19oqE?5+BNn&GbB9DV;*cUh!{QOE;>(k~{6gZxbJP@a$6LHR%a@L%8` zq`vB7Ek5jR?a>F*^0Pq|i1Lw_5NlUH1EIC>S{yyyzVsLXChNk=BBx}j)Q8Q>A&Vs+s#Ad4tff%Nd`UxQ*s&x?5Aw>QU>m9O}pnRQY7(4rj~>^ac+k^#}L0;gpy%R_^A3FHxJ|{Pa&|{oNt035`@LYj?X*C^#Wi`Mnr`o z!K1IeU+b2Z7XA1YlUY!Fp=70=FVL_2e`nCkZDD@(W0AD9*8To#j|zkVA;;sq?r_)C z?%>0li7~79%I1$xt{kH+#pbOv2cCnUm^*4}-Hz){5Bzc$`eGH1oxrhIiXoW%<*XM! zfuTod{Z#<=4+&MsopXO1`CBZlx+dw-KgfEq*igFE5j3r_RN48r{2k`2g|9Bd0z2ELs z|LedXxuI!o&0O=my5b`}HAK}lyG9D0;bS(?&!3;CK)9#{y>ec%j#(zzp{wsH&!JMY zPi7uyhSpRa3zMbAt={J?<=7DNHE(;|Q^gq+Dj;_@naP)G2+ij=l(Qv#c|rO;$IKte ze_t!vJerw(+GpI_z!ZIwcIeMAX_^vknuf*l1KUyTKRf+~>opqJ7_A{2+ zmFpvuUP_FcQB|sR+P#{uqzv(&WGmTXcshBz>Ohx%DN-*{`1K=qJ@2*V6{wS5ocI~K z{tYLJ3-}lC4-2-c$7q%SOXMy*ZRD8HJ9KTfBDre|#zUHlo1-(I8u*%tvl1bG{ zt7*-W5(P8)UO}aGD1N#2-9_-H{G#@Leu)}62{L?s6J#46bph5D%s)vNRS;wN{ZuaXs)Wh_iN6p=oWl>C*{_I;x; zVn7~lD$}FeL?ex5?(V~a=1Qoy^c^Q}X;0Jmy$^6W+dg^qR9R8{kYU4h)(Gc;dvW@- z_7;gh0Z(w_9^N{=bO7*`Th(WzlAALsU+dr~JMk#FEol|yTXvL2oO3Oo26%_+k939Q zYy2i22@}+=Z_TS$f2g(V6gRta|FOOHC9;uDCNCRzt222E{I3yRPKC$P*93tvher5Z<_nUOyOQe2%_q z%RaV35O%yXd+@EYou?;LNAmC5x!}->C*spb_1EH*&sXf;zS+AL99b1CI_9!BM3t+@ z7Dlp8CbxATt=?3!@Rt)u1d`+=#}KF6(r-I_+88zuPn9U{E-lVa?aCngXIU-SCdR)yS72!ybSNc^_@>`|6U?i*{S?b3xsU?x0Ni_R+ zO>6M!DgD&6zxtS4u9@_<|%l4L30K~60L8uy>;&1E>X^J zY!UwDq-Rm?@PpF*{44wS1nXW#Eda0qGnJz3bwO*?qZ#r4B3AEO3>f?kP8f-*=E-c#63Q zlupdWKnQov#i7{aa|uWb@aHnXA8_uI**aH%%|?^2q!7|WZ$p6*qvjhIc839zNR$vG zk`s-V$to*HSd>(#--Ll0E@+Se{VD{j7NjybaW-7{(;d>`Q58zl;~KuOM_=t9GGB#& z##J`!(jaU>zf-;ba8FYP^%z%d#IQ+8jdxAICu5_1Lb8yK_QSf|E3hgknQHhZbDD36nD@~Pgk{Q$Ex7DXkQJs{9TcmK(s8{y4bwa3kQdE=C*eGNMxxVV#)hJeJSinGR z?99rX($rrw-*>X~*F>o%DNiL&Xz3S>GH(XiG~J{Vch|Q4CoA7=Q`Z%01^@ z0Ki*H*Z>D8yw;<2bJQ83Fdoj{z zztcUEC1YjtigmU_6BJ$f2WS`N)Ui!;I;_ z#<=Bh{`4{SPreb1zmKtTB!75f?~l)X6ZV{COg($-=!wbunp)G)4>EiD*zt*DXI|`j zk+BN$=V>Nb3*c)a3U77BT7#{@+SZ`i^3-@si-^v?+rkTsvmee3ikBSEvr5KzL^o?| zYMD~AuB{`)+dDd1%cBup6Tv_@R8cNo(pIUJ>x-{9>3S1yUtg)N(mdaLsrPfg_RQ>5 zG6i7TU#s2 zD_EEm39jk7Syi*Hy@T-=il>}DKlJf-(pP*P`uu*qsf!z*DmU;crwWC|Z_NH+c=F`- z+3y#>0fnlwX)8ZVS~_M1mA9ZJ%2*fz+dA4=M|*2axvnW1f}v~MJ$|kzM}!ve2DtXb zs^WL|6yH+ynZck(6)sn`;thF1#RrCGUifh4W7R`4FTrvZG7-ygFdj97to5F0Di&IqQVpH^EbZK}0jFYHN56s}<|uXL&_AFJ~1Y<;{TGudBtk_7uOn>dAn& zOjEhJhu^g7Z)f&-0v=WIe5mXk=8rkOKH*YlKK^j#h2i2|knNcn*TsYJb*(`U zFDw4{8;(Og7r)ly{1tc}gpGHAXB+fWGHdXs2n!;!ZSCzH^cN1{hU``#=*Ta9G)2%| z_X%CED2J`(;YbvKzI2a@JG4q)?%t4tZ49I@6Rx`Iuf8YDv#`4zS=Ejwrkp&`v;?4Jjj#oTOX+A+~;&V6?OI5AvaI*V0ZNI zcIlcwAcPuejU~MTp_Yg5pGQ+oqM3#tkla z{_6oT8GLM5QyHI|5p9m=6cyczDXTjij)<;Tt*%m$V^w^06F6+PA(}qy+W3B7E zyjwrNdqYFV*DppD*W~k0cz1iZKCpXzqdhSedPMw}lRK-IJM|%5tW;EU9m+wkDUG#N zj(RA(oDpqIv2Eu|Z3pR!@!ihZuFn|HFOP`Px!FI__D}!qFJwDAIy0cmU`L@pR);Fu z>^4#nK?^af)}c_^bd;4|Q(N1?ov(WMjL^KAm(Tu4Ria+;b7AN~)uHKSxBSn{fo8>d zz~Of5&Wo?AE|fPDN}FeeraPQv_aa9ZQNLZ#D_ur~N-vqGSJ? z*!}4qYwx?_l;b7qThXB|_HZ;b*WQc2uzJ&?^&DqGd>s$<6u&+5C088X1MAPs42Z`e zznrm-bz$rW^vh^e5s`2hdk6KQoO$;h;R%!l-^LYM<`?gL6chtuK=lWG&e`wGzO2o@ zJo}Q%7xb%QfGiq;M@JzM-LSfiQ5UAtgE&Q4;e!^@RBYnzNWdfBdH3CSxieh(_S=_* z`be1&<$iVc#n~5wv)`KiCihpmL`o!apg}H|?9TwZpFPJe zu-~#z_}%vK5L3|$~9>=qDGmd9T z!eu-wTpod@qoSW(#MiR`f6vaa5y*s1j^}3v*lx$OmoszkIi9mDy zmOhd~a}nGrQW2)&8H%wLc=}P87hE^8CU!f!5Aps7@v3-JQL2`kp4#8d&4J56*J)yV z7EuML&f2%<=H`Ai_vYMB=3bb4V(#&|L$m#}Ewg2BU3$y?(?&}V7GL|4EMZ8tE0fL| z#^8D8+de3@9lJBKEhg7wbNh^`T^T8=^B0^*)!3Lh8jHsz%Sx6q`=%i|l}k2Ao{&av zUxO40Gj7Hkq>?bk&nb~8OQvKvW#n?nf{3J&g=!@wMQZ11LwZdhsr2gk-4N^@=rCvr;8PX@qQ>hX|%osQ1D??JP z**(36m!;BUX{n_%aj8^ihxcT_9Gl7*a%c!sz1f%{I|=K|W{rZ)4U5)bsx&fWGtrxg z^Od2DfoM$S4e1`r9ylI7B4(oq)&F=b2{Q_xjtc2pxm+cUYLSbjL0F|+ZkA$xaZ zK#NgaN~SbOJt1AG`e|%1E9y=R&7_HPF_U>IM)yfR21BG?*C1U9gRJ$zEtQRe1@`vl zvc!_>v#fO|rd>XkN+;{$3x(rJEG;CjErr*^gcMxQ8R;oAPf4|c&0>@gX~baUyp>3; zneVezlwD`JT#Z#&yx`j6MLw#3GkLDe%ak-y6f@)5Iux-#Q4k_6$Mby+GLV1^h9Ui_ z0rCt8G9&{u8pbGKJ|nZX_QWGs&Pur(h^6j&&=D^m!CQj+JBGFVSr4yBbW_~{nFP4aT&La83g6lfnJ zT*)b97-|D`aTCktanu9RX$f{RQM2%*ANKcSc4@M%lR~`Og-rw*1=TZ+2R5r7q6t=D zBE2&sLuS%QOCQRw44KO%jod#kTgF+Cg;_G0qzFVn z6ga_Uh&RC-5(S0e@Q{S>(B|jJY7l(fa?5cu)1Wouy za5elRSPlOO*1$i4weXMN8u&->M)*gt4*n5rOc>qPMrukJIk_xnpy}}()kGdpHd4(t zCuCE-Y{GtAi>=U)ioNEBH1nM%HTM6L1LfEtTjo<-@M&qPIJvg2;Na1822GK&*t#e@ z*W+nR80##{*Fl;sC;izrf$nonYiXX9<6RwBUys>YXyZ}xwH@(*1J_)W!)D2MHpq@d zV?}p^?EGV_DC{w?uSbeld9~4K^ixYfXtzvF^_%@@K^Yu;=(;$OIysL<5aA8zUFEU@ zY%1DmwZ&HOvZVB+>L;ceO~dG(g3PX^Y(}FkPikgzp4*T)>M6b3Gv`#pVZ_d+MrXP36W->A<0iW~Zj|G2po@`oq<0@-Pkk-`t$< zjG54|8GZs-S|INlN?-`JWDQLO$#9_HaDrTA2_)v}v?3!E+)JJGiY^pO_k1i2Sm3BB z#lq}Hm^Lnuq#Mn|FgBb0q?EGQGf%Ueu_Gq0Nbc8)pqwzg78vT1od`tHA!8DyDc-AL}+dWAR1x z63>?G>_-FMP(L4)n=$IDk5kSlE+uakLa+rPh}zp8Pbb*n;YQhxT|RJ~`9X-|k+AFl z&n*eL9$+g)F^zB=n{f!wN9)!E6|~%nFmFptGqxGX5D-qt_QW)|W`==SGdqZ=mVA>^+T=g(cF?kmusbZf2)om= zi?BnMU4$LB>>})lWfx&b5##QK1Rk?SvKNHAY;+UQ;}mpalSzzD;H(8oJd-v`JSQz4 zA`s6hEZ(>v^=@lqtvGF?wBjBcCH8wEXQM6hJ{u*5zqV0gxF5Vd3-ZobBTL@rZIsy0 z+92hKyP4p0eo#3kCXgyoOSjq-?0MIlX(2A zv!Qzlyns6NSTiw~7NFBdxw`CN5@@C?2-&he|uGbLQ$H@@>F zTw$Bpt0i1zH5`xo)>;Qk@|F^=Et)SA`}kyO-pAUMpR*J@%8s#np!Fcz&knFj>wSC- zZ|nwsyJ*H|J!`PAwZIM5$0pbbi}wgdJJ=ZT33dc|WrlY#8_b>?At`>TyKjC{|8d@HpltAf<&h zS{84xWM4~0!&OqQt?6p6+aUe86$8>~u(i;$mURJ}#AhGuISF_a-W;@SqTe@8SzMjq zY(-@Mw3t&=|G!ZuUES<%>(hwnX67?#uv=mEVJnl@&I{F;8#P7%V=B@g(p@d`Z@Pl$&7rW_a-D ztPyrQntKSl=UNy2rxO1yKnL;QcfAm5=_b~TUm|n(CGn^1XB_|kVE@P+T;n=-au;{& zCyyL#Zr;>v!Pe#$*W|%N;}c^?50BDJOKWpy39c`}O(mGLU`N`fccj-tFURkN{{IE7 CPy?p` literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size3-Regular.woff b/website/static/katex/fonts/KaTeX_Size3-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..e6e9b658dcf1cd031ac82b6b8f312444c55d4fc0 GIT binary patch literal 4420 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size4-Regular.ttf b/website/static/katex/fonts/KaTeX_Size4-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..74f08921f00f71f413ca42c9d1c90202e672ef38 GIT binary patch literal 10364 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Size4-Regular.woff b/website/static/katex/fonts/KaTeX_Size4-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..e1ec5457664f438ce5a1cc6dd8409bf60ca7804b GIT binary patch literal 5980 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 literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Typewriter-Regular.ttf b/website/static/katex/fonts/KaTeX_Typewriter-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c83252c5714c71a3e0ec62195884167339a0129b GIT binary patch literal 27556 zcmdtLd7K}E$%rmP@UWH#*azT!5^S^@#OiXi?5ka z|E44zI)d}BoP6MNo}Y4GAxWpchx4OnF5Y$iME~`dOVVw_cu3%`rArslACaWH-;Sek z*F6uNIr_2p;F|PpN!s`Fv!|C%Esah;D@g}_4t@2r=uo>@67Ty0&O6SYzx-hQco@wC zpOPdNxaZ!JOO1al{-q@Ce+=i^`K1RhvXRicaDEnp@)wrQpFaK7M>k2*>AjMqy!Yb0 zmo9&>U~HG9bAX@y>c#s{Up)PB{yM;mG1Ai#m#R2^irc_em!w*>7A@DJ#p*Ads#dvu z{qL&mD#m;k_io}BK$VnaT#JW&oL76T;d;$+;<~PB?WJ-#<~Vj-E4G(LhU=d#q}(=D z)1v(mO{*u`@~LE7foH0D)>eH>Gi2!D=JMb1Tr!n!OQ!P@-taKn#r_k&SF)r|ydh`% z=?$^rdKC}F3v@iVTq>1IjTd%3oa<@RHQ6xYF~g8G{pu~}d@7zv+rbmZlDc8&$zw~Q zTh8hI9l-E!_(|!!^a$Snz`X}kczh+P~Vi|Zf>a|+EfuE}D#x*LwSfUe@o}?a zD&gT8HGOt4&co@9mPi%bS+uvpbgsz?X9;bfpXokX42aZ*Z?s1>m$jiIO241fe7bBf zS$;j^Ea0Sc-qty<#$ti+d3Al08_9U6HB8|u*HleO8l1Du^BP8{&*JtQP5t+{cq0Bl zipEzy$Ue`Xm3B%;q!W_wL&tC5y=yunS9@7YIvQn2i|x9Opq8e4RBA7mM{uE38U{H* zH^+6ob0RwtU67ydv1|CN4Hro&?6~XH+~HCg%&0c%?DLtFlL;x&A&vQt_B!>-X4y3C zoX-4KtT9=0a$&b7`;(c$`XM>U^KG)3i5aH+aKZQ|mKZSfy5sxR!7|h18`ytO=dx}* zsu%qHj@xB>TdA_8)*WQ&cAw#7GMpQ++wO03B6dS(pW|xK-Q9Pf&U6-1vuVv@hOdy0 z-JUxCUZvd%M*32LPZp}d#YKNkQl;X`uS3?Jg{nUWMkg5v7 zZ&aaOM4^`KH%i5lhi?PoD3h8s>JlW<(-2A5pc-_#{+{7-so1V-L?lqBSngncIc;}# z=8Qnj?mVtA&O>4RMnX1Y%;COx7>(t>mCg5;J7gnccXj0TKqlUGSBNo9=Umqr3-ZB% zT_)pBdCS07pX_#BHn<#X@AJ{$-1R%{kjfSQ2{lFy_4=e{y>@83$?Veh{;dHXFKzD% zv6R_mrdU*hyku6s&;Ay+WxI4#ItzI@eaCIPM>*sL+E3UB1E515NC+CkW#|knOoJ{7 z?b0DZgdeCvv>QcdedN4r1J5f7{Nh?Jx-`1gk<@k+b@6Pw0 zTsTDUnU#*RPjN%KfcG>cq8Ax$Js#KMHrWm`F)dZnAOgHbng_i5d9fV>;!fO#Y!NJE z#fR&|Bk&3Bo?~j!n#Q6@LW}#W7%*HK9x08~zn^zG)QeY!6rUDJgq0;W6i9|y*o~M* zV5lh5MK>IAZW<*o$}b!Rs}ss*jcCv>%Pa|eT??*qgr&5Q8Hii1qGcV}ZGSLoWV7K| z{MNyakB#sb9ULMmm85;_uXs#q1C=b|eJ9bNJVF8>yx)khF!q}Av2H7B2ie}en(JzN z_p+cJwQ!P1;N6orSjYhQ3WlEjjIv`k3lZs9A!3jD^`3*dfF* z+B2G`6O96lL}4t;7IV4fce2E=>8lF4`g; zRm!)OI_c@-u-fF;Vz|R3336Y=1|N^a;U%~0J||>zw*0K&KVXLxL*-A0Y&#?y>h;}W zo8pb0m49J>$C|wgZgf9g>|@qc3z0;^b0r;2Cge0EkokweG%@HdeX)-u+sS z*66=|{;|ePN6)yaj%}W*g@SxvhWQ7Mzw4o=p}y2u`X$rzVG z;Qw*NTV-IA3IUrK=uURE?nO9&!i^F%Q1wEK_i(wo_IfL%h2kM)vg8jcmf|z&Bbwzb z|DkJXBXuS#-R!--V91Ve9^PXsoO3mL{aTkgNJ9O{; z-s`~y@m9~h*J|kX>>3PCVb!hyPS64tT_-&~m&nf5I?D3SOSZ2gHZuCi=`+@#sdKJ{ zmR}zIs=cTQys8|%5@{zVnhfo1BUe1{s;)Q}ZXwO_aD zy=}#@xqdZjB{HB_1zzf_fOj9@g~1f`8WBdL<)+CE5z&ZXo}KV)0i8SKeLda@@6`|i zjj(6rlwd~*i=T3{%AqOE;E4wY<2*3t@6m=J7Qu%O9=UAttYhcRjzdQ~%-I38yQs!Y zHB=ahk4H0;jV%1Q*2X@PPYsV6jHx^F`G7T3F%oLmsAeUM*<&-K0nJ4`Q_;R340ou-(W!gE&W){5pF25)ZNe##*_#sg&ylVf!5d_0<)J>*_{DqSU9mz`fMJX$!x z1o=%>zMW}7HJS3WCDqUL@bcSaqi)Ez%PRPkG5?v>hd)~*Z#4`(`V#!$PVi+z27E!> z)S@&9>p3oplp3{hUawYbH4&5}LCE-tlt#$UO7C{Px!k1agkuX7Gqw+&nWju-TM{d@9#{ z$~*px5>mkzuE?5dD8T9isvVA>o(^d{&K%DU<}!}uS9nCRLH)j#q}8M?p#H>g@2X`W z86kwA5T5LlhUm73$C}w73tA>#)m?-*!au{iwZyOV?B=Z-c4iU*r9;b_;duW}%Vhpd zyR1l~s}|syw!TKHEvlcqbNesU_Q;9MkO{Nk7Nd^c$!B`U>xm2tmejDOXsUmAy+c)u zZtm-wKi1#VUk`H2?Hp+%K_~d%lQ?RAp zD3Ze5U=)~A5L!gY0Rhajw9oWtsmoo)w@ge+6u*ivv|z!ak7-~;b{ zAjp|-rp76#40QLi+4&P&cOKdK;MgwJKR+nugSj^(TYSSq8ca zh&{{dS#v^9&>Nk?<9X((Ap;37q66YWWDqr%*kj`-dPg(W083;ypV~jVi%0hijAjaZ z%bBd3$Y}n~YWp^;TIedJc9>>&%ue^rgbl_6Odd+6t226XXk&Kk`0i(I=M_8qB8YZ- z-E7YBh5eb43yc*)r9EwSyxTC#xsV+;H<51?zL`A*-|PaHcnA|u*xPmfIl8XB=BrnI zHaq7z?b7n|Yu=knPa*2qC!SfvGu_Awo*5&R@#rC_(+W9n!~%^*XSQ4(E2sUTkS|n- z>dK8beaJuFR-PEx-6)5`DW4uKgk&Zn5~;zy!23k36Q(Gm(^KIN5l(do^GV{bst)^t z6VwcC`PURb%*_GSFhWj%FMo;k1dfK|viwEGpYzLKl$Cfm6yU%8kpNMuBz=PY75f#* zKpbIQ3z?cnDKF|Nxk7AVp7DxOmc1^QTE3LZW)sRM|9dLOUXem9WSZ|XQ%RGB<4GU1 zbgTt$0$S=PEo~t7Zqz$FJ>s~IA|_pmt{n>^?qprdf9#JToujcsN+6&t|C**Z;yFLS z^M@lb0y>ZhC|{Iiz&Z(ne3qY+dZ2mmDt*=(S3RF8)V&pAw@gDF0tlfb!`EIS0T3ys z_R{2qefQV9%f8s27-vSrbwZ}0La&)U< z*E<7gM~MZ8w}su1de`IZLNTrSLPn~sm{t-ByxSv9KXiKKfr+l&BZaO#5BuV(^|N;z zd~KMw`?wwt28IJN^MCNbZSy{^1ZTT@apZoI6vQy>9}w?tgr_vFZP_%e0jo|gcTl8h z3)wg1Sjy!hjDS|Fg4TjBEsulwOr88a<-Tyi!sJQDT%5?E$Ezct1N&q$YAJhmJ6!X} z!n*!*$Q8)kAMUUTGd*+V5n$+hg|=%20mC&x6N%a!}TDOv&FUe zhJ9LAeM-clxIpG+U#`&JJ#VSL+Zx$a?*>S6oIk_3Su5oFm*3enuCmWCjPwnXRq2AQ z{{~{wVQ8sNTB?c}ln_6c;HJQaI3o-h`KMLO4zu2}a+=1H_q_I}ZjTs~HJ=J83pp@} zN+g~%%vf7vq;K2C!KuCtaVKFZm;Il3=#k$D@RFvRmM^9rJ*Eb9Q}?G!8~e7r{J#0I z>3%C1c6QzkIfJif-vkdbQWxZ`qY&|8N0P4^^2#E75tR3&3v`bOB`HR00KDWx^jJJ@ z84-uQ@)hRH!2FiM&A#(H$F$nu@W{kArsooV8MN~!kkey4Jazk(*WWe~;;gdpIv-me zVWEeKLNP$`FMxug^%*g{7+wni@nRBML7URZ2v{pfLQ=if-|Aiyce+p@8@Pr=%z;v8 zN?n8Q?;{N12oXU!oqzSER>IOKMDcpemwq2DtwVHSHnPpp{F<9cxLTBN1PVc2eGuUa zH}qgz`)@>COUBt7M33o4KHbxcrc8a0VQOMzBSDR@7c*D~IQ}hg+y)#s{CjcCaoAQ} zq%GD^a|pF;scR_lhwD-M`a`#%_Rzdf)6C%S5lV?vD)C|{{m!i@eNrpkfBcO+AtJ%dQ(m|8#K+}`<)1~bRpXfX3CfDsEv=+4qY^P zrxK2=DuAI|h1?kPzwywXS0{b7{sIF0U@4#nlko_DDrCTa3T=2EJh~k`f=s^95_x(- zTo58j!g#|#)o%2Q`4uTOF-wqz*hRuC%rW(oVNy*aX4^3%8dnb<0CzB5LdVDPbdyZg z`_{TdkBlC1lOAu4K@X6KMHS4zAZJFhP3Oe0u!fFjp26c3N?xvYEsvl}3xl7lcYWqF zt39NLTOp(W4fuBfe^}=={MVa;T23YGi?9H~Y-#$PL7$~xKpJ$O@xQxpmk9A!raT zvY8GEQXTqV{#{3r0} z@4vSm>>nTK(IUxg)-^++ZgcR-&(b{A0wul+O6&zZu#rTGTWz9<(`dOU9-rbKlQCTt zqERfuKecg~D1aygpxzkZnEbUYeYYDWyBX7?F59`oju=*)EgX)9ENy-Z0S^Yx%@=!i zTQN22yeeo0W9<`}dYTNaz0Rg)4HifNjr(_Xu=_5mp*V=z!fat-YS$ZJas7#m30~V_ zdE&y*eEVfs;;aGuuwu#n8u$^tGo-;@E~~{@LbVk+kf38;PHt7Cbz7o9VP-`=cNe7u zik)AkIa~*sL8Ng0;NJ0GP1R*tH}lD4-qdBT^Cd140?Q*ky&4Tu0~(n~K&a?O-azc} zX&ntU0NC)$CBSwFu=QvJTZ_7sX(E!kRS!VuR7(UQj9xt8c`TR|xKT)puEB%hN266J zVuo-dZq#UKZ)d6#0iI;h^0)=DAZU!GVqFI*bMT>cA~%UhUJ7}pBUY7P~e+=_oZ)m9;FtIIvOBIdRf6`kok9on)b z)!(1k@|rD)epU^{fDQux#@(fN1YEgy0wiH6C1Ve2D{-=lN1~2)5Dvh zp-s1$?5)tzjLCkrX9DY5-$W2O0eDAO9uTx^NBn>+QxR!vTIqptfpnL}-+t~{C_zmU zbu6=$hdr|e$#KXhPht!dxm;@3L$FlT>(tmMgPU}nXR_7Ji3vLxNM-KnXXU(AamE8pinaAU7@C$KwoU@QjgZk+`P>;xi0 zk#*fB=)E7v2$m_J#z@2H^0AMuDhbE@_;>Kaf*p=^pwNTzrQb)s^j_&U*oDa?*#+V8 zz(m2uRqndLoopd-olKrLi9nlp?ETPkm}eib!XeD07a!xU$MiS$B)YpILFLuT*v_5x zfdhm7a8T2dI;{s_9mv!Zx0f3}9x-F#JzI>%tbF^l9z8j(Fhel|2BspiW+oGc`Q9_J z+^HOLqd6A3ZR5e=wu0WS@woaV3KC3H_XT5nOKpZf;e`A?D=Np1ZQgR+WF@RSSej3X zsr$Q1h+RzbP$_8WKS3tO$RehId0kj-FADI?98%gpcA5|shLOUrSDV4P3tVsIBAF4= zG$&i?9!h*+eYkwVi;lkLN3_aT3d%H--JnBdwTNmDtL4NNxmB&I3vj zC$QBBfHY7L9GpUYvO1GmixBL%4V5GjrU-`qYYjq+{ctse(YDmv^4sp$8BIYPc5Fd} z2X2Ca^!-^auVwoUWV`9AszZfZ?*G@G(x*x+QjICoFv z$|YHD#by-i=J=n4-7pVE)iI>r- zFz^Vh{4Wtd90ndSiXWJ_@&`!=&_$Wp(pqXDO({Z22nRClLaSsiztV~=U_wZPkhiBF zJi{XgPDa>IrJ|Ph3eCzH#f+haxoxWfLpDo{l}yXgE1_k z%CWE-m=CDo7+fWKu$t^5c0=S)l$Wpn(TI*jv>McVnw`KpB`{SmZKFHL(08f+7gEqBBCGq*x>tC zodPf#1V(=WjHZB5Zr!|00?)*(=!Nz$r;t=jx{gSgP#1zL1bs`$MBze@8u;_|Mp0E` z$@XHe{T%mm4cWToKUM?ZU7riV0$(hms_Y}0b+d6q37p|KaA|p3vnrL<49MI(;(NgU z$EX+q#=G~#h%wc@U|9QmCHR_cQ4z4xxJ*jd`%ef#!ey?VbAXLqxE zlrU=NR+r^6x_td-AqXP7vVOH+)Yr7CktAZRh>E3hX&eP8NLX%1wl3uQjOAyscJpRh z=)b-j%X~oxf%?-b`JQgTTnEe!V1`8@m_fvwX2DoP)$~nR?C~Is18PfAqx)&qoZp89 zbj%FQ$n|cEXt2osC;I^SM>RTFF%q*a2URBo92p*p;V`qMqmb14b=lCjM#?efGfiK} z&qhbtz04n?Gx-W8Q>??VeN2n^A~5?JYinbZnyyB1uJJ9T17j<{!oINbS2t=aoZ*{m zD{k{jE11+|r`d7-KCB`mmqTkFqVBJ}mbDPdp_3Y*!maACO~pjmpU%%_Qi>4>2UqKp zitHV!Hq}4Xd&g`BD-Ge0uT`Q{K=eAe@U6r1&+E+B&VQdsR^k0ovkJ_YhF=;=p0K{ zLrP?zXLyfRaS)(rq67>n0i*&b?Re*%czI=4x|C5i^_2VnY{TKswEjqCvu6&wVUy zx}n;p6Ps$57Pezb%-65IVsY>0X+L9un4NXnayByI+`oH#YX30SeDt_Kemm&b2AMEG zzmlL|t-BDSn4i}4TrhYY=`gj&%Z1S%@n~CW5bpt4gBCIbsBISyPgc!U!ugCT$C;c` zEVI73T&PbUoU6^EK9WT@2BLm-aPyZIembu`wo10>G7ly*CO2GD?};Su**boBs}_?V ztXeWNP?jy^m;C`K*M)qEajmaAC)W5ItBWq+Vi7`2APGZDv?59p66kT^a|D$74}3oD z&=Qy#c`R!w)J04Djrbmk(FgrW7#84Rv<{x7G>|s3+4dI4?jiY{K zmW`Ot?it!Q)80LKJ`;UkZ@^N5p(T~6H(M2C6^U7lgobtw~Zv97PKe{=*k9GezGfRcAfnuBF$aW5>|eW z?Ab9_GuCQIQS%9TY}xH1?4npwgajau1J2joYE>8u8sbR=`EDUHRG!F5QS6^yjHo^%nuZf)N?>+k za;IOJDGh9{DMq$4(c>@mbPZNZ<-x&!K%tC_n&m=gMpIoYK{|@)O=!g|bhOhC9c>^B zaf>CP^2e4jK{2GK9c$*A5?>`DZ3stO*A#bhRWoR*BQzZ{GpAgYK}kM>fCl9}aa18@ z+8Uifom21U+)~=lKE0|S0d?ul66XuC{n^;Vq$;abKNl~nnM9wJ@Et!+-N@u}kwgA0 zKZR-lT2U&wFIc&ky?LBiQm+Z&Y$a4^&E|L86Hc++O%`5b1|Of^>^N-cPE6A_P6(lU z(%}PcuFZDZ+Lnc0xJ*Yj7t^yRp76v>7uuR(4*~+8uq=ZeI^{|jSr$haI2p2KyPmd+ z)G?Xq)p{eLETq1qwB_MCQw2m$vi(=wtWikm1Blb!-!o%VEuYLyMErNDH`K^Dpr?+z_9S$Y2cFm+9wDw1^fd|0tZEfUx zTRyQS=2tpJpN{K#XI^v;F{dEh3rb0e5z5~jo3up3wOvdkV>Cm#>m0@8cA;R+M<;xn zHi)wiIN?}e(4QnrRmf9Ze&#L(8lErE88`gOSY1P=f^C>&C&lzcgye8E(V6Jp;Gx!; zo{L8rn+mlXMj<~X;&M)^Fl0VnNP~EMqwV)hVWtrSKU-Yk;yV--8|{*l&m#P>QNn z8zP`@&2XYL(Ici)R1CQg21m^7T4`c24Iuj|EH~MZAAjMsZp40r8%ac?mKt@tyHE&M zD~u+!?v0&}3zHDV^_KTQG`w)l&G}4 zWl~oO2gC}Nv9na-(j(ZZs76#CEWLO4M#J+5lSqno{m?U0YR9lKqa zQXJ(vJ+RyLdA!TmFuo8Ay^UT1XdRBlN-%=-2(9(%|{n2iEl zU-am7$F<(`yN%T30Uq2K&ANk2`fjpt326LZ0pc3uu|)nXmQ&*}zd{(jc(Y6) zGyVf@A)w$mt=z9Uz28T2nW{Hum!=Y0#*U>F)@zrmD%&)L<;LYtx$cRfA%x3MF^#D* zDjqazwl@?&a2k_Ue{5@?ws{hkh}0_;Ad$lXaBYRu{Vt@ADh@V809PmG|1kKTU8oa5 zVR#YHwO}GEDXy-TW(aEmM7&TB)C2|~xCr=!qB%@?dBNQ}Z{N{YKFl-bhO~*g$4IMe z!-Z1CVnZWssbFGYF}FX;)$pBLw+zr`uRsMpQ#X^gffWAy1~(e;2aNo--nK4W^~*X| zw5vlX=|FgG_``vC(2VF2GdE>K4PU&!mR42Gj;R|*ED%G9%mCXYu>C0Sfs|u)m8_wt zBoaamkiER4h!+u4d%%MktChFNAbY-&{bDk5a%Q}Xh9% za)jyQ8~n^Po(aRi8i=x<0FYp(0!7^f;n4q6>G7^r;XLIOachoK$MK&ds>b7xMYyCa({t zl5Si*a6sgKV|HJko#=y#P-2%oMMi-=@uXs5GNoF|lTR=mL51*r$QM2S_~fp~Z)9>K zfbn_2xC9uth!xZub8Qhbh?JL&C{p}*EGONA$D>3qs*YN5h0sW?sK-e|Ju^sr7>2r1 z5B6>WS9Fx>*jlF?+(&bSd_hs$kn@G8D{jov1BRj{aGueHfzh56Ypj_pN0l$?a%|0X zP(+q6bUTe=oNzd!vy)NU1W4vZW~uydVg~8Y?@h@@NJjG4KG*>T(d5eeyJT++6x>D> z^2B=;KT72FX!1lt*JUMpCKxi9=|6Pa6HL^1ic0wwUAo0A$)%KEi&3rZpFpi0i}#)^ z(Fz;sG?mOD>cX^xxGlm1QW#K*cnz+us=gPiwSTTQsOKzg-+@)VAhHY&v0SRro)`7= z?{|VRe?8P@OP$62_P*voC}HG`lL0?us==+BFPjB9po* z;OiHbsN97%1Z!R)L5#}QL%rU3SnrAn8pjs{;!*6 ztI`ZP8#QF>x=K5B-S0RyVppo47#ze(6NeAe{JPI4>vG}m{po^FSj^!ON~QvXDt0w} z8JS7S1eZy(RZ#|m=}NgYz`Y%~o-mSTf@+|N}Rv)lqZ5aBFy?`G~qsS!R zmAyNTwaxGjrOqLGSn}j`Wk*~)cO;umgqB1oXP`-Zy>wc4IE71fcO|O0Xdy0 z`Ok0AhBU>j1o+!isq4L3EQ#?$Eu6Pte8*b$lthviH>)ChNH~Q!Ibqmh{MEhe3;AzQ z0EQTg7lJMn_y{B1sLv^da&~;uM51c1oK0~Q^Z9rxEAPhUSsuST)0GM8g!nzk5&&^U z0p@b}o(!m=@!tUQW?xtP&$M@<`jctd2)1)0pKNxZ%QqJRD|OS38)jNPb;9UNXk1S8 zYbQ@DY14??CS`>WOPAR-hW*9B3mXPnbPz7BM(m=!u{vO-kfSJo20uUNQ;V6P5+1~A ztuGX0?&jW}lsFG4emdWX`qb`NZzO~T7$C$M$4%Z=`fBod)WD#iOVg+$cK z6p~SYBov55QW4Uux2;sz)5!19ju)&wBj@iGRFDo)WpTM*7IGwrwOZQ+4i%q9%?~Va z$7EY)XUgX{G$u#XSlFQ5e51C(oqIE5Ur^O>Fph##EL9rO2$uO}Jy0mhVT86m$FEqu zkz~}E3n&E1R#>Ue!b)Wb63;HTro$qjAjMsmG1>a!iINhf4PPWZg69vy?mvj<_u=`S zR8s&Q`pFX_r+$(&$g!U!`|*E&RpbQw7<)h849P)#4PU}_T|>_K998M-msQ8i5y!T{kA4Er4dJ=aY-lnZ>5b@bG2mmU zfq241Hivyr4Mnm3p{o&phW2oL95p__gq+CQKGoK`h?s(qR+2gUMmQEWU(Zb0assBj zeJlHBM+9ldZX`J(e&k3T?9qZX`6kx3PNKdFkts#_SOfDWGD5kb80FGsE5r=>7qIdi z_HErR+k7nSU`B-yB+}tJUZwIL_5=12Jcr~DbpeQQt7M9Lc`Kt$IXh9cK$^jRslTbc!T|JhGT!(yXnuz>9Op;0x_ZG_ z_`C|UzKB(h8}*L8(jKgGZ0c`|W1pSy^R4x^HG`wBR^-vA2x!Su zr15o3$I0A_;siJz#Ne26iSVV}i&jhJTdN|IYsGo}!{xrDf!z*@bxlRNv1xMCNZ3K_ zsj^Y4B~IXgZmF0wZxrV_fsRTgwVO)z-V-z#s&tW;&~f{z5WdXgofskLGinl0Z*s3R z0~tW&G{x1eM94_p0)>%i1>u2-W!Z>t2qQ7C!WE=lU@I|PY)+!0L=R(qm}*O+78@Ot z4NFxcNRKLfe3V%cBkH^pOLfUuz*0sS8&Rx4EU9A>=~a(RXRUKNx_=nwwCal*0vTCp#{LdAp$C;Cr@^n=cZ~D}X+ILn$@ri| zT-ahF{z$mE0K%9Z>vlzyx`c{dB$ezCzGTU;>fK&5tj zhZ3Z$`r7^o;`2|mKVn@Ga*@&ob{Q zyb(B5#To>}v$fg0#Vny>#4xbQbwmjb!40l?%oGVqvE8iH#cfrKXNu*1=acJg*uUoU zGx!YCE53_az}mcT`96p9U-)Itr%+>hlO-D-z6bm4zto-!>0-Y3FbHqj_zuPMs`9Ti zS11AMZ(+v`L0uMkR9Z!YL7+JvO}imYo^hqw0)CLcqv9r!y}(F(*94*_E@5wGX`;^@ z8Nj5Ox!Y>?1~upu?e7rP z)vHTgb`4=DrX9jKV785wTdLj_3t?Uk2K#3qMEI|zGZfnZvtk+b0;}u1A|qHrqF#I> zhK%Ur4j7auginc8uUw8}cFRZa400YkK87ae6XMFJ9W%HAX9^z^7w;THlk;451CNcN zb~QTcQ}`+Ta%WbKL_<)UFW;kMWZ-hTMzP2`oAe^pE^caz_**!tm*tf=$ zK7YXHOZnvcUVTsu$u`l=D%o8IKDbb128-t;D4WT@Yl=IuFVm~nik zBOISB&Bo=$^%Aov$7f5ENf`lg+{Tyl7^8+V6TfBP@-*H`YUtgj$C7h$)^T`(OgG)uCI5t5QRnNTBNh2#ye1VSIAA?w^8he z`j4;5`j7l3)gQ9mYz*;$4GvfB2h-zgzh0_F(%^`-%3KwZFUlE5)tF zHy8h?V|&N1cTRS`v-3x#!=>+(?<@avS7+D$u1C5)0y+?#@cY&efA62}3{QMt3d?`( zk>|$WmG7;jc>y^M`aT~T=Z2xis}`Xb1yjDa^vWWVC542j`4 zf_qad*U=7ObR2cIe~c%0ON$uU#F>H$r8XRkc#DGj2a$EEp|(K5eG0P43G^k=O5jOZ z>{w_A2H(JUcn;&scoKfENpBN(E#k|H+oX?6m*EG;(0dqTl6dMUBIg3`?E-w=u>X0y z^(pBO0Xyi&pIu2yM|lvm`Zh;wO0-$`Pm$ok*w2wP@+KozW7;vLUQ-^@$W&mNaS{ioo8BtSy%qo<$`l%ZKW9Tn+Q zIQHYZf^5etrFTm21QEsgMXU;DgQJ1E%GnPZk z>0AO%`pn)VO}#kXG>X&U0B%|AYiferphW)ERsFW zAuh$~r6xadrpZnMkfz?#*EB16f;I%S6zK$p0NzcD3p8YLRzT~kJZ*-gnYrnn!kXat zD>n;Lz@VW`xf6<18Zh z6~%)hf+%^=;3NQVMrRiDR~GZlD9F~=v?@Ce9=WQVnqBB<22U3s>}$p)OG}+R0Gulfk2hp0o8m2!H{An@=ypTKh9=S?-2y#td0f+J0 zNKc`N+g96<2f9wTK$Gd}0x;PE__v_FH^rKpfZD($%=p+kCt?-45|~fTP{p*K{ja z866X#Hyx9et1=x^m8%LJ)0L|#9W#}y8XdEht2!NXm8%9F+bUO0I`&pT4Uhg!Z4s0% z=KGuM4$_vsW@X()XYJyB-o?Ik7fWjw@Aod|D^fGu`(yD0QrA3G3D5QT6@XtJaJ2(J zIu?N+9Xo&@9Xo*^9ZSHEj%DCS$1dPU$8O+9#~$EE$NoxwLMYNeCBN8AEaqYK*docq z5{}J&lG(vZbD+050DT;SDr|wozNkVLmqv?Z*#Ea9AdY>_>MDz`hO{}7xaLsLRh8Lu zM_?3*i?wy+`Eg^0EBO%t`3RooJ!kHPW&+mdMWLmB$@vZ8&t@l!qgRKSO}N%U4hJ{XgHe!jScUP@e?T)ifc@hIJt4j$>x zPr#uQ^xW&jL)Tc*)H-pt4VTtp7mtZAl)S}ai(9b#ea)%Ww+ZUE*tJLj&aEh~vUn5h zM?X<%}*@!Umav|=Ka#O4(DWY%8yMQ(90Z7S0%a28l1KR^1ZdM9>LkuZXj(rs&qHXwa@7Z4 zL((rK|NosxZ+S5R`}asO(VOhpL~%4-SSK%qg%+G!V1UPaSE;fUXB&D8#51Bx3!60( zYy$~wPwf$%K*MAG%{sJv`;Y10fyc3Utl7Yrot5So4!ekob0Bwq9!_|bTDvPG(9K;S z^PbAnk~ELTUNjgr_Enx{qGvxEqUQjO*@8<4X$&4 z8mDLsHBQqQYMh}l)VNE)HH+3+0T;E-3Am{B5&;*r?iO%S>mC6YwayE;sC7ZWMXh^5 zNn>6r#?S>C^8jw%xc1bSi8FD> zgI<&Fc*twg@Q3l7jou?4@tQQ?Jf<9e+VdY=wC>_MlPHCs;KZ)uOhFWsEehObOIK`e@`Qb`NjHBn8 z()~2!S4_0ugN=Xi4`<7o~^r)^pNb$eUcoo4SzS>Bg~&tji#>CViqcgmxZzpwrSNG4=w^4q)Ut z^jyI4G;$|-hWgtK|za{*Y;@qYB5#`CIxhhQHUZ~5Opt?!oS z{abIpb^L7tCZZ6*kq2)5_}zfkW&E50j4#FUUf_C8z)948K#Us2$QtPWZ_({$ju6d% zQl8MeCO|v-=?86>0LfYDB{)8abB|t=fZ+ce?{0qM-7O9;-NfJZZ?53oF9T%=uDsyH zB|*;z@b?sYR=Jy(b_443g1i3~he#HEkQ}1;rJJ5{063q)yIzK8-7lWyjkpIRNuDoY zy!YOhqD}I6Kkg^kNU9D%)_3B#M@S^``UZ46Z+Zgp=*8uNV7md?&F{?vst53UPDu6% z{H3?vpw5zb<7Vumpplm$-9A7@Qg#vT0sLG77Npk~(RT?PCaJt$D5d+y<| zO!&9*D0J(^{=EjB4E9)tkya&q3jxVI6Y%+w?G3_yg^_uUA|o6_UeiX7*oECpB8!_w zE;x(KY#VSYAg5bI7P=D|+A<`!8+qqm*ci$-4+yJKg}w}9Hvs2n zDJ@D%SdoyWH%X65e=dEIDbkmuzrd=khMiMimcAnWne->pR~bs&nUDEdfCX6y|4)So zi!w`kR{9W&vAF)y3+Dz08}r_A^Po6ZYYp!>GuAq8ZXKu9ElcOmFNw3-*syx=?CHx( z+Rml(Cr&N#Bj@E+XOS{<%p MzaRX}iWL5T03x1QQ2+n{ literal 0 HcmV?d00001 diff --git a/website/static/katex/fonts/KaTeX_Typewriter-Regular.woff b/website/static/katex/fonts/KaTeX_Typewriter-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..2432419f28936aff53ddfa2a732d027e6a6648fd GIT binary patch literal 16028 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 G0ssIW.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/website/yarn.lock b/website/yarn.lock index f038122f4d03..ef76bebdd122 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -2382,6 +2382,11 @@ "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" "version" "7.0.11" +"@types/katex@^0.11.0": + "integrity" "sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==" + "resolved" "https://registry.npmjs.org/@types/katex/-/katex-0.11.1.tgz" + "version" "0.11.1" + "@types/mdast@^3.0.0": "integrity" "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==" "resolved" "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" @@ -3370,6 +3375,11 @@ "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" "version" "7.2.0" +"commander@^8.0.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + "commander@^8.3.0": "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" @@ -4644,6 +4654,11 @@ "vfile-location" "^3.2.0" "web-namespaces" "^1.0.0" +"hast-util-is-element@^1.0.0", "hast-util-is-element@^1.1.0": + "integrity" "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" + "resolved" "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz" + "version" "1.1.0" + "hast-util-parse-selector@^2.0.0": "integrity" "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" "resolved" "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" @@ -4676,6 +4691,15 @@ "xtend" "^4.0.0" "zwitch" "^1.0.0" +"hast-util-to-text@^2.0.0": + "integrity" "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==" + "resolved" "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "hast-util-is-element" "^1.0.0" + "repeat-string" "^1.0.0" + "unist-util-find-after" "^3.0.0" + "hastscript@^6.0.0": "integrity" "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==" "resolved" "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" @@ -5257,6 +5281,13 @@ optionalDependencies: "graceful-fs" "^4.1.6" +"katex@^0.13.0": + "integrity" "sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==" + "resolved" "https://registry.npmjs.org/katex/-/katex-0.13.24.tgz" + "version" "0.13.24" + dependencies: + "commander" "^8.0.0" + "keyv@^3.0.0": "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" @@ -6826,6 +6857,26 @@ dependencies: "jsesc" "~0.5.0" +"rehype-katex@^5.0.0": + "integrity" "sha512-ksSuEKCql/IiIadOHiKRMjypva9BLhuwQNascMqaoGLDVd0k2NlE2wMvgZ3rpItzRKCd6vs8s7MFbb8pcR0AEg==" + "resolved" "https://registry.npmjs.org/rehype-katex/-/rehype-katex-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@types/katex" "^0.11.0" + "hast-util-to-text" "^2.0.0" + "katex" "^0.13.0" + "rehype-parse" "^7.0.0" + "unified" "^9.0.0" + "unist-util-visit" "^2.0.0" + +"rehype-parse@^7.0.0": + "integrity" "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==" + "resolved" "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "hast-util-from-parse5" "^6.0.0" + "parse5" "^6.0.0" + "relateurl@^0.2.7": "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" @@ -6845,6 +6896,11 @@ "resolved" "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" "version" "2.0.0" +"remark-math@^3.0.1": + "integrity" "sha512-epT77R/HK0x7NqrWHdSV75uNLwn8g9qTyMqCRCDujL0vj/6T6+yhdrR7mjELWtkse+Fw02kijAaBuVcHBor1+Q==" + "resolved" "https://registry.npmjs.org/remark-math/-/remark-math-3.0.1.tgz" + "version" "3.0.1" + "remark-mdx@1.6.22": "integrity" "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==" "resolved" "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" @@ -6899,7 +6955,7 @@ "lodash" "^4.17.21" "strip-ansi" "^6.0.1" -"repeat-string@^1.5.4": +"repeat-string@^1.0.0", "repeat-string@^1.5.4": "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" "version" "1.6.1" @@ -7753,7 +7809,7 @@ "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" "version" "2.1.0" -"unified@^9.2.2": +"unified@^9.0.0", "unified@^9.2.2": "integrity" "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==" "resolved" "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz" "version" "9.2.2" @@ -7789,6 +7845,13 @@ "resolved" "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" "version" "2.0.3" +"unist-util-find-after@^3.0.0": + "integrity" "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==" + "resolved" "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "unist-util-is" "^4.0.0" + "unist-util-generated@^1.0.0": "integrity" "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" "resolved" "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" From 5a3b006b760ae5c62ec0e11b145784dfc6716156 Mon Sep 17 00:00:00 2001 From: Pratyush Shukla Date: Thu, 4 May 2023 21:57:28 +0530 Subject: [PATCH 30/70] Fixed column names for `economy\performance` and `economy\valuation` (#4968) * Fixed column names * Fixed column names for `valuation` --- openbb_terminal/economy/finviz_model.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openbb_terminal/economy/finviz_model.py b/openbb_terminal/economy/finviz_model.py index 8dd45c47ff33..8281a7bfc284 100644 --- a/openbb_terminal/economy/finviz_model.py +++ b/openbb_terminal/economy/finviz_model.py @@ -92,7 +92,7 @@ def get_valuation_data( try: group = GROUPS[group] df_group = valuation.Valuation().screener_view(group=group) - df_group.columns = [col.replace(" ", "") for col in df_group.columns] + df_group.columns = [col.replace(" ", "").strip() for col in df_group.columns] df_group = df_group.sort_values(by=sortby, ascending=ascend) df_group.fillna("", inplace=True) @@ -156,6 +156,7 @@ def get_performance_data( "Rel Volume": "RelVolume", } ) + df_group.columns = [col.strip() for col in df_group.columns] df_group["Week"] = df_group["Week"].apply(lambda x: float(x.strip("%")) / 100) df_group = df_group.sort_values(by=sortby, ascending=ascend) df_group.fillna("", inplace=True) From b9a4faa0d7b92d46813980e4325ff21855f82608 Mon Sep 17 00:00:00 2001 From: andrewkenreich Date: Thu, 4 May 2023 10:26:38 -0700 Subject: [PATCH 31/70] fixing equity report issue (#4922) * fixing equity report issue * some fixes --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> --- .../reports/templates/equity.ipynb | 123 ++++++++---------- 1 file changed, 54 insertions(+), 69 deletions(-) diff --git a/openbb_terminal/reports/templates/equity.ipynb b/openbb_terminal/reports/templates/equity.ipynb index b2992ffe43fa..c7891f3b2965 100644 --- a/openbb_terminal/reports/templates/equity.ipynb +++ b/openbb_terminal/reports/templates/equity.ipynb @@ -58,11 +58,13 @@ "\n", "user = get_current_user()\n", "\n", - "cfg.theme = TerminalStyle(\n", - " user.preferences.MPL_STYLE,\n", - " user.preferences.PMF_STYLE,\n", - " user.preferences.RICH_STYLE,\n", - ")" + "from openbb_terminal import theme\n", + "\n", + "#cfg.theme = TerminalStyle(\n", + "# user.preferences.MPL_STYLE,\n", + "# user.preferences.PMF_STYLE,\n", + "# user.preferences.RICH_STYLE,\n", + "#)" ] }, { @@ -97,7 +99,7 @@ "source": [ "# Parameters that will be replaced when calling this notebook\n", "# Do not leave parameters blank as notebook will not run otherwise\n", - "symbol = \"IONQ\"\n", + "symbol = \"FRC\"\n", "report_name = f\"Equity report for {symbol}\"" ] }, @@ -142,7 +144,7 @@ "metadata": {}, "outputs": [], "source": [ - "info = openbb.stocks.fa.data(symbol=symbol).transpose()\n", + "info = openbb.stocks.fa.overview(symbol=symbol, source=\"Finviz\").transpose()\n", "\n", "info\n", "try:\n", @@ -183,7 +185,7 @@ " df_quarter_earnings,\n", " df_quarter_revenues,\n", ") = openbb.stocks.fa.est(symbol=symbol)\n", - "df_quarter_revenues" + "df_quarter_revenues.transpose()" ] }, { @@ -204,14 +206,14 @@ "metadata": {}, "outputs": [], "source": [ - "tables = openbb.etf.news(info[\"Short name\"][0], 5) if \"Short name\" in info else symbol\n", + "tables = openbb.stocks.news(symbol)\n", "\n", "for table in tables:\n", " if not isinstance(table, pd.DataFrame):\n", " continue\n", "\n", - " table[0].loc[\"link\"] = (\n", - " table[0].loc[\"link\"].apply(lambda x: f'{x}')\n", + " table[0].loc[\"URL\"] = (\n", + " table[0].loc[\"URL\"].apply(lambda x: f'{x}')\n", " )" ] }, @@ -222,7 +224,7 @@ "metadata": {}, "outputs": [], "source": [ - "quote_data = openbb.stocks.quote([symbol])\n", + "quote_data = info[[\"Price\", \"Prev Close\", \"Change\", \"Volume\", \"52W Range\", \"Perf YTD\"]]\n", "quote_data" ] }, @@ -238,28 +240,6 @@ "df_institutional_shareholders" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "e101e24e", - "metadata": {}, - "outputs": [], - "source": [ - "openbb.stocks.fa.shrs(symbol)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "51dfd9d2", - "metadata": {}, - "outputs": [], - "source": [ - "df_institutional_shareholders = openbb.stocks.fa.shrs(symbol)\n", - "df_institutional_shareholders.index += 1\n", - "df_institutional_shareholders" - ] - }, { "cell_type": "code", "execution_count": null, @@ -267,10 +247,14 @@ "metadata": {}, "outputs": [], "source": [ - "df_sec_filings = openbb.stocks.fa.sec(symbol)[\n", - " [\"Company Name\", \"Reporting Owner\", \"Form Type\", \"Period\"]\n", - "].head(5)\n", - "df_sec_filings" + "#this command works 1/2 the time - really need to fix this - but this will catch the errors and stop it from breaking the report\n", + "try:\n", + " df_sec_filings = openbb.stocks.fa.sec(symbol)[\n", + " [\"Company Name\", \"Reporting Owner\", \"Form Type\", \"Period\", \"View\"]\n", + " ].head(5)\n", + " df_sec_filings\n", + "except:\n", + " df_sec_filings = \"Error with Nasdaq API\"" ] }, { @@ -280,25 +264,25 @@ "metadata": {}, "outputs": [], "source": [ - "df_analyst = openbb.stocks.fa.analyst(symbol=symbol)\n", - "print(df_analyst)\n", - "if not df_analyst.empty:\n", - " if \"target\" in df_analyst.columns:\n", - " if \"target_to\" in df_analyst.columns:\n", - " df_analyst[\"target\"] = df_analyst[\"target_to\"].combine_first(\n", - " df_analyst[\"target\"]\n", - " )\n", - " else:\n", - " df_analyst[\"target\"] = df_analyst[\"target\"]\n", - " df_analyst = df_analyst[[\"category\", \"analyst\", \"rating\", \"target\"]].rename(\n", - " columns={\n", - " \"category\": \"Category\",\n", - " \"analyst\": \"Analyst\",\n", - " \"rating\": \"Rating\",\n", - " \"target\": \"Price Target\",\n", - " }\n", - " )\n", - "df_analyst" + "df_analyst = openbb.stocks.fa.pt(symbol=symbol).sort_index(ascending = False)\n", + "#print(df_analyst)\n", + "#if not df_analyst.empty:\n", + "# if \"target\" in df_analyst.columns:\n", + "# if \"target_to\" in df_analyst.columns:\n", + "# df_analyst[\"target\"] = df_analyst[\"target_to\"].combine_first(\n", + "# df_analyst[\"target\"]\n", + "# )\n", + "# else:\n", + "# df_analyst[\"target\"] = df_analyst[\"target\"]\n", + "# df_analyst = df_analyst[[\"category\", \"analyst\", \"rating\", \"target\"]].rename(\n", + "# columns={\n", + "# \"category\": \"Category\",\n", + "# \"analyst\": \"Analyst\",\n", + "# \"rating\": \"Rating\",\n", + "# \"target\": \"Price Target\",\n", + "# }\n", + "# )\n", + "df_analyst.head(10)" ] }, { @@ -469,7 +453,7 @@ "metadata": {}, "outputs": [], "source": [ - "similar_companies = openbb.stocks.ca.similar(symbol, source=\"Polygon\")\n", + "similar_companies = openbb.stocks.ca.similar(symbol, source=\"Finviz\")[0:5]\n", "if similar_companies:\n", " similar_companies.append(symbol)" ] @@ -666,7 +650,7 @@ "metadata": {}, "outputs": [], "source": [ - "df = openbb.stocks.fa.pt(symbol=symbol)\n", + "df = df_analyst.copy()\n", "avg_ratings_last_30_days = 0\n", "days = 0\n", "if not df.empty:\n", @@ -840,6 +824,7 @@ "ticker_data_all = openbb.stocks.load(\n", " symbol=symbol,\n", " start_date=datetime.datetime.now() - datetime.timedelta(days=5 * 12 * 21),\n", + " verbose = False\n", ")\n", "ticker_data_all[\"Returns\"] = ticker_data_all[\"Adj Close\"].pct_change()" ] @@ -889,8 +874,8 @@ "metadata": {}, "outputs": [], "source": [ - "income_df = openbb.stocks.fa.income(symbol, source=\"FinancialModelingPrep\")\n", - "data_df = openbb.stocks.fa.data(symbol)\n", + "income_df = openbb.stocks.fa.income(symbol, source = 'FinancialModelingPrep')\n", + "data_df = openbb.stocks.fa.overview(symbol, source = 'FinancialModelingPrep')\n", "mgmt_df = openbb.stocks.fa.mgmt(symbol)\n", "try:\n", " if not mgmt_df.empty:\n", @@ -1029,7 +1014,7 @@ "'];return t.cellXfs.forEach(function(n,i){var o=[];o.push(le("NumberFormat",null,{"ss:Format":Le(et[n.numFmtId])}));var a={"ss:ID":"s"+(21+i)};r.push(le("Style",o.join(""),a))}),le("Styles",r.join(""))}function Tw(e){return le("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+Md(e.Ref,{r:0,c:0})})}function M6(e){if(!((e||{}).Workbook||{}).Names)return"";for(var t=e.Workbook.Names,r=[],n=0;n"),e["!margins"].header&&i.push(le("Header",null,{"x:Margin":e["!margins"].header})),e["!margins"].footer&&i.push(le("Footer",null,{"x:Margin":e["!margins"].footer})),i.push(le("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"})),i.push("")),n&&n.Workbook&&n.Workbook.Sheets&&n.Workbook.Sheets[r])if(n.Workbook.Sheets[r].Hidden)i.push(le("Visible",n.Workbook.Sheets[r].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var o=0;o")}return((((n||{}).Workbook||{}).Views||[])[0]||{}).RTL&&i.push(""),e["!protect"]&&(i.push(vt("ProtectContents","True")),e["!protect"].objects&&i.push(vt("ProtectObjects","True")),e["!protect"].scenarios&&i.push(vt("ProtectScenarios","True")),e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells?i.push(vt("EnableSelection","NoSelection")):e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells&&i.push(vt("EnableSelection","UnlockedCells")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(a){e["!protect"][a[0]]&&i.push("<"+a[1]+"/>")})),i.length==0?"":le("WorksheetOptions",i.join(""),{xmlns:Yt.x})}function U6(e){return e.map(function(t){var r=z4(t.t||""),n=le("ss:Data",r,{xmlns:"http://www.w3.org/TR/REC-html40"});return le("Comment",n,{"ss:Author":t.a})}).join("")}function H6(e,t,r,n,i,o,a){if(!e||e.v==null&&e.f==null)return"";var s={};if(e.f&&(s["ss:Formula"]="="+Le(Md(e.f,a))),e.F&&e.F.slice(0,t.length)==t){var l=ut(e.F.slice(t.length+1));s["ss:ArrayRange"]="RC:R"+(l.r==a.r?"":"["+(l.r-a.r)+"]")+"C"+(l.c==a.c?"":"["+(l.c-a.c)+"]")}if(e.l&&e.l.Target&&(s["ss:HRef"]=Le(e.l.Target),e.l.Tooltip&&(s["x:HRefScreenTip"]=Le(e.l.Tooltip))),r["!merges"])for(var u=r["!merges"],c=0;c!=u.length;++c)u[c].s.c!=a.c||u[c].s.r!=a.r||(u[c].e.c>u[c].s.c&&(s["ss:MergeAcross"]=u[c].e.c-u[c].s.c),u[c].e.r>u[c].s.r&&(s["ss:MergeDown"]=u[c].e.r-u[c].s.r));var f="",d="";switch(e.t){case"z":if(!n.sheetStubs)return"";break;case"n":f="Number",d=String(e.v);break;case"b":f="Boolean",d=e.v?"1":"0";break;case"e":f="Error",d=es[e.v];break;case"d":f="DateTime",d=new Date(e.v).toISOString(),e.z==null&&(e.z=e.z||et[14]);break;case"s":f="String",d=W4(e.v||"");break}var h=Un(n.cellXfs,e,n);s["ss:StyleID"]="s"+(21+h),s["ss:Index"]=a.c+1;var m=e.v!=null?d:"",p=e.t=="z"?"":''+m+"";return(e.c||[]).length>0&&(p+=U6(e.c)),le("Cell",p,s)}function V6(e,t){var r='"}function W6(e,t,r,n){if(!e["!ref"])return"";var i=Ge(e["!ref"]),o=e["!merges"]||[],a=0,s=[];e["!cols"]&&e["!cols"].forEach(function(g,x){$d(g);var w=!!g.width,y=Tu(x,g),_={"ss:Index":x+1};w&&(_["ss:Width"]=Ul(y.width)),g.hidden&&(_["ss:Hidden"]="1"),s.push(le("Column",null,_))});for(var l=Array.isArray(e),u=i.s.r;u<=i.e.r;++u){for(var c=[V6(u,(e["!rows"]||[])[u])],f=i.s.c;f<=i.e.c;++f){var d=!1;for(a=0;a!=o.length;++a)if(!(o[a].s.c>f)&&!(o[a].s.r>u)&&!(o[a].e.c"),c.length>2&&s.push(c.join(""))}return s.join("")}function z6(e,t,r){var n=[],i=r.SheetNames[e],o=r.Sheets[i],a=o?L6(o,t,e,r):"";return a.length>0&&n.push(""+a+""),a=o?W6(o,t,e,r):"",a.length>0&&n.push(""+a+"
"),n.push(B6(o,t,e,r)),n.join("")}function G6(e,t){t||(t={}),e.SSF||(e.SSF=Gt(et)),e.SSF&&(wu(),xu(e.SSF),t.revssf=yu(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF,t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}));var r=[];r.push(k6(e,t)),r.push($6()),r.push(""),r.push("");for(var n=0;n-1||Gx.indexOf(i[o][0])>-1||i[o][1]!=null&&u.push(i[o]);n.length&&Ue.utils.cfb_add(t,"/SummaryInformation",Mg(n,Oc.SI,l,Ig)),(r.length||u.length)&&Ue.utils.cfb_add(t,"/DocumentSummaryInformation",Mg(r,Oc.DSI,s,Pg,u.length?u:null,Oc.UDI))}function X6(e,t){var r=t||{},n=Ue.utils.cfb_new({root:"R"}),i="/Workbook";switch(r.bookType||"xls"){case"xls":r.bookType="biff8";case"xla":r.bookType||(r.bookType="xla");case"biff8":i="/Workbook",r.biff=8;break;case"biff5":i="/Book",r.biff=5;break;default:throw new Error("invalid type "+r.bookType+" for XLS CFB")}return Ue.utils.cfb_add(n,i,Cw(e,r)),r.biff==8&&(e.Props||e.Custprops)&&j6(e,n),r.biff==8&&e.vbaraw&&fR(n,Ue.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"})),n}var K6={0:{f:QO},1:{f:oF},2:{f:CF},3:{f:hF},4:{f:uF},5:{f:EF},6:{f:DF},7:{f:vF},8:{f:MF},9:{f:NF},10:{f:kF},11:{f:$F},12:{f:sF},13:{f:RF},14:{f:gF},15:{f:fF},16:{f:SF},17:{f:IF},18:{f:wF},19:{f:Pd},20:{},21:{},22:{},23:{},24:{},25:{},26:{},27:{},28:{},29:{},30:{},31:{},32:{},33:{},34:{},35:{T:1},36:{T:-1},37:{T:1},38:{T:-1},39:{f:_6},40:{},42:{},43:{f:DA},44:{f:OA},45:{f:bA},46:{f:$A},47:{f:kA},48:{},49:{f:s3},50:{},51:{f:QA},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:lA},62:{f:FF},63:{f:nR},64:{f:JF},65:{},66:{},67:{},68:{},69:{},70:{},128:{},129:{T:1},130:{T:-1},131:{T:1,f:br,p:0},132:{T:-1},133:{T:1},134:{T:-1},135:{T:1},136:{T:-1},137:{T:1,f:YF},138:{T:-1},139:{T:1},140:{T:-1},141:{T:1},142:{T:-1},143:{T:1},144:{T:-1},145:{T:1},146:{T:-1},147:{f:nF},148:{f:eF,p:16},151:{f:WF},152:{},153:{f:y6},154:{},155:{},156:{f:x6},157:{},158:{},159:{T:1,f:xA},160:{T:-1},161:{T:1,f:yi},162:{T:-1},163:{T:1},164:{T:-1},165:{T:1},166:{T:-1},167:{},168:{},169:{},170:{},171:{},172:{T:1},173:{T:-1},174:{},175:{},176:{f:LF},177:{T:1},178:{T:-1},179:{T:1},180:{T:-1},181:{T:1},182:{T:-1},183:{T:1},184:{T:-1},185:{T:1},186:{T:-1},187:{T:1},188:{T:-1},189:{T:1},190:{T:-1},191:{T:1},192:{T:-1},193:{T:1},194:{T:-1},195:{T:1},196:{T:-1},197:{T:1},198:{T:-1},199:{T:1},200:{T:-1},201:{T:1},202:{T:-1},203:{T:1},204:{T:-1},205:{T:1},206:{T:-1},207:{T:1},208:{T:-1},209:{T:1},210:{T:-1},211:{T:1},212:{T:-1},213:{T:1},214:{T:-1},215:{T:1},216:{T:-1},217:{T:1},218:{T:-1},219:{T:1},220:{T:-1},221:{T:1},222:{T:-1},223:{T:1},224:{T:-1},225:{T:1},226:{T:-1},227:{T:1},228:{T:-1},229:{T:1},230:{T:-1},231:{T:1},232:{T:-1},233:{T:1},234:{T:-1},235:{T:1},236:{T:-1},237:{T:1},238:{T:-1},239:{T:1},240:{T:-1},241:{T:1},242:{T:-1},243:{T:1},244:{T:-1},245:{T:1},246:{T:-1},247:{T:1},248:{T:-1},249:{T:1},250:{T:-1},251:{T:1},252:{T:-1},253:{T:1},254:{T:-1},255:{T:1},256:{T:-1},257:{T:1},258:{T:-1},259:{T:1},260:{T:-1},261:{T:1},262:{T:-1},263:{T:1},264:{T:-1},265:{T:1},266:{T:-1},267:{T:1},268:{T:-1},269:{T:1},270:{T:-1},271:{T:1},272:{T:-1},273:{T:1},274:{T:-1},275:{T:1},276:{T:-1},277:{},278:{T:1},279:{T:-1},280:{T:1},281:{T:-1},282:{T:1},283:{T:1},284:{T:-1},285:{T:1},286:{T:-1},287:{T:1},288:{T:-1},289:{T:1},290:{T:-1},291:{T:1},292:{T:-1},293:{T:1},294:{T:-1},295:{T:1},296:{T:-1},297:{T:1},298:{T:-1},299:{T:1},300:{T:-1},301:{T:1},302:{T:-1},303:{T:1},304:{T:-1},305:{T:1},306:{T:-1},307:{T:1},308:{T:-1},309:{T:1},310:{T:-1},311:{T:1},312:{T:-1},313:{T:-1},314:{T:1},315:{T:-1},316:{T:1},317:{T:-1},318:{T:1},319:{T:-1},320:{T:1},321:{T:-1},322:{T:1},323:{T:-1},324:{T:1},325:{T:-1},326:{T:1},327:{T:-1},328:{T:1},329:{T:-1},330:{T:1},331:{T:-1},332:{T:1},333:{T:-1},334:{T:1},335:{f:YA},336:{T:-1},337:{f:eR,T:1},338:{T:-1},339:{T:1},340:{T:-1},341:{T:1},342:{T:-1},343:{T:1},344:{T:-1},345:{T:1},346:{T:-1},347:{T:1},348:{T:-1},349:{T:1},350:{T:-1},351:{},352:{},353:{T:1},354:{T:-1},355:{f:Gf},357:{},358:{},359:{},360:{T:1},361:{},362:{f:rA},363:{},364:{},366:{},367:{},368:{},369:{},370:{},371:{},372:{T:1},373:{T:-1},374:{T:1},375:{T:-1},376:{T:1},377:{T:-1},378:{T:1},379:{T:-1},380:{T:1},381:{T:-1},382:{T:1},383:{T:-1},384:{T:1},385:{T:-1},386:{T:1},387:{T:-1},388:{T:1},389:{T:-1},390:{T:1},391:{T:-1},392:{T:1},393:{T:-1},394:{T:1},395:{T:-1},396:{},397:{},398:{},399:{},400:{},401:{T:1},403:{},404:{},405:{},406:{},407:{},408:{},409:{},410:{},411:{},412:{},413:{},414:{},415:{},416:{},417:{},418:{},419:{},420:{},421:{},422:{T:1},423:{T:1},424:{T:-1},425:{T:-1},426:{f:zF},427:{f:GF},428:{},429:{T:1},430:{T:-1},431:{T:1},432:{T:-1},433:{T:1},434:{T:-1},435:{T:1},436:{T:-1},437:{T:1},438:{T:-1},439:{T:1},440:{T:-1},441:{T:1},442:{T:-1},443:{T:1},444:{T:-1},445:{T:1},446:{T:-1},447:{T:1},448:{T:-1},449:{T:1},450:{T:-1},451:{T:1},452:{T:-1},453:{T:1},454:{T:-1},455:{T:1},456:{T:-1},457:{T:1},458:{T:-1},459:{T:1},460:{T:-1},461:{T:1},462:{T:-1},463:{T:1},464:{T:-1},465:{T:1},466:{T:-1},467:{T:1},468:{T:-1},469:{T:1},470:{T:-1},471:{},472:{},473:{T:1},474:{T:-1},475:{},476:{f:XF},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:rF},486:{T:1},487:{T:-1},488:{T:1},489:{T:-1},490:{T:1},491:{T:-1},492:{T:1},493:{T:-1},494:{f:HF},495:{T:1},496:{T:-1},497:{T:1},498:{T:-1},499:{},500:{T:1},501:{T:-1},502:{T:1},503:{T:-1},504:{},505:{T:1},506:{T:-1},507:{},508:{T:1},509:{T:-1},510:{T:1},511:{T:-1},512:{},513:{},514:{T:1},515:{T:-1},516:{T:1},517:{T:-1},518:{T:1},519:{T:-1},520:{T:1},521:{T:-1},522:{},523:{},524:{},525:{},526:{},527:{},528:{T:1},529:{T:-1},530:{T:1},531:{T:-1},532:{T:1},533:{T:-1},534:{},535:{},536:{},537:{},538:{T:1},539:{T:-1},540:{T:1},541:{T:-1},542:{T:1},548:{},549:{},550:{f:Gf},551:{},552:{},553:{},554:{T:1},555:{T:-1},556:{T:1},557:{T:-1},558:{T:1},559:{T:-1},560:{T:1},561:{T:-1},562:{},564:{},565:{T:1},566:{T:-1},569:{T:1},570:{T:-1},572:{},573:{T:1},574:{T:-1},577:{},578:{},579:{},580:{},581:{},582:{},583:{},584:{},585:{},586:{},587:{},588:{T:-1},589:{},590:{T:1},591:{T:-1},592:{T:1},593:{T:-1},594:{T:1},595:{T:-1},596:{},597:{T:1},598:{T:-1},599:{T:1},600:{T:-1},601:{T:1},602:{T:-1},603:{T:1},604:{T:-1},605:{T:1},606:{T:-1},607:{},608:{T:1},609:{T:-1},610:{},611:{T:1},612:{T:-1},613:{T:1},614:{T:-1},615:{T:1},616:{T:-1},617:{T:1},618:{T:-1},619:{T:1},620:{T:-1},625:{},626:{T:1},627:{T:-1},628:{T:1},629:{T:-1},630:{T:1},631:{T:-1},632:{f:lR},633:{T:1},634:{T:-1},635:{T:1,f:aR},636:{T:-1},637:{f:f3},638:{T:1},639:{},640:{T:-1},641:{T:1},642:{T:-1},643:{T:1},644:{},645:{T:-1},646:{T:1},648:{T:1},649:{},650:{T:-1},651:{f:d6},652:{},653:{T:1},654:{T:-1},655:{T:1},656:{T:-1},657:{T:1},658:{T:-1},659:{},660:{T:1},661:{},662:{T:-1},663:{},664:{T:1},665:{},666:{T:-1},667:{},668:{},669:{},671:{T:1},672:{T:-1},673:{T:1},674:{T:-1},675:{},676:{},677:{},678:{},679:{},680:{},681:{},1024:{},1025:{},1026:{T:1},1027:{T:-1},1028:{T:1},1029:{T:-1},1030:{},1031:{T:1},1032:{T:-1},1033:{T:1},1034:{T:-1},1035:{},1036:{},1037:{},1038:{T:1},1039:{T:-1},1040:{},1041:{T:1},1042:{T:-1},1043:{},1044:{},1045:{},1046:{T:1},1047:{T:-1},1048:{T:1},1049:{T:-1},1050:{},1051:{T:1},1052:{T:1},1053:{f:e6},1054:{T:1},1055:{},1056:{T:1},1057:{T:-1},1058:{T:1},1059:{T:-1},1061:{},1062:{T:1},1063:{T:-1},1064:{T:1},1065:{T:-1},1066:{T:1},1067:{T:-1},1068:{T:1},1069:{T:-1},1070:{T:1},1071:{T:-1},1072:{T:1},1073:{T:-1},1075:{T:1},1076:{T:-1},1077:{T:1},1078:{T:-1},1079:{T:1},1080:{T:-1},1081:{T:1},1082:{T:-1},1083:{T:1},1084:{T:-1},1085:{},1086:{T:1},1087:{T:-1},1088:{T:1},1089:{T:-1},1090:{T:1},1091:{T:-1},1092:{T:1},1093:{T:-1},1094:{T:1},1095:{T:-1},1096:{},1097:{T:1},1098:{},1099:{T:-1},1100:{T:1},1101:{T:-1},1102:{},1103:{},1104:{},1105:{},1111:{},1112:{},1113:{T:1},1114:{T:-1},1115:{T:1},1116:{T:-1},1117:{},1118:{T:1},1119:{T:-1},1120:{T:1},1121:{T:-1},1122:{T:1},1123:{T:-1},1124:{T:1},1125:{T:-1},1126:{},1128:{T:1},1129:{T:-1},1130:{},1131:{T:1},1132:{T:-1},1133:{T:1},1134:{T:-1},1135:{T:1},1136:{T:-1},1137:{T:1},1138:{T:-1},1139:{T:1},1140:{T:-1},1141:{},1142:{T:1},1143:{T:-1},1144:{T:1},1145:{T:-1},1146:{},1147:{T:1},1148:{T:-1},1149:{T:1},1150:{T:-1},1152:{T:1},1153:{T:-1},1154:{T:-1},1155:{T:-1},1156:{T:-1},1157:{T:1},1158:{T:-1},1159:{T:1},1160:{T:-1},1161:{T:1},1162:{T:-1},1163:{T:1},1164:{T:-1},1165:{T:1},1166:{T:-1},1167:{T:1},1168:{T:-1},1169:{T:1},1170:{T:-1},1171:{},1172:{T:1},1173:{T:-1},1177:{},1178:{T:1},1180:{},1181:{},1182:{},2048:{T:1},2049:{T:-1},2050:{},2051:{T:1},2052:{T:-1},2053:{},2054:{},2055:{T:1},2056:{T:-1},2057:{T:1},2058:{T:-1},2060:{},2067:{},2068:{T:1},2069:{T:-1},2070:{},2071:{},2072:{T:1},2073:{T:-1},2075:{},2076:{},2077:{T:1},2078:{T:-1},2079:{},2080:{T:1},2081:{T:-1},2082:{},2083:{T:1},2084:{T:-1},2085:{T:1},2086:{T:-1},2087:{T:1},2088:{T:-1},2089:{T:1},2090:{T:-1},2091:{},2092:{},2093:{T:1},2094:{T:-1},2095:{},2096:{T:1},2097:{T:-1},2098:{T:1},2099:{T:-1},2100:{T:1},2101:{T:-1},2102:{},2103:{T:1},2104:{T:-1},2105:{},2106:{T:1},2107:{T:-1},2108:{},2109:{T:1},2110:{T:-1},2111:{T:1},2112:{T:-1},2113:{T:1},2114:{T:-1},2115:{},2116:{},2117:{},2118:{T:1},2119:{T:-1},2120:{},2121:{T:1},2122:{T:-1},2123:{T:1},2124:{T:-1},2125:{},2126:{T:1},2127:{T:-1},2128:{},2129:{T:1},2130:{T:-1},2131:{T:1},2132:{T:-1},2133:{T:1},2134:{},2135:{},2136:{},2137:{T:1},2138:{T:-1},2139:{T:1},2140:{T:-1},2141:{},3072:{},3073:{},4096:{T:1},4097:{T:-1},5002:{T:1},5003:{T:-1},5081:{T:1},5082:{T:-1},5083:{},5084:{T:1},5085:{T:-1},5086:{T:1},5087:{T:-1},5088:{},5089:{},5090:{},5092:{T:1},5093:{T:-1},5094:{},5095:{T:1},5096:{T:-1},5097:{},5099:{},65535:{n:""}};function ue(e,t,r,n){var i=t;if(!isNaN(i)){var o=n||(r||[]).length||0,a=e.next(4);a.write_shift(2,i),a.write_shift(2,o),o>0&&Od(r)&&e.push(r)}}function Y6(e,t,r,n){var i=n||(r||[]).length||0;if(i<=8224)return ue(e,t,r,i);var o=t;if(!isNaN(o)){for(var a=r.parts||[],s=0,l=0,u=0;u+(a[s]||8224)<=8224;)u+=a[s]||8224,s++;var c=e.next(4);for(c.write_shift(2,o),c.write_shift(2,u),e.push(r.slice(l,l+u)),l+=u;l=0&&i<65536?ue(e,2,dA(r,n,i)):ue(e,3,fA(r,n,i));return;case"b":case"e":ue(e,5,q6(r,n,t.v,t.t));return;case"s":case"str":ue(e,4,Q6(r,n,(t.v||"").slice(0,255)));return}ue(e,1,rs(null,r,n))}function J6(e,t,r,n){var i=Array.isArray(t),o=Ge(t["!ref"]||"A1"),a,s="",l=[];if(o.e.c>255||o.e.r>16383){if(n.WTF)throw new Error("Range "+(t["!ref"]||"A1")+" exceeds format limit A1:IV16384");o.e.c=Math.min(o.e.c,255),o.e.r=Math.min(o.e.c,16383),a=nt(o)}for(var u=o.s.r;u<=o.e.r;++u){s=wt(u);for(var c=o.s.c;c<=o.e.c;++c){u===o.s.r&&(l[c]=Rt(c)),a=l[c]+s;var f=i?(t[u]||[])[c]:t[a];f&&Z6(e,f,u,c)}}}function eD(e,t){for(var r=t||{},n=Wt(),i=0,o=0;o255||h.e.r>=m){if(t.WTF)throw new Error("Range "+(o["!ref"]||"A1")+" exceeds format limit A1:IV16384");h.e.c=Math.min(h.e.c,255),h.e.r=Math.min(h.e.c,m-1)}ue(n,2057,kd(r,16,t)),ue(n,13,ir(1)),ue(n,12,ir(100)),ue(n,15,It(!0)),ue(n,17,It(!1)),ue(n,16,ai(.001)),ue(n,95,It(!0)),ue(n,42,It(!1)),ue(n,43,It(!1)),ue(n,130,ir(1)),ue(n,128,J3([0,0])),ue(n,131,It(!1)),ue(n,132,It(!1)),u&&aD(n,o["!cols"]),ue(n,512,Z3(h,t)),u&&(o["!links"]=[]);for(var p=h.s.r;p<=h.e.r;++p){f=wt(p);for(var g=h.s.c;g<=h.e.c;++g){p===h.s.r&&(d[g]=Rt(g)),c=d[g]+f;var x=l?(o[p]||[])[g]:o[c];x&&(sD(n,x,p,g,t),u&&x.l&&o["!links"].push([c,x.l]))}}var w=s.CodeName||s.name||i;return u&&ue(n,574,X3((a.Views||[])[0])),u&&(o["!merges"]||[]).length&&ue(n,229,iA(o["!merges"])),u&&oD(n,o),ue(n,442,Zx(w)),u&&nD(n,o),ue(n,10),n.end()}function uD(e,t,r){var n=Wt(),i=(e||{}).Workbook||{},o=i.Sheets||[],a=i.WBProps||{},s=r.biff==8,l=r.biff==5;if(ue(n,2057,kd(e,5,r)),r.bookType=="xla"&&ue(n,135),ue(n,225,s?ir(1200):null),ue(n,193,k3(2)),l&&ue(n,191),l&&ue(n,192),ue(n,226),ue(n,92,W3("SheetJS",r)),ue(n,66,ir(s?1200:1252)),s&&ue(n,353,ir(0)),s&&ue(n,448),ue(n,317,cA(e.SheetNames.length)),s&&e.vbaraw&&ue(n,211),s&&e.vbaraw){var u=a.CodeName||"ThisWorkbook";ue(n,442,Zx(u))}ue(n,156,ir(17)),ue(n,25,It(!1)),ue(n,18,It(!1)),ue(n,19,ir(0)),s&&ue(n,431,It(!1)),s&&ue(n,444,ir(0)),ue(n,61,j3()),ue(n,64,It(!1)),ue(n,141,ir(0)),ue(n,34,It(p6(e)=="true")),ue(n,14,It(!0)),s&&ue(n,439,It(!1)),ue(n,218,ir(0)),tD(n,e,r),rD(n,e.SSF,r),iD(n,r),s&&ue(n,352,It(!1));var c=n.end(),f=Wt();s&&ue(f,140,sA()),s&&r.Strings&&Y6(f,252,G3(r.Strings)),ue(f,10);var d=f.end(),h=Wt(),m=0,p=0;for(p=0;p255&&typeof console<"u"&&console.error&&console.error("Worksheet '"+e.SheetNames[r]+"' extends beyond column IV (255). Data may be lost.")}}var o=t||{};switch(o.biff||2){case 8:case 5:return cD(e,t);case 4:case 3:case 2:return eD(e,t)}throw new Error("invalid type "+o.bookType+" for BIFF")}function fD(e,t,r,n){for(var i=e["!merges"]||[],o=[],a=t.s.c;a<=t.e.c;++a){for(var s=0,l=0,u=0;ur||i[u].s.c>a)&&!(i[u].e.r1&&(h.rowspan=s),l>1&&(h.colspan=l),n.editable?d=''+d+"":f&&(h["data-t"]=f&&f.t||"z",f.v!=null&&(h["data-v"]=f.v),f.z!=null&&(h["data-z"]=f.z),f.l&&(f.l.Target||"#").charAt(0)!="#"&&(d=''+d+"")),h.id=(n.id||"sjs")+"-"+c,o.push(le("td",d,h))}}var m="";return m+o.join("")+""}var dD='SheetJS Table Export',hD="";function pD(e,t,r){var n=[];return n.join("")+""}function Aw(e,t){var r=t||{},n=r.header!=null?r.header:dD,i=r.footer!=null?r.footer:hD,o=[n],a=Zt(e["!ref"]);r.dense=Array.isArray(e),o.push(pD(e,a,r));for(var s=a.s.r;s<=a.e.r;++s)o.push(fD(e,a,s,r));return o.push(""+i),o.join("")}function Rw(e,t,r){var n=r||{},i=0,o=0;if(n.origin!=null)if(typeof n.origin=="number")i=n.origin;else{var a=typeof n.origin=="string"?ut(n.origin):n.origin;i=a.r,o=a.c}var s=t.getElementsByTagName("tr"),l=Math.min(n.sheetRows||1e7,s.length),u={s:{r:0,c:0},e:{r:i,c:o}};if(e["!ref"]){var c=Zt(e["!ref"]);u.s.r=Math.min(u.s.r,c.s.r),u.s.c=Math.min(u.s.c,c.s.c),u.e.r=Math.max(u.e.r,c.e.r),u.e.c=Math.max(u.e.c,c.e.c),i==-1&&(u.e.r=i=c.e.r+1)}var f=[],d=0,h=e["!rows"]||(e["!rows"]=[]),m=0,p=0,g=0,x=0,w=0,y=0;for(e["!cols"]||(e["!cols"]=[]);m1||y>1)&&f.push({s:{r:p+i,c:x+o},e:{r:p+i+(w||1)-1,c:x+o+(y||1)-1}});var L={t:"s",v:S},V=N.getAttribute("data-t")||N.getAttribute("t")||"";S!=null&&(S.length==0?L.t=V||"z":n.raw||S.trim().length==0||V=="s"||(S==="TRUE"?L={t:"b",v:!0}:S==="FALSE"?L={t:"b",v:!1}:isNaN(Qr(S))?isNaN(Ma(S).getDate())||(L={t:"d",v:$t(S)},n.cellDates||(L={t:"n",v:zt(L.v)}),L.z=n.dateNF||et[14]):L={t:"n",v:Qr(S)})),L.z===void 0&&A!=null&&(L.z=A);var U="",W=N.getElementsByTagName("A");if(W&&W.length)for(var Y=0;Y=l&&(e["!fullref"]=nt((u.e.r=s.length-m+p-1+i,u))),e}function Ow(e,t){var r=t||{},n=r.dense?[]:{};return Rw(n,e,t)}function gD(e,t){return mi(Ow(e,t),t)}function jg(e){var t="",r=mD(e);return r&&(t=r(e).getPropertyValue("display")),t||(t=e.style&&e.style.display),t==="none"}function mD(e){return e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle=="function"?e.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}var vD=function(){var e=["",'',"",'',"",'',"",""].join(""),t=""+e+"";return function(){return it+t}}(),Xg=function(){var e=function(o){return Le(o).replace(/ +/g,function(a){return''}).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"")},t=` +`;t.push(vt("t",Le(a)))}t.push("")}),t.push(""),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}function iR(e,t,r){var n=[it,le("ThreadedComments",null,{xmlns:lt.TCMNT}).replace(/[\/]>/,">")];return e.forEach(function(i){var o="";(i[1]||[]).forEach(function(a,s){if(!a.T){delete a.ID;return}a.a&&t.indexOf(a.a)==-1&&t.push(a.a);var l={ref:i[0],id:"{54EE7951-7262-4200-6969-"+("000000000000"+r.tcid++).slice(-12)+"}"};s==0?o=l.id:l.parentId=o,a.ID=l.id,a.a&&(l.personId="{54EE7950-7262-4200-6969-"+("000000000000"+t.indexOf(a.a)).slice(-12)+"}"),n.push(le("threadedComment",vt("text",a.t||""),l))})}),n.push(""),n.join("")}function oR(e){var t=[it,le("personList",null,{xmlns:lt.TCMNT,"xmlns:x":_o[0]}).replace(/[\/]>/,">")];return e.forEach(function(r,n){t.push(le("person",null,{displayName:r,id:"{54EE7950-7262-4200-6969-"+("000000000000"+n).slice(-12)+"}",userId:r,providerId:"None"}))}),t.push(""),t.join("")}function aR(e){var t={};t.iauthor=e.read_shift(4);var r=yi(e);return t.rfx=r.s,t.ref=Be(r.s),e.l+=16,t}function sR(e,t){return t==null&&(t=J(36)),t.write_shift(4,e[1].iauthor),To(e[0],t),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t}var lR=Ot;function uR(e){return ct(e.slice(0,54))}function cR(e){var t=Wt(),r=[];return ne(t,628),ne(t,630),e.forEach(function(n){n[1].forEach(function(i){r.indexOf(i.a)>-1||(r.push(i.a.slice(0,54)),ne(t,632,uR(i.a)))})}),ne(t,631),ne(t,633),e.forEach(function(n){n[1].forEach(function(i){i.iauthor=r.indexOf(i.a);var o={s:ut(n[0]),e:ut(n[0])};ne(t,635,sR([o,i])),i.t&&i.t.length>0&&ne(t,637,d3(i)),ne(t,636),delete i.iauthor})}),ne(t,634),ne(t,629),t.end()}function fR(e,t){t.FullPaths.forEach(function(r,n){if(n!=0){var i=r.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");i.slice(-1)!=="/"&&Ue.utils.cfb_add(e,i,t.FileIndex[n].content)}})}var fw=["xlsb","xlsm","xlam","biff8","xla"],dR=function(){var e=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g,t={r:0,c:0};function r(n,i,o,a){var s=!1,l=!1;o.length==0?l=!0:o.charAt(0)=="["&&(l=!0,o=o.slice(1,-1)),a.length==0?s=!0:a.charAt(0)=="["&&(s=!0,a=a.slice(1,-1));var u=o.length>0?parseInt(o,10)|0:0,c=a.length>0?parseInt(a,10)|0:0;return s?c+=t.c:--c,l?u+=t.r:--u,i+(s?"":"$")+Rt(c)+(l?"":"$")+wt(u)}return function(i,o){return t=o,i.replace(e,r)}}(),Md=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g,Ld=function(){return function(t,r){return t.replace(Md,function(n,i,o,a,s,l){var u=Pd(a)-(o?0:r.c),c=Dd(l)-(s?0:r.r),f=c==0?"":s?c+1:"["+c+"]",d=u==0?"":o?u+1:"["+u+"]";return i+"R"+f+"C"+d})}}();function hR(e,t){return e.replace(Md,function(r,n,i,o,a,s){return n+(i=="$"?i+o:Rt(Pd(o)+t.c))+(a=="$"?a+s:wt(Dd(s)+t.r))})}function pR(e){return e.length!=1}function rt(e){e.l+=1}function Nn(e,t){var r=e.read_shift(t==1?1:2);return[r&16383,r>>14&1,r>>15&1]}function dw(e,t,r){var n=2;if(r){if(r.biff>=2&&r.biff<=5)return hw(e);r.biff==12&&(n=4)}var i=e.read_shift(n),o=e.read_shift(n),a=Nn(e,2),s=Nn(e,2);return{s:{r:i,c:a[0],cRel:a[1],rRel:a[2]},e:{r:o,c:s[0],cRel:s[1],rRel:s[2]}}}function hw(e){var t=Nn(e,2),r=Nn(e,2),n=e.read_shift(1),i=e.read_shift(1);return{s:{r:t[0],c:n,cRel:t[1],rRel:t[2]},e:{r:r[0],c:i,cRel:r[1],rRel:r[2]}}}function gR(e,t,r){if(r.biff<8)return hw(e);var n=e.read_shift(r.biff==12?4:2),i=e.read_shift(r.biff==12?4:2),o=Nn(e,2),a=Nn(e,2);return{s:{r:n,c:o[0],cRel:o[1],rRel:o[2]},e:{r:i,c:a[0],cRel:a[1],rRel:a[2]}}}function pw(e,t,r){if(r&&r.biff>=2&&r.biff<=5)return mR(e);var n=e.read_shift(r&&r.biff==12?4:2),i=Nn(e,2);return{r:n,c:i[0],cRel:i[1],rRel:i[2]}}function mR(e){var t=Nn(e,2),r=e.read_shift(1);return{r:t[0],c:r,cRel:t[1],rRel:t[2]}}function vR(e){var t=e.read_shift(2),r=e.read_shift(2);return{r:t,c:r&255,fQuoted:!!(r&16384),cRel:r>>15,rRel:r>>15}}function xR(e,t,r){var n=r&&r.biff?r.biff:8;if(n>=2&&n<=5)return wR(e);var i=e.read_shift(n>=12?4:2),o=e.read_shift(2),a=(o&16384)>>14,s=(o&32768)>>15;if(o&=16383,s==1)for(;i>524287;)i-=1048576;if(a==1)for(;o>8191;)o=o-16384;return{r:i,c:o,cRel:a,rRel:s}}function wR(e){var t=e.read_shift(2),r=e.read_shift(1),n=(t&32768)>>15,i=(t&16384)>>14;return t&=16383,n==1&&t>=8192&&(t=t-16384),i==1&&r>=128&&(r=r-256),{r:t,c:r,cRel:i,rRel:n}}function yR(e,t,r){var n=(e[e.l++]&96)>>5,i=dw(e,r.biff>=2&&r.biff<=5?6:8,r);return[n,i]}function ER(e,t,r){var n=(e[e.l++]&96)>>5,i=e.read_shift(2,"i"),o=8;if(r)switch(r.biff){case 5:e.l+=12,o=6;break;case 12:o=12;break}var a=dw(e,o,r);return[n,i,a]}function _R(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r&&r.biff>8?12:r.biff<8?6:8,[n]}function SR(e,t,r){var n=(e[e.l++]&96)>>5,i=e.read_shift(2),o=8;if(r)switch(r.biff){case 5:e.l+=12,o=6;break;case 12:o=12;break}return e.l+=o,[n,i]}function TR(e,t,r){var n=(e[e.l++]&96)>>5,i=gR(e,t-1,r);return[n,i]}function CR(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r.biff==2?6:r.biff==12?14:7,[n]}function zg(e){var t=e[e.l+1]&1,r=1;return e.l+=4,[t,r]}function AR(e,t,r){e.l+=2;for(var n=e.read_shift(r&&r.biff==2?1:2),i=[],o=0;o<=n;++o)i.push(e.read_shift(r&&r.biff==2?1:2));return i}function RR(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=2,[n,e.read_shift(r&&r.biff==2?1:2)]}function OR(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=2,[n,e.read_shift(r&&r.biff==2?1:2)]}function FR(e){var t=e[e.l+1]&255?1:0;return e.l+=2,[t,e.read_shift(2)]}function DR(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=r&&r.biff==2?3:4,[n]}function gw(e){var t=e.read_shift(1),r=e.read_shift(1);return[t,r]}function PR(e){return e.read_shift(2),gw(e)}function IR(e){return e.read_shift(2),gw(e)}function bR(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var i=pw(e,0,r);return[n,i]}function kR(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var i=xR(e,0,r);return[n,i]}function $R(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var i=e.read_shift(2);r&&r.biff==5&&(e.l+=12);var o=pw(e,0,r);return[n,i,o]}function NR(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var i=e.read_shift(r&&r.biff<=3?1:2);return[NO[i],xw[i],n]}function MR(e,t,r){var n=e[e.l++],i=e.read_shift(1),o=r&&r.biff<=3?[n==88?-1:0,e.read_shift(1)]:LR(e);return[i,(o[0]===0?xw:$O)[o[1]]]}function LR(e){return[e[e.l+1]>>7,e.read_shift(2)&32767]}function BR(e,t,r){e.l+=r&&r.biff==2?3:4}function UR(e,t,r){if(e.l++,r&&r.biff==12)return[e.read_shift(4,"i"),0];var n=e.read_shift(2),i=e.read_shift(r&&r.biff==2?1:2);return[n,i]}function HR(e){return e.l++,es[e.read_shift(1)]}function VR(e){return e.l++,e.read_shift(2)}function WR(e){return e.l++,e.read_shift(1)!==0}function zR(e){return e.l++,Co(e)}function GR(e,t,r){return e.l++,Qx(e,t-1,r)}function jR(e,t){var r=[e.read_shift(1)];if(t==12)switch(r[0]){case 2:r[0]=4;break;case 4:r[0]=16;break;case 0:r[0]=1;break;case 1:r[0]=2;break}switch(r[0]){case 4:r[1]=$3(e,1)?"TRUE":"FALSE",t!=12&&(e.l+=7);break;case 37:case 16:r[1]=es[e[e.l]],e.l+=t==12?4:8;break;case 0:e.l+=8;break;case 1:r[1]=Co(e);break;case 2:r[1]=B3(e,0,{biff:t>0&&t<8?2:t});break;default:throw new Error("Bad SerAr: "+r[0])}return r}function XR(e,t,r){for(var n=e.read_shift(r.biff==12?4:2),i=[],o=0;o!=n;++o)i.push((r.biff==12?yi:V3)(e));return i}function KR(e,t,r){var n=0,i=0;r.biff==12?(n=e.read_shift(4),i=e.read_shift(4)):(i=1+e.read_shift(1),n=1+e.read_shift(2)),r.biff>=2&&r.biff<8&&(--n,--i==0&&(i=256));for(var o=0,a=[];o!=n&&(a[o]=[]);++o)for(var s=0;s!=i;++s)a[o][s]=jR(e,r.biff);return a}function YR(e,t,r){var n=e.read_shift(1)>>>5&3,i=!r||r.biff>=8?4:2,o=e.read_shift(i);switch(r.biff){case 2:e.l+=5;break;case 3:case 4:e.l+=8;break;case 5:e.l+=12;break}return[n,0,o]}function qR(e,t,r){if(r.biff==5)return QR(e);var n=e.read_shift(1)>>>5&3,i=e.read_shift(2),o=e.read_shift(4);return[n,i,o]}function QR(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2,"i");e.l+=8;var n=e.read_shift(2);return e.l+=12,[t,r,n]}function ZR(e,t,r){var n=e.read_shift(1)>>>5&3;e.l+=r&&r.biff==2?3:4;var i=e.read_shift(r&&r.biff==2?1:2);return[n,i]}function JR(e,t,r){var n=e.read_shift(1)>>>5&3,i=e.read_shift(r&&r.biff==2?1:2);return[n,i]}function eO(e,t,r){var n=e.read_shift(1)>>>5&3;return e.l+=4,r.biff<8&&e.l--,r.biff==12&&(e.l+=2),[n]}function tO(e,t,r){var n=(e[e.l++]&96)>>5,i=e.read_shift(2),o=4;if(r)switch(r.biff){case 5:o=15;break;case 12:o=6;break}return e.l+=o,[n,i]}var rO=br,nO=br,iO=br;function ts(e,t,r){return e.l+=2,[vR(e)]}function Bd(e){return e.l+=6,[]}var oO=ts,aO=Bd,sO=Bd,lO=ts;function mw(e){return e.l+=2,[Yx(e),e.read_shift(2)&1]}var uO=ts,cO=mw,fO=Bd,dO=ts,hO=ts,pO=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function gO(e){e.l+=2;var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(4),i=e.read_shift(2),o=e.read_shift(2),a=pO[r>>2&31];return{ixti:t,coltype:r&3,rt:a,idx:n,c:i,C:o}}function mO(e){return e.l+=2,[e.read_shift(4)]}function vO(e,t,r){return e.l+=5,e.l+=2,e.l+=r.biff==2?1:4,["PTGSHEET"]}function xO(e,t,r){return e.l+=r.biff==2?4:5,["PTGENDSHEET"]}function wO(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function yO(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function EO(e){return e.l+=4,[0,0]}var Gg={1:{n:"PtgExp",f:UR},2:{n:"PtgTbl",f:iO},3:{n:"PtgAdd",f:rt},4:{n:"PtgSub",f:rt},5:{n:"PtgMul",f:rt},6:{n:"PtgDiv",f:rt},7:{n:"PtgPower",f:rt},8:{n:"PtgConcat",f:rt},9:{n:"PtgLt",f:rt},10:{n:"PtgLe",f:rt},11:{n:"PtgEq",f:rt},12:{n:"PtgGe",f:rt},13:{n:"PtgGt",f:rt},14:{n:"PtgNe",f:rt},15:{n:"PtgIsect",f:rt},16:{n:"PtgUnion",f:rt},17:{n:"PtgRange",f:rt},18:{n:"PtgUplus",f:rt},19:{n:"PtgUminus",f:rt},20:{n:"PtgPercent",f:rt},21:{n:"PtgParen",f:rt},22:{n:"PtgMissArg",f:rt},23:{n:"PtgStr",f:GR},26:{n:"PtgSheet",f:vO},27:{n:"PtgEndSheet",f:xO},28:{n:"PtgErr",f:HR},29:{n:"PtgBool",f:WR},30:{n:"PtgInt",f:VR},31:{n:"PtgNum",f:zR},32:{n:"PtgArray",f:CR},33:{n:"PtgFunc",f:NR},34:{n:"PtgFuncVar",f:MR},35:{n:"PtgName",f:YR},36:{n:"PtgRef",f:bR},37:{n:"PtgArea",f:yR},38:{n:"PtgMemArea",f:ZR},39:{n:"PtgMemErr",f:rO},40:{n:"PtgMemNoMem",f:nO},41:{n:"PtgMemFunc",f:JR},42:{n:"PtgRefErr",f:eO},43:{n:"PtgAreaErr",f:_R},44:{n:"PtgRefN",f:kR},45:{n:"PtgAreaN",f:TR},46:{n:"PtgMemAreaN",f:wO},47:{n:"PtgMemNoMemN",f:yO},57:{n:"PtgNameX",f:qR},58:{n:"PtgRef3d",f:$R},59:{n:"PtgArea3d",f:ER},60:{n:"PtgRefErr3d",f:tO},61:{n:"PtgAreaErr3d",f:SR},255:{}},_O={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61},SO={1:{n:"PtgElfLel",f:mw},2:{n:"PtgElfRw",f:dO},3:{n:"PtgElfCol",f:oO},6:{n:"PtgElfRwV",f:hO},7:{n:"PtgElfColV",f:lO},10:{n:"PtgElfRadical",f:uO},11:{n:"PtgElfRadicalS",f:fO},13:{n:"PtgElfColS",f:aO},15:{n:"PtgElfColSV",f:sO},16:{n:"PtgElfRadicalLel",f:cO},25:{n:"PtgList",f:gO},29:{n:"PtgSxName",f:mO},255:{}},TO={0:{n:"PtgAttrNoop",f:EO},1:{n:"PtgAttrSemi",f:DR},2:{n:"PtgAttrIf",f:OR},4:{n:"PtgAttrChoose",f:AR},8:{n:"PtgAttrGoto",f:RR},16:{n:"PtgAttrSum",f:BR},32:{n:"PtgAttrBaxcel",f:zg},33:{n:"PtgAttrBaxcel",f:zg},64:{n:"PtgAttrSpace",f:PR},65:{n:"PtgAttrSpaceSemi",f:IR},128:{n:"PtgAttrIfError",f:FR},255:{}};function CO(e,t,r,n){if(n.biff<8)return br(e,t);for(var i=e.l+t,o=[],a=0;a!==r.length;++a)switch(r[a][0]){case"PtgArray":r[a][1]=KR(e,0,n),o.push(r[a][1]);break;case"PtgMemArea":r[a][2]=XR(e,r[a][1],n),o.push(r[a][2]);break;case"PtgExp":n&&n.biff==12&&(r[a][1][1]=e.read_shift(4),o.push(r[a][1]));break;case"PtgList":case"PtgElfRadicalS":case"PtgElfColS":case"PtgElfColSV":throw"Unsupported "+r[a][0]}return t=i-e.l,t!==0&&o.push(br(e,t)),o}function AO(e,t,r){for(var n=e.l+t,i,o,a=[];n!=e.l;)t=n-e.l,o=e[e.l],i=Gg[o]||Gg[_O[o]],(o===24||o===25)&&(i=(o===24?SO:TO)[e[e.l+1]]),!i||!i.f?br(e,t):a.push([i.n,i.f(e,t,r)]);return a}function RO(e){for(var t=[],r=0;r=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function FO(e,t){if(!e&&!(t&&t.biff<=5&&t.biff>=2))throw new Error("empty sheet name");return/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(e)?"'"+e+"'":e}function vw(e,t,r){if(!e)return"SH33TJSERR0";if(r.biff>8&&(!e.XTI||!e.XTI[t]))return e.SheetNames[t];if(!e.XTI)return"SH33TJSERR6";var n=e.XTI[t];if(r.biff<8)return t>1e4&&(t-=65536),t<0&&(t=-t),t==0?"":e.XTI[t-1];if(!n)return"SH33TJSERR1";var i="";if(r.biff>8)switch(e[n[0]][0]){case 357:return i=n[1]==-1?"#REF":e.SheetNames[n[1]],n[1]==n[2]?i:i+":"+e.SheetNames[n[2]];case 358:return r.SID!=null?e.SheetNames[r.SID]:"SH33TJSSAME"+e[n[0]][0];case 355:default:return"SH33TJSSRC"+e[n[0]][0]}switch(e[n[0]][0][0]){case 1025:return i=n[1]==-1?"#REF":e.SheetNames[n[1]]||"SH33TJSERR3",n[1]==n[2]?i:i+":"+e.SheetNames[n[2]];case 14849:return e[n[0]].slice(1).map(function(o){return o.Name}).join(";;");default:return e[n[0]][0][3]?(i=n[1]==-1?"#REF":e[n[0]][0][3][n[1]]||"SH33TJSERR4",n[1]==n[2]?i:i+":"+e[n[0]][0][3][n[2]]):"SH33TJSERR2"}}function jg(e,t,r){var n=vw(e,t,r);return n=="#REF"?n:FO(n,r)}function co(e,t,r,n,i){var o=i&&i.biff||8,a={s:{c:0,r:0},e:{c:0,r:0}},s=[],l,u,c,f=0,d=0,h,m="";if(!e[0]||!e[0][0])return"";for(var p=-1,g="",x=0,w=e[0].length;x=0){switch(e[0][p][1][0]){case 0:g=Qe(" ",e[0][p][1][1]);break;case 1:g=Qe("\r",e[0][p][1][1]);break;default:if(g="",i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}u=u+g,p=-1}s.push(u+OO[y[0]]+l);break;case"PtgIsect":l=s.pop(),u=s.pop(),s.push(u+" "+l);break;case"PtgUnion":l=s.pop(),u=s.pop(),s.push(u+","+l);break;case"PtgRange":l=s.pop(),u=s.pop(),s.push(u+":"+l);break;case"PtgAttrChoose":break;case"PtgAttrGoto":break;case"PtgAttrIf":break;case"PtgAttrIfError":break;case"PtgRef":c=ga(y[1][1],a,i),s.push(ma(c,o));break;case"PtgRefN":c=r?ga(y[1][1],r,i):y[1][1],s.push(ma(c,o));break;case"PtgRef3d":f=y[1][1],c=ga(y[1][2],a,i),m=jg(n,f,i),s.push(m+"!"+ma(c,o));break;case"PtgFunc":case"PtgFuncVar":var _=y[1][0],k=y[1][1];_||(_=0),_&=127;var N=_==0?[]:s.slice(-_);s.length-=_,k==="User"&&(k=N.shift()),s.push(k+"("+N.join(",")+")");break;case"PtgBool":s.push(y[1]?"TRUE":"FALSE");break;case"PtgInt":s.push(y[1]);break;case"PtgNum":s.push(String(y[1]));break;case"PtgStr":s.push('"'+y[1].replace(/"/g,'""')+'"');break;case"PtgErr":s.push(y[1]);break;case"PtgAreaN":h=Dg(y[1][1],r?{s:r}:a,i),s.push(Cc(h,i));break;case"PtgArea":h=Dg(y[1][1],a,i),s.push(Cc(h,i));break;case"PtgArea3d":f=y[1][1],h=y[1][2],m=jg(n,f,i),s.push(m+"!"+Cc(h,i));break;case"PtgAttrSum":s.push("SUM("+s.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":d=y[1][2];var S=(n.names||[])[d-1]||(n[0]||[])[d],A=S?S.Name:"SH33TJSNAME"+String(d);A&&A.slice(0,6)=="_xlfn."&&!i.xlfn&&(A=A.slice(6)),s.push(A);break;case"PtgNameX":var R=y[1][1];d=y[1][2];var L;if(i.biff<=5)R<0&&(R=-R),n[R]&&(L=n[R][d]);else{var V="";if(((n[R]||[])[0]||[])[0]==14849||(((n[R]||[])[0]||[])[0]==1025?n[R][d]&&n[R][d].itab>0&&(V=n.SheetNames[n[R][d].itab-1]+"!"):V=n.SheetNames[d-1]+"!"),n[R]&&n[R][d])V+=n[R][d].Name;else if(n[0]&&n[0][d])V+=n[0][d].Name;else{var U=(vw(n,R,i)||"").split(";;");U[d-1]?V=U[d-1]:V+="SH33TJSERRX"}s.push(V);break}L||(L={Name:"SH33TJSERRY"}),s.push(L.Name);break;case"PtgParen":var W="(",Y=")";if(p>=0){switch(g="",e[0][p][1][0]){case 2:W=Qe(" ",e[0][p][1][1])+W;break;case 3:W=Qe("\r",e[0][p][1][1])+W;break;case 4:Y=Qe(" ",e[0][p][1][1])+Y;break;case 5:Y=Qe("\r",e[0][p][1][1])+Y;break;default:if(i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}p=-1}s.push(W+s.pop()+Y);break;case"PtgRefErr":s.push("#REF!");break;case"PtgRefErr3d":s.push("#REF!");break;case"PtgExp":c={c:y[1][1],r:y[1][0]};var re={c:r.c,r:r.r};if(n.sharedf[Be(c)]){var ye=n.sharedf[Be(c)];s.push(co(ye,a,re,n,i))}else{var ge=!1;for(l=0;l!=n.arrayf.length;++l)if(u=n.arrayf[l],!(c.cu[0].e.c)&&!(c.ru[0].e.r)){s.push(co(u[1],a,re,n,i)),ge=!0;break}ge||s.push(y[1])}break;case"PtgArray":s.push("{"+RO(y[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":case"PtgAttrSpaceSemi":p=x;break;case"PtgTbl":break;case"PtgMemErr":break;case"PtgMissArg":s.push("");break;case"PtgAreaErr":s.push("#REF!");break;case"PtgAreaErr3d":s.push("#REF!");break;case"PtgList":s.push("Table"+y[1].idx+"[#"+y[1].rt+"]");break;case"PtgMemAreaN":case"PtgMemNoMemN":case"PtgAttrNoop":case"PtgSheet":case"PtgEndSheet":break;case"PtgMemFunc":break;case"PtgMemNoMem":break;case"PtgElfCol":case"PtgElfColS":case"PtgElfColSV":case"PtgElfColV":case"PtgElfLel":case"PtgElfRadical":case"PtgElfRadicalLel":case"PtgElfRadicalS":case"PtgElfRw":case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":throw new Error("Unrecognized Formula Token: "+String(y));default:throw new Error("Unrecognized Formula Token: "+String(y))}var Se=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(i.biff!=3&&p>=0&&Se.indexOf(e[0][x][0])==-1){y=e[0][p];var ie=!0;switch(y[1][0]){case 4:ie=!1;case 0:g=Qe(" ",y[1][1]);break;case 5:ie=!1;case 1:g=Qe("\r",y[1][1]);break;default:if(g="",i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+y[1][0])}s.push((ie?g:"")+s.pop()+(ie?"":g)),p=-1}}if(s.length>1&&i.WTF)throw new Error("bad formula stack");return s[0]}function DO(e){if(e==null){var t=J(8);return t.write_shift(1,3),t.write_shift(1,0),t.write_shift(2,0),t.write_shift(2,0),t.write_shift(2,65535),t}else if(typeof e=="number")return ai(e);return ai(0)}function PO(e,t,r,n,i){var o=si(t,r,i),a=DO(e.v),s=J(6),l=33;s.write_shift(2,l),s.write_shift(4,0);for(var u=J(e.bf.length),c=0;c0?CO(e,o,i,r):null;return[i,a]}var IO=_u,Su=_u,bO=_u,kO=_u,$O={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"},xw={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDIRECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR",259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"},NO={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,111:1,112:1,113:1,114:1,117:2,118:1,119:4,121:1,126:1,127:1,128:1,129:1,130:1,131:1,133:1,134:1,135:1,136:2,137:2,138:2,140:1,141:1,142:3,143:4,144:4,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186:1,189:3,190:1,195:3,196:3,197:1,198:1,199:3,201:1,207:4,210:3,211:1,212:2,213:2,214:1,215:1,225:0,229:1,230:1,231:1,232:1,233:1,234:1,235:3,244:1,247:4,252:2,257:1,261:1,271:1,273:4,274:2,275:2,276:2,277:3,278:3,279:1,280:3,281:3,282:3,283:1,284:1,285:2,286:4,287:3,288:2,289:4,290:3,291:3,292:3,293:4,294:1,295:3,296:1,297:3,298:1,299:2,300:3,301:3,302:4,303:2,304:2,305:2,306:2,307:2,308:2,309:3,310:2,311:2,312:2,313:2,314:2,315:2,316:4,325:2,326:2,327:2,328:2,331:2,332:2,337:2,342:1,343:1,346:2,347:1,350:4,351:3,352:1,353:2,360:1,368:1,369:1,370:1,371:1,372:1,373:1,374:1,375:1,376:1,377:1,378:1,382:3,385:1,392:1,393:1,396:2,397:2,398:2,399:1,400:1,401:1,402:1,403:1,404:1,405:1,406:1,407:1,408:1,409:1,410:1,414:4,415:1,416:1,417:2,420:1,421:1,422:2,424:1,425:2,426:2,427:2,428:2,430:3,438:3,439:3,440:3,443:2,444:2,445:2,446:2,447:6,448:6,449:2,450:2,464:2,468:3,476:2,479:1,480:2,65535:0};function MO(e){var t="of:="+e.replace(Md,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return t.replace(/;/g,"|").replace(/,/g,";")}function LO(e){return e.replace(/\./,"!")}var va=typeof Map<"u";function Ud(e,t,r){var n=0,i=e.length;if(r){if(va?r.has(t):Object.prototype.hasOwnProperty.call(r,t)){for(var o=va?r.get(t):r[t];n-1?(r.width=Xf(n),r.customWidth=1):t.width!=null&&(r.width=t.width),t.hidden&&(r.hidden=!0),t.level!=null&&(r.outlineLevel=r.level=t.level),r}function ww(e,t){if(e){var r=[.7,.7,.75,.75,.3,.3];t=="xlml"&&(r=[1,1,1,1,.5,.5]),e.left==null&&(e.left=r[0]),e.right==null&&(e.right=r[1]),e.top==null&&(e.top=r[2]),e.bottom==null&&(e.bottom=r[3]),e.header==null&&(e.header=r[4]),e.footer==null&&(e.footer=r[5])}}function Un(e,t,r){var n=r.revssf[t.z!=null?t.z:"General"],i=60,o=e.length;if(n==null&&r.ssf){for(;i<392;++i)if(r.ssf[i]==null){px(t.z,i),r.ssf[i]=t.z,r.revssf[t.z]=n=i;break}}for(i=0;i!=o;++i)if(e[i].numFmtId===n)return i;return e[o]={numFmtId:n,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},o}function BO(e,t,r){if(e&&e["!ref"]){var n=Ge(e["!ref"]);if(n.e.c',r=0;r!=e.length;++r)t+='';return t+""}function HO(e,t,r,n,i){var o=!1,a={},s=null;if(n.bookType!=="xlsx"&&t.vbaraw){var l=t.SheetNames[r];try{t.Workbook&&(l=t.Workbook.Sheets[r].CodeName||l)}catch{}o=!0,a.codeName=Gr(Le(l))}if(e&&e["!outline"]){var u={summaryBelow:1,summaryRight:1};e["!outline"].above&&(u.summaryBelow=0),e["!outline"].left&&(u.summaryRight=0),s=(s||"")+le("outlinePr",null,u)}!o&&!s||(i[i.length]=le("sheetPr",s,a))}var VO=["objects","scenarios","selectLockedCells","selectUnlockedCells"],WO=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function zO(e){var t={sheet:1};return VO.forEach(function(r){e[r]!=null&&e[r]&&(t[r]="1")}),WO.forEach(function(r){e[r]!=null&&!e[r]&&(t[r]="0")}),e.password&&(t.password=rw(e.password).toString(16).toUpperCase()),le("sheetProtection",null,t)}function GO(e){return ww(e),le("pageMargins",null,e)}function jO(e,t){for(var r=[""],n,i=0;i!=t.length;++i)(n=t[i])&&(r[r.length]=le("col",null,Tu(i,n)));return r[r.length]="",r.join("")}function XO(e,t,r,n){var i=typeof e.ref=="string"?e.ref:nt(e.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var o=r.Workbook.Names,a=Zt(i);a.s.r==a.e.r&&(a.e.r=Zt(t["!ref"]).e.r,i=nt(a));for(var s=0;s"u"&&(e.z=et[14]);break;default:i=e.v;break}var s=vt("v",Le(i)),l={r:t},u=Un(n.cellXfs,e,n);switch(u!==0&&(l.s=u),e.t){case"n":break;case"d":l.t="d";break;case"b":l.t="b";break;case"e":l.t="e";break;case"z":break;default:if(e.v==null){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(n&&n.bookSST){s=vt("v",""+Ud(n.Strings,e.v,n.revStrings)),l.t="s";break}l.t="str";break}if(e.t!=o&&(e.t=o,e.v=a),typeof e.f=="string"&&e.f){var c=e.F&&e.F.slice(0,t.length)==t?{t:"array",ref:e.F}:null;s=le("f",Le(e.f),c)+(e.v!=null?s:"")}return e.l&&r["!links"].push([t,e.l]),e.D&&(l.cm=1),le("c",s,l)}function qO(e,t,r,n){var i=[],o=[],a=Ge(e["!ref"]),s="",l,u="",c=[],f=0,d=0,h=e["!rows"],m=Array.isArray(e),p={r:u},g,x=-1;for(d=a.s.c;d<=a.e.c;++d)c[d]=Rt(d);for(f=a.s.r;f<=a.e.r;++f){for(o=[],u=wt(f),d=a.s.c;d<=a.e.c;++d){l=c[d]+u;var w=m?(e[f]||[])[d]:e[l];w!==void 0&&(s=YO(w,l,e,t))!=null&&o.push(s)}(o.length>0||h&&h[f])&&(p={r:u},h&&h[f]&&(g=h[f],g.hidden&&(p.hidden=1),x=-1,g.hpx?x=Vl(g.hpx):g.hpt&&(x=g.hpt),x>-1&&(p.ht=x,p.customHeight=1),g.level&&(p.outlineLevel=g.level)),i[i.length]=le("row",o.join(""),p))}if(h)for(;f-1&&(p.ht=x,p.customHeight=1),g.level&&(p.outlineLevel=g.level),i[i.length]=le("row","",p));return i.join("")}function yw(e,t,r,n){var i=[it,le("worksheet",null,{xmlns:_o[0],"xmlns:r":lt.r})],o=r.SheetNames[e],a=0,s="",l=r.Sheets[o];l==null&&(l={});var u=l["!ref"]||"A1",c=Ge(u);if(c.e.c>16383||c.e.r>1048575){if(t.WTF)throw new Error("Range "+u+" exceeds format limit A1:XFD1048576");c.e.c=Math.min(c.e.c,16383),c.e.r=Math.min(c.e.c,1048575),u=nt(c)}n||(n={}),l["!comments"]=[];var f=[];HO(l,r,e,t,i),i[i.length]=le("dimension",null,{ref:u}),i[i.length]=KO(l,t,e,r),t.sheetFormat&&(i[i.length]=le("sheetFormatPr",null,{defaultRowHeight:t.sheetFormat.defaultRowHeight||"16",baseColWidth:t.sheetFormat.baseColWidth||"10",outlineLevelRow:t.sheetFormat.outlineLevelRow||"7"})),l["!cols"]!=null&&l["!cols"].length>0&&(i[i.length]=jO(l,l["!cols"])),i[a=i.length]="",l["!links"]=[],l["!ref"]!=null&&(s=qO(l,t),s.length>0&&(i[i.length]=s)),i.length>a+1&&(i[i.length]="",i[a]=i[a].replace("/>",">")),l["!protect"]&&(i[i.length]=zO(l["!protect"])),l["!autofilter"]!=null&&(i[i.length]=XO(l["!autofilter"],l,r,e)),l["!merges"]!=null&&l["!merges"].length>0&&(i[i.length]=UO(l["!merges"]));var d=-1,h,m=-1;return l["!links"].length>0&&(i[i.length]="",l["!links"].forEach(function(p){p[1].Target&&(h={ref:p[0]},p[1].Target.charAt(0)!="#"&&(m=Me(n,-1,Le(p[1].Target).replace(/#.*$/,""),ke.HLINK),h["r:id"]="rId"+m),(d=p[1].Target.indexOf("#"))>-1&&(h.location=Le(p[1].Target.slice(d+1))),p[1].Tooltip&&(h.tooltip=Le(p[1].Tooltip)),i[i.length]=le("hyperlink",null,h))}),i[i.length]=""),delete l["!links"],l["!margins"]!=null&&(i[i.length]=GO(l["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&(i[i.length]=vt("ignoredErrors",le("ignoredError",null,{numberStoredAsText:1,sqref:u}))),f.length>0&&(m=Me(n,-1,"../drawings/drawing"+(e+1)+".xml",ke.DRAW),i[i.length]=le("drawing",null,{"r:id":"rId"+m}),l["!drawing"]=f),l["!comments"].length>0&&(m=Me(n,-1,"../drawings/vmlDrawing"+(e+1)+".vml",ke.VML),i[i.length]=le("legacyDrawing",null,{"r:id":"rId"+m}),l["!legacy"]=m),i.length>1&&(i[i.length]="",i[1]=i[1].replace("/>",">")),i.join("")}function QO(e,t){var r={},n=e.l+t;r.r=e.read_shift(4),e.l+=4;var i=e.read_shift(2);e.l+=1;var o=e.read_shift(1);return e.l=n,o&7&&(r.level=o&7),o&16&&(r.hidden=!0),o&32&&(r.hpt=i/20),r}function ZO(e,t,r){var n=J(145),i=(r["!rows"]||[])[e]||{};n.write_shift(4,e),n.write_shift(4,0);var o=320;i.hpx?o=Vl(i.hpx)*20:i.hpt&&(o=i.hpt*20),n.write_shift(2,o),n.write_shift(1,0);var a=0;i.level&&(a|=i.level),i.hidden&&(a|=16),(i.hpx||i.hpt)&&(a|=32),n.write_shift(1,a),n.write_shift(1,0);var s=0,l=n.l;n.l+=4;for(var u={r:e,c:0},c=0;c<16;++c)if(!(t.s.c>c+1<<10||t.e.cn.l?n.slice(0,n.l):n}function JO(e,t,r,n){var i=ZO(n,r,t);(i.length>17||(t["!rows"]||[])[n])&&ne(e,0,i)}var eF=yi,tF=To;function rF(){}function nF(e,t){var r={},n=e[e.l];return++e.l,r.above=!(n&64),r.left=!(n&128),e.l+=18,r.name=h3(e),r}function iF(e,t,r){r==null&&(r=J(84+4*e.length));var n=192;t&&(t.above&&(n&=-65),t.left&&(n&=-129)),r.write_shift(1,n);for(var i=1;i<3;++i)r.write_shift(1,0);return Ll({auto:1},r),r.write_shift(-4,-1),r.write_shift(-4,-1),$x(e,r),r.slice(0,r.l)}function oF(e){var t=hr(e);return[t]}function aF(e,t,r){return r==null&&(r=J(8)),vi(t,r)}function sF(e){var t=xi(e);return[t]}function lF(e,t,r){return r==null&&(r=J(4)),wi(t,r)}function uF(e){var t=hr(e),r=e.read_shift(1);return[t,r,"b"]}function cF(e,t,r){return r==null&&(r=J(9)),vi(t,r),r.write_shift(1,e.v?1:0),r}function fF(e){var t=xi(e),r=e.read_shift(1);return[t,r,"b"]}function dF(e,t,r){return r==null&&(r=J(5)),wi(t,r),r.write_shift(1,e.v?1:0),r}function hF(e){var t=hr(e),r=e.read_shift(1);return[t,r,"e"]}function pF(e,t,r){return r==null&&(r=J(9)),vi(t,r),r.write_shift(1,e.v),r}function gF(e){var t=xi(e),r=e.read_shift(1);return[t,r,"e"]}function mF(e,t,r){return r==null&&(r=J(8)),wi(t,r),r.write_shift(1,e.v),r.write_shift(2,0),r.write_shift(1,0),r}function vF(e){var t=hr(e),r=e.read_shift(4);return[t,r,"s"]}function xF(e,t,r){return r==null&&(r=J(12)),vi(t,r),r.write_shift(4,t.v),r}function wF(e){var t=xi(e),r=e.read_shift(4);return[t,r,"s"]}function yF(e,t,r){return r==null&&(r=J(8)),wi(t,r),r.write_shift(4,t.v),r}function EF(e){var t=hr(e),r=Co(e);return[t,r,"n"]}function _F(e,t,r){return r==null&&(r=J(16)),vi(t,r),ai(e.v,r),r}function SF(e){var t=xi(e),r=Co(e);return[t,r,"n"]}function TF(e,t,r){return r==null&&(r=J(12)),wi(t,r),ai(e.v,r),r}function CF(e){var t=hr(e),r=Nx(e);return[t,r,"n"]}function AF(e,t,r){return r==null&&(r=J(12)),vi(t,r),Mx(e.v,r),r}function RF(e){var t=xi(e),r=Nx(e);return[t,r,"n"]}function OF(e,t,r){return r==null&&(r=J(8)),wi(t,r),Mx(e.v,r),r}function FF(e){var t=hr(e),r=Id(e);return[t,r,"is"]}function DF(e){var t=hr(e),r=Ot(e);return[t,r,"str"]}function PF(e,t,r){return r==null&&(r=J(12+4*e.v.length)),vi(t,r),ct(e.v,r),r.length>r.l?r.slice(0,r.l):r}function IF(e){var t=xi(e),r=Ot(e);return[t,r,"str"]}function bF(e,t,r){return r==null&&(r=J(8+4*e.v.length)),wi(t,r),ct(e.v,r),r.length>r.l?r.slice(0,r.l):r}function kF(e,t,r){var n=e.l+t,i=hr(e);i.r=r["!row"];var o=e.read_shift(1),a=[i,o,"b"];if(r.cellFormula){e.l+=2;var s=Su(e,n-e.l,r);a[3]=co(s,null,i,r.supbooks,r)}else e.l=n;return a}function $F(e,t,r){var n=e.l+t,i=hr(e);i.r=r["!row"];var o=e.read_shift(1),a=[i,o,"e"];if(r.cellFormula){e.l+=2;var s=Su(e,n-e.l,r);a[3]=co(s,null,i,r.supbooks,r)}else e.l=n;return a}function NF(e,t,r){var n=e.l+t,i=hr(e);i.r=r["!row"];var o=Co(e),a=[i,o,"n"];if(r.cellFormula){e.l+=2;var s=Su(e,n-e.l,r);a[3]=co(s,null,i,r.supbooks,r)}else e.l=n;return a}function MF(e,t,r){var n=e.l+t,i=hr(e);i.r=r["!row"];var o=Ot(e),a=[i,o,"str"];if(r.cellFormula){e.l+=2;var s=Su(e,n-e.l,r);a[3]=co(s,null,i,r.supbooks,r)}else e.l=n;return a}var LF=yi,BF=To;function UF(e,t){return t==null&&(t=J(4)),t.write_shift(4,e),t}function HF(e,t){var r=e.l+t,n=yi(e),i=bd(e),o=Ot(e),a=Ot(e),s=Ot(e);e.l=r;var l={rfx:n,relId:i,loc:o,display:s};return a&&(l.Tooltip=a),l}function VF(e,t){var r=J(50+4*(e[1].Target.length+(e[1].Tooltip||"").length));To({s:ut(e[0]),e:ut(e[0])},r),kd("rId"+t,r);var n=e[1].Target.indexOf("#"),i=n==-1?"":e[1].Target.slice(n+1);return ct(i||"",r),ct(e[1].Tooltip||"",r),ct("",r),r.slice(0,r.l)}function WF(){}function zF(e,t,r){var n=e.l+t,i=Lx(e),o=e.read_shift(1),a=[i];if(a[2]=o,r.cellFormula){var s=IO(e,n-e.l,r);a[1]=s}else e.l=n;return a}function GF(e,t,r){var n=e.l+t,i=yi(e),o=[i];if(r.cellFormula){var a=kO(e,n-e.l,r);o[1]=a,e.l=n}else e.l=n;return o}function jF(e,t,r){r==null&&(r=J(18));var n=Tu(e,t);r.write_shift(-4,e),r.write_shift(-4,e),r.write_shift(4,(n.width||10)*256),r.write_shift(4,0);var i=0;return t.hidden&&(i|=1),typeof n.width=="number"&&(i|=2),t.level&&(i|=t.level<<8),r.write_shift(2,i),r}var Ew=["left","right","top","bottom","header","footer"];function XF(e){var t={};return Ew.forEach(function(r){t[r]=Co(e)}),t}function KF(e,t){return t==null&&(t=J(6*8)),ww(e),Ew.forEach(function(r){ai(e[r],t)}),t}function YF(e){var t=e.read_shift(2);return e.l+=28,{RTL:t&32}}function qF(e,t,r){r==null&&(r=J(30));var n=924;return(((t||{}).Views||[])[0]||{}).RTL&&(n|=32),r.write_shift(2,n),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(1,0),r.write_shift(1,0),r.write_shift(2,0),r.write_shift(2,100),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(4,0),r}function QF(e){var t=J(24);return t.write_shift(4,4),t.write_shift(4,1),To(e,t),t}function ZF(e,t){return t==null&&(t=J(16*4+2)),t.write_shift(2,e.password?rw(e.password):0),t.write_shift(4,1),[["objects",!1],["scenarios",!1],["formatCells",!0],["formatColumns",!0],["formatRows",!0],["insertColumns",!0],["insertRows",!0],["insertHyperlinks",!0],["deleteColumns",!0],["deleteRows",!0],["selectLockedCells",!1],["sort",!0],["autoFilter",!0],["pivotTables",!0],["selectUnlockedCells",!1]].forEach(function(r){r[1]?t.write_shift(4,e[r[0]]!=null&&!e[r[0]]?1:0):t.write_shift(4,e[r[0]]!=null&&e[r[0]]?0:1)}),t}function JF(){}function e6(){}function t6(e,t,r,n,i,o,a){if(t.v===void 0)return!1;var s="";switch(t.t){case"b":s=t.v?"1":"0";break;case"d":t=Gt(t),t.z=t.z||et[14],t.v=zt($t(t.v)),t.t="n";break;case"n":case"e":s=""+t.v;break;default:s=t.v;break}var l={r,c:n};switch(l.s=Un(i.cellXfs,t,i),t.l&&o["!links"].push([Be(l),t.l]),t.c&&o["!comments"].push([Be(l),t.c]),t.t){case"s":case"str":return i.bookSST?(s=Ud(i.Strings,t.v,i.revStrings),l.t="s",l.v=s,a?ne(e,18,yF(t,l)):ne(e,7,xF(t,l))):(l.t="str",a?ne(e,17,bF(t,l)):ne(e,6,PF(t,l))),!0;case"n":return t.v==(t.v|0)&&t.v>-1e3&&t.v<1e3?a?ne(e,13,OF(t,l)):ne(e,2,AF(t,l)):a?ne(e,16,TF(t,l)):ne(e,5,_F(t,l)),!0;case"b":return l.t="b",a?ne(e,15,dF(t,l)):ne(e,4,cF(t,l)),!0;case"e":return l.t="e",a?ne(e,14,mF(t,l)):ne(e,3,pF(t,l)),!0}return a?ne(e,12,lF(t,l)):ne(e,1,aF(t,l)),!0}function r6(e,t,r,n){var i=Ge(t["!ref"]||"A1"),o,a="",s=[];ne(e,145);var l=Array.isArray(t),u=i.e.r;t["!rows"]&&(u=Math.max(i.e.r,t["!rows"].length-1));for(var c=i.s.r;c<=u;++c){a=wt(c),JO(e,t,i,c);var f=!1;if(c<=i.e.r)for(var d=i.s.c;d<=i.e.c;++d){c===i.s.r&&(s[d]=Rt(d)),o=s[d]+a;var h=l?(t[c]||[])[d]:t[o];if(!h){f=!1;continue}f=t6(e,h,c,d,n,t,f)}}ne(e,146)}function n6(e,t){!t||!t["!merges"]||(ne(e,177,UF(t["!merges"].length)),t["!merges"].forEach(function(r){ne(e,176,BF(r))}),ne(e,178))}function i6(e,t){!t||!t["!cols"]||(ne(e,390),t["!cols"].forEach(function(r,n){r&&ne(e,60,jF(n,r))}),ne(e,391))}function o6(e,t){!t||!t["!ref"]||(ne(e,648),ne(e,649,QF(Ge(t["!ref"]))),ne(e,650))}function a6(e,t,r){t["!links"].forEach(function(n){if(n[1].Target){var i=Me(r,-1,n[1].Target.replace(/#.*$/,""),ke.HLINK);ne(e,494,VF(n,i))}}),delete t["!links"]}function s6(e,t,r,n){if(t["!comments"].length>0){var i=Me(n,-1,"../drawings/vmlDrawing"+(r+1)+".vml",ke.VML);ne(e,551,kd("rId"+i)),t["!legacy"]=i}}function l6(e,t,r,n){if(t["!autofilter"]){var i=t["!autofilter"],o=typeof i.ref=="string"?i.ref:nt(i.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var a=r.Workbook.Names,s=Zt(o);s.s.r==s.e.r&&(s.e.r=Zt(t["!ref"]).e.r,o=nt(s));for(var l=0;l16383||l.e.r>1048575){if(t.WTF)throw new Error("Range "+(a["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");l.e.c=Math.min(l.e.c,16383),l.e.r=Math.min(l.e.c,1048575)}return a["!links"]=[],a["!comments"]=[],ne(i,129),(r.vbaraw||a["!outline"])&&ne(i,147,iF(s,a["!outline"])),ne(i,148,tF(l)),u6(i,a,r.Workbook),i6(i,a),r6(i,a,e,t),c6(i,a),l6(i,a,r,e),n6(i,a),a6(i,a,n),a["!margins"]&&ne(i,476,KF(a["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&o6(i,a),s6(i,a,e,n),ne(i,130),i.end()}function d6(e,t){e.l+=10;var r=Ot(e);return{name:r}}var h6=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]];function p6(e){return!e.Workbook||!e.Workbook.WBProps?"false":G4(e.Workbook.WBProps.date1904)?"true":"false"}var g6="][*?/\\".split("");function _w(e,t){if(e.length>31){if(t)return!1;throw new Error("Sheet names cannot exceed 31 chars")}var r=!0;return g6.forEach(function(n){if(e.indexOf(n)!=-1){if(!t)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");r=!1}}),r}function m6(e,t,r){e.forEach(function(n,i){_w(n);for(var o=0;o22)throw new Error("Bad Code Name: Worksheet"+a)}})}function v6(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var t=e.Workbook&&e.Workbook.Sheets||[];m6(e.SheetNames,t,!!e.vbaraw);for(var r=0;r0,n={codeName:"ThisWorkbook"};e.Workbook&&e.Workbook.WBProps&&(h6.forEach(function(s){e.Workbook.WBProps[s[0]]!=null&&e.Workbook.WBProps[s[0]]!=s[1]&&(n[s[0]]=e.Workbook.WBProps[s[0]])}),e.Workbook.WBProps.CodeName&&(n.codeName=e.Workbook.WBProps.CodeName,delete n.CodeName)),t[t.length]=le("workbookPr",null,n);var i=e.Workbook&&e.Workbook.Sheets||[],o=0;if(i&&i[0]&&i[0].Hidden){for(t[t.length]="",o=0;o!=e.SheetNames.length&&!(!i[o]||!i[o].Hidden);++o);o==e.SheetNames.length&&(o=0),t[t.length]='',t[t.length]=""}for(t[t.length]="",o=0;o!=e.SheetNames.length;++o){var a={name:Le(e.SheetNames[o].slice(0,31))};if(a.sheetId=""+(o+1),a["r:id"]="rId"+(o+1),i[o])switch(i[o].Hidden){case 1:a.state="hidden";break;case 2:a.state="veryHidden";break}t[t.length]=le("sheet",null,a)}return t[t.length]="",r&&(t[t.length]="",e.Workbook&&e.Workbook.Names&&e.Workbook.Names.forEach(function(s){var l={name:s.Name};s.Comment&&(l.comment=s.Comment),s.Sheet!=null&&(l.localSheetId=""+s.Sheet),s.Hidden&&(l.hidden="1"),s.Ref&&(t[t.length]=le("definedName",Le(s.Ref),l))}),t[t.length]=""),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}function x6(e,t){var r={};return r.Hidden=e.read_shift(4),r.iTabID=e.read_shift(4),r.strRelID=jf(e),r.name=Ot(e),r}function w6(e,t){return t||(t=J(127)),t.write_shift(4,e.Hidden),t.write_shift(4,e.iTabID),kd(e.strRelID,t),ct(e.name.slice(0,31),t),t.length>t.l?t.slice(0,t.l):t}function y6(e,t){var r={},n=e.read_shift(4);r.defaultThemeVersion=e.read_shift(4);var i=t>8?Ot(e):"";return i.length>0&&(r.CodeName=i),r.autoCompressPictures=!!(n&65536),r.backupFile=!!(n&64),r.checkCompatibility=!!(n&4096),r.date1904=!!(n&1),r.filterPrivacy=!!(n&8),r.hidePivotFieldList=!!(n&1024),r.promptedSolutions=!!(n&16),r.publishItems=!!(n&2048),r.refreshAllConnections=!!(n&262144),r.saveExternalLinkValues=!!(n&128),r.showBorderUnselectedTables=!!(n&4),r.showInkAnnotation=!!(n&32),r.showObjects=["all","placeholders","none"][n>>13&3],r.showPivotChartFilter=!!(n&32768),r.updateLinks=["userSet","never","always"][n>>8&3],r}function E6(e,t){t||(t=J(72));var r=0;return e&&e.filterPrivacy&&(r|=8),t.write_shift(4,r),t.write_shift(4,0),$x(e&&e.CodeName||"ThisWorkbook",t),t.slice(0,t.l)}function _6(e,t,r){var n=e.l+t;e.l+=4,e.l+=1;var i=e.read_shift(4),o=p3(e),a=bO(e,0,r),s=bd(e);e.l=n;var l={Name:o,Ptg:a};return i<268435455&&(l.Sheet=i),s&&(l.Comment=s),l}function S6(e,t){ne(e,143);for(var r=0;r!=t.SheetNames.length;++r){var n=t.Workbook&&t.Workbook.Sheets&&t.Workbook.Sheets[r]&&t.Workbook.Sheets[r].Hidden||0,i={Hidden:n,iTabID:r+1,strRelID:"rId"+(r+1),name:t.SheetNames[r]};ne(e,156,w6(i))}ne(e,144)}function T6(e,t){t||(t=J(127));for(var r=0;r!=4;++r)t.write_shift(4,0);return ct("SheetJS",t),ct(Pl.version,t),ct(Pl.version,t),ct("7262",t),t.length>t.l?t.slice(0,t.l):t}function C6(e,t){t||(t=J(29)),t.write_shift(-4,0),t.write_shift(-4,460),t.write_shift(4,28800),t.write_shift(4,17600),t.write_shift(4,500),t.write_shift(4,e),t.write_shift(4,e);var r=120;return t.write_shift(1,r),t.length>t.l?t.slice(0,t.l):t}function A6(e,t){if(!(!t.Workbook||!t.Workbook.Sheets)){for(var r=t.Workbook.Sheets,n=0,i=-1,o=-1;ni||(ne(e,135),ne(e,158,C6(i)),ne(e,136))}}function R6(e,t){var r=Wt();return ne(r,131),ne(r,128,T6()),ne(r,153,E6(e.Workbook&&e.Workbook.WBProps||null)),A6(r,e),S6(r,e),ne(r,132),r.end()}function O6(e,t,r){return(t.slice(-4)===".bin"?R6:Sw)(e)}function F6(e,t,r,n,i){return(t.slice(-4)===".bin"?f6:yw)(e,r,n,i)}function D6(e,t,r){return(t.slice(-4)===".bin"?KA:ow)(e,r)}function P6(e,t,r){return(t.slice(-4)===".bin"?EA:tw)(e,r)}function I6(e,t,r){return(t.slice(-4)===".bin"?cR:cw)(e)}function b6(e){return(e.slice(-4)===".bin"?rR:lw)()}function k6(e,t){var r=[];return e.Props&&r.push(D3(e.Props,t)),e.Custprops&&r.push(P3(e.Props,e.Custprops)),r.join("")}function $6(){return""}function N6(e,t){var r=[''];return t.cellXfs.forEach(function(n,i){var o=[];o.push(le("NumberFormat",null,{"ss:Format":Le(et[n.numFmtId])}));var a={"ss:ID":"s"+(21+i)};r.push(le("Style",o.join(""),a))}),le("Styles",r.join(""))}function Tw(e){return le("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+Ld(e.Ref,{r:0,c:0})})}function M6(e){if(!((e||{}).Workbook||{}).Names)return"";for(var t=e.Workbook.Names,r=[],n=0;n"),e["!margins"].header&&i.push(le("Header",null,{"x:Margin":e["!margins"].header})),e["!margins"].footer&&i.push(le("Footer",null,{"x:Margin":e["!margins"].footer})),i.push(le("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"})),i.push("")),n&&n.Workbook&&n.Workbook.Sheets&&n.Workbook.Sheets[r])if(n.Workbook.Sheets[r].Hidden)i.push(le("Visible",n.Workbook.Sheets[r].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var o=0;o")}return((((n||{}).Workbook||{}).Views||[])[0]||{}).RTL&&i.push(""),e["!protect"]&&(i.push(vt("ProtectContents","True")),e["!protect"].objects&&i.push(vt("ProtectObjects","True")),e["!protect"].scenarios&&i.push(vt("ProtectScenarios","True")),e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells?i.push(vt("EnableSelection","NoSelection")):e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells&&i.push(vt("EnableSelection","UnlockedCells")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(a){e["!protect"][a[0]]&&i.push("<"+a[1]+"/>")})),i.length==0?"":le("WorksheetOptions",i.join(""),{xmlns:Yt.x})}function U6(e){return e.map(function(t){var r=z4(t.t||""),n=le("ss:Data",r,{xmlns:"http://www.w3.org/TR/REC-html40"});return le("Comment",n,{"ss:Author":t.a})}).join("")}function H6(e,t,r,n,i,o,a){if(!e||e.v==null&&e.f==null)return"";var s={};if(e.f&&(s["ss:Formula"]="="+Le(Ld(e.f,a))),e.F&&e.F.slice(0,t.length)==t){var l=ut(e.F.slice(t.length+1));s["ss:ArrayRange"]="RC:R"+(l.r==a.r?"":"["+(l.r-a.r)+"]")+"C"+(l.c==a.c?"":"["+(l.c-a.c)+"]")}if(e.l&&e.l.Target&&(s["ss:HRef"]=Le(e.l.Target),e.l.Tooltip&&(s["x:HRefScreenTip"]=Le(e.l.Tooltip))),r["!merges"])for(var u=r["!merges"],c=0;c!=u.length;++c)u[c].s.c!=a.c||u[c].s.r!=a.r||(u[c].e.c>u[c].s.c&&(s["ss:MergeAcross"]=u[c].e.c-u[c].s.c),u[c].e.r>u[c].s.r&&(s["ss:MergeDown"]=u[c].e.r-u[c].s.r));var f="",d="";switch(e.t){case"z":if(!n.sheetStubs)return"";break;case"n":f="Number",d=String(e.v);break;case"b":f="Boolean",d=e.v?"1":"0";break;case"e":f="Error",d=es[e.v];break;case"d":f="DateTime",d=new Date(e.v).toISOString(),e.z==null&&(e.z=e.z||et[14]);break;case"s":f="String",d=W4(e.v||"");break}var h=Un(n.cellXfs,e,n);s["ss:StyleID"]="s"+(21+h),s["ss:Index"]=a.c+1;var m=e.v!=null?d:"",p=e.t=="z"?"":''+m+"";return(e.c||[]).length>0&&(p+=U6(e.c)),le("Cell",p,s)}function V6(e,t){var r='"}function W6(e,t,r,n){if(!e["!ref"])return"";var i=Ge(e["!ref"]),o=e["!merges"]||[],a=0,s=[];e["!cols"]&&e["!cols"].forEach(function(g,x){Nd(g);var w=!!g.width,y=Tu(x,g),_={"ss:Index":x+1};w&&(_["ss:Width"]=Ul(y.width)),g.hidden&&(_["ss:Hidden"]="1"),s.push(le("Column",null,_))});for(var l=Array.isArray(e),u=i.s.r;u<=i.e.r;++u){for(var c=[V6(u,(e["!rows"]||[])[u])],f=i.s.c;f<=i.e.c;++f){var d=!1;for(a=0;a!=o.length;++a)if(!(o[a].s.c>f)&&!(o[a].s.r>u)&&!(o[a].e.c"),c.length>2&&s.push(c.join(""))}return s.join("")}function z6(e,t,r){var n=[],i=r.SheetNames[e],o=r.Sheets[i],a=o?L6(o,t,e,r):"";return a.length>0&&n.push(""+a+""),a=o?W6(o,t,e,r):"",a.length>0&&n.push(""+a+"
"),n.push(B6(o,t,e,r)),n.join("")}function G6(e,t){t||(t={}),e.SSF||(e.SSF=Gt(et)),e.SSF&&(wu(),xu(e.SSF),t.revssf=yu(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF,t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}));var r=[];r.push(k6(e,t)),r.push($6()),r.push(""),r.push("");for(var n=0;n-1||Gx.indexOf(i[o][0])>-1||i[o][1]!=null&&u.push(i[o]);n.length&&Ue.utils.cfb_add(t,"/SummaryInformation",Lg(n,Oc.SI,l,bg)),(r.length||u.length)&&Ue.utils.cfb_add(t,"/DocumentSummaryInformation",Lg(r,Oc.DSI,s,Ig,u.length?u:null,Oc.UDI))}function X6(e,t){var r=t||{},n=Ue.utils.cfb_new({root:"R"}),i="/Workbook";switch(r.bookType||"xls"){case"xls":r.bookType="biff8";case"xla":r.bookType||(r.bookType="xla");case"biff8":i="/Workbook",r.biff=8;break;case"biff5":i="/Book",r.biff=5;break;default:throw new Error("invalid type "+r.bookType+" for XLS CFB")}return Ue.utils.cfb_add(n,i,Cw(e,r)),r.biff==8&&(e.Props||e.Custprops)&&j6(e,n),r.biff==8&&e.vbaraw&&fR(n,Ue.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"})),n}var K6={0:{f:QO},1:{f:oF},2:{f:CF},3:{f:hF},4:{f:uF},5:{f:EF},6:{f:DF},7:{f:vF},8:{f:MF},9:{f:NF},10:{f:kF},11:{f:$F},12:{f:sF},13:{f:RF},14:{f:gF},15:{f:fF},16:{f:SF},17:{f:IF},18:{f:wF},19:{f:Id},20:{},21:{},22:{},23:{},24:{},25:{},26:{},27:{},28:{},29:{},30:{},31:{},32:{},33:{},34:{},35:{T:1},36:{T:-1},37:{T:1},38:{T:-1},39:{f:_6},40:{},42:{},43:{f:DA},44:{f:OA},45:{f:bA},46:{f:$A},47:{f:kA},48:{},49:{f:s3},50:{},51:{f:QA},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:lA},62:{f:FF},63:{f:nR},64:{f:JF},65:{},66:{},67:{},68:{},69:{},70:{},128:{},129:{T:1},130:{T:-1},131:{T:1,f:br,p:0},132:{T:-1},133:{T:1},134:{T:-1},135:{T:1},136:{T:-1},137:{T:1,f:YF},138:{T:-1},139:{T:1},140:{T:-1},141:{T:1},142:{T:-1},143:{T:1},144:{T:-1},145:{T:1},146:{T:-1},147:{f:nF},148:{f:eF,p:16},151:{f:WF},152:{},153:{f:y6},154:{},155:{},156:{f:x6},157:{},158:{},159:{T:1,f:xA},160:{T:-1},161:{T:1,f:yi},162:{T:-1},163:{T:1},164:{T:-1},165:{T:1},166:{T:-1},167:{},168:{},169:{},170:{},171:{},172:{T:1},173:{T:-1},174:{},175:{},176:{f:LF},177:{T:1},178:{T:-1},179:{T:1},180:{T:-1},181:{T:1},182:{T:-1},183:{T:1},184:{T:-1},185:{T:1},186:{T:-1},187:{T:1},188:{T:-1},189:{T:1},190:{T:-1},191:{T:1},192:{T:-1},193:{T:1},194:{T:-1},195:{T:1},196:{T:-1},197:{T:1},198:{T:-1},199:{T:1},200:{T:-1},201:{T:1},202:{T:-1},203:{T:1},204:{T:-1},205:{T:1},206:{T:-1},207:{T:1},208:{T:-1},209:{T:1},210:{T:-1},211:{T:1},212:{T:-1},213:{T:1},214:{T:-1},215:{T:1},216:{T:-1},217:{T:1},218:{T:-1},219:{T:1},220:{T:-1},221:{T:1},222:{T:-1},223:{T:1},224:{T:-1},225:{T:1},226:{T:-1},227:{T:1},228:{T:-1},229:{T:1},230:{T:-1},231:{T:1},232:{T:-1},233:{T:1},234:{T:-1},235:{T:1},236:{T:-1},237:{T:1},238:{T:-1},239:{T:1},240:{T:-1},241:{T:1},242:{T:-1},243:{T:1},244:{T:-1},245:{T:1},246:{T:-1},247:{T:1},248:{T:-1},249:{T:1},250:{T:-1},251:{T:1},252:{T:-1},253:{T:1},254:{T:-1},255:{T:1},256:{T:-1},257:{T:1},258:{T:-1},259:{T:1},260:{T:-1},261:{T:1},262:{T:-1},263:{T:1},264:{T:-1},265:{T:1},266:{T:-1},267:{T:1},268:{T:-1},269:{T:1},270:{T:-1},271:{T:1},272:{T:-1},273:{T:1},274:{T:-1},275:{T:1},276:{T:-1},277:{},278:{T:1},279:{T:-1},280:{T:1},281:{T:-1},282:{T:1},283:{T:1},284:{T:-1},285:{T:1},286:{T:-1},287:{T:1},288:{T:-1},289:{T:1},290:{T:-1},291:{T:1},292:{T:-1},293:{T:1},294:{T:-1},295:{T:1},296:{T:-1},297:{T:1},298:{T:-1},299:{T:1},300:{T:-1},301:{T:1},302:{T:-1},303:{T:1},304:{T:-1},305:{T:1},306:{T:-1},307:{T:1},308:{T:-1},309:{T:1},310:{T:-1},311:{T:1},312:{T:-1},313:{T:-1},314:{T:1},315:{T:-1},316:{T:1},317:{T:-1},318:{T:1},319:{T:-1},320:{T:1},321:{T:-1},322:{T:1},323:{T:-1},324:{T:1},325:{T:-1},326:{T:1},327:{T:-1},328:{T:1},329:{T:-1},330:{T:1},331:{T:-1},332:{T:1},333:{T:-1},334:{T:1},335:{f:YA},336:{T:-1},337:{f:eR,T:1},338:{T:-1},339:{T:1},340:{T:-1},341:{T:1},342:{T:-1},343:{T:1},344:{T:-1},345:{T:1},346:{T:-1},347:{T:1},348:{T:-1},349:{T:1},350:{T:-1},351:{},352:{},353:{T:1},354:{T:-1},355:{f:jf},357:{},358:{},359:{},360:{T:1},361:{},362:{f:rA},363:{},364:{},366:{},367:{},368:{},369:{},370:{},371:{},372:{T:1},373:{T:-1},374:{T:1},375:{T:-1},376:{T:1},377:{T:-1},378:{T:1},379:{T:-1},380:{T:1},381:{T:-1},382:{T:1},383:{T:-1},384:{T:1},385:{T:-1},386:{T:1},387:{T:-1},388:{T:1},389:{T:-1},390:{T:1},391:{T:-1},392:{T:1},393:{T:-1},394:{T:1},395:{T:-1},396:{},397:{},398:{},399:{},400:{},401:{T:1},403:{},404:{},405:{},406:{},407:{},408:{},409:{},410:{},411:{},412:{},413:{},414:{},415:{},416:{},417:{},418:{},419:{},420:{},421:{},422:{T:1},423:{T:1},424:{T:-1},425:{T:-1},426:{f:zF},427:{f:GF},428:{},429:{T:1},430:{T:-1},431:{T:1},432:{T:-1},433:{T:1},434:{T:-1},435:{T:1},436:{T:-1},437:{T:1},438:{T:-1},439:{T:1},440:{T:-1},441:{T:1},442:{T:-1},443:{T:1},444:{T:-1},445:{T:1},446:{T:-1},447:{T:1},448:{T:-1},449:{T:1},450:{T:-1},451:{T:1},452:{T:-1},453:{T:1},454:{T:-1},455:{T:1},456:{T:-1},457:{T:1},458:{T:-1},459:{T:1},460:{T:-1},461:{T:1},462:{T:-1},463:{T:1},464:{T:-1},465:{T:1},466:{T:-1},467:{T:1},468:{T:-1},469:{T:1},470:{T:-1},471:{},472:{},473:{T:1},474:{T:-1},475:{},476:{f:XF},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:rF},486:{T:1},487:{T:-1},488:{T:1},489:{T:-1},490:{T:1},491:{T:-1},492:{T:1},493:{T:-1},494:{f:HF},495:{T:1},496:{T:-1},497:{T:1},498:{T:-1},499:{},500:{T:1},501:{T:-1},502:{T:1},503:{T:-1},504:{},505:{T:1},506:{T:-1},507:{},508:{T:1},509:{T:-1},510:{T:1},511:{T:-1},512:{},513:{},514:{T:1},515:{T:-1},516:{T:1},517:{T:-1},518:{T:1},519:{T:-1},520:{T:1},521:{T:-1},522:{},523:{},524:{},525:{},526:{},527:{},528:{T:1},529:{T:-1},530:{T:1},531:{T:-1},532:{T:1},533:{T:-1},534:{},535:{},536:{},537:{},538:{T:1},539:{T:-1},540:{T:1},541:{T:-1},542:{T:1},548:{},549:{},550:{f:jf},551:{},552:{},553:{},554:{T:1},555:{T:-1},556:{T:1},557:{T:-1},558:{T:1},559:{T:-1},560:{T:1},561:{T:-1},562:{},564:{},565:{T:1},566:{T:-1},569:{T:1},570:{T:-1},572:{},573:{T:1},574:{T:-1},577:{},578:{},579:{},580:{},581:{},582:{},583:{},584:{},585:{},586:{},587:{},588:{T:-1},589:{},590:{T:1},591:{T:-1},592:{T:1},593:{T:-1},594:{T:1},595:{T:-1},596:{},597:{T:1},598:{T:-1},599:{T:1},600:{T:-1},601:{T:1},602:{T:-1},603:{T:1},604:{T:-1},605:{T:1},606:{T:-1},607:{},608:{T:1},609:{T:-1},610:{},611:{T:1},612:{T:-1},613:{T:1},614:{T:-1},615:{T:1},616:{T:-1},617:{T:1},618:{T:-1},619:{T:1},620:{T:-1},625:{},626:{T:1},627:{T:-1},628:{T:1},629:{T:-1},630:{T:1},631:{T:-1},632:{f:lR},633:{T:1},634:{T:-1},635:{T:1,f:aR},636:{T:-1},637:{f:f3},638:{T:1},639:{},640:{T:-1},641:{T:1},642:{T:-1},643:{T:1},644:{},645:{T:-1},646:{T:1},648:{T:1},649:{},650:{T:-1},651:{f:d6},652:{},653:{T:1},654:{T:-1},655:{T:1},656:{T:-1},657:{T:1},658:{T:-1},659:{},660:{T:1},661:{},662:{T:-1},663:{},664:{T:1},665:{},666:{T:-1},667:{},668:{},669:{},671:{T:1},672:{T:-1},673:{T:1},674:{T:-1},675:{},676:{},677:{},678:{},679:{},680:{},681:{},1024:{},1025:{},1026:{T:1},1027:{T:-1},1028:{T:1},1029:{T:-1},1030:{},1031:{T:1},1032:{T:-1},1033:{T:1},1034:{T:-1},1035:{},1036:{},1037:{},1038:{T:1},1039:{T:-1},1040:{},1041:{T:1},1042:{T:-1},1043:{},1044:{},1045:{},1046:{T:1},1047:{T:-1},1048:{T:1},1049:{T:-1},1050:{},1051:{T:1},1052:{T:1},1053:{f:e6},1054:{T:1},1055:{},1056:{T:1},1057:{T:-1},1058:{T:1},1059:{T:-1},1061:{},1062:{T:1},1063:{T:-1},1064:{T:1},1065:{T:-1},1066:{T:1},1067:{T:-1},1068:{T:1},1069:{T:-1},1070:{T:1},1071:{T:-1},1072:{T:1},1073:{T:-1},1075:{T:1},1076:{T:-1},1077:{T:1},1078:{T:-1},1079:{T:1},1080:{T:-1},1081:{T:1},1082:{T:-1},1083:{T:1},1084:{T:-1},1085:{},1086:{T:1},1087:{T:-1},1088:{T:1},1089:{T:-1},1090:{T:1},1091:{T:-1},1092:{T:1},1093:{T:-1},1094:{T:1},1095:{T:-1},1096:{},1097:{T:1},1098:{},1099:{T:-1},1100:{T:1},1101:{T:-1},1102:{},1103:{},1104:{},1105:{},1111:{},1112:{},1113:{T:1},1114:{T:-1},1115:{T:1},1116:{T:-1},1117:{},1118:{T:1},1119:{T:-1},1120:{T:1},1121:{T:-1},1122:{T:1},1123:{T:-1},1124:{T:1},1125:{T:-1},1126:{},1128:{T:1},1129:{T:-1},1130:{},1131:{T:1},1132:{T:-1},1133:{T:1},1134:{T:-1},1135:{T:1},1136:{T:-1},1137:{T:1},1138:{T:-1},1139:{T:1},1140:{T:-1},1141:{},1142:{T:1},1143:{T:-1},1144:{T:1},1145:{T:-1},1146:{},1147:{T:1},1148:{T:-1},1149:{T:1},1150:{T:-1},1152:{T:1},1153:{T:-1},1154:{T:-1},1155:{T:-1},1156:{T:-1},1157:{T:1},1158:{T:-1},1159:{T:1},1160:{T:-1},1161:{T:1},1162:{T:-1},1163:{T:1},1164:{T:-1},1165:{T:1},1166:{T:-1},1167:{T:1},1168:{T:-1},1169:{T:1},1170:{T:-1},1171:{},1172:{T:1},1173:{T:-1},1177:{},1178:{T:1},1180:{},1181:{},1182:{},2048:{T:1},2049:{T:-1},2050:{},2051:{T:1},2052:{T:-1},2053:{},2054:{},2055:{T:1},2056:{T:-1},2057:{T:1},2058:{T:-1},2060:{},2067:{},2068:{T:1},2069:{T:-1},2070:{},2071:{},2072:{T:1},2073:{T:-1},2075:{},2076:{},2077:{T:1},2078:{T:-1},2079:{},2080:{T:1},2081:{T:-1},2082:{},2083:{T:1},2084:{T:-1},2085:{T:1},2086:{T:-1},2087:{T:1},2088:{T:-1},2089:{T:1},2090:{T:-1},2091:{},2092:{},2093:{T:1},2094:{T:-1},2095:{},2096:{T:1},2097:{T:-1},2098:{T:1},2099:{T:-1},2100:{T:1},2101:{T:-1},2102:{},2103:{T:1},2104:{T:-1},2105:{},2106:{T:1},2107:{T:-1},2108:{},2109:{T:1},2110:{T:-1},2111:{T:1},2112:{T:-1},2113:{T:1},2114:{T:-1},2115:{},2116:{},2117:{},2118:{T:1},2119:{T:-1},2120:{},2121:{T:1},2122:{T:-1},2123:{T:1},2124:{T:-1},2125:{},2126:{T:1},2127:{T:-1},2128:{},2129:{T:1},2130:{T:-1},2131:{T:1},2132:{T:-1},2133:{T:1},2134:{},2135:{},2136:{},2137:{T:1},2138:{T:-1},2139:{T:1},2140:{T:-1},2141:{},3072:{},3073:{},4096:{T:1},4097:{T:-1},5002:{T:1},5003:{T:-1},5081:{T:1},5082:{T:-1},5083:{},5084:{T:1},5085:{T:-1},5086:{T:1},5087:{T:-1},5088:{},5089:{},5090:{},5092:{T:1},5093:{T:-1},5094:{},5095:{T:1},5096:{T:-1},5097:{},5099:{},65535:{n:""}};function ue(e,t,r,n){var i=t;if(!isNaN(i)){var o=n||(r||[]).length||0,a=e.next(4);a.write_shift(2,i),a.write_shift(2,o),o>0&&Fd(r)&&e.push(r)}}function Y6(e,t,r,n){var i=n||(r||[]).length||0;if(i<=8224)return ue(e,t,r,i);var o=t;if(!isNaN(o)){for(var a=r.parts||[],s=0,l=0,u=0;u+(a[s]||8224)<=8224;)u+=a[s]||8224,s++;var c=e.next(4);for(c.write_shift(2,o),c.write_shift(2,u),e.push(r.slice(l,l+u)),l+=u;l=0&&i<65536?ue(e,2,dA(r,n,i)):ue(e,3,fA(r,n,i));return;case"b":case"e":ue(e,5,q6(r,n,t.v,t.t));return;case"s":case"str":ue(e,4,Q6(r,n,(t.v||"").slice(0,255)));return}ue(e,1,rs(null,r,n))}function J6(e,t,r,n){var i=Array.isArray(t),o=Ge(t["!ref"]||"A1"),a,s="",l=[];if(o.e.c>255||o.e.r>16383){if(n.WTF)throw new Error("Range "+(t["!ref"]||"A1")+" exceeds format limit A1:IV16384");o.e.c=Math.min(o.e.c,255),o.e.r=Math.min(o.e.c,16383),a=nt(o)}for(var u=o.s.r;u<=o.e.r;++u){s=wt(u);for(var c=o.s.c;c<=o.e.c;++c){u===o.s.r&&(l[c]=Rt(c)),a=l[c]+s;var f=i?(t[u]||[])[c]:t[a];f&&Z6(e,f,u,c)}}}function eD(e,t){for(var r=t||{},n=Wt(),i=0,o=0;o255||h.e.r>=m){if(t.WTF)throw new Error("Range "+(o["!ref"]||"A1")+" exceeds format limit A1:IV16384");h.e.c=Math.min(h.e.c,255),h.e.r=Math.min(h.e.c,m-1)}ue(n,2057,$d(r,16,t)),ue(n,13,ir(1)),ue(n,12,ir(100)),ue(n,15,It(!0)),ue(n,17,It(!1)),ue(n,16,ai(.001)),ue(n,95,It(!0)),ue(n,42,It(!1)),ue(n,43,It(!1)),ue(n,130,ir(1)),ue(n,128,J3([0,0])),ue(n,131,It(!1)),ue(n,132,It(!1)),u&&aD(n,o["!cols"]),ue(n,512,Z3(h,t)),u&&(o["!links"]=[]);for(var p=h.s.r;p<=h.e.r;++p){f=wt(p);for(var g=h.s.c;g<=h.e.c;++g){p===h.s.r&&(d[g]=Rt(g)),c=d[g]+f;var x=l?(o[p]||[])[g]:o[c];x&&(sD(n,x,p,g,t),u&&x.l&&o["!links"].push([c,x.l]))}}var w=s.CodeName||s.name||i;return u&&ue(n,574,X3((a.Views||[])[0])),u&&(o["!merges"]||[]).length&&ue(n,229,iA(o["!merges"])),u&&oD(n,o),ue(n,442,Zx(w)),u&&nD(n,o),ue(n,10),n.end()}function uD(e,t,r){var n=Wt(),i=(e||{}).Workbook||{},o=i.Sheets||[],a=i.WBProps||{},s=r.biff==8,l=r.biff==5;if(ue(n,2057,$d(e,5,r)),r.bookType=="xla"&&ue(n,135),ue(n,225,s?ir(1200):null),ue(n,193,k3(2)),l&&ue(n,191),l&&ue(n,192),ue(n,226),ue(n,92,W3("SheetJS",r)),ue(n,66,ir(s?1200:1252)),s&&ue(n,353,ir(0)),s&&ue(n,448),ue(n,317,cA(e.SheetNames.length)),s&&e.vbaraw&&ue(n,211),s&&e.vbaraw){var u=a.CodeName||"ThisWorkbook";ue(n,442,Zx(u))}ue(n,156,ir(17)),ue(n,25,It(!1)),ue(n,18,It(!1)),ue(n,19,ir(0)),s&&ue(n,431,It(!1)),s&&ue(n,444,ir(0)),ue(n,61,j3()),ue(n,64,It(!1)),ue(n,141,ir(0)),ue(n,34,It(p6(e)=="true")),ue(n,14,It(!0)),s&&ue(n,439,It(!1)),ue(n,218,ir(0)),tD(n,e,r),rD(n,e.SSF,r),iD(n,r),s&&ue(n,352,It(!1));var c=n.end(),f=Wt();s&&ue(f,140,sA()),s&&r.Strings&&Y6(f,252,G3(r.Strings)),ue(f,10);var d=f.end(),h=Wt(),m=0,p=0;for(p=0;p255&&typeof console<"u"&&console.error&&console.error("Worksheet '"+e.SheetNames[r]+"' extends beyond column IV (255). Data may be lost.")}}var o=t||{};switch(o.biff||2){case 8:case 5:return cD(e,t);case 4:case 3:case 2:return eD(e,t)}throw new Error("invalid type "+o.bookType+" for BIFF")}function fD(e,t,r,n){for(var i=e["!merges"]||[],o=[],a=t.s.c;a<=t.e.c;++a){for(var s=0,l=0,u=0;ur||i[u].s.c>a)&&!(i[u].e.r1&&(h.rowspan=s),l>1&&(h.colspan=l),n.editable?d=''+d+"":f&&(h["data-t"]=f&&f.t||"z",f.v!=null&&(h["data-v"]=f.v),f.z!=null&&(h["data-z"]=f.z),f.l&&(f.l.Target||"#").charAt(0)!="#"&&(d=''+d+"")),h.id=(n.id||"sjs")+"-"+c,o.push(le("td",d,h))}}var m="";return m+o.join("")+""}var dD='SheetJS Table Export',hD="";function pD(e,t,r){var n=[];return n.join("")+""}function Aw(e,t){var r=t||{},n=r.header!=null?r.header:dD,i=r.footer!=null?r.footer:hD,o=[n],a=Zt(e["!ref"]);r.dense=Array.isArray(e),o.push(pD(e,a,r));for(var s=a.s.r;s<=a.e.r;++s)o.push(fD(e,a,s,r));return o.push(""+i),o.join("")}function Rw(e,t,r){var n=r||{},i=0,o=0;if(n.origin!=null)if(typeof n.origin=="number")i=n.origin;else{var a=typeof n.origin=="string"?ut(n.origin):n.origin;i=a.r,o=a.c}var s=t.getElementsByTagName("tr"),l=Math.min(n.sheetRows||1e7,s.length),u={s:{r:0,c:0},e:{r:i,c:o}};if(e["!ref"]){var c=Zt(e["!ref"]);u.s.r=Math.min(u.s.r,c.s.r),u.s.c=Math.min(u.s.c,c.s.c),u.e.r=Math.max(u.e.r,c.e.r),u.e.c=Math.max(u.e.c,c.e.c),i==-1&&(u.e.r=i=c.e.r+1)}var f=[],d=0,h=e["!rows"]||(e["!rows"]=[]),m=0,p=0,g=0,x=0,w=0,y=0;for(e["!cols"]||(e["!cols"]=[]);m1||y>1)&&f.push({s:{r:p+i,c:x+o},e:{r:p+i+(w||1)-1,c:x+o+(y||1)-1}});var L={t:"s",v:S},V=N.getAttribute("data-t")||N.getAttribute("t")||"";S!=null&&(S.length==0?L.t=V||"z":n.raw||S.trim().length==0||V=="s"||(S==="TRUE"?L={t:"b",v:!0}:S==="FALSE"?L={t:"b",v:!1}:isNaN(Qr(S))?isNaN(Ma(S).getDate())||(L={t:"d",v:$t(S)},n.cellDates||(L={t:"n",v:zt(L.v)}),L.z=n.dateNF||et[14]):L={t:"n",v:Qr(S)})),L.z===void 0&&A!=null&&(L.z=A);var U="",W=N.getElementsByTagName("A");if(W&&W.length)for(var Y=0;Y=l&&(e["!fullref"]=nt((u.e.r=s.length-m+p-1+i,u))),e}function Ow(e,t){var r=t||{},n=r.dense?[]:{};return Rw(n,e,t)}function gD(e,t){return mi(Ow(e,t),t)}function Xg(e){var t="",r=mD(e);return r&&(t=r(e).getPropertyValue("display")),t||(t=e.style&&e.style.display),t==="none"}function mD(e){return e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle=="function"?e.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}var vD=function(){var e=["",'',"",'',"",'',"",""].join(""),t=""+e+"";return function(){return it+t}}(),Kg=function(){var e=function(o){return Le(o).replace(/ +/g,function(a){return''}).replace(/\t/g,"").replace(/\n/g,"
").replace(/^ /,"").replace(/ $/,"")},t=` `,r=` `,n=function(o,a,s){var l=[];l.push(' `);var u=0,c=0,f=Zt(o["!ref"]||"A1"),d=o["!merges"]||[],h=0,m=Array.isArray(o);if(o["!cols"])for(c=0;c<=f.e.c;++c)l.push(" @@ -270,7 +270,7 @@ `),o.push(` / `),o.push(` `),o.push(` -`);var s=0;a.SheetNames.map(function(u){return a.Sheets[u]}).forEach(function(u){if(u&&u["!cols"]){for(var c=0;c +`);var s=0;a.SheetNames.map(function(u){return a.Sheets[u]}).forEach(function(u){if(u&&u["!cols"]){for(var c=0;c `),o.push(' `),o.push(` `),++s}}});var l=0;a.SheetNames.map(function(u){return a.Sheets[u]}).forEach(function(u){if(u&&u["!rows"]){for(var c=0;c @@ -287,12 +287,12 @@ `),l.push(` `);for(var f=0;f!=a.SheetNames.length;++f)l.push(n(a.Sheets[a.SheetNames[f]],a,f));return l.push(` `),l.push(` -`),s.bookType=="fods"?l.push(""):l.push(""),l.join("")}}();function Fw(e,t){if(t.bookType=="fods")return Xg(e,t);var r=Td(),n="",i=[],o=[];return n="mimetype",Pe(r,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",Pe(r,n,Xg(e,t)),i.push([n,"text/xml"]),o.push([n,"ContentFile"]),n="styles.xml",Pe(r,n,vD(e,t)),i.push([n,"text/xml"]),o.push([n,"StylesFile"]),n="meta.xml",Pe(r,n,it+Wx()),i.push([n,"text/xml"]),o.push([n,"MetadataFile"]),n="manifest.rdf",Pe(r,n,F3(o)),i.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",Pe(r,n,R3(i)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Wl(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function xD(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):wr(Gr(e))}function wD(e,t){e:for(var r=0;r<=e.length-t.length;++r){for(var n=0;n>7,e[t+14]|=(n&127)<<1;for(var o=0;i>=1;++o,i/=256)e[t+o]=i&255;e[t+15]|=r>=0?0:128}function Ba(e,t){var r=t?t[0]:0,n=e[r]&127;e:if(e[r++]>=128&&(n|=(e[r]&127)<<7,e[r++]<128||(n|=(e[r]&127)<<14,e[r++]<128)||(n|=(e[r]&127)<<21,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,28),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,35),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,42),++r,e[r++]<128)))break e;return t&&(t[0]=r),n}function Ne(e){var t=new Uint8Array(7);t[0]=e&127;var r=1;e:if(e>127){if(t[r-1]|=128,t[r]=e>>7&127,++r,e<=16383||(t[r-1]|=128,t[r]=e>>14&127,++r,e<=2097151)||(t[r-1]|=128,t[r]=e>>21&127,++r,e<=268435455)||(t[r-1]|=128,t[r]=e/256>>>21&127,++r,e<=34359738367)||(t[r-1]|=128,t[r]=e/65536>>>21&127,++r,e<=4398046511103))break e;t[r-1]|=128,t[r]=e/16777216>>>21&127,++r}return t.slice(0,r)}function no(e){var t=0,r=e[t]&127;e:if(e[t++]>=128){if(r|=(e[t]&127)<<7,e[t++]<128||(r|=(e[t]&127)<<14,e[t++]<128)||(r|=(e[t]&127)<<21,e[t++]<128))break e;r|=(e[t]&127)<<28}return r}function ot(e){for(var t=[],r=[0];r[0]=128;);s=e.slice(l,r[0])}break;case 5:a=4,s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 1:a=8,s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 2:a=Ba(e,r),s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 3:case 4:default:throw new Error("PB Type ".concat(o," for Field ").concat(i," at offset ").concat(n))}var u={data:s,type:o};t[i]==null?t[i]=[u]:t[i].push(u)}return t}function dt(e){var t=[];return e.forEach(function(r,n){r.forEach(function(i){i.data&&(t.push(Ne(n*8+i.type)),i.type==2&&t.push(Ne(i.data.length)),t.push(i.data))})}),Mn(t)}function gr(e){for(var t,r=[],n=[0];n[0]>>0>0),r.push(a)}return r}function Di(e){var t=[];return e.forEach(function(r){var n=[];n[1]=[{data:Ne(r.id),type:0}],n[2]=[],r.merge!=null&&(n[3]=[{data:Ne(+!!r.merge),type:0}]);var i=[];r.messages.forEach(function(a){i.push(a.data),a.meta[3]=[{type:0,data:Ne(a.data.length)}],n[2].push({data:dt(a.meta),type:2})});var o=dt(n);t.push(Ne(o.length)),t.push(o),i.forEach(function(a){return t.push(a)})}),Mn(t)}function ED(e,t){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var r=[0],n=Ba(t,r),i=[];r[0]>2;if(a<60)++a;else{var s=a-59;a=t[r[0]],s>1&&(a|=t[r[0]+1]<<8),s>2&&(a|=t[r[0]+2]<<16),s>3&&(a|=t[r[0]+3]<<24),a>>>=0,a++,r[0]+=s}i.push(t.slice(r[0],r[0]+a)),r[0]+=a;continue}else{var l=0,u=0;if(o==1?(u=(t[r[0]]>>2&7)+4,l=(t[r[0]++]&224)<<3,l|=t[r[0]++]):(u=(t[r[0]++]>>2)+1,o==2?(l=t[r[0]]|t[r[0]+1]<<8,r[0]+=2):(l=(t[r[0]]|t[r[0]+1]<<8|t[r[0]+2]<<16|t[r[0]+3]<<24)>>>0,r[0]+=4)),i=[Mn(i)],l==0)throw new Error("Invalid offset 0");if(l>i[0].length)throw new Error("Invalid offset beyond length");if(u>=l)for(i.push(i[0].slice(-l)),u-=l;u>=i[i.length-1].length;)i.push(i[i.length-1]),u-=i[i.length-1].length;i.push(i[0].slice(-l,-l+u))}}var c=Mn(i);if(c.length!=n)throw new Error("Unexpected length: ".concat(c.length," != ").concat(n));return c}function mr(e){for(var t=[],r=0;r>8&255]))):n<=16777216?(a+=4,t.push(new Uint8Array([248,n-1&255,n-1>>8&255,n-1>>16&255]))):n<=4294967296&&(a+=5,t.push(new Uint8Array([252,n-1&255,n-1>>8&255,n-1>>16&255,n-1>>>24&255]))),t.push(e.slice(r,r+n)),a+=n,i[0]=0,i[1]=a&255,i[2]=a>>8&255,i[3]=a>>16&255,r+=n}return Mn(t)}function Fc(e,t){var r=new Uint8Array(32),n=Wl(r),i=12,o=0;switch(r[0]=5,e.t){case"n":r[1]=2,yD(r,i,e.v),o|=1,i+=16;break;case"b":r[1]=6,n.setFloat64(i,e.v?1:0,!0),o|=2,i+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[1]=3,n.setUint32(i,t.indexOf(e.v),!0),o|=8,i+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(8,o,!0),r.slice(0,i)}function Dc(e,t){var r=new Uint8Array(32),n=Wl(r),i=12,o=0;switch(r[0]=3,e.t){case"n":r[2]=2,n.setFloat64(i,e.v,!0),o|=32,i+=8;break;case"b":r[2]=6,n.setFloat64(i,e.v?1:0,!0),o|=32,i+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[2]=3,n.setUint32(i,t.indexOf(e.v),!0),o|=16,i+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(4,o,!0),r.slice(0,i)}function ln(e){var t=ot(e);return Ba(t[1][0].data)}function _D(e,t,r){var n,i,o,a;if(!((n=e[6])!=null&&n[0])||!((i=e[7])!=null&&i[0]))throw"Mutation only works on post-BNC storages!";var s=((a=(o=e[8])==null?void 0:o[0])==null?void 0:a.data)&&no(e[8][0].data)>0||!1;if(s)throw"Math only works with normal offsets";for(var l=0,u=Wl(e[7][0].data),c=0,f=[],d=Wl(e[4][0].data),h=0,m=[],p=0;p1&&console.error("The Numbers writer currently writes only the first table");var n=Zt(r["!ref"]);n.s.r=n.s.c=0;var i=!1;n.e.c>9&&(i=!0,n.e.c=9),n.e.r>49&&(i=!0,n.e.r=49),i&&console.error("The Numbers writer is currently limited to ".concat(nt(n)));var o=zl(r,{range:n,header:1}),a=["~Sh33tJ5~"];o.forEach(function(M){return M.forEach(function(b){typeof b=="string"&&a.push(b)})});var s={},l=[],u=Ue.read(t.numbers,{type:"base64"});u.FileIndex.map(function(M,b){return[M,u.FullPaths[b]]}).forEach(function(M){var b=M[0],T=M[1];if(b.type==2&&b.name.match(/\.iwa/)){var B=b.content,H=mr(B),q=gr(H);q.forEach(function(ee){l.push(ee.id),s[ee.id]={deps:[],location:T,type:no(ee.messages[0].meta[1][0].data)}})}}),l.sort(function(M,b){return M-b});var c=l.filter(function(M){return M>1}).map(function(M){return[M,Ne(M)]});u.FileIndex.map(function(M,b){return[M,u.FullPaths[b]]}).forEach(function(M){var b=M[0];if(M[1],!!b.name.match(/\.iwa/)){var T=gr(mr(b.content));T.forEach(function(B){B.messages.forEach(function(H){c.forEach(function(q){B.messages.some(function(ee){return no(ee.meta[1][0].data)!=11006&&wD(ee.data,q[1])})&&s[q[0]].deps.push(B.id)})})})}});for(var f=Ue.find(u,s[1].location),d=gr(mr(f.content)),h,m=0;m-1,i=Ux();Ud(t=t||{});var o=Td(),a="",s=0;if(t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),a="docProps/core.xml",Pe(o,a,zx(e.Props,t)),i.coreprops.push(a),Me(t.rels,2,a,ke.CORE_PROPS),a="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var l=[],u=0;u0&&(a="docProps/custom.xml",Pe(o,a,Xx(e.Custprops)),i.custprops.push(a),Me(t.rels,4,a,ke.CUST_PROPS)),s=1;s<=e.SheetNames.length;++s){var c={"!id":{}},f=e.Sheets[e.SheetNames[s-1]],d=(f||{})["!type"]||"sheet";switch(d){case"chart":default:a="xl/worksheets/sheet"+s+"."+r,Pe(o,a,F6(s-1,a,t,e,c)),i.sheets.push(a),Me(t.wbrels,-1,"worksheets/sheet"+s+"."+r,ke.WS[0])}if(f){var h=f["!comments"],m=!1,p="";h&&h.length>0&&(p="xl/comments"+s+"."+r,Pe(o,p,I6(h,p)),i.comments.push(p),Me(c,-1,"../comments"+s+"."+r,ke.CMNT),m=!0),f["!legacy"]&&m&&Pe(o,"xl/drawings/vmlDrawing"+s+".vml",uw(s,f["!comments"])),delete f["!comments"],delete f["!legacy"]}c["!id"].rId1&&Pe(o,Vx(a),to(c))}return t.Strings!=null&&t.Strings.length>0&&(a="xl/sharedStrings."+r,Pe(o,a,P6(t.Strings,a,t)),i.strs.push(a),Me(t.wbrels,-1,"sharedStrings."+r,ke.SST)),a="xl/workbook."+r,Pe(o,a,O6(e,a)),i.workbooks.push(a),Me(t.rels,1,a,ke.WB),a="xl/theme/theme1.xml",Pe(o,a,sw(e.Themes,t)),i.themes.push(a),Me(t.wbrels,-1,"theme/theme1.xml",ke.THEME),a="xl/styles."+r,Pe(o,a,D6(e,a,t)),i.styles.push(a),Me(t.wbrels,-1,"styles."+r,ke.STY),e.vbaraw&&n&&(a="xl/vbaProject.bin",Pe(o,a,e.vbaraw),i.vba.push(a),Me(t.wbrels,-1,"vbaProject.bin",ke.VBA)),a="xl/metadata."+r,Pe(o,a,b6(a)),i.metadata.push(a),Me(t.wbrels,-1,"metadata."+r,ke.XLMETA),Pe(o,"[Content_Types].xml",Hx(i,t)),Pe(o,"_rels/.rels",to(t.rels)),Pe(o,"xl/_rels/workbook."+r+".rels",to(t.wbrels)),delete t.revssf,delete t.ssf,o}function RD(e,t){Wi=1024,e&&!e.SSF&&(e.SSF=Gt(et)),e&&e.SSF&&(wu(),xu(e.SSF),t.revssf=yu(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,va?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r="xml",n=fw.indexOf(t.bookType)>-1,i=Ux();Ud(t=t||{});var o=Td(),a="",s=0;if(t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),a="docProps/core.xml",Pe(o,a,zx(e.Props,t)),i.coreprops.push(a),Me(t.rels,2,a,ke.CORE_PROPS),a="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var l=[],u=0;u0&&(a="docProps/custom.xml",Pe(o,a,Xx(e.Custprops)),i.custprops.push(a),Me(t.rels,4,a,ke.CUST_PROPS));var c=["SheetJ5"];for(t.tcid=0,s=1;s<=e.SheetNames.length;++s){var f={"!id":{}},d=e.Sheets[e.SheetNames[s-1]],h=(d||{})["!type"]||"sheet";switch(h){case"chart":default:a="xl/worksheets/sheet"+s+"."+r,Pe(o,a,yw(s-1,t,e,f)),i.sheets.push(a),Me(t.wbrels,-1,"worksheets/sheet"+s+"."+r,ke.WS[0])}if(d){var m=d["!comments"],p=!1,g="";if(m&&m.length>0){var x=!1;m.forEach(function(w){w[1].forEach(function(y){y.T==!0&&(x=!0)})}),x&&(g="xl/threadedComments/threadedComment"+s+"."+r,Pe(o,g,iR(m,c,t)),i.threadedcomments.push(g),Me(f,-1,"../threadedComments/threadedComment"+s+"."+r,ke.TCMNT)),g="xl/comments"+s+"."+r,Pe(o,g,cw(m)),i.comments.push(g),Me(f,-1,"../comments"+s+"."+r,ke.CMNT),p=!0}d["!legacy"]&&p&&Pe(o,"xl/drawings/vmlDrawing"+s+".vml",uw(s,d["!comments"])),delete d["!comments"],delete d["!legacy"]}f["!id"].rId1&&Pe(o,Vx(a),to(f))}return t.Strings!=null&&t.Strings.length>0&&(a="xl/sharedStrings."+r,Pe(o,a,tw(t.Strings,t)),i.strs.push(a),Me(t.wbrels,-1,"sharedStrings."+r,ke.SST)),a="xl/workbook."+r,Pe(o,a,Sw(e)),i.workbooks.push(a),Me(t.rels,1,a,ke.WB),a="xl/theme/theme1.xml",Pe(o,a,sw(e.Themes,t)),i.themes.push(a),Me(t.wbrels,-1,"theme/theme1.xml",ke.THEME),a="xl/styles."+r,Pe(o,a,ow(e,t)),i.styles.push(a),Me(t.wbrels,-1,"styles."+r,ke.STY),e.vbaraw&&n&&(a="xl/vbaProject.bin",Pe(o,a,e.vbaraw),i.vba.push(a),Me(t.wbrels,-1,"vbaProject.bin",ke.VBA)),a="xl/metadata."+r,Pe(o,a,lw()),i.metadata.push(a),Me(t.wbrels,-1,"metadata."+r,ke.XLMETA),c.length>1&&(a="xl/persons/person.xml",Pe(o,a,oR(c)),i.people.push(a),Me(t.wbrels,-1,"persons/person.xml",ke.PEOPLE)),Pe(o,"[Content_Types].xml",Hx(i,t)),Pe(o,"_rels/.rels",to(t.rels)),Pe(o,"xl/_rels/workbook."+r+".rels",to(t.wbrels)),delete t.revssf,delete t.ssf,o}function OD(e,t){var r="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":r=tn(e.slice(0,12));break;case"binary":r=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3),r.charCodeAt(4),r.charCodeAt(5),r.charCodeAt(6),r.charCodeAt(7)]}function Dw(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return Za(t.file,Ue.write(e,{type:$e?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return Ue.write(e,t)}function FD(e,t){var r=Gt(t||{}),n=CD(e,r);return DD(n,r)}function DD(e,t){var r={},n=$e?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(t.compression&&(r.compression="DEFLATE"),t.password)r.type=n;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=n;break;default:throw new Error("Unrecognized type "+t.type)}var i=e.FullPaths?Ue.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if(typeof Deno<"u"&&typeof i=="string"){if(t.type=="binary"||t.type=="base64")return i;i=new Uint8Array(vu(i))}return t.password&&typeof encrypt_agile<"u"?Dw(encrypt_agile(i,t.password),t):t.type==="file"?Za(t.file,i):t.type=="string"?ha(i):i}function PD(e,t){var r=t||{},n=X6(e,r);return Dw(n,r)}function Cr(e,t,r){r||(r="");var n=r+e;switch(t.type){case"base64":return Na(Gr(n));case"binary":return Gr(n);case"string":return e;case"file":return Za(t.file,n,"utf8");case"buffer":return $e?sn(n,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(n):Cr(n,{type:"binary"}).split("").map(function(i){return i.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function ID(e,t){switch(t.type){case"base64":return Na(e);case"binary":return e;case"string":return e;case"file":return Za(t.file,e,"binary");case"buffer":return $e?sn(e,"binary"):e.split("").map(function(r){return r.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function bs(e,t){switch(t.type){case"string":case"base64":case"binary":for(var r="",n=0;n0&&(i=0);var f=wt(l.s.r),d=[],h=[],m=0,p=0,g=Array.isArray(e),x=l.s.r,w=0,y={};g&&!e[x]&&(e[x]=[]);var _=u.skipHidden&&e["!cols"]||[],k=u.skipHidden&&e["!rows"]||[];for(w=l.s.c;w<=l.e.c;++w)if(!(_[w]||{}).hidden)switch(d[w]=Rt(w),r=g?e[x][w]:e[d[w]+f],n){case 1:o[w]=w-l.s.c;break;case 2:o[w]=d[w];break;case 3:o[w]=u.header[w-l.s.c];break;default:if(r==null&&(r={w:"__EMPTY",t:"s"}),s=a=rn(r,null,u),p=y[a]||0,!p)y[a]=1;else{do s=a+"_"+p++;while(y[s]);y[a]=p,y[s]=1}o[w]=s}for(x=l.s.r+i;x<=l.e.r;++x)if(!(k[x]||{}).hidden){var N=$D(e,l,x,d,n,o,g,u);(N.isempty===!1||(n===1?u.blankrows!==!1:u.blankrows))&&(h[m++]=N.row)}return h.length=m,h}var Kg=/"/g;function ND(e,t,r,n,i,o,a,s){for(var l=!0,u=[],c="",f=wt(r),d=t.s.c;d<=t.e.c;++d)if(n[d]){var h=s.dense?(e[r]||[])[d]:e[n[d]+f];if(h==null)c="";else if(h.v!=null){l=!1,c=""+(s.rawNumbers&&h.t=="n"?h.v:rn(h,null,s));for(var m=0,p=0;m!==c.length;++m)if((p=c.charCodeAt(m))===i||p===o||p===34||s.forceQuotes){c='"'+c.replace(Kg,'""')+'"';break}c=="ID"&&(c='"ID"')}else h.f!=null&&!h.F?(l=!1,c="="+h.f,c.indexOf(",")>=0&&(c='"'+c.replace(Kg,'""')+'"')):c="";u.push(c)}return s.blankrows===!1&&l?null:u.join(a)}function Hd(e,t){var r=[],n=t??{};if(e==null||e["!ref"]==null)return"";var i=Ge(e["!ref"]),o=n.FS!==void 0?n.FS:",",a=o.charCodeAt(0),s=n.RS!==void 0?n.RS:` +`),s.bookType=="fods"?l.push(""):l.push(""),l.join("")}}();function Fw(e,t){if(t.bookType=="fods")return Kg(e,t);var r=Cd(),n="",i=[],o=[];return n="mimetype",Pe(r,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",Pe(r,n,Kg(e,t)),i.push([n,"text/xml"]),o.push([n,"ContentFile"]),n="styles.xml",Pe(r,n,vD(e,t)),i.push([n,"text/xml"]),o.push([n,"StylesFile"]),n="meta.xml",Pe(r,n,it+Wx()),i.push([n,"text/xml"]),o.push([n,"MetadataFile"]),n="manifest.rdf",Pe(r,n,F3(o)),i.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",Pe(r,n,R3(i)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Wl(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function xD(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):wr(Gr(e))}function wD(e,t){e:for(var r=0;r<=e.length-t.length;++r){for(var n=0;n>7,e[t+14]|=(n&127)<<1;for(var o=0;i>=1;++o,i/=256)e[t+o]=i&255;e[t+15]|=r>=0?0:128}function Ba(e,t){var r=t?t[0]:0,n=e[r]&127;e:if(e[r++]>=128&&(n|=(e[r]&127)<<7,e[r++]<128||(n|=(e[r]&127)<<14,e[r++]<128)||(n|=(e[r]&127)<<21,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,28),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,35),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,42),++r,e[r++]<128)))break e;return t&&(t[0]=r),n}function Ne(e){var t=new Uint8Array(7);t[0]=e&127;var r=1;e:if(e>127){if(t[r-1]|=128,t[r]=e>>7&127,++r,e<=16383||(t[r-1]|=128,t[r]=e>>14&127,++r,e<=2097151)||(t[r-1]|=128,t[r]=e>>21&127,++r,e<=268435455)||(t[r-1]|=128,t[r]=e/256>>>21&127,++r,e<=34359738367)||(t[r-1]|=128,t[r]=e/65536>>>21&127,++r,e<=4398046511103))break e;t[r-1]|=128,t[r]=e/16777216>>>21&127,++r}return t.slice(0,r)}function no(e){var t=0,r=e[t]&127;e:if(e[t++]>=128){if(r|=(e[t]&127)<<7,e[t++]<128||(r|=(e[t]&127)<<14,e[t++]<128)||(r|=(e[t]&127)<<21,e[t++]<128))break e;r|=(e[t]&127)<<28}return r}function ot(e){for(var t=[],r=[0];r[0]=128;);s=e.slice(l,r[0])}break;case 5:a=4,s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 1:a=8,s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 2:a=Ba(e,r),s=e.slice(r[0],r[0]+a),r[0]+=a;break;case 3:case 4:default:throw new Error("PB Type ".concat(o," for Field ").concat(i," at offset ").concat(n))}var u={data:s,type:o};t[i]==null?t[i]=[u]:t[i].push(u)}return t}function dt(e){var t=[];return e.forEach(function(r,n){r.forEach(function(i){i.data&&(t.push(Ne(n*8+i.type)),i.type==2&&t.push(Ne(i.data.length)),t.push(i.data))})}),Mn(t)}function gr(e){for(var t,r=[],n=[0];n[0]>>0>0),r.push(a)}return r}function Di(e){var t=[];return e.forEach(function(r){var n=[];n[1]=[{data:Ne(r.id),type:0}],n[2]=[],r.merge!=null&&(n[3]=[{data:Ne(+!!r.merge),type:0}]);var i=[];r.messages.forEach(function(a){i.push(a.data),a.meta[3]=[{type:0,data:Ne(a.data.length)}],n[2].push({data:dt(a.meta),type:2})});var o=dt(n);t.push(Ne(o.length)),t.push(o),i.forEach(function(a){return t.push(a)})}),Mn(t)}function ED(e,t){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var r=[0],n=Ba(t,r),i=[];r[0]>2;if(a<60)++a;else{var s=a-59;a=t[r[0]],s>1&&(a|=t[r[0]+1]<<8),s>2&&(a|=t[r[0]+2]<<16),s>3&&(a|=t[r[0]+3]<<24),a>>>=0,a++,r[0]+=s}i.push(t.slice(r[0],r[0]+a)),r[0]+=a;continue}else{var l=0,u=0;if(o==1?(u=(t[r[0]]>>2&7)+4,l=(t[r[0]++]&224)<<3,l|=t[r[0]++]):(u=(t[r[0]++]>>2)+1,o==2?(l=t[r[0]]|t[r[0]+1]<<8,r[0]+=2):(l=(t[r[0]]|t[r[0]+1]<<8|t[r[0]+2]<<16|t[r[0]+3]<<24)>>>0,r[0]+=4)),i=[Mn(i)],l==0)throw new Error("Invalid offset 0");if(l>i[0].length)throw new Error("Invalid offset beyond length");if(u>=l)for(i.push(i[0].slice(-l)),u-=l;u>=i[i.length-1].length;)i.push(i[i.length-1]),u-=i[i.length-1].length;i.push(i[0].slice(-l,-l+u))}}var c=Mn(i);if(c.length!=n)throw new Error("Unexpected length: ".concat(c.length," != ").concat(n));return c}function mr(e){for(var t=[],r=0;r>8&255]))):n<=16777216?(a+=4,t.push(new Uint8Array([248,n-1&255,n-1>>8&255,n-1>>16&255]))):n<=4294967296&&(a+=5,t.push(new Uint8Array([252,n-1&255,n-1>>8&255,n-1>>16&255,n-1>>>24&255]))),t.push(e.slice(r,r+n)),a+=n,i[0]=0,i[1]=a&255,i[2]=a>>8&255,i[3]=a>>16&255,r+=n}return Mn(t)}function Fc(e,t){var r=new Uint8Array(32),n=Wl(r),i=12,o=0;switch(r[0]=5,e.t){case"n":r[1]=2,yD(r,i,e.v),o|=1,i+=16;break;case"b":r[1]=6,n.setFloat64(i,e.v?1:0,!0),o|=2,i+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[1]=3,n.setUint32(i,t.indexOf(e.v),!0),o|=8,i+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(8,o,!0),r.slice(0,i)}function Dc(e,t){var r=new Uint8Array(32),n=Wl(r),i=12,o=0;switch(r[0]=3,e.t){case"n":r[2]=2,n.setFloat64(i,e.v,!0),o|=32,i+=8;break;case"b":r[2]=6,n.setFloat64(i,e.v?1:0,!0),o|=32,i+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[2]=3,n.setUint32(i,t.indexOf(e.v),!0),o|=16,i+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(4,o,!0),r.slice(0,i)}function ln(e){var t=ot(e);return Ba(t[1][0].data)}function _D(e,t,r){var n,i,o,a;if(!((n=e[6])!=null&&n[0])||!((i=e[7])!=null&&i[0]))throw"Mutation only works on post-BNC storages!";var s=((a=(o=e[8])==null?void 0:o[0])==null?void 0:a.data)&&no(e[8][0].data)>0||!1;if(s)throw"Math only works with normal offsets";for(var l=0,u=Wl(e[7][0].data),c=0,f=[],d=Wl(e[4][0].data),h=0,m=[],p=0;p1&&console.error("The Numbers writer currently writes only the first table");var n=Zt(r["!ref"]);n.s.r=n.s.c=0;var i=!1;n.e.c>9&&(i=!0,n.e.c=9),n.e.r>49&&(i=!0,n.e.r=49),i&&console.error("The Numbers writer is currently limited to ".concat(nt(n)));var o=zl(r,{range:n,header:1}),a=["~Sh33tJ5~"];o.forEach(function(M){return M.forEach(function(b){typeof b=="string"&&a.push(b)})});var s={},l=[],u=Ue.read(t.numbers,{type:"base64"});u.FileIndex.map(function(M,b){return[M,u.FullPaths[b]]}).forEach(function(M){var b=M[0],T=M[1];if(b.type==2&&b.name.match(/\.iwa/)){var B=b.content,H=mr(B),Q=gr(H);Q.forEach(function(ee){l.push(ee.id),s[ee.id]={deps:[],location:T,type:no(ee.messages[0].meta[1][0].data)}})}}),l.sort(function(M,b){return M-b});var c=l.filter(function(M){return M>1}).map(function(M){return[M,Ne(M)]});u.FileIndex.map(function(M,b){return[M,u.FullPaths[b]]}).forEach(function(M){var b=M[0];if(M[1],!!b.name.match(/\.iwa/)){var T=gr(mr(b.content));T.forEach(function(B){B.messages.forEach(function(H){c.forEach(function(Q){B.messages.some(function(ee){return no(ee.meta[1][0].data)!=11006&&wD(ee.data,Q[1])})&&s[Q[0]].deps.push(B.id)})})})}});for(var f=Ue.find(u,s[1].location),d=gr(mr(f.content)),h,m=0;m-1,i=Ux();Hd(t=t||{});var o=Cd(),a="",s=0;if(t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),a="docProps/core.xml",Pe(o,a,zx(e.Props,t)),i.coreprops.push(a),Me(t.rels,2,a,ke.CORE_PROPS),a="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var l=[],u=0;u0&&(a="docProps/custom.xml",Pe(o,a,Xx(e.Custprops)),i.custprops.push(a),Me(t.rels,4,a,ke.CUST_PROPS)),s=1;s<=e.SheetNames.length;++s){var c={"!id":{}},f=e.Sheets[e.SheetNames[s-1]],d=(f||{})["!type"]||"sheet";switch(d){case"chart":default:a="xl/worksheets/sheet"+s+"."+r,Pe(o,a,F6(s-1,a,t,e,c)),i.sheets.push(a),Me(t.wbrels,-1,"worksheets/sheet"+s+"."+r,ke.WS[0])}if(f){var h=f["!comments"],m=!1,p="";h&&h.length>0&&(p="xl/comments"+s+"."+r,Pe(o,p,I6(h,p)),i.comments.push(p),Me(c,-1,"../comments"+s+"."+r,ke.CMNT),m=!0),f["!legacy"]&&m&&Pe(o,"xl/drawings/vmlDrawing"+s+".vml",uw(s,f["!comments"])),delete f["!comments"],delete f["!legacy"]}c["!id"].rId1&&Pe(o,Vx(a),to(c))}return t.Strings!=null&&t.Strings.length>0&&(a="xl/sharedStrings."+r,Pe(o,a,P6(t.Strings,a,t)),i.strs.push(a),Me(t.wbrels,-1,"sharedStrings."+r,ke.SST)),a="xl/workbook."+r,Pe(o,a,O6(e,a)),i.workbooks.push(a),Me(t.rels,1,a,ke.WB),a="xl/theme/theme1.xml",Pe(o,a,sw(e.Themes,t)),i.themes.push(a),Me(t.wbrels,-1,"theme/theme1.xml",ke.THEME),a="xl/styles."+r,Pe(o,a,D6(e,a,t)),i.styles.push(a),Me(t.wbrels,-1,"styles."+r,ke.STY),e.vbaraw&&n&&(a="xl/vbaProject.bin",Pe(o,a,e.vbaraw),i.vba.push(a),Me(t.wbrels,-1,"vbaProject.bin",ke.VBA)),a="xl/metadata."+r,Pe(o,a,b6(a)),i.metadata.push(a),Me(t.wbrels,-1,"metadata."+r,ke.XLMETA),Pe(o,"[Content_Types].xml",Hx(i,t)),Pe(o,"_rels/.rels",to(t.rels)),Pe(o,"xl/_rels/workbook."+r+".rels",to(t.wbrels)),delete t.revssf,delete t.ssf,o}function RD(e,t){Wi=1024,e&&!e.SSF&&(e.SSF=Gt(et)),e&&e.SSF&&(wu(),xu(e.SSF),t.revssf=yu(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,va?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r="xml",n=fw.indexOf(t.bookType)>-1,i=Ux();Hd(t=t||{});var o=Cd(),a="",s=0;if(t.cellXfs=[],Un(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),a="docProps/core.xml",Pe(o,a,zx(e.Props,t)),i.coreprops.push(a),Me(t.rels,2,a,ke.CORE_PROPS),a="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var l=[],u=0;u0&&(a="docProps/custom.xml",Pe(o,a,Xx(e.Custprops)),i.custprops.push(a),Me(t.rels,4,a,ke.CUST_PROPS));var c=["SheetJ5"];for(t.tcid=0,s=1;s<=e.SheetNames.length;++s){var f={"!id":{}},d=e.Sheets[e.SheetNames[s-1]],h=(d||{})["!type"]||"sheet";switch(h){case"chart":default:a="xl/worksheets/sheet"+s+"."+r,Pe(o,a,yw(s-1,t,e,f)),i.sheets.push(a),Me(t.wbrels,-1,"worksheets/sheet"+s+"."+r,ke.WS[0])}if(d){var m=d["!comments"],p=!1,g="";if(m&&m.length>0){var x=!1;m.forEach(function(w){w[1].forEach(function(y){y.T==!0&&(x=!0)})}),x&&(g="xl/threadedComments/threadedComment"+s+"."+r,Pe(o,g,iR(m,c,t)),i.threadedcomments.push(g),Me(f,-1,"../threadedComments/threadedComment"+s+"."+r,ke.TCMNT)),g="xl/comments"+s+"."+r,Pe(o,g,cw(m)),i.comments.push(g),Me(f,-1,"../comments"+s+"."+r,ke.CMNT),p=!0}d["!legacy"]&&p&&Pe(o,"xl/drawings/vmlDrawing"+s+".vml",uw(s,d["!comments"])),delete d["!comments"],delete d["!legacy"]}f["!id"].rId1&&Pe(o,Vx(a),to(f))}return t.Strings!=null&&t.Strings.length>0&&(a="xl/sharedStrings."+r,Pe(o,a,tw(t.Strings,t)),i.strs.push(a),Me(t.wbrels,-1,"sharedStrings."+r,ke.SST)),a="xl/workbook."+r,Pe(o,a,Sw(e)),i.workbooks.push(a),Me(t.rels,1,a,ke.WB),a="xl/theme/theme1.xml",Pe(o,a,sw(e.Themes,t)),i.themes.push(a),Me(t.wbrels,-1,"theme/theme1.xml",ke.THEME),a="xl/styles."+r,Pe(o,a,ow(e,t)),i.styles.push(a),Me(t.wbrels,-1,"styles."+r,ke.STY),e.vbaraw&&n&&(a="xl/vbaProject.bin",Pe(o,a,e.vbaraw),i.vba.push(a),Me(t.wbrels,-1,"vbaProject.bin",ke.VBA)),a="xl/metadata."+r,Pe(o,a,lw()),i.metadata.push(a),Me(t.wbrels,-1,"metadata."+r,ke.XLMETA),c.length>1&&(a="xl/persons/person.xml",Pe(o,a,oR(c)),i.people.push(a),Me(t.wbrels,-1,"persons/person.xml",ke.PEOPLE)),Pe(o,"[Content_Types].xml",Hx(i,t)),Pe(o,"_rels/.rels",to(t.rels)),Pe(o,"xl/_rels/workbook."+r+".rels",to(t.wbrels)),delete t.revssf,delete t.ssf,o}function OD(e,t){var r="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":r=tn(e.slice(0,12));break;case"binary":r=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3),r.charCodeAt(4),r.charCodeAt(5),r.charCodeAt(6),r.charCodeAt(7)]}function Dw(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return Za(t.file,Ue.write(e,{type:$e?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return Ue.write(e,t)}function FD(e,t){var r=Gt(t||{}),n=CD(e,r);return DD(n,r)}function DD(e,t){var r={},n=$e?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(t.compression&&(r.compression="DEFLATE"),t.password)r.type=n;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=n;break;default:throw new Error("Unrecognized type "+t.type)}var i=e.FullPaths?Ue.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if(typeof Deno<"u"&&typeof i=="string"){if(t.type=="binary"||t.type=="base64")return i;i=new Uint8Array(vu(i))}return t.password&&typeof encrypt_agile<"u"?Dw(encrypt_agile(i,t.password),t):t.type==="file"?Za(t.file,i):t.type=="string"?ha(i):i}function PD(e,t){var r=t||{},n=X6(e,r);return Dw(n,r)}function Cr(e,t,r){r||(r="");var n=r+e;switch(t.type){case"base64":return Na(Gr(n));case"binary":return Gr(n);case"string":return e;case"file":return Za(t.file,n,"utf8");case"buffer":return $e?sn(n,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(n):Cr(n,{type:"binary"}).split("").map(function(i){return i.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function ID(e,t){switch(t.type){case"base64":return Na(e);case"binary":return e;case"string":return e;case"file":return Za(t.file,e,"binary");case"buffer":return $e?sn(e,"binary"):e.split("").map(function(r){return r.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function bs(e,t){switch(t.type){case"string":case"base64":case"binary":for(var r="",n=0;n0&&(i=0);var f=wt(l.s.r),d=[],h=[],m=0,p=0,g=Array.isArray(e),x=l.s.r,w=0,y={};g&&!e[x]&&(e[x]=[]);var _=u.skipHidden&&e["!cols"]||[],k=u.skipHidden&&e["!rows"]||[];for(w=l.s.c;w<=l.e.c;++w)if(!(_[w]||{}).hidden)switch(d[w]=Rt(w),r=g?e[x][w]:e[d[w]+f],n){case 1:o[w]=w-l.s.c;break;case 2:o[w]=d[w];break;case 3:o[w]=u.header[w-l.s.c];break;default:if(r==null&&(r={w:"__EMPTY",t:"s"}),s=a=rn(r,null,u),p=y[a]||0,!p)y[a]=1;else{do s=a+"_"+p++;while(y[s]);y[a]=p,y[s]=1}o[w]=s}for(x=l.s.r+i;x<=l.e.r;++x)if(!(k[x]||{}).hidden){var N=$D(e,l,x,d,n,o,g,u);(N.isempty===!1||(n===1?u.blankrows!==!1:u.blankrows))&&(h[m++]=N.row)}return h.length=m,h}var Yg=/"/g;function ND(e,t,r,n,i,o,a,s){for(var l=!0,u=[],c="",f=wt(r),d=t.s.c;d<=t.e.c;++d)if(n[d]){var h=s.dense?(e[r]||[])[d]:e[n[d]+f];if(h==null)c="";else if(h.v!=null){l=!1,c=""+(s.rawNumbers&&h.t=="n"?h.v:rn(h,null,s));for(var m=0,p=0;m!==c.length;++m)if((p=c.charCodeAt(m))===i||p===o||p===34||s.forceQuotes){c='"'+c.replace(Yg,'""')+'"';break}c=="ID"&&(c='"ID"')}else h.f!=null&&!h.F?(l=!1,c="="+h.f,c.indexOf(",")>=0&&(c='"'+c.replace(Yg,'""')+'"')):c="";u.push(c)}return s.blankrows===!1&&l?null:u.join(a)}function Vd(e,t){var r=[],n=t??{};if(e==null||e["!ref"]==null)return"";var i=Ge(e["!ref"]),o=n.FS!==void 0?n.FS:",",a=o.charCodeAt(0),s=n.RS!==void 0?n.RS:` `,l=s.charCodeAt(0),u=new RegExp((o=="|"?"\\|":o)+"+$"),c="",f=[];n.dense=Array.isArray(e);for(var d=n.skipHidden&&e["!cols"]||[],h=n.skipHidden&&e["!rows"]||[],m=i.s.c;m<=i.e.c;++m)(d[m]||{}).hidden||(f[m]=Rt(m));for(var p=0,g=i.s.r;g<=i.e.r;++g)(h[g]||{}).hidden||(c=ND(e,i,g,f,a,l,o,n),c!=null&&(n.strip&&(c=c.replace(u,"")),(c||n.blankrows!==!1)&&r.push((p++?s:"")+c)));return delete n.dense,r.join("")}function Iw(e,t){t||(t={}),t.FS=" ",t.RS=` -`;var r=Hd(e,t);return r}function MD(e){var t="",r,n="";if(e==null||e["!ref"]==null)return[];var i=Ge(e["!ref"]),o="",a=[],s,l=[],u=Array.isArray(e);for(s=i.s.c;s<=i.e.c;++s)a[s]=Rt(s);for(var c=i.s.r;c<=i.e.r;++c)for(o=wt(c),s=i.s.c;s<=i.e.c;++s)if(t=a[s]+o,r=u?(e[c]||[])[s]:e[t],n="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;n=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)n=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)n=""+r.v;else if(r.t=="b")n=r.v?"TRUE":"FALSE";else if(r.w!==void 0)n="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?n="'"+r.v:n=""+r.v}}l[l.length]=t+"="+n}return l}function bw(e,t,r){var n=r||{},i=+!n.skipHeader,o=e||{},a=0,s=0;if(o&&n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var l=typeof n.origin=="string"?ut(n.origin):n.origin;a=l.r,s=l.c}var u,c={s:{c:0,r:0},e:{c:s,r:a+t.length-1+i}};if(o["!ref"]){var f=Ge(o["!ref"]);c.e.c=Math.max(c.e.c,f.e.c),c.e.r=Math.max(c.e.r,f.e.r),a==-1&&(a=f.e.r+1,c.e.r=a+t.length-1+i)}else a==-1&&(a=0,c.e.r=t.length-1+i);var d=n.header||[],h=0;t.forEach(function(p,g){Et(p).forEach(function(x){(h=d.indexOf(x))==-1&&(d[h=d.length]=x);var w=p[x],y="z",_="",k=Be({c:s+h,r:a+g+i});u=Ua(o,k),w&&typeof w=="object"&&!(w instanceof Date)?o[k]=w:(typeof w=="number"?y="n":typeof w=="boolean"?y="b":typeof w=="string"?y="s":w instanceof Date?(y="d",n.cellDates||(y="n",w=zt(w)),_=n.dateNF||et[14]):w===null&&n.nullError&&(y="e",w=0),u?(u.t=y,u.v=w,delete u.w,delete u.R,_&&(u.z=_)):o[k]=u={t:y,v:w},_&&(u.z=_))})}),c.e.c=Math.max(c.e.c,s+d.length-1);var m=wt(a);if(i)for(h=0;h=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function UD(){return{SheetNames:[],Sheets:{}}}function HD(e,t,r,n){var i=1;if(!r)for(;i<=65535&&e.SheetNames.indexOf(r="Sheet"+i)!=-1;++i,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0){var o=r.match(/(^.*?)(\d+)$/);i=o&&+o[2]||0;var a=o&&o[1]||r;for(++i;i<=65535&&e.SheetNames.indexOf(r=a+i)!=-1;++i);}if(_w(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function VD(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=BD(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r}function WD(e,t){return e.z=t,e}function kw(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function zD(e,t,r){return kw(e,"#"+t,r)}function GD(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function jD(e,t,r,n){for(var i=typeof t!="string"?t:Ge(t),o=typeof t=="string"?t:nt(t),a=i.s.r;a<=i.e.r;++a)for(var s=i.s.c;s<=i.e.c;++s){var l=Ua(e,a,s);l.t="n",l.F=o,delete l.v,a==i.s.r&&s==i.s.c&&(l.f=r,n&&(l.D=!0))}return e}var Pc={encode_col:Rt,encode_row:wt,encode_cell:Be,encode_range:nt,decode_col:Dd,decode_row:Fd,split_cell:a3,decode_cell:ut,decode_range:Zt,format_cell:rn,sheet_add_aoa:kx,sheet_add_json:bw,sheet_add_dom:Rw,aoa_to_sheet:So,json_to_sheet:LD,table_to_sheet:Ow,table_to_book:gD,sheet_to_csv:Hd,sheet_to_txt:Iw,sheet_to_json:zl,sheet_to_html:Aw,sheet_to_formulae:MD,sheet_to_row_object_array:zl,sheet_get_cell:Ua,book_new:UD,book_append_sheet:HD,book_set_sheet_visibility:VD,cell_set_number_format:WD,cell_set_hyperlink:kw,cell_set_internal_link:zD,cell_add_comment:GD,sheet_set_array_formula:jD,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function XD(e){if(e%1!==0){const t=Math.max(2,e.toString().split(".")[1].length),r=Math.min(4,t);if(e<1e3)return e.toFixed(r)||0}if(e>1e3){const t=Math.min(4,Math.floor(Math.log10(Math.abs(e))/3)),r=["","K","M","B","T"][t];return`${(e/10**(t*3)).toFixed(2)} ${r}`}return e}function Vd(e){return["date","day","time","timestamp","year"].some(t=>e.toLowerCase().includes(t))}function KD(e,t){if(e===t)return!0;if(e==null||t==null||e.length!==t.length)return!1;for(var r=0;r{const i=YC(e.getValue(t),r);return n(i),i},qD=async({fileHandle:e,blob:t})=>{if(!e)throw new Error("Cannot access filesystem");await QD({fileHandle:e,blob:t})},QD=async({fileHandle:e,blob:t})=>{const r=await e.createWritable();await r.write(t),await r.close()},ZD=[{description:"PNG Image",accept:{"image/png":[".png"]}},{description:"JPEG Image",accept:{"image/jpeg":[".jpeg"]}}],$w=({filename:e,is_image:t})=>{if("showSaveFilePicker"in window){const r={suggestedName:e,types:t?ZD:[{description:"CSV File",accept:{"image/csv":[".csv"]}}],excludeAcceptAllOption:!0};return showSaveFilePicker(r)}return new Promise(r=>{r(null)})},Nw=(e,t,r)=>{try{qD({fileHandle:r,blob:e})}catch(n){console.error("oops, something went wrong!",n);const i=URL.createObjectURL(e),o=document.createElement("a");o.setAttribute("href",i),o.setAttribute("download",t),o.style.visibility="hidden",document.body.appendChild(o),o.click(),document.body.removeChild(o)}},Yg=(e,t,r)=>{const n=t,i=r.map(l=>n.map(u=>l[u])),o=[n,...i];if(e==="csv"){const l=o.map(f=>f.join(",")).join(` -`),u=new Blob([l],{type:"text/csv;charset=utf-8;"}),c=`${window.title}.csv`;$w({filename:c}).then(f=>{Nw(u,c,f)});return}const a=Pc.book_new(),s=Pc.aoa_to_sheet(o);Pc.book_append_sheet(a,s,"Sheet1"),kD(a,`${window.title}.xlsx`)},JD=e=>{const t=document.getElementById(e),r=`${window.title}.png`;$w({filename:r,is_image:!0}).then(n=>{r4.toBlob(t).then(function(i){Nw(i,r,n)})})},Mw=v.createContext({dragDropManager:void 0});function tr(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var qg=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Ic=function(){return Math.random().toString(36).substring(7).split("").join(".")},Qg={INIT:"@@redux/INIT"+Ic(),REPLACE:"@@redux/REPLACE"+Ic(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Ic()}};function eP(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Lw(e,t,r){var n;if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(tr(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(tr(1));return r(Lw)(e,t)}if(typeof e!="function")throw new Error(tr(2));var i=e,o=t,a=[],s=a,l=!1;function u(){s===a&&(s=a.slice())}function c(){if(l)throw new Error(tr(3));return o}function f(p){if(typeof p!="function")throw new Error(tr(4));if(l)throw new Error(tr(5));var g=!0;return u(),s.push(p),function(){if(g){if(l)throw new Error(tr(6));g=!1,u();var w=s.indexOf(p);s.splice(w,1),a=null}}}function d(p){if(!eP(p))throw new Error(tr(7));if(typeof p.type>"u")throw new Error(tr(8));if(l)throw new Error(tr(9));try{l=!0,o=i(o,p)}finally{l=!1}for(var g=a=s,x=0;xn&&n[i]?n[i]:r||null,e)}function nP(e,t){return e.filter(r=>r!==t)}function Bw(e){return typeof e=="object"}function iP(e,t){const r=new Map,n=o=>{r.set(o,r.has(o)?r.get(o)+1:1)};e.forEach(n),t.forEach(n);const i=[];return r.forEach((o,a)=>{o===1&&i.push(a)}),i}function oP(e,t){return e.filter(r=>t.indexOf(r)>-1)}const Wd="dnd-core/INIT_COORDS",Cu="dnd-core/BEGIN_DRAG",zd="dnd-core/PUBLISH_DRAG_SOURCE",Au="dnd-core/HOVER",Ru="dnd-core/DROP",Ou="dnd-core/END_DRAG";function Zg(e,t){return{type:Wd,payload:{sourceClientOffset:t||null,clientOffset:e||null}}}const aP={type:Wd,payload:{clientOffset:null,sourceClientOffset:null}};function sP(e){return function(r=[],n={publishSource:!0}){const{publishSource:i=!0,clientOffset:o,getSourceClientOffset:a}=n,s=e.getMonitor(),l=e.getRegistry();e.dispatch(Zg(o)),lP(r,s,l);const u=fP(r,s);if(u==null){e.dispatch(aP);return}let c=null;if(o){if(!a)throw new Error("getSourceClientOffset must be defined");uP(a),c=a(u)}e.dispatch(Zg(o,c));const d=l.getSource(u).beginDrag(s,u);if(d==null)return;cP(d),l.pinSource(u);const h=l.getSourceType(u);return{type:Cu,payload:{itemType:h,item:d,sourceId:u,clientOffset:o||null,sourceClientOffset:c||null,isSourcePublic:!!i}}}}function lP(e,t,r){Fe(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach(function(n){Fe(r.getSource(n),"Expected sourceIds to be registered.")})}function uP(e){Fe(typeof e=="function","When clientOffset is provided, getSourceClientOffset must be a function.")}function cP(e){Fe(Bw(e),"Item must be an object.")}function fP(e,t){let r=null;for(let n=e.length-1;n>=0;n--)if(t.canDragSource(e[n])){r=e[n];break}return r}function dP(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function hP(e){for(var t=1;t{const l=mP(a,s,i,n),u={type:Ru,payload:{dropResult:hP({},r,l)}};e.dispatch(u)})}}function gP(e){Fe(e.isDragging(),"Cannot call drop while not dragging."),Fe(!e.didDrop(),"Cannot call drop twice during one drag operation.")}function mP(e,t,r,n){const i=r.getTarget(e);let o=i?i.drop(n,e):void 0;return vP(o),typeof o>"u"&&(o=t===0?{}:n.getDropResult()),o}function vP(e){Fe(typeof e>"u"||Bw(e),"Drop result must either be an object or undefined.")}function xP(e){const t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}function wP(e){return function(){const r=e.getMonitor(),n=e.getRegistry();yP(r);const i=r.getSourceId();return i!=null&&(n.getSource(i,!0).endDrag(r,i),n.unpinSource()),{type:Ou}}}function yP(e){Fe(e.isDragging(),"Cannot call endDrag while not dragging.")}function Xf(e,t){return t===null?e===null:Array.isArray(e)?e.some(r=>r===t):e===t}function EP(e){return function(r,{clientOffset:n}={}){_P(r);const i=r.slice(0),o=e.getMonitor(),a=e.getRegistry(),s=o.getItemType();return TP(i,a,s),SP(i,o,a),CP(i,o,a),{type:Au,payload:{targetIds:i,clientOffset:n||null}}}}function _P(e){Fe(Array.isArray(e),"Expected targetIds to be an array.")}function SP(e,t,r){Fe(t.isDragging(),"Cannot call hover while not dragging."),Fe(!t.didDrop(),"Cannot call hover after drop.");for(let n=0;n=0;n--){const i=e[n],o=t.getTargetType(i);Xf(o,r)||e.splice(n,1)}}function CP(e,t,r){e.forEach(function(n){r.getTarget(n).hover(t,n)})}function AP(e){return function(){if(e.getMonitor().isDragging())return{type:zd}}}function RP(e){return{beginDrag:sP(e),publishDragSource:AP(e),hover:EP(e),drop:pP(e),endDrag:wP(e)}}class OP{receiveBackend(t){this.backend=t}getMonitor(){return this.monitor}getBackend(){return this.backend}getRegistry(){return this.monitor.registry}getActions(){const t=this,{dispatch:r}=this.store;function n(o){return(...a)=>{const s=o.apply(t,a);typeof s<"u"&&r(s)}}const i=RP(this);return Object.keys(i).reduce((o,a)=>{const s=i[a];return o[a]=n(s),o},{})}dispatch(t){this.store.dispatch(t)}constructor(t,r){this.isSetUp=!1,this.handleRefCountChange=()=>{const n=this.store.getState().refCount>0;this.backend&&(n&&!this.isSetUp?(this.backend.setup(),this.isSetUp=!0):!n&&this.isSetUp&&(this.backend.teardown(),this.isSetUp=!1))},this.store=t,this.monitor=r,t.subscribe(this.handleRefCountChange)}}function FP(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Uw(e,t){return{x:e.x-t.x,y:e.y-t.y}}function DP(e){const{clientOffset:t,initialClientOffset:r,initialSourceClientOffset:n}=e;return!t||!r||!n?null:Uw(FP(t,n),r)}function PP(e){const{clientOffset:t,initialClientOffset:r}=e;return!t||!r?null:Uw(t,r)}const xa=[],Gd=[];xa.__IS_NONE__=!0;Gd.__IS_ALL__=!0;function IP(e,t){return e===xa?!1:e===Gd||typeof t>"u"?!0:oP(t,e).length>0}class bP{subscribeToStateChange(t,r={}){const{handlerIds:n}=r;Fe(typeof t=="function","listener must be a function."),Fe(typeof n>"u"||Array.isArray(n),"handlerIds, when specified, must be an array of strings.");let i=this.store.getState().stateId;const o=()=>{const a=this.store.getState(),s=a.stateId;try{s===i||s===i+1&&!IP(a.dirtyHandlerIds,n)||t()}finally{i=s}};return this.store.subscribe(o)}subscribeToOffsetChange(t){Fe(typeof t=="function","listener must be a function.");let r=this.store.getState().dragOffset;const n=()=>{const i=this.store.getState().dragOffset;i!==r&&(r=i,t())};return this.store.subscribe(n)}canDragSource(t){if(!t)return!1;const r=this.registry.getSource(t);return Fe(r,`Expected to find a valid source. sourceId=${t}`),this.isDragging()?!1:r.canDrag(this,t)}canDropOnTarget(t){if(!t)return!1;const r=this.registry.getTarget(t);if(Fe(r,`Expected to find a valid target. targetId=${t}`),!this.isDragging()||this.didDrop())return!1;const n=this.registry.getTargetType(t),i=this.getItemType();return Xf(n,i)&&r.canDrop(this,t)}isDragging(){return!!this.getItemType()}isDraggingSource(t){if(!t)return!1;const r=this.registry.getSource(t,!0);if(Fe(r,`Expected to find a valid source. sourceId=${t}`),!this.isDragging()||!this.isSourcePublic())return!1;const n=this.registry.getSourceType(t),i=this.getItemType();return n!==i?!1:r.isDragging(this,t)}isOverTarget(t,r={shallow:!1}){if(!t)return!1;const{shallow:n}=r;if(!this.isDragging())return!1;const i=this.registry.getTargetType(t),o=this.getItemType();if(o&&!Xf(i,o))return!1;const a=this.getTargetIds();if(!a.length)return!1;const s=a.indexOf(t);return n?s===a.length-1:s>-1}getItemType(){return this.store.getState().dragOperation.itemType}getItem(){return this.store.getState().dragOperation.item}getSourceId(){return this.store.getState().dragOperation.sourceId}getTargetIds(){return this.store.getState().dragOperation.targetIds}getDropResult(){return this.store.getState().dragOperation.dropResult}didDrop(){return this.store.getState().dragOperation.didDrop}isSourcePublic(){return!!this.store.getState().dragOperation.isSourcePublic}getInitialClientOffset(){return this.store.getState().dragOffset.initialClientOffset}getInitialSourceClientOffset(){return this.store.getState().dragOffset.initialSourceClientOffset}getClientOffset(){return this.store.getState().dragOffset.clientOffset}getSourceClientOffset(){return DP(this.store.getState().dragOffset)}getDifferenceFromInitialOffset(){return PP(this.store.getState().dragOffset)}constructor(t,r){this.store=t,this.registry=r}}const Jg=typeof global<"u"?global:self,Hw=Jg.MutationObserver||Jg.WebKitMutationObserver;function Vw(e){return function(){const r=setTimeout(i,0),n=setInterval(i,50);function i(){clearTimeout(r),clearInterval(n),e()}}}function kP(e){let t=1;const r=new Hw(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}const $P=typeof Hw=="function"?kP:Vw;class NP{enqueueTask(t){const{queue:r,requestFlush:n}=this;r.length||(n(),this.flushing=!0),r[r.length]=t}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:t}=this;for(;this.indexthis.capacity){for(let n=0,i=t.length-this.index;n{this.pendingErrors.push(t),this.requestErrorThrow()},this.requestFlush=$P(this.flush),this.requestErrorThrow=Vw(()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()})}}class MP{call(){try{this.task&&this.task()}catch(t){this.onError(t)}finally{this.task=null,this.release(this)}}constructor(t,r){this.onError=t,this.release=r,this.task=null}}class LP{create(t){const r=this.freeTasks,n=r.length?r.pop():new MP(this.onError,i=>r[r.length]=i);return n.task=t,n}constructor(t){this.onError=t,this.freeTasks=[]}}const Ww=new NP,BP=new LP(Ww.registerPendingError);function UP(e){Ww.enqueueTask(BP.create(e))}const jd="dnd-core/ADD_SOURCE",Xd="dnd-core/ADD_TARGET",Kd="dnd-core/REMOVE_SOURCE",Fu="dnd-core/REMOVE_TARGET";function HP(e){return{type:jd,payload:{sourceId:e}}}function VP(e){return{type:Xd,payload:{targetId:e}}}function WP(e){return{type:Kd,payload:{sourceId:e}}}function zP(e){return{type:Fu,payload:{targetId:e}}}function GP(e){Fe(typeof e.canDrag=="function","Expected canDrag to be a function."),Fe(typeof e.beginDrag=="function","Expected beginDrag to be a function."),Fe(typeof e.endDrag=="function","Expected endDrag to be a function.")}function jP(e){Fe(typeof e.canDrop=="function","Expected canDrop to be a function."),Fe(typeof e.hover=="function","Expected hover to be a function."),Fe(typeof e.drop=="function","Expected beginDrag to be a function.")}function Kf(e,t){if(t&&Array.isArray(e)){e.forEach(r=>Kf(r,!1));return}Fe(typeof e=="string"||typeof e=="symbol",t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}var or;(function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"})(or||(or={}));let XP=0;function KP(){return XP++}function YP(e){const t=KP().toString();switch(e){case or.SOURCE:return`S${t}`;case or.TARGET:return`T${t}`;default:throw new Error(`Unknown Handler Role: ${e}`)}}function e1(e){switch(e[0]){case"S":return or.SOURCE;case"T":return or.TARGET;default:throw new Error(`Cannot parse handler ID: ${e}`)}}function t1(e,t){const r=e.entries();let n=!1;do{const{done:i,value:[,o]}=r.next();if(o===t)return!0;n=!!i}while(!n);return!1}class qP{addSource(t,r){Kf(t),GP(r);const n=this.addHandler(or.SOURCE,t,r);return this.store.dispatch(HP(n)),n}addTarget(t,r){Kf(t,!0),jP(r);const n=this.addHandler(or.TARGET,t,r);return this.store.dispatch(VP(n)),n}containsHandler(t){return t1(this.dragSources,t)||t1(this.dropTargets,t)}getSource(t,r=!1){return Fe(this.isSourceId(t),"Expected a valid source ID."),r&&t===this.pinnedSourceId?this.pinnedSource:this.dragSources.get(t)}getTarget(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.dropTargets.get(t)}getSourceType(t){return Fe(this.isSourceId(t),"Expected a valid source ID."),this.types.get(t)}getTargetType(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.types.get(t)}isSourceId(t){return e1(t)===or.SOURCE}isTargetId(t){return e1(t)===or.TARGET}removeSource(t){Fe(this.getSource(t),"Expected an existing source."),this.store.dispatch(WP(t)),UP(()=>{this.dragSources.delete(t),this.types.delete(t)})}removeTarget(t){Fe(this.getTarget(t),"Expected an existing target."),this.store.dispatch(zP(t)),this.dropTargets.delete(t),this.types.delete(t)}pinSource(t){const r=this.getSource(t);Fe(r,"Expected an existing source."),this.pinnedSourceId=t,this.pinnedSource=r}unpinSource(){Fe(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}addHandler(t,r,n){const i=YP(t);return this.types.set(i,r),t===or.SOURCE?this.dragSources.set(i,n):t===or.TARGET&&this.dropTargets.set(i,n),i}constructor(t){this.types=new Map,this.dragSources=new Map,this.dropTargets=new Map,this.pinnedSourceId=null,this.pinnedSource=null,this.store=t}}const QP=(e,t)=>e===t;function ZP(e,t){return!e&&!t?!0:!e||!t?!1:e.x===t.x&&e.y===t.y}function JP(e,t,r=QP){if(e.length!==t.length)return!1;for(let n=0;n0||!JP(r,n)))return xa;const a=n[n.length-1],s=r[r.length-1];return a!==s&&(a&&i.push(a),s&&i.push(s)),i}function tI(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function rI(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function gI(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}let n1=0;const el=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__");var mI=v.memo(function(t){var{children:r}=t,n=pI(t,["children"]);const[i,o]=vI(n);return v.useEffect(()=>{if(o){const a=zw();return++n1,()=>{--n1===0&&(a[el]=null)}}},[]),Z(Mw.Provider,{value:i,children:r})});function vI(e){if("manager"in e)return[{dragDropManager:e.manager},!1];const t=xI(e.backend,e.context,e.options,e.debugMode),r=!e.context;return[t,r]}function xI(e,t=zw(),r,n){const i=t;return i[el]||(i[el]={dragDropManager:dI(e,t,r,n)}),i[el]}function zw(){return typeof global<"u"?global:window}var wI=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;i--!==0;){var a=o[i];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r};const li=typeof window<"u"?v.useLayoutEffect:v.useEffect;function yI(e,t,r){const[n,i]=v.useState(()=>t(e)),o=v.useCallback(()=>{const a=t(e);wI(n,a)||(i(a),r&&r())},[n,e,r]);return li(o),[n,o]}function EI(e,t,r){const[n,i]=yI(e,t,r);return li(function(){const a=e.getHandlerId();if(a!=null)return e.subscribeToStateChange(i,{handlerIds:[a]})},[e,i]),n}function Gw(e,t,r){return EI(t,e||(()=>({})),()=>r.reconnect())}function jw(e,t){const r=[...t||[]];return t==null&&typeof e!="function"&&r.push(e),v.useMemo(()=>typeof e=="function"?e():e,r)}function _I(e){return v.useMemo(()=>e.hooks.dragSource(),[e])}function SI(e){return v.useMemo(()=>e.hooks.dragPreview(),[e])}let bc=!1,kc=!1;class TI{receiveHandlerId(t){this.sourceId=t}getHandlerId(){return this.sourceId}canDrag(){Fe(!bc,"You may not call monitor.canDrag() inside your canDrag() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return bc=!0,this.internalMonitor.canDragSource(this.sourceId)}finally{bc=!1}}isDragging(){if(!this.sourceId)return!1;Fe(!kc,"You may not call monitor.isDragging() inside your isDragging() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return kc=!0,this.internalMonitor.isDraggingSource(this.sourceId)}finally{kc=!1}}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}isDraggingSource(t){return this.internalMonitor.isDraggingSource(t)}isOverTarget(t,r){return this.internalMonitor.isOverTarget(t,r)}getTargetIds(){return this.internalMonitor.getTargetIds()}isSourcePublic(){return this.internalMonitor.isSourcePublic()}getSourceId(){return this.internalMonitor.getSourceId()}subscribeToOffsetChange(t){return this.internalMonitor.subscribeToOffsetChange(t)}canDragSource(t){return this.internalMonitor.canDragSource(t)}canDropOnTarget(t){return this.internalMonitor.canDropOnTarget(t)}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.sourceId=null,this.internalMonitor=t.getMonitor()}}let $c=!1;class CI{receiveHandlerId(t){this.targetId=t}getHandlerId(){return this.targetId}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}canDrop(){if(!this.targetId)return!1;Fe(!$c,"You may not call monitor.canDrop() inside your canDrop() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor");try{return $c=!0,this.internalMonitor.canDropOnTarget(this.targetId)}finally{$c=!1}}isOver(t){return this.targetId?this.internalMonitor.isOverTarget(this.targetId,t):!1}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.targetId=null,this.internalMonitor=t.getMonitor()}}function AI(e,t,r){const n=r.getRegistry(),i=n.addTarget(e,t);return[i,()=>n.removeTarget(i)]}function RI(e,t,r){const n=r.getRegistry(),i=n.addSource(e,t);return[i,()=>n.removeSource(i)]}function Yf(e,t,r,n){let i=r?r.call(n,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!="object"||!e||typeof t!="object"||!t)return!1;const o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;const s=Object.prototype.hasOwnProperty.bind(t);for(let l=0;l, or turn it into a drag source or a drop target itself.`)}function FI(e){return(t=null,r=null)=>{if(!v.isValidElement(t)){const o=t;return e(o,r),o}const n=t;return OI(n),DI(n,r?o=>e(o,r):e)}}function Xw(e){const t={};return Object.keys(e).forEach(r=>{const n=e[r];if(r.endsWith("Ref"))t[r]=e[r];else{const i=FI(n);t[r]=()=>i}}),t}function i1(e,t){typeof e=="function"?e(t):e.current=t}function DI(e,t){const r=e.ref;return Fe(typeof r!="string","Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or

. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),r?v.cloneElement(e,{ref:n=>{i1(r,n),i1(t,n)}}):v.cloneElement(e,{ref:t})}class PI{receiveHandlerId(t){this.handlerId!==t&&(this.handlerId=t,this.reconnect())}get connectTarget(){return this.dragSource}get dragSourceOptions(){return this.dragSourceOptionsInternal}set dragSourceOptions(t){this.dragSourceOptionsInternal=t}get dragPreviewOptions(){return this.dragPreviewOptionsInternal}set dragPreviewOptions(t){this.dragPreviewOptionsInternal=t}reconnect(){const t=this.reconnectDragSource();this.reconnectDragPreview(t)}reconnectDragSource(){const t=this.dragSource,r=this.didHandlerIdChange()||this.didConnectedDragSourceChange()||this.didDragSourceOptionsChange();return r&&this.disconnectDragSource(),this.handlerId?t?(r&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragSource=t,this.lastConnectedDragSourceOptions=this.dragSourceOptions,this.dragSourceUnsubscribe=this.backend.connectDragSource(this.handlerId,t,this.dragSourceOptions)),r):(this.lastConnectedDragSource=t,r):r}reconnectDragPreview(t=!1){const r=this.dragPreview,n=t||this.didHandlerIdChange()||this.didConnectedDragPreviewChange()||this.didDragPreviewOptionsChange();if(n&&this.disconnectDragPreview(),!!this.handlerId){if(!r){this.lastConnectedDragPreview=r;return}n&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragPreview=r,this.lastConnectedDragPreviewOptions=this.dragPreviewOptions,this.dragPreviewUnsubscribe=this.backend.connectDragPreview(this.handlerId,r,this.dragPreviewOptions))}}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didConnectedDragSourceChange(){return this.lastConnectedDragSource!==this.dragSource}didConnectedDragPreviewChange(){return this.lastConnectedDragPreview!==this.dragPreview}didDragSourceOptionsChange(){return!Yf(this.lastConnectedDragSourceOptions,this.dragSourceOptions)}didDragPreviewOptionsChange(){return!Yf(this.lastConnectedDragPreviewOptions,this.dragPreviewOptions)}disconnectDragSource(){this.dragSourceUnsubscribe&&(this.dragSourceUnsubscribe(),this.dragSourceUnsubscribe=void 0)}disconnectDragPreview(){this.dragPreviewUnsubscribe&&(this.dragPreviewUnsubscribe(),this.dragPreviewUnsubscribe=void 0,this.dragPreviewNode=null,this.dragPreviewRef=null)}get dragSource(){return this.dragSourceNode||this.dragSourceRef&&this.dragSourceRef.current}get dragPreview(){return this.dragPreviewNode||this.dragPreviewRef&&this.dragPreviewRef.current}clearDragSource(){this.dragSourceNode=null,this.dragSourceRef=null}clearDragPreview(){this.dragPreviewNode=null,this.dragPreviewRef=null}constructor(t){this.hooks=Xw({dragSource:(r,n)=>{this.clearDragSource(),this.dragSourceOptions=n||null,qf(r)?this.dragSourceRef=r:this.dragSourceNode=r,this.reconnectDragSource()},dragPreview:(r,n)=>{this.clearDragPreview(),this.dragPreviewOptions=n||null,qf(r)?this.dragPreviewRef=r:this.dragPreviewNode=r,this.reconnectDragPreview()}}),this.handlerId=null,this.dragSourceRef=null,this.dragSourceOptionsInternal=null,this.dragPreviewRef=null,this.dragPreviewOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDragSource=null,this.lastConnectedDragSourceOptions=null,this.lastConnectedDragPreview=null,this.lastConnectedDragPreviewOptions=null,this.backend=t}}class II{get connectTarget(){return this.dropTarget}reconnect(){const t=this.didHandlerIdChange()||this.didDropTargetChange()||this.didOptionsChange();t&&this.disconnectDropTarget();const r=this.dropTarget;if(this.handlerId){if(!r){this.lastConnectedDropTarget=r;return}t&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDropTarget=r,this.lastConnectedDropTargetOptions=this.dropTargetOptions,this.unsubscribeDropTarget=this.backend.connectDropTarget(this.handlerId,r,this.dropTargetOptions))}}receiveHandlerId(t){t!==this.handlerId&&(this.handlerId=t,this.reconnect())}get dropTargetOptions(){return this.dropTargetOptionsInternal}set dropTargetOptions(t){this.dropTargetOptionsInternal=t}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didDropTargetChange(){return this.lastConnectedDropTarget!==this.dropTarget}didOptionsChange(){return!Yf(this.lastConnectedDropTargetOptions,this.dropTargetOptions)}disconnectDropTarget(){this.unsubscribeDropTarget&&(this.unsubscribeDropTarget(),this.unsubscribeDropTarget=void 0)}get dropTarget(){return this.dropTargetNode||this.dropTargetRef&&this.dropTargetRef.current}clearDropTarget(){this.dropTargetRef=null,this.dropTargetNode=null}constructor(t){this.hooks=Xw({dropTarget:(r,n)=>{this.clearDropTarget(),this.dropTargetOptions=n,qf(r)?this.dropTargetRef=r:this.dropTargetNode=r,this.reconnect()}}),this.handlerId=null,this.dropTargetRef=null,this.dropTargetOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDropTarget=null,this.lastConnectedDropTargetOptions=null,this.backend=t}}function Ao(){const{dragDropManager:e}=v.useContext(Mw);return Fe(e!=null,"Expected drag drop context"),e}function bI(e,t){const r=Ao(),n=v.useMemo(()=>new PI(r.getBackend()),[r]);return li(()=>(n.dragSourceOptions=e||null,n.reconnect(),()=>n.disconnectDragSource()),[n,e]),li(()=>(n.dragPreviewOptions=t||null,n.reconnect(),()=>n.disconnectDragPreview()),[n,t]),n}function kI(){const e=Ao();return v.useMemo(()=>new TI(e),[e])}class $I{beginDrag(){const t=this.spec,r=this.monitor;let n=null;return typeof t.item=="object"?n=t.item:typeof t.item=="function"?n=t.item(r):n={},n??null}canDrag(){const t=this.spec,r=this.monitor;return typeof t.canDrag=="boolean"?t.canDrag:typeof t.canDrag=="function"?t.canDrag(r):!0}isDragging(t,r){const n=this.spec,i=this.monitor,{isDragging:o}=n;return o?o(i):r===t.getSourceId()}endDrag(){const t=this.spec,r=this.monitor,n=this.connector,{end:i}=t;i&&i(r.getItem(),r),n.reconnect()}constructor(t,r,n){this.spec=t,this.monitor=r,this.connector=n}}function NI(e,t,r){const n=v.useMemo(()=>new $I(e,t,r),[t,r]);return v.useEffect(()=>{n.spec=e},[e]),n}function MI(e){return v.useMemo(()=>{const t=e.type;return Fe(t!=null,"spec.type must be defined"),t},[e])}function LI(e,t,r){const n=Ao(),i=NI(e,t,r),o=MI(e);li(function(){if(o!=null){const[s,l]=RI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l}},[n,t,r,i,o])}function BI(e,t){const r=jw(e,t);Fe(!r.begin,"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)");const n=kI(),i=bI(r.options,r.previewOptions);return LI(r,n,i),[Gw(r.collect,n,i),_I(i),SI(i)]}function UI(e){return v.useMemo(()=>e.hooks.dropTarget(),[e])}function HI(e){const t=Ao(),r=v.useMemo(()=>new II(t.getBackend()),[t]);return li(()=>(r.dropTargetOptions=e||null,r.reconnect(),()=>r.disconnectDropTarget()),[e]),r}function VI(){const e=Ao();return v.useMemo(()=>new CI(e),[e])}function WI(e){const{accept:t}=e;return v.useMemo(()=>(Fe(e.accept!=null,"accept must be defined"),Array.isArray(t)?t:[t]),[t])}class zI{canDrop(){const t=this.spec,r=this.monitor;return t.canDrop?t.canDrop(r.getItem(),r):!0}hover(){const t=this.spec,r=this.monitor;t.hover&&t.hover(r.getItem(),r)}drop(){const t=this.spec,r=this.monitor;if(t.drop)return t.drop(r.getItem(),r)}constructor(t,r){this.spec=t,this.monitor=r}}function GI(e,t){const r=v.useMemo(()=>new zI(e,t),[t]);return v.useEffect(()=>{r.spec=e},[e]),r}function jI(e,t,r){const n=Ao(),i=GI(e,t),o=WI(e);li(function(){const[s,l]=AI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l},[n,t,i,r,o.map(a=>a.toString()).join("|")])}function XI(e,t){const r=jw(e,t),n=VI(),i=HI(r.options);return jI(r,n,i),[Gw(r.collect,n,i),UI(i)]}function KI(e,t){return v.useReducer((r,n)=>{const i=t[r][n];return i??r},e)}const Ei=e=>{const{present:t,children:r}=e,n=YI(t),i=typeof r=="function"?r({present:n.isPresent}):v.Children.only(r),o=He(n.ref,i.ref);return typeof r=="function"||n.isPresent?v.cloneElement(i,{ref:o}):null};Ei.displayName="Presence";function YI(e){const[t,r]=v.useState(),n=v.useRef({}),i=v.useRef(e),o=v.useRef("none"),a=e?"mounted":"unmounted",[s,l]=KI(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const u=ks(n.current);o.current=s==="mounted"?u:"none"},[s]),xt(()=>{const u=n.current,c=i.current;if(c!==e){const d=o.current,h=ks(u);e?l("MOUNT"):h==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(c&&d!==h?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,l]),xt(()=>{if(t){const u=f=>{const h=ks(n.current).includes(f.animationName);f.target===t&&h&&Jr.flushSync(()=>l("ANIMATION_END"))},c=f=>{f.target===t&&(o.current=ks(n.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:v.useCallback(u=>{u&&(n.current=getComputedStyle(u)),r(u)},[])}}function ks(e){return(e==null?void 0:e.animationName)||"none"}const Nc="rovingFocusGroup.onEntryFocus",qI={bubbles:!1,cancelable:!0},Yd="RovingFocusGroup",[Qf,Kw,QI]=su(Yd),[ZI,Yw]=on(Yd,[QI]),[JI,e5]=ZI(Yd),t5=v.forwardRef((e,t)=>v.createElement(Qf.Provider,{scope:e.__scopeRovingFocusGroup},v.createElement(Qf.Slot,{scope:e.__scopeRovingFocusGroup},v.createElement(r5,de({},e,{ref:t}))))),r5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:o,currentTabStopId:a,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,...c}=e,f=v.useRef(null),d=He(t,f),h=ld(o),[m=null,p]=lo({prop:a,defaultProp:s,onChange:l}),[g,x]=v.useState(!1),w=Dt(u),y=Kw(r),_=v.useRef(!1),[k,N]=v.useState(0);return v.useEffect(()=>{const S=f.current;if(S)return S.addEventListener(Nc,w),()=>S.removeEventListener(Nc,w)},[w]),v.createElement(JI,{scope:r,orientation:n,dir:h,loop:i,currentTabStopId:m,onItemFocus:v.useCallback(S=>p(S),[p]),onItemShiftTab:v.useCallback(()=>x(!0),[]),onFocusableItemAdd:v.useCallback(()=>N(S=>S+1),[]),onFocusableItemRemove:v.useCallback(()=>N(S=>S-1),[])},v.createElement(Ie.div,de({tabIndex:g||k===0?-1:0,"data-orientation":n},c,{ref:d,style:{outline:"none",...e.style},onMouseDown:Ee(e.onMouseDown,()=>{_.current=!0}),onFocus:Ee(e.onFocus,S=>{const A=!_.current;if(S.target===S.currentTarget&&A&&!g){const R=new CustomEvent(Nc,qI);if(S.currentTarget.dispatchEvent(R),!R.defaultPrevented){const L=y().filter(re=>re.focusable),V=L.find(re=>re.active),U=L.find(re=>re.id===m),Y=[V,U,...L].filter(Boolean).map(re=>re.ref.current);qw(Y)}}_.current=!1}),onBlur:Ee(e.onBlur,()=>x(!1))})))}),n5="RovingFocusGroupItem",i5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:o,...a}=e,s=Xr(),l=o||s,u=e5(n5,r),c=u.currentTabStopId===l,f=Kw(r),{onFocusableItemAdd:d,onFocusableItemRemove:h}=u;return v.useEffect(()=>{if(n)return d(),()=>h()},[n,d,h]),v.createElement(Qf.ItemSlot,{scope:r,id:l,focusable:n,active:i},v.createElement(Ie.span,de({tabIndex:c?0:-1,"data-orientation":u.orientation},a,{ref:t,onMouseDown:Ee(e.onMouseDown,m=>{n?u.onItemFocus(l):m.preventDefault()}),onFocus:Ee(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:Ee(e.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){u.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const p=s5(m,u.orientation,u.dir);if(p!==void 0){m.preventDefault();let x=f().filter(w=>w.focusable).map(w=>w.ref.current);if(p==="last")x.reverse();else if(p==="prev"||p==="next"){p==="prev"&&x.reverse();const w=x.indexOf(m.currentTarget);x=u.loop?l5(x,w+1):x.slice(w+1)}setTimeout(()=>qw(x))}})})))}),o5={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function a5(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function s5(e,t,r){const n=a5(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return o5[n]}function qw(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function l5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}const u5=t5,c5=i5,f5=["Enter"," "],d5=["ArrowDown","PageUp","Home"],Qw=["ArrowUp","PageDown","End"],h5=[...d5,...Qw],Du="Menu",[Zf,p5,g5]=su(Du),[_i,Pu]=on(Du,[g5,fu,Yw]),qd=fu(),Zw=Yw(),[m5,ns]=_i(Du),[v5,Qd]=_i(Du),x5=e=>{const{__scopeMenu:t,open:r=!1,children:n,dir:i,onOpenChange:o,modal:a=!0}=e,s=qd(t),[l,u]=v.useState(null),c=v.useRef(!1),f=Dt(o),d=ld(i);return v.useEffect(()=>{const h=()=>{c.current=!0,document.addEventListener("pointerdown",m,{capture:!0,once:!0}),document.addEventListener("pointermove",m,{capture:!0,once:!0})},m=()=>c.current=!1;return document.addEventListener("keydown",h,{capture:!0}),()=>{document.removeEventListener("keydown",h,{capture:!0}),document.removeEventListener("pointerdown",m,{capture:!0}),document.removeEventListener("pointermove",m,{capture:!0})}},[]),v.createElement(Nv,s,v.createElement(m5,{scope:t,open:r,onOpenChange:f,content:l,onContentChange:u},v.createElement(v5,{scope:t,onClose:v.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:c,dir:d,modal:a},n)))},w5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e,i=qd(r);return v.createElement(Mv,de({},i,n,{ref:t}))}),Jw="MenuPortal",[y5,E5]=_i(Jw,{forceMount:void 0}),_5=e=>{const{__scopeMenu:t,forceMount:r,children:n,container:i}=e,o=ns(Jw,t);return v.createElement(y5,{scope:t,forceMount:r},v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},n)))},Rn="MenuContent",[S5,e2]=_i(Rn),T5=v.forwardRef((e,t)=>{const r=E5(Rn,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,o=ns(Rn,e.__scopeMenu),a=Qd(Rn,e.__scopeMenu);return v.createElement(Zf.Provider,{scope:e.__scopeMenu},v.createElement(Ei,{present:n||o.open},v.createElement(Zf.Slot,{scope:e.__scopeMenu},a.modal?v.createElement(C5,de({},i,{ref:t})):v.createElement(A5,de({},i,{ref:t})))))}),C5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu),n=v.useRef(null),i=He(t,n);return v.useEffect(()=>{const o=n.current;if(o)return md(o)},[]),v.createElement(t2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)}))}),A5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu);return v.createElement(t2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)}))}),t2=v.forwardRef((e,t)=>{const{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h,disableOutsideScroll:m,...p}=e,g=ns(Rn,r),x=Qd(Rn,r),w=qd(r),y=Zw(r),_=p5(r),[k,N]=v.useState(null),S=v.useRef(null),A=He(t,S,g.onContentChange),R=v.useRef(0),L=v.useRef(""),V=v.useRef(0),U=v.useRef(null),W=v.useRef("right"),Y=v.useRef(0),re=m?vd:v.Fragment,ye=m?{as:ii,allowPinchZoom:!0}:void 0,ge=ie=>{var we,Q;const F=L.current+ie,M=_().filter(ee=>!ee.disabled),b=document.activeElement,T=(we=M.find(ee=>ee.ref.current===b))===null||we===void 0?void 0:we.textValue,B=M.map(ee=>ee.textValue),H=M5(B,F,T),q=(Q=M.find(ee=>ee.textValue===H))===null||Q===void 0?void 0:Q.ref.current;(function ee(K){L.current=K,window.clearTimeout(R.current),K!==""&&(R.current=window.setTimeout(()=>ee(""),1e3))})(F),q&&setTimeout(()=>q.focus())};v.useEffect(()=>()=>window.clearTimeout(R.current),[]),cd();const Se=v.useCallback(ie=>{var we,Q;return W.current===((we=U.current)===null||we===void 0?void 0:we.side)&&B5(ie,(Q=U.current)===null||Q===void 0?void 0:Q.area)},[]);return v.createElement(S5,{scope:r,searchRef:L,onItemEnter:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),onItemLeave:v.useCallback(ie=>{var we;Se(ie)||((we=S.current)===null||we===void 0||we.focus(),N(null))},[Se]),onTriggerLeave:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),pointerGraceTimerRef:V,onPointerGraceIntentChange:v.useCallback(ie=>{U.current=ie},[])},v.createElement(re,ye,v.createElement(fd,{asChild:!0,trapped:i,onMountAutoFocus:Ee(o,ie=>{var we;ie.preventDefault(),(we=S.current)===null||we===void 0||we.focus()}),onUnmountAutoFocus:a},v.createElement(lu,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h},v.createElement(u5,de({asChild:!0},y,{dir:x.dir,orientation:"vertical",loop:n,currentTabStopId:k,onCurrentTabStopIdChange:N,onEntryFocus:Ee(l,ie=>{x.isUsingKeyboardRef.current||ie.preventDefault()})}),v.createElement(Lv,de({role:"menu","aria-orientation":"vertical","data-state":k5(g.open),"data-radix-menu-content":"",dir:x.dir},w,p,{ref:A,style:{outline:"none",...p.style},onKeyDown:Ee(p.onKeyDown,ie=>{const Q=ie.target.closest("[data-radix-menu-content]")===ie.currentTarget,F=ie.ctrlKey||ie.altKey||ie.metaKey,M=ie.key.length===1;Q&&(ie.key==="Tab"&&ie.preventDefault(),!F&&M&&ge(ie.key));const b=S.current;if(ie.target!==b||!h5.includes(ie.key))return;ie.preventDefault();const B=_().filter(H=>!H.disabled).map(H=>H.ref.current);Qw.includes(ie.key)&&B.reverse(),$5(B)}),onBlur:Ee(e.onBlur,ie=>{ie.currentTarget.contains(ie.target)||(window.clearTimeout(R.current),L.current="")}),onPointerMove:Ee(e.onPointerMove,e0(ie=>{const we=ie.target,Q=Y.current!==ie.clientX;if(ie.currentTarget.contains(we)&&Q){const F=ie.clientX>Y.current?"right":"left";W.current=F,Y.current=ie.clientX}}))})))))))}),R5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({role:"group"},n,{ref:t}))}),O5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Jf="MenuItem",o1="menu.itemSelect",F5=v.forwardRef((e,t)=>{const{disabled:r=!1,onSelect:n,...i}=e,o=v.useRef(null),a=Qd(Jf,e.__scopeMenu),s=e2(Jf,e.__scopeMenu),l=He(t,o),u=v.useRef(!1),c=()=>{const f=o.current;if(!r&&f){const d=new CustomEvent(o1,{bubbles:!0,cancelable:!0});f.addEventListener(o1,h=>n==null?void 0:n(h),{once:!0}),ud(f,d),d.defaultPrevented?u.current=!1:a.onClose()}};return v.createElement(D5,de({},i,{ref:l,disabled:r,onClick:Ee(e.onClick,c),onPointerDown:f=>{var d;(d=e.onPointerDown)===null||d===void 0||d.call(e,f),u.current=!0},onPointerUp:Ee(e.onPointerUp,f=>{var d;u.current||(d=f.currentTarget)===null||d===void 0||d.click()}),onKeyDown:Ee(e.onKeyDown,f=>{const d=s.searchRef.current!=="";r||d&&f.key===" "||f5.includes(f.key)&&(f.currentTarget.click(),f.preventDefault())})}))}),D5=v.forwardRef((e,t)=>{const{__scopeMenu:r,disabled:n=!1,textValue:i,...o}=e,a=e2(Jf,r),s=Zw(r),l=v.useRef(null),u=He(t,l),[c,f]=v.useState(!1),[d,h]=v.useState("");return v.useEffect(()=>{const m=l.current;if(m){var p;h(((p=m.textContent)!==null&&p!==void 0?p:"").trim())}},[o.children]),v.createElement(Zf.ItemSlot,{scope:r,disabled:n,textValue:i??d},v.createElement(c5,de({asChild:!0},s,{focusable:!n}),v.createElement(Ie.div,de({role:"menuitem","data-highlighted":c?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0},o,{ref:u,onPointerMove:Ee(e.onPointerMove,e0(m=>{n?a.onItemLeave(m):(a.onItemEnter(m),m.defaultPrevented||m.currentTarget.focus())})),onPointerLeave:Ee(e.onPointerLeave,e0(m=>a.onItemLeave(m))),onFocus:Ee(e.onFocus,()=>f(!0)),onBlur:Ee(e.onBlur,()=>f(!1))}))))}),P5="MenuRadioGroup";_i(P5,{value:void 0,onValueChange:()=>{}});const I5="MenuItemIndicator";_i(I5,{checked:!1});const b5="MenuSub";_i(b5);function k5(e){return e?"open":"closed"}function $5(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function N5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}function M5(e,t,r){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=r?e.indexOf(r):-1;let a=N5(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==r));const l=a.find(u=>u.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}function L5(e,t){const{x:r,y:n}=e;let i=!1;for(let o=0,a=t.length-1;on!=c>n&&r<(u-s)*(n-l)/(c-l)+s&&(i=!i)}return i}function B5(e,t){if(!t)return!1;const r={x:e.clientX,y:e.clientY};return L5(r,t)}function e0(e){return t=>t.pointerType==="mouse"?e(t):void 0}const r2=x5,n2=w5,i2=_5,o2=T5,U5=R5,H5=O5,V5=F5,a2="ContextMenu",[W5,Uk]=on(a2,[Pu]),Iu=Pu(),[z5,s2]=W5(a2),G5=e=>{const{__scopeContextMenu:t,children:r,onOpenChange:n,dir:i,modal:o=!0}=e,[a,s]=v.useState(!1),l=Iu(t),u=Dt(n),c=v.useCallback(f=>{s(f),u(f)},[u]);return v.createElement(z5,{scope:t,open:a,onOpenChange:c,modal:o},v.createElement(r2,de({},l,{dir:i,open:a,onOpenChange:c,modal:o}),r))},j5="ContextMenuTrigger",X5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,disabled:n=!1,...i}=e,o=s2(j5,r),a=Iu(r),s=v.useRef({x:0,y:0}),l=v.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...s.current})}),u=v.useRef(0),c=v.useCallback(()=>window.clearTimeout(u.current),[]),f=d=>{s.current={x:d.clientX,y:d.clientY},o.onOpenChange(!0)};return v.useEffect(()=>c,[c]),v.useEffect(()=>void(n&&c()),[n,c]),v.createElement(v.Fragment,null,v.createElement(n2,de({},a,{virtualRef:l})),v.createElement(Ie.span,de({"data-state":o.open?"open":"closed","data-disabled":n?"":void 0},i,{ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:n?e.onContextMenu:Ee(e.onContextMenu,d=>{c(),f(d),d.preventDefault()}),onPointerDown:n?e.onPointerDown:Ee(e.onPointerDown,$s(d=>{c(),u.current=window.setTimeout(()=>f(d),700)})),onPointerMove:n?e.onPointerMove:Ee(e.onPointerMove,$s(c)),onPointerCancel:n?e.onPointerCancel:Ee(e.onPointerCancel,$s(c)),onPointerUp:n?e.onPointerUp:Ee(e.onPointerUp,$s(c))})))}),K5=e=>{const{__scopeContextMenu:t,...r}=e,n=Iu(t);return v.createElement(i2,de({},n,r))},Y5="ContextMenuContent",q5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,...n}=e,i=s2(Y5,r),o=Iu(r),a=v.useRef(!1);return v.createElement(o2,de({},o,n,{ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:s=>{var l;(l=e.onCloseAutoFocus)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&a.current&&s.preventDefault(),a.current=!1},onInteractOutside:s=>{var l;(l=e.onInteractOutside)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&!i.modal&&(a.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))});function $s(e){return t=>t.pointerType!=="mouse"?e(t):void 0}const Q5=G5,Z5=X5,J5=K5,e8=q5;function t8({column:e,table:t,numberOfColumns:r}){const n=t.getPreFilteredRowModel().flatRows.map(u=>u.getValue(e.id)),i=n.every(u=>typeof u=="string"||u===null),o=n.every(u=>typeof u=="number"||u===null),a=n.some(u=>typeof u=="string"&&u.includes(" ")),s=e.getFilterValue();if(n.every(u=>typeof u!="string"?!1:u.replace(/[^0-9]/g,"").length>=4&&(Vd(e.id)||e.id.toLowerCase()==="index"&&!a))){let u=function(c){if(!c)return null;const f=new Date(c),d=f.getFullYear(),h=f.getMonth()+1>9?f.getMonth()+1:`0${f.getMonth()+1}`,m=f.getDate()>9?f.getDate():`0${f.getDate()}`;return`${d}-${h}-${m}`};return Te("div",{className:"flex gap-2 h-10",children:[Z("input",{type:"datetime-local",value:u(s==null?void 0:s[0])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[f,d==null?void 0:d[1]])},placeholder:"Start date",className:"_input"}),Z("input",{type:"datetime-local",value:u(s==null?void 0:s[1])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[d==null?void 0:d[0],f])},placeholder:"End date",className:"_input"})]})}return o?Te("div",{className:"flex gap-0.5 h-10",children:[Z("input",{type:"number",value:(s==null?void 0:s[0])??"",onChange:u=>e.setFilterValue(c=>[u.target.value,c==null?void 0:c[1]]),placeholder:"Min",className:"_input p-0.5"}),Z("input",{type:"number",value:(s==null?void 0:s[1])??"",onChange:u=>e.setFilterValue(c=>[c==null?void 0:c[0],u.target.value]),placeholder:"Max",className:"_input p-0.5"})]}):i?Z("div",{className:"h-10",children:Z("input",{type:"text",value:s??"",onChange:u=>e.setFilterValue(u.target.value),placeholder:"Search...",className:"_input"})}):Z("div",{className:"h-10"})}const r8=(e,t,r)=>(r.splice(r.indexOf(t),0,r.splice(r.indexOf(e),1)[0]),[...r]),n8=({header:e,table:t,advanced:r,idx:n,lockFirstColumn:i,setLockFirstColumn:o})=>{const{getState:a,setColumnOrder:s}=t,{columnOrder:l}=a(),{column:u}=e,[,c]=XI({accept:"column",drop:p=>{const g=r8(p.id,u.id,l);s(g)}}),[{isDragging:f},d,h]=BI({collect:p=>({isDragging:p.isDragging()}),item:()=>u,type:"column"}),m=()=>Z("div",{ref:h,className:"flex gap-1 flex-col",children:e.isPlaceholder?null:Te($1,{children:[Te("div",{className:"font-bold uppercase text-grey-700 dark:text-white tracking-widest flex gap-2 whitespace-nowrap justify-between",children:[Te("div",{onClick:e.column.getToggleSortingHandler(),className:bt("flex gap-1",{"cursor-pointer select-none":e.column.getCanSort()}),children:[If(e.column.columnDef.header,e.getContext()),e.column.getCanSort()&&Te("div",{className:"flex flex-col gap-0.5 items-center justify-center",children:[Z("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="asc","text-grey-600":e.column.getIsSorted()!=="asc"}),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:Z("path",{fill:"currentColor",d:"M10.333 5l-5-5-5 5"})})}),Z("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="desc","text-grey-600":e.column.getIsSorted()!=="desc"}),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:Z("path",{fill:"currentColor",d:"M.333 0l5 5 5-5"})})})]})]}),r&&u.id!=="select"&&Z("button",{ref:d,className:"text-grey-600 hover:text-grey-800 dark:hover:text-white",children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"16",fill:"none",viewBox:"0 0 17 16",children:Z("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",d:"M3.667 6l-2 2 2 2M6.333 3.333l2-2 2 2M10.333 12.667l-2 2-2-2M13 6l2 2-2 2M1.667 8H15M8.333 1.333v13.334"})})})]}),r&&e.column.getCanFilter()?Z("div",{children:Z(t8,{column:e.column,table:t,numberOfColumns:l.length})}):null]})});return Te("th",{className:bt("h-[70px] p-4 sticky",{"left-0 z-50 bg-white dark:bg-grey-900":n===0&&i}),colSpan:e.colSpan,style:{width:e.getSize(),opacity:f?.5:1},ref:c,children:[n===0?Te(Q5,{children:[Z(Z5,{asChild:!0,children:m()}),Z(J5,{children:Z(e8,{className:"bg-white text-black dark:text-white dark:bg-grey-900 border border-grey-200 dark:border-grey-800 rounded-md shadow-lg p-2 z-50 text-xs",children:Z("div",{className:"flex flex-col gap-2",children:Te("button",{onClick:()=>{o(!i)},className:"hover:bg-grey-300 dark:hover:bg-grey-800 rounded-md p-2",children:[i?"Unlock":"Lock"," first column"]})})})})]}):m(),Z("button",{className:"resizer bg-grey-300/20 dark:hover:bg-white absolute top-0 right-0 w-0.5 h-full",onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler()})]})};function l2(e){return typeof e!="number"?typeof e=="string"&&e.includes("All")?e:i0:e<1?i0:e}function i8({table:e,currentPage:t,setCurrentPage:r}){const n=e.getFilteredRowModel().rows.length;return Te("div",{className:"hidden md:flex items-center gap-8",children:[Z(Vi,{value:t,onChange:i=>{const o=l2(i);r(o),o.toString().includes("All")?e.setPageSize(n):e.setPageSize(o)},labelType:"row",label:"Rows per page",placeholder:"Select rows per page",groups:[{label:"Rows per page",items:[10,20,30,40,50,`All (${n})`].map(i=>({label:`${i}`,value:i}))}]}),Te("span",{className:"flex items-center gap-1",children:[Z("strong",{children:e.getState().pagination.pageIndex+1}),"of",Z("strong",{children:e.getPageCount()})]}),Te("div",{className:"hidden lg:block",children:[Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:"<<"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:"<"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:">"}),Z("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:">>"})]})]})}function o8({columns:e,data:t,type:r,setType:n}){const i=()=>{switch(r){case"csv":Yg("csv",e,t);break;case"xlsx":Yg("xlsx",e,t);break;case"png":JD("table");break}};return Te("div",{className:"flex gap-6 items-center",children:[Z(Vi,{labelType:"row",value:r,onChange:o=>{n(o)},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:o0.map(o=>({label:o,value:o}))}]}),Z("button",{onClick:i,className:"_btn",children:"Export"})]})}const u2="DropdownMenu",[a8,Hk]=on(u2,[Pu]),Si=Pu(),[s8,c2]=a8(u2),l8=e=>{const{__scopeDropdownMenu:t,children:r,dir:n,open:i,defaultOpen:o,onOpenChange:a,modal:s=!0}=e,l=Si(t),u=v.useRef(null),[c=!1,f]=lo({prop:i,defaultProp:o,onChange:a});return v.createElement(s8,{scope:t,triggerId:Xr(),triggerRef:u,contentId:Xr(),open:c,onOpenChange:f,onOpenToggle:v.useCallback(()=>f(d=>!d),[f]),modal:s},v.createElement(r2,de({},l,{open:c,onOpenChange:f,dir:n,modal:s}),r))},u8="DropdownMenuTrigger",c8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,disabled:n=!1,...i}=e,o=c2(u8,r),a=Si(r);return v.createElement(n2,de({asChild:!0},a),v.createElement(Ie.button,de({type:"button",id:o.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?"open":"closed","data-disabled":n?"":void 0,disabled:n},i,{ref:sd(t,o.triggerRef),onPointerDown:Ee(e.onPointerDown,s=>{!n&&s.button===0&&s.ctrlKey===!1&&(o.onOpenToggle(),o.open||s.preventDefault())}),onKeyDown:Ee(e.onKeyDown,s=>{n||(["Enter"," "].includes(s.key)&&o.onOpenToggle(),s.key==="ArrowDown"&&o.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(s.key)&&s.preventDefault())})})))}),f8=e=>{const{__scopeDropdownMenu:t,...r}=e,n=Si(t);return v.createElement(i2,de({},n,r))},d8="DropdownMenuContent",h8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=c2(d8,r),o=Si(r),a=v.useRef(!1);return v.createElement(o2,de({id:i.contentId,"aria-labelledby":i.triggerId},o,n,{ref:t,onCloseAutoFocus:Ee(e.onCloseAutoFocus,s=>{var l;a.current||(l=i.triggerRef.current)===null||l===void 0||l.focus(),a.current=!1,s.preventDefault()}),onInteractOutside:Ee(e.onInteractOutside,s=>{const l=s.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,c=l.button===2||u;(!i.modal||c)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))}),p8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(U5,de({},i,n,{ref:t}))}),g8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(H5,de({},i,n,{ref:t}))}),m8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(V5,de({},i,n,{ref:t}))}),v8=l8,a1=c8,x8=f8,w8=h8,y8=p8,E8=g8,s1=m8;function _8(e,t){v.useEffect(()=>{const r=n=>{!e.current||e.current.contains(n.target)||t(n)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}},[e,t])}function l1({label:e,table:t,onlyIconTrigger:r=!1}){const[n,i]=v.useState(!1),o=v.useRef(null);return _8(o,()=>i(!1)),v.useEffect(()=>{const a=s=>{s.key==="Escape"&&i(!1)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[]),Te(v8,{open:n,children:[r?Z(a1,{title:"Filter columns",onClick:()=>i(!n),children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"w-7 h-7",children:Z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z"})})}):Te(y8,{className:"flex flex-row items-center gap-2",children:[Z(E8,{className:"whitespace-nowrap",children:e}),Te(a1,{onClick:()=>i(!n),className:"bg-white text-black dark:bg-grey-900 dark:text-white whitespace-nowrap h-[36px] border-[1.5px] border-grey-700 rounded p-3 inline-flex items-center justify-center leading-none gap-[5px] shadow-[0_2px_10px] shadow-black/10 focus:shadow-[0_0_0_2px] focus:shadow-black data-[placeholder]:text-white outline-none","aria-label":e,children:[Z("span",{children:"Filter columns"}),Z(Hf,{className:bt({"transform rotate-180 duration-200 transition":n})})]})]}),Z(x8,{children:Te(w8,{sideOffset:10,ref:o,className:"z-50 bg-white/80 dark:bg-grey-900/80 backdrop-filter backdrop-blur flex flex-col gap-4 overflow-auto border-[1.5px] border-grey-700 rounded p-3 max-h-[500px] text-black dark:text-white",children:[Z(s1,{children:Te("label",{className:"flex items-center gap-2",children:[Z("input",{type:"checkbox",checked:t.getIsAllColumnsVisible(),onChange:t.getToggleAllColumnsVisibilityHandler()}),"Toggle All"]})}),t.getAllLeafColumns().filter(a=>a.id!=="select").map(a=>Z(s1,{children:Te("label",{className:"flex items-center gap-2",children:[Z("input",{type:"checkbox",checked:a.getIsVisible(),onChange:a.getToggleVisibilityHandler()}),a.id]})},a.id))]})})]})}var Gl={},S8={get exports(){return Gl},set exports(e){Gl=e}},qe={},fo={},T8={get exports(){return fo},set exports(e){fo=e}},Ti={};function f2(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function C8(e,t,r){}function A8(e,t,r){}var R8=/javascript\s*\:/img;function O8(e,t){return R8.test(t)?"":t}Ti.whiteList=f2();Ti.getDefaultWhiteList=f2;Ti.onAttr=C8;Ti.onIgnoreAttr=A8;Ti.safeAttrValue=O8;var F8={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r/g,z8=/"/g,G8=/"/g,j8=/&#([a-zA-Z0-9]*);?/gim,X8=/:?/gim,K8=/&newline;?/gim,Ms=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,c1=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,f1=/u\s*r\s*l\s*\(.*/gi;function m2(e){return e.replace(z8,""")}function v2(e){return e.replace(G8,'"')}function x2(e){return e.replace(j8,function(r,n){return n[0]==="x"||n[0]==="X"?String.fromCharCode(parseInt(n.substr(1),16)):String.fromCharCode(parseInt(n,10))})}function w2(e){return e.replace(X8,":").replace(K8," ")}function y2(e){for(var t="",r=0,n=e.length;r",n);if(i===-1)break;r=i+3}return t}function Z8(e){var t=e.split("");return t=t.filter(function(r){var n=r.charCodeAt(0);return n===127?!1:n<=31?n===10||n===13:!0}),t.join("")}qe.whiteList=h2();qe.getDefaultWhiteList=h2;qe.onTag=M8;qe.onIgnoreTag=L8;qe.onTagAttr=B8;qe.onIgnoreTagAttr=U8;qe.safeAttrValue=H8;qe.escapeHtml=g2;qe.escapeQuote=m2;qe.unescapeQuote=v2;qe.escapeHtmlEntities=x2;qe.escapeDangerHtml5Entities=w2;qe.clearNonPrintableCharacter=y2;qe.friendlyAttrValue=E2;qe.escapeAttrValue=_2;qe.onIgnoreTagStripAll=Y8;qe.StripTagBody=q8;qe.stripCommentTag=Q8;qe.stripBlankChar=Z8;qe.cssFilter=p2;qe.getDefaultCSSWhiteList=N8;var bu={},cn=Zd;function J8(e){var t=cn.spaceIndex(e),r;return t===-1?r=e.slice(1,-1):r=e.slice(1,t+1),r=cn.trim(r).toLowerCase(),r.slice(0,1)==="/"&&(r=r.slice(1)),r.slice(-1)==="/"&&(r=r.slice(0,-1)),r}function eb(e){return e.slice(0,2)===""||s===l-1){n+=r(e.slice(i,o)),c=e.slice(o,s+1),u=J8(c),n+=t(o,n.length,u,c,eb(c)),i=s+1,o=!1;continue}if(f==='"'||f==="'")for(var d=1,h=e.charAt(s-d);h.trim()===""||h==="=";){if(h==="="){a=f;continue e}h=e.charAt(s-++d)}}else if(f===a){a=!1;continue}}return i0;t--){var r=e[t];if(r!==" ")return r==="="?t:-1}}function sb(e){return e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'"}function d1(e){return sb(e)?e.substr(1,e.length-2):e}bu.parseTag=tb;bu.parseAttr=nb;var lb=fo.FilterCSS,xr=qe,S2=bu,ub=S2.parseTag,cb=S2.parseAttr,tl=Zd;function Ls(e){return e==null}function fb(e){var t=tl.spaceIndex(e);if(t===-1)return{html:"",closing:e[e.length-2]==="/"};e=tl.trim(e.slice(t+1,-1));var r=e[e.length-1]==="/";return r&&(e=tl.trim(e.slice(0,-1))),{html:e,closing:r}}function db(e){var t={};for(var r in e)t[r]=e[r];return t}function hb(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(n){return n.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}function T2(e){e=db(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=xr.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=hb(e.whiteList||e.allowList):e.whiteList=xr.whiteList,e.onTag=e.onTag||xr.onTag,e.onTagAttr=e.onTagAttr||xr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||xr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||xr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||xr.safeAttrValue,e.escapeHtml=e.escapeHtml||xr.escapeHtml,this.options=e,e.css===!1?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new lb(e.css))}T2.prototype.process=function(e){if(e=e||"",e=e.toString(),!e)return"";var t=this,r=t.options,n=r.whiteList,i=r.onTag,o=r.onIgnoreTag,a=r.onTagAttr,s=r.onIgnoreTagAttr,l=r.safeAttrValue,u=r.escapeHtml,c=t.cssFilter;r.stripBlankChar&&(e=xr.stripBlankChar(e)),r.allowCommentTag||(e=xr.stripCommentTag(e));var f=!1;r.stripIgnoreTagBody&&(f=xr.StripTagBody(r.stripIgnoreTagBody,o),o=f.onIgnoreTag);var d=ub(e,function(h,m,p,g,x){var w={sourcePosition:h,position:m,isClosing:x,isWhite:Object.prototype.hasOwnProperty.call(n,p)},y=i(p,g,w);if(!Ls(y))return y;if(w.isWhite){if(w.isClosing)return"";var _=fb(g),k=n[p],N=cb(_.html,function(S,A){var R=tl.indexOf(k,S)!==-1,L=a(p,S,A,R);return Ls(L)?R?(A=l(p,S,A,c),A?S+'="'+A+'"':S):(L=s(p,S,A,R),Ls(L)?void 0:L):L});return g="<"+p,N&&(g+=" "+N),_.closing&&(g+=" /"),g+=">",g}else return y=o(p,g,w),Ls(y)?u(g):y},u);return f&&(d=f.remove(d)),d};var pb=T2;(function(e,t){var r=qe,n=bu,i=pb;function o(s,l){var u=new i(l);return u.process(s)}t=e.exports=o,t.filterXSS=o,t.FilterXSS=i,function(){for(var s in r)t[s]=r[s];for(var l in n)t[l]=n[l]}(),typeof window<"u"&&(window.filterXSS=e.exports);function a(){return typeof self<"u"&&typeof DedicatedWorkerGlobalScope<"u"&&self instanceof DedicatedWorkerGlobalScope}a()&&(self.filterXSS=e.exports)})(S8,Gl);const gb=Gl;function jo(e,t,r){const[n,i]=v.useState(()=>{if(typeof window>"u")return t;try{const a=window.localStorage.getItem(e);return a?r?r(JSON.parse(a)):JSON.parse(a):t}catch(a){return console.log(a),t}});return[n,a=>{try{const s=a instanceof Function?a(n):a;i(s),typeof window<"u"&&window.localStorage.setItem(e,JSON.stringify(s))}catch(s){console.log(s)}}]}const C2="ToastProvider",[Jd,mb,vb]=su("Toast"),[A2,Vk]=on("Toast",[vb]),[xb,ku]=A2(C2),R2=e=>{const{__scopeToast:t,label:r="Notification",duration:n=5e3,swipeDirection:i="right",swipeThreshold:o=50,children:a}=e,[s,l]=v.useState(null),[u,c]=v.useState(0),f=v.useRef(!1),d=v.useRef(!1);return v.createElement(Jd.Provider,{scope:t},v.createElement(xb,{scope:t,label:r,duration:n,swipeDirection:i,swipeThreshold:o,toastCount:u,viewport:s,onViewportChange:l,onToastAdd:v.useCallback(()=>c(h=>h+1),[]),onToastRemove:v.useCallback(()=>c(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:d},a))};R2.propTypes={label(e){if(e.label&&typeof e.label=="string"&&!e.label.trim()){const t=`Invalid prop \`label\` supplied to \`${C2}\`. Expected non-empty \`string\`.`;return new Error(t)}return null}};const wb="ToastViewport",yb=["F8"],t0="toast.viewportPause",r0="toast.viewportResume",Eb=v.forwardRef((e,t)=>{const{__scopeToast:r,hotkey:n=yb,label:i="Notifications ({hotkey})",...o}=e,a=ku(wb,r),s=mb(r),l=v.useRef(null),u=v.useRef(null),c=v.useRef(null),f=v.useRef(null),d=He(t,f,a.onViewportChange),h=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),m=a.toastCount>0;v.useEffect(()=>{const g=x=>{var w;n.every(_=>x[_]||x.code===_)&&((w=f.current)===null||w===void 0||w.focus())};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[n]),v.useEffect(()=>{const g=l.current,x=f.current;if(m&&g&&x){const w=()=>{if(!a.isClosePausedRef.current){const N=new CustomEvent(t0);x.dispatchEvent(N),a.isClosePausedRef.current=!0}},y=()=>{if(a.isClosePausedRef.current){const N=new CustomEvent(r0);x.dispatchEvent(N),a.isClosePausedRef.current=!1}},_=N=>{!g.contains(N.relatedTarget)&&y()},k=()=>{g.contains(document.activeElement)||y()};return g.addEventListener("focusin",w),g.addEventListener("focusout",_),g.addEventListener("pointermove",w),g.addEventListener("pointerleave",k),window.addEventListener("blur",w),window.addEventListener("focus",y),()=>{g.removeEventListener("focusin",w),g.removeEventListener("focusout",_),g.removeEventListener("pointermove",w),g.removeEventListener("pointerleave",k),window.removeEventListener("blur",w),window.removeEventListener("focus",y)}}},[m,a.isClosePausedRef]);const p=v.useCallback(({tabbingDirection:g})=>{const w=s().map(y=>{const _=y.ref.current,k=[_,...Lb(_)];return g==="forwards"?k:k.reverse()});return(g==="forwards"?w.reverse():w).flat()},[s]);return v.useEffect(()=>{const g=f.current;if(g){const x=w=>{const y=w.altKey||w.ctrlKey||w.metaKey;if(w.key==="Tab"&&!y){const A=document.activeElement,R=w.shiftKey;if(w.target===g&&R){var k;(k=u.current)===null||k===void 0||k.focus();return}const U=p({tabbingDirection:R?"backwards":"forwards"}),W=U.findIndex(Y=>Y===A);if(Mc(U.slice(W+1)))w.preventDefault();else{var N,S;R?(N=u.current)===null||N===void 0||N.focus():(S=c.current)===null||S===void 0||S.focus()}}};return g.addEventListener("keydown",x),()=>g.removeEventListener("keydown",x)}},[s,p]),v.createElement(TS,{ref:l,role:"region","aria-label":i.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:m?void 0:"none"}},m&&v.createElement(h1,{ref:u,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"forwards"});Mc(g)}}),v.createElement(Jd.Slot,{scope:r},v.createElement(Ie.ol,de({tabIndex:-1},o,{ref:d}))),m&&v.createElement(h1,{ref:c,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"backwards"});Mc(g)}}))}),_b="ToastFocusProxy",h1=v.forwardRef((e,t)=>{const{__scopeToast:r,onFocusFromOutsideViewport:n,...i}=e,o=ku(_b,r);return v.createElement(gd,de({"aria-hidden":!0,tabIndex:0},i,{ref:t,style:{position:"fixed"},onFocus:a=>{var s;const l=a.relatedTarget;!((s=o.viewport)!==null&&s!==void 0&&s.contains(l))&&n()}}))}),$u="Toast",Sb="toast.swipeStart",Tb="toast.swipeMove",Cb="toast.swipeCancel",Ab="toast.swipeEnd",Rb=v.forwardRef((e,t)=>{const{forceMount:r,open:n,defaultOpen:i,onOpenChange:o,...a}=e,[s=!0,l]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Ei,{present:r||s},v.createElement(O2,de({open:s},a,{ref:t,onClose:()=>l(!1),onPause:Dt(e.onPause),onResume:Dt(e.onResume),onSwipeStart:Ee(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:Ee(e.onSwipeMove,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${f}px`)}),onSwipeCancel:Ee(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:Ee(e.onSwipeEnd,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${f}px`),l(!1)})})))}),[Ob,Fb]=A2($u,{onClose(){}}),O2=v.forwardRef((e,t)=>{const{__scopeToast:r,type:n="foreground",duration:i,open:o,onClose:a,onEscapeKeyDown:s,onPause:l,onResume:u,onSwipeStart:c,onSwipeMove:f,onSwipeCancel:d,onSwipeEnd:h,...m}=e,p=ku($u,r),[g,x]=v.useState(null),w=He(t,Y=>x(Y)),y=v.useRef(null),_=v.useRef(null),k=i||p.duration,N=v.useRef(0),S=v.useRef(k),A=v.useRef(0),{onToastAdd:R,onToastRemove:L}=p,V=Dt(()=>{var Y;(g==null?void 0:g.contains(document.activeElement))&&((Y=p.viewport)===null||Y===void 0||Y.focus()),a()}),U=v.useCallback(Y=>{!Y||Y===1/0||(window.clearTimeout(A.current),N.current=new Date().getTime(),A.current=window.setTimeout(V,Y))},[V]);v.useEffect(()=>{const Y=p.viewport;if(Y){const re=()=>{U(S.current),u==null||u()},ye=()=>{const ge=new Date().getTime()-N.current;S.current=S.current-ge,window.clearTimeout(A.current),l==null||l()};return Y.addEventListener(t0,ye),Y.addEventListener(r0,re),()=>{Y.removeEventListener(t0,ye),Y.removeEventListener(r0,re)}}},[p.viewport,k,l,u,U]),v.useEffect(()=>{o&&!p.isClosePausedRef.current&&U(k)},[o,k,p.isClosePausedRef,U]),v.useEffect(()=>(R(),()=>L()),[R,L]);const W=v.useMemo(()=>g?P2(g):null,[g]);return p.viewport?v.createElement(v.Fragment,null,W&&v.createElement(Db,{__scopeToast:r,role:"status","aria-live":n==="foreground"?"assertive":"polite","aria-atomic":!0},W),v.createElement(Ob,{scope:r,onClose:V},Jr.createPortal(v.createElement(Jd.ItemSlot,{scope:r},v.createElement(SS,{asChild:!0,onEscapeKeyDown:Ee(s,()=>{p.isFocusedToastEscapeKeyDownRef.current||V(),p.isFocusedToastEscapeKeyDownRef.current=!1})},v.createElement(Ie.li,de({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":p.swipeDirection},m,{ref:w,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:Ee(e.onKeyDown,Y=>{Y.key==="Escape"&&(s==null||s(Y.nativeEvent),Y.nativeEvent.defaultPrevented||(p.isFocusedToastEscapeKeyDownRef.current=!0,V()))}),onPointerDown:Ee(e.onPointerDown,Y=>{Y.button===0&&(y.current={x:Y.clientX,y:Y.clientY})}),onPointerMove:Ee(e.onPointerMove,Y=>{if(!y.current)return;const re=Y.clientX-y.current.x,ye=Y.clientY-y.current.y,ge=!!_.current,Se=["left","right"].includes(p.swipeDirection),ie=["left","up"].includes(p.swipeDirection)?Math.min:Math.max,we=Se?ie(0,re):0,Q=Se?0:ie(0,ye),F=Y.pointerType==="touch"?10:2,M={x:we,y:Q},b={originalEvent:Y,delta:M};ge?(_.current=M,Bs(Tb,f,b,{discrete:!1})):p1(M,p.swipeDirection,F)?(_.current=M,Bs(Sb,c,b,{discrete:!1}),Y.target.setPointerCapture(Y.pointerId)):(Math.abs(re)>F||Math.abs(ye)>F)&&(y.current=null)}),onPointerUp:Ee(e.onPointerUp,Y=>{const re=_.current,ye=Y.target;if(ye.hasPointerCapture(Y.pointerId)&&ye.releasePointerCapture(Y.pointerId),_.current=null,y.current=null,re){const ge=Y.currentTarget,Se={originalEvent:Y,delta:re};p1(re,p.swipeDirection,p.swipeThreshold)?Bs(Ab,h,Se,{discrete:!0}):Bs(Cb,d,Se,{discrete:!0}),ge.addEventListener("click",ie=>ie.preventDefault(),{once:!0})}})})))),p.viewport))):null});O2.propTypes={type(e){if(e.type&&!["foreground","background"].includes(e.type)){const t=`Invalid prop \`type\` supplied to \`${$u}\`. Expected \`foreground | background\`.`;return new Error(t)}return null}};const Db=e=>{const{__scopeToast:t,children:r,...n}=e,i=ku($u,t),[o,a]=v.useState(!1),[s,l]=v.useState(!1);return Nb(()=>a(!0)),v.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),s?null:v.createElement(du,{asChild:!0},v.createElement(gd,n,o&&v.createElement(v.Fragment,null,i.label," ",r)))},Pb=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Ib=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),bb="ToastAction",kb=v.forwardRef((e,t)=>{const{altText:r,...n}=e;return r?v.createElement(D2,{altText:r,asChild:!0},v.createElement(F2,de({},n,{ref:t}))):null});kb.propTypes={altText(e){return e.altText?null:new Error(`Missing prop \`altText\` expected on \`${bb}\``)}};const $b="ToastClose",F2=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e,i=Fb($b,r);return v.createElement(D2,{asChild:!0},v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,i.onClose)})))}),D2=v.forwardRef((e,t)=>{const{__scopeToast:r,altText:n,...i}=e;return v.createElement(Ie.div,de({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":n||void 0},i,{ref:t}))});function P2(e){const t=[];return Array.from(e.childNodes).forEach(n=>{if(n.nodeType===n.TEXT_NODE&&n.textContent&&t.push(n.textContent),Mb(n)){const i=n.ariaHidden||n.hidden||n.style.display==="none",o=n.dataset.radixToastAnnounceExclude==="";if(!i)if(o){const a=n.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...P2(n))}}),t}function Bs(e,t,r,{discrete:n}){const i=r.originalEvent.currentTarget,o=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?ud(i,o):i.dispatchEvent(o)}const p1=(e,t,r=0)=>{const n=Math.abs(e.x),i=Math.abs(e.y),o=n>i;return t==="left"||t==="right"?o&&n>r:!o&&i>r};function Nb(e=()=>{}){const t=Dt(e);xt(()=>{let r=0,n=0;return r=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(n)}},[t])}function Mb(e){return e.nodeType===e.ELEMENT_NODE}function Lb(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Mc(e){const t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}const Bb=R2,Ub=Eb,Hb=Rb,Vb=Pb,Wb=Ib,zb=F2,I2=({title:e,titleId:t,...r})=>Z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,...r,children:Z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}),Gb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M9 16.5a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15ZM11.25 6.75l-4.5 4.5M6.75 6.75l4.5 4.5",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),jb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 24 24",width:24,height:24,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10ZM12 16v-4M12 8h.01",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Xb=({title:e,titleId:t,...r})=>Te("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M16.5 8.31V9a7.5 7.5 0 1 1-4.447-6.855",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),Z("path",{d:"M16.5 3 9 10.508l-2.25-2.25",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Kb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?Z("title",{id:t,children:e}):null,Z("path",{d:"M7.718 2.895 1.366 13.5a1.5 1.5 0 0 0 1.282 2.25h12.705a1.5 1.5 0 0 0 1.283-2.25L10.283 2.895a1.5 1.5 0 0 0-2.565 0v0ZM9 6.75v3M9 12.75h.008",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Yb=({toast:e,open:t,setOpen:r})=>Te(Bb,{children:[Te(Hb,{open:t,onOpenChange:n=>{e.preventClose||r(n)},className:bt("z-50 fixed bottom-4 md:left-1/2 md:-translate-x-[50%] inset-x-4 w-auto shadow-lg md:max-w-[658px] duration-300","radix-state-open:animate-fade-in","radix-state-closed:animate-toast-hide","radix-swipe-end:animate-toast-swipe-out","translate-x-radix-toast-swipe-move-x","radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]","px-[40px] md:px-[58px] py-6 flex flex-col border rounded-[4px]",{"bg-green-100 text-green-600 border-green-600":e.status==="success","bg-red-200 text-red-600 border-red-600":e.status==="error","bg-blue-100 text-blue-700 border-blue-600":e.status==="info","bg-orange-200 text-orange-600 border-orange-600":e.status==="warning"},{"h-[72px]":!e.description}),children:[e.status==="success"?Z(Xb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="warning"?Z(Kb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="error"?Z(Gb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):Z(jb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}),Z(Vb,{className:"text-grey-900 font-bold text-sm",children:e.title}),e.description&&Z(Wb,{className:"mt-2 text-[10px] md:text-xs text-grey-800",children:e.description}),Z(zb,{className:"absolute top-7 right-5 md:right-7",children:Z(I2,{className:"w-4 h-4 text-grey-900"})})]}),Z(Ub,{})]});function qb(e){const[t,r]=v.useState(e),n=t==="dark"?"light":"dark";return v.useEffect(()=>{const i=window.document.documentElement;i.classList.remove(n),i.classList.add(t)},[t,n]),[n,r]}const b2="Dialog",[k2,Wk]=on(b2),[Qb,$r]=k2(b2),Zb=e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:o,modal:a=!0}=e,s=v.useRef(null),l=v.useRef(null),[u=!1,c]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Qb,{scope:t,triggerRef:s,contentRef:l,contentId:Xr(),titleId:Xr(),descriptionId:Xr(),open:u,onOpenChange:c,onOpenToggle:v.useCallback(()=>c(f=>!f),[c]),modal:a},r)},Jb="DialogTrigger",ek=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(Jb,r),o=He(t,i.triggerRef);return v.createElement(Ie.button,de({type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":eh(i.open)},n,{ref:o,onClick:Ee(e.onClick,i.onOpenToggle)}))}),$2="DialogPortal",[tk,N2]=k2($2,{forceMount:void 0}),rk=e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,o=$r($2,t);return v.createElement(tk,{scope:t,forceMount:r},v.Children.map(n,a=>v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},a))))},n0="DialogOverlay",nk=v.forwardRef((e,t)=>{const r=N2(n0,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(n0,e.__scopeDialog);return o.modal?v.createElement(Ei,{present:n||o.open},v.createElement(ik,de({},i,{ref:t}))):null}),ik=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(n0,r);return v.createElement(vd,{as:ii,allowPinchZoom:!0,shards:[i.contentRef]},v.createElement(Ie.div,de({"data-state":eh(i.open)},n,{ref:t,style:{pointerEvents:"auto",...n.style}})))}),Ha="DialogContent",ok=v.forwardRef((e,t)=>{const r=N2(Ha,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(Ha,e.__scopeDialog);return v.createElement(Ei,{present:n||o.open},o.modal?v.createElement(ak,de({},i,{ref:t})):v.createElement(sk,de({},i,{ref:t})))}),ak=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(null),i=He(t,r.contentRef,n);return v.useEffect(()=>{const o=n.current;if(o)return md(o)},[]),v.createElement(M2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,o=>{var a;o.preventDefault(),(a=r.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,o=>{const a=o.detail.originalEvent,s=a.button===0&&a.ctrlKey===!0;(a.button===2||s)&&o.preventDefault()}),onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault())}))}),sk=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(!1);return v.createElement(M2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var o;if((o=e.onCloseAutoFocus)===null||o===void 0||o.call(e,i),!i.defaultPrevented){var a;n.current||(a=r.triggerRef.current)===null||a===void 0||a.focus(),i.preventDefault()}n.current=!1},onInteractOutside:i=>{var o,a;(o=e.onInteractOutside)===null||o===void 0||o.call(e,i),i.defaultPrevented||(n.current=!0);const s=i.target;((a=r.triggerRef.current)===null||a===void 0?void 0:a.contains(s))&&i.preventDefault()}}))}),M2=v.forwardRef((e,t)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:o,...a}=e,s=$r(Ha,r),l=v.useRef(null),u=He(t,l);return cd(),v.createElement(v.Fragment,null,v.createElement(fd,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:o},v.createElement(lu,de({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":eh(s.open)},a,{ref:u,onDismiss:()=>s.onOpenChange(!1)}))),!1)}),lk="DialogTitle",uk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(lk,r);return v.createElement(Ie.h2,de({id:i.titleId},n,{ref:t}))}),ck="DialogClose",fk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(ck,r);return v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,()=>i.onOpenChange(!1))}))});function eh(e){return e?"open":"closed"}const dk=Zb,hk=ek,pk=rk,gk=nk,mk=ok,vk=uk,xk=fk,wk=new Date,yk=50,i0=30;function Ek(e,t){try{const r=e.hasOwnProperty("index")?"index":e.hasOwnProperty("Index")?"Index":null,n=r?e[r]:null,i=e[t],o=typeof i,s=(i==null?void 0:i.toString().replace(/[^0-9]/g,"")).length>=4&&(Vd(t)||t.toLowerCase()==="index"||n&&n&&typeof n=="string"&&(n.toLowerCase().includes("date")||n.toLowerCase().includes("day")||n.toLowerCase().includes("time")||n.toLowerCase().includes("timestamp")||n.toLowerCase().includes("year")||n.toLowerCase().includes("month")||n.toLowerCase().includes("week")||n.toLowerCase().includes("hour")||n.toLowerCase().includes("minute")));if(o==="string"&&i.startsWith("http"))return(i==null?void 0:i.toString().length)??0;if(s){if(typeof i=="string")return(i==null?void 0:i.toString().length)??0;try{const u=new Date(i);let c="";return u.getUTCHours()===0&&u.getUTCMinutes()===0&&u.getUTCSeconds()===0&&u.getMilliseconds()===0?c=u.toISOString().split("T")[0]:(c=u.toISOString(),c=c.split("T")[0]+" "+c.split("T")[1].split(".")[0]),(c==null?void 0:c.toString().length)??0}catch{return(i==null?void 0:i.toString().length)??0}}return(i==null?void 0:i.toString().length)??0}catch{return 0}}const o0=["csv","xlsx","png"];function _k({data:e,columns:t,title:r,initialTheme:n,cmd:i=""}){const[o,a]=jo("exportType",o0[0]),[s,l]=qb(n),[u,c]=v.useState(s==="dark"),f=T=>{l(s),c(T)},[d,h]=jo("rowsPerPage",i0,l2),[m,p]=jo("advanced",!1),[g,x]=jo("colors",!1),[w,y]=v.useState([]),[_,k]=v.useState(""),[N,S]=jo("fontSize","1"),[A,R]=v.useState(!1),L=t.reduce((T,B,H)=>(T[B]=H{const K=Math.max(...T.map(ve=>Ek(ve,B)),H.length+8);return Math.min(200,K*12)},Y=v.useMemo(()=>[...t.map((T,B)=>({accessorKey:T,id:T,header:T,size:W(e,T,T),footer:T,cell:({row:H})=>{var je;const q=H.original.hasOwnProperty("index")?"index":H.original.hasOwnProperty("Index")?"Index":t[0],ee=q?H.original[q]:null,K=H.original[T],ve=typeof K,De=(K==null?void 0:K.toString().replace(/[^0-9]/g,"")).length>=4&&(Vd(T)||T.toLowerCase()==="index"||ee&&typeof ee=="string"&&(ee.toLowerCase().includes("date")||ee.toLowerCase().includes("time")||ee.toLowerCase().includes("timestamp")||ee.toLowerCase().includes("year")));if(ve==="string"&&K.startsWith("http"))return Z("a",{className:"_hyper-link",href:K,target:"_blank",rel:"noreferrer",children:K.length>25?K.substring(0,25)+"...":K});if(De){if(typeof K=="string"){const Re=K.split("T")[0],ce=(je=K.split("T")[1])==null?void 0:je.split(".")[0];return ce==="00:00:00"?Z("p",{children:Re}):Te("p",{children:[Re," ",ce]})}if(typeof K=="number"&&K<1e12)return Z("p",{children:K});try{const Re=new Date(K);let ce="";return Re.getUTCHours()===0&&Re.getUTCMinutes()===0&&Re.getUTCSeconds()===0&&Re.getMilliseconds()===0?ce=Re.toISOString().split("T")[0]:(ce=Re.toISOString(),ce=ce.split("T")[0]+" "+ce.split("T")[1].split(".")[0]),Z("p",{children:ce})}catch{return Z("p",{children:K})}}if(ve==="number"){const Re=XD(K);return Z("p",{className:bt("whitespace-nowrap",{"text-black dark:text-white":!g,"text-[#16A34A]":K>0&&g,"text-[#F87171]":K<0&&g,"text-[#404040]":K===0&&g}),children:K!==0?K>0?`${Re}`:`${Re}`:Re})}else if(ve==="string")return Z("div",{dangerouslySetInnerHTML:{__html:gb(K)}});return Z("p",{children:K})}}))],[m,g]),[re,ye]=v.useState(!1),[ge,Se]=v.useState(Y.map(T=>T.id)),ie=()=>Se(t.map(T=>T.id)),we=v.useMemo(()=>{const T=ge.map(H=>H),B=Y.map(H=>H.id);return!KD(T,B)},[ge,Y]),Q=uS({data:e,columns:Y,getCoreRowModel:Z_(),getSortedRowModel:nS(),getFilteredRowModel:rS(),getPaginationRowModel:oS(),columnResizeMode:"onChange",onColumnVisibilityChange:U,onColumnOrderChange:Se,onSortingChange:y,onGlobalFilterChange:k,globalFilterFn:YD,state:{sorting:w,globalFilter:_,columnOrder:ge,columnVisibility:V},initialState:{pagination:{pageIndex:0,pageSize:typeof d=="string"?d.includes("All")?e.length:parseInt(d):d}}}),F=v.useRef(null),{rows:M}=Q.getRowModel(),b=Q.getVisibleFlatColumns();return Te($1,{children:[Z(Yb,{toast:{id:"max-columns",title:"Max 12 columns are visible by default",description:"You can change this by clicking on advanced and then top right 'Filter' button",status:"info"},open:A,setOpen:R}),Te("div",{ref:F,className:bt("overflow-x-hidden h-screen"),children:[Te("div",{className:"relative p-4",id:"table",children:[Z("div",{className:"absolute -inset-0.5 bg-gradient-to-r rounded-md blur-md from-[#072e49]/30 via-[#0d345f]/30 to-[#0d3362]/30"}),Te("div",{className:"border border-grey-500/60 dark:border-grey-200/60 bg-white dark:bg-grey-900 rounded overflow-hidden relative z-20",children:[Te("div",{className:"_header relative gap-4 py-2 text-center text-xs flex items-center justify-between px-4 text-white",style:{fontSize:`${Number(N)*100}%`},children:[Z("div",{className:"w-1/3",children:Z("svg",{xmlns:"http://www.w3.org/2000/svg",width:"64",height:"40",fill:"none",viewBox:"0 0 64 40",children:Z("path",{fill:"#fff",d:"M61.283 3.965H33.608v27.757h25.699V19.826H37.561v-3.965H63.26V3.965h-1.977zM39.538 23.792h15.815v3.965H37.561v-3.965h1.977zM59.306 9.913v1.983H37.561V7.931h21.745v1.982zM33.606 0h-3.954v3.965H33.606V0zM25.7 3.966H0V15.86h25.7v3.965H3.953v11.896h25.7V3.966h-3.955zm0 21.808v1.983H7.907v-3.965h17.791v1.982zm0-15.86v1.982H3.953V7.931h21.745v1.982zM37.039 35.693v2.952l-.246-.246-.245-.245-.245-.247-.245-.246-.246-.246-.245-.245-.245-.247-.247-.246-.245-.246-.245-.246-.245-.246-.246-.246h-.49v3.936h.49v-3.198l.246.246.245.246.245.246.245.246.246.246.246.246.245.247.246.245.245.246.245.247.245.246.246.245.245.246h.245v-3.936h-.49zM44.938 37.17h-.491v-1.477h-2.944v3.937h3.93v-2.46h-.495zm-2.944-.246v-.739h1.962v.984h-1.962v-.245zm2.944.984v1.23h-2.944V37.66h2.944v.247zM52.835 37.17h-.49v-1.477h-2.946v3.937h3.925v-2.46h-.489zm-2.944-.246v-.739h1.963v.984h-1.965l.002-.245zm2.944.984v1.23H49.89V37.66h2.946v.247zM29.174 35.693H25.739v3.936H29.663v-.491H26.229v-.984h2.943v-.493H26.229v-1.476h3.434v-.492h-.489zM13.37 35.693H9.934v3.937h3.925v-3.937h-.49zm0 .738v2.709h-2.945v-2.955h2.943l.001.246zM21.276 35.693h-3.435v3.937h.491v-1.476h3.434v-2.461h-.49zm0 .738v1.23h-2.944v-1.476h2.944v.246z"})})}),Z("p",{className:"font-bold w-1/3 flex flex-col gap-0.5 items-center",children:r}),Te("p",{className:"w-1/3 text-right text-xs",children:[new Intl.DateTimeFormat("en-GB",{dateStyle:"full",timeStyle:"long"}).format(wk).replace(/:\d\d /," "),Z("br",{}),Z("span",{className:"text-grey-400",children:i})]})]}),Z("div",{className:"overflow-auto max-h-[calc(100vh-160px)] smh:max-h-[calc(100vh-95px)]",children:Te("table",{className:"text-sm relative",style:{fontSize:`${Number(N)*100}%`},children:[Z("thead",{className:"sticky top-0 bg-white dark:bg-grey-900",children:Q.getHeaderGroups().map((T,B)=>Z("tr",{children:T.headers.map((H,q)=>Z(n8,{setLockFirstColumn:ye,lockFirstColumn:re,idx:q,advanced:m,header:H,table:Q},H.id))},T.id))}),Z("tbody",{children:Q.getRowModel().rows.map((T,B)=>Z("tr",{className:"!h-[64px] border-b border-grey-400",children:T.getVisibleCells().map((H,q)=>Z("td",{className:bt("whitespace-normal p-4 text-black dark:text-white",{"bg-white dark:bg-grey-850":B%2===0,"bg-grey-100 dark:bg-[#202020]":B%2===1,"sticky left-0 z-10":q===0&&re}),style:{width:H.column.getSize()},children:If(H.column.columnDef.cell,H.getContext())},H.id))},T.id))}),M.length>30&&b.length>4&&Z("tfoot",{children:Q.getFooterGroups().map(T=>Z("tr",{children:T.headers.map(B=>Z("th",{colSpan:B.colSpan,className:"text-grey-500 bg-grey-100 dark:bg-grey-850 font-normal text-left text-sm h-10 p-4",style:{width:B.getSize()},children:B.isPlaceholder?null:If(B.column.columnDef.footer,B.getContext())},B.id))},T.id))})]})})]})]}),Te("div",{className:"smh:hidden flex max-h-[68px] overflow-x-auto bg-white/70 dark:bg-grey-900/70 backdrop-filter backdrop-blur z-20 bottom-0 left-0 w-full gap-10 justify-between py-4 px-4 text-sm",children:[Te("div",{className:"flex items-center gap-10",children:[Te(dk,{children:[Z(hk,{className:"_btn",children:"Settings"}),Te(pk,{children:[Z(gk,{className:"_modal-overlay"}),Te(mk,{className:"_modal",children:[Z(xk,{className:"absolute top-[40px] right-[46px] text-grey-200 hover:text-white rounded-[4px] focus:outline focus:outline-2 focus:outline-grey-500",children:Z(I2,{className:"w-6 h-6"})}),Z(vk,{className:"uppercase font-bold tracking-widest",children:"Settings"}),Te("div",{className:"grid grid-cols-2 gap-4 mt-10 text-sm",children:[we&&Z("button",{onClick:()=>ie(),className:"_btn h-9",children:"Reset Order"}),Z(Vi,{labelType:"row",value:u?"light":"dark",onChange:T=>{f(T!=="dark")},label:"Theme",placeholder:"Select theme",groups:[{label:"Theme",items:[{label:"Dark",value:"dark"},{label:"Light",value:"light"}]}]}),Z(Vi,{labelType:"row",value:o,onChange:T=>{a(T)},label:"Export type",placeholder:"Select export type",groups:[{label:"Export type",items:o0.map(T=>({label:T,value:T}))}]}),Z(Vi,{labelType:"row",value:N,onChange:S,label:"Font size",placeholder:"Select font size",groups:[{label:"Font size",items:[{label:"50%",value:"0.5"},{label:"75%",value:"0.75"},{label:"100%",value:"1"},{label:"125%",value:"1.25"},{label:"150%",value:"1.5"},{label:"175%",value:"1.75"},{label:"200%",value:"2"}]}]}),Z(l1,{table:Q,label:"Filter"}),Z("div",{className:"flex gap-2 items-center",children:Z(Vi,{labelType:"row",value:m?"advanced":"simple",onChange:T=>{p(T==="advanced")},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:[{label:"Simple",value:"simple"},{label:"Advanced",value:"advanced"}]}]})}),Te("div",{className:"flex gap-2 items-center",children:[Z("label",{htmlFor:"colors",children:"Colors"}),Z("input",{id:"colors",type:"checkbox",checked:g,onChange:()=>x(!g)})]})]})]})]})]}),Z(l1,{onlyIconTrigger:!0,table:Q,label:""})]}),Z(i8,{currentPage:d,setCurrentPage:h,table:Q}),Z(o8,{setType:a,type:o,columns:t,data:e})]})]})]})}function L2(e){let t=null;return()=>(t==null&&(t=e()),t)}function Sk(e,t){return e.filter(r=>r!==t)}function Tk(e,t){const r=new Set,n=o=>r.add(o);e.forEach(n),t.forEach(n);const i=[];return r.forEach(o=>i.push(o)),i}class Ck{enter(t){const r=this.entered.length,n=i=>this.isNodeInDocument(i)&&(!i.contains||i.contains(t));return this.entered=Tk(this.entered.filter(n),[t]),r===0&&this.entered.length>0}leave(t){const r=this.entered.length;return this.entered=Sk(this.entered.filter(this.isNodeInDocument),t),r>0&&this.entered.length===0}reset(){this.entered=[]}constructor(t){this.entered=[],this.isNodeInDocument=t}}class Ak{initializeExposedProperties(){Object.keys(this.config.exposeProperties).forEach(t=>{Object.defineProperty(this.item,t,{configurable:!0,enumerable:!0,get(){return console.warn(`Browser doesn't allow reading "${t}" until the drop event.`),null}})})}loadDataTransfer(t){if(t){const r={};Object.keys(this.config.exposeProperties).forEach(n=>{const i=this.config.exposeProperties[n];i!=null&&(r[n]={value:i(t,this.config.matchesTypes),configurable:!0,enumerable:!0})}),Object.defineProperties(this.item,r)}}canDrag(){return!0}beginDrag(){return this.item}isDragging(t,r){return r===t.getSourceId()}endDrag(){}constructor(t){this.config=t,this.item={},this.initializeExposedProperties()}}const B2="__NATIVE_FILE__",U2="__NATIVE_URL__",H2="__NATIVE_TEXT__",V2="__NATIVE_HTML__",g1=Object.freeze(Object.defineProperty({__proto__:null,FILE:B2,HTML:V2,TEXT:H2,URL:U2},Symbol.toStringTag,{value:"Module"}));function Lc(e,t,r){const n=t.reduce((i,o)=>i||e.getData(o),"");return n??r}const a0={[B2]:{exposeProperties:{files:e=>Array.prototype.slice.call(e.files),items:e=>e.items,dataTransfer:e=>e},matchesTypes:["Files"]},[V2]:{exposeProperties:{html:(e,t)=>Lc(e,t,""),dataTransfer:e=>e},matchesTypes:["Html","text/html"]},[U2]:{exposeProperties:{urls:(e,t)=>Lc(e,t,"").split(` -`),dataTransfer:e=>e},matchesTypes:["Url","text/uri-list"]},[H2]:{exposeProperties:{text:(e,t)=>Lc(e,t,""),dataTransfer:e=>e},matchesTypes:["Text","text/plain"]}};function Rk(e,t){const r=a0[e];if(!r)throw new Error(`native type ${e} has no configuration`);const n=new Ak(r);return n.loadDataTransfer(t),n}function Bc(e){if(!e)return null;const t=Array.prototype.slice.call(e.types||[]);return Object.keys(a0).filter(r=>{const n=a0[r];return n!=null&&n.matchesTypes?n.matchesTypes.some(i=>t.indexOf(i)>-1):!1})[0]||null}const Ok=L2(()=>/firefox/i.test(navigator.userAgent)),W2=L2(()=>!!window.safari);class m1{interpolate(t){const{xs:r,ys:n,c1s:i,c2s:o,c3s:a}=this;let s=r.length-1;if(t===r[s])return n[s];let l=0,u=a.length-1,c;for(;l<=u;){c=Math.floor(.5*(l+u));const h=r[c];if(ht)u=c-1;else return n[c]}s=Math.max(0,u);const f=t-r[s],d=f*f;return n[s]+i[s]*f+o[s]*d+a[s]*f*d}constructor(t,r){const{length:n}=t,i=[];for(let h=0;ht[h]{let N=new m1([0,.5,1],[l.y,l.y/c*m,l.y+m-c]).interpolate(d);return W2()&&o&&(N+=(window.devicePixelRatio-1)*m),N},g=()=>new m1([0,.5,1],[l.x,l.x/u*h,l.x+h-u]).interpolate(f),{offsetX:x,offsetY:w}=i,y=x===0||x,_=w===0||w;return{x:y?x:g(),y:_?w:p()}}class bk{get window(){if(this.globalContext)return this.globalContext;if(typeof window<"u")return window}get document(){var t;return!((t=this.globalContext)===null||t===void 0)&&t.document?this.globalContext.document:this.window?this.window.document:void 0}get rootElement(){var t;return((t=this.optionsArgs)===null||t===void 0?void 0:t.rootElement)||this.window}constructor(t,r){this.ownerDocument=null,this.globalContext=t,this.optionsArgs=r}}function kk(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v1(e){for(var t=1;t{this.sourcePreviewNodes.delete(t),this.sourcePreviewNodeOptions.delete(t)}}connectDragSource(t,r,n){this.sourceNodes.set(t,r),this.sourceNodeOptions.set(t,n);const i=a=>this.handleDragStart(a,t),o=a=>this.handleSelectStart(a);return r.setAttribute("draggable","true"),r.addEventListener("dragstart",i),r.addEventListener("selectstart",o),()=>{this.sourceNodes.delete(t),this.sourceNodeOptions.delete(t),r.removeEventListener("dragstart",i),r.removeEventListener("selectstart",o),r.setAttribute("draggable","false")}}connectDropTarget(t,r){const n=a=>this.handleDragEnter(a,t),i=a=>this.handleDragOver(a,t),o=a=>this.handleDrop(a,t);return r.addEventListener("dragenter",n),r.addEventListener("dragover",i),r.addEventListener("drop",o),()=>{r.removeEventListener("dragenter",n),r.removeEventListener("dragover",i),r.removeEventListener("drop",o)}}addEventListeners(t){t.addEventListener&&(t.addEventListener("dragstart",this.handleTopDragStart),t.addEventListener("dragstart",this.handleTopDragStartCapture,!0),t.addEventListener("dragend",this.handleTopDragEndCapture,!0),t.addEventListener("dragenter",this.handleTopDragEnter),t.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.addEventListener("dragover",this.handleTopDragOver),t.addEventListener("dragover",this.handleTopDragOverCapture,!0),t.addEventListener("drop",this.handleTopDrop),t.addEventListener("drop",this.handleTopDropCapture,!0))}removeEventListeners(t){t.removeEventListener&&(t.removeEventListener("dragstart",this.handleTopDragStart),t.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),t.removeEventListener("dragend",this.handleTopDragEndCapture,!0),t.removeEventListener("dragenter",this.handleTopDragEnter),t.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.removeEventListener("dragover",this.handleTopDragOver),t.removeEventListener("dragover",this.handleTopDragOverCapture,!0),t.removeEventListener("drop",this.handleTopDrop),t.removeEventListener("drop",this.handleTopDropCapture,!0))}getCurrentSourceNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourceNodeOptions.get(t);return v1({dropEffect:this.altKeyPressed?"copy":"move"},r||{})}getCurrentDropEffect(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}getCurrentSourcePreviewNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourcePreviewNodeOptions.get(t);return v1({anchorX:.5,anchorY:.5,captureDraggingState:!1},r||{})}isDraggingNativeItem(){const t=this.monitor.getItemType();return Object.keys(g1).some(r=>g1[r]===t)}beginDragNativeItem(t,r){this.clearCurrentDragSourceNode(),this.currentNativeSource=Rk(t,r),this.currentNativeHandle=this.registry.addSource(t,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}setCurrentDragSourceNode(t){this.clearCurrentDragSourceNode(),this.currentDragSourceNode=t;const r=1e3;this.mouseMoveTimeoutTimer=setTimeout(()=>{var n;return(n=this.rootElement)===null||n===void 0?void 0:n.addEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)},r)}clearCurrentDragSourceNode(){if(this.currentDragSourceNode){if(this.currentDragSourceNode=null,this.rootElement){var t;(t=this.window)===null||t===void 0||t.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}return this.mouseMoveTimeoutTimer=null,!0}return!1}handleDragStart(t,r){t.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(r))}handleDragEnter(t,r){this.dragEnterTargetIds.unshift(r)}handleDragOver(t,r){this.dragOverTargetIds===null&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(r)}handleDrop(t,r){this.dropTargetIds.unshift(r)}constructor(t,r,n){this.sourcePreviewNodes=new Map,this.sourcePreviewNodeOptions=new Map,this.sourceNodes=new Map,this.sourceNodeOptions=new Map,this.dragStartSourceIds=null,this.dropTargetIds=[],this.dragEnterTargetIds=[],this.currentNativeSource=null,this.currentNativeHandle=null,this.currentDragSourceNode=null,this.altKeyPressed=!1,this.mouseMoveTimeoutTimer=null,this.asyncEndDragFrameId=null,this.dragOverTargetIds=null,this.lastClientOffset=null,this.hoverRafId=null,this.getSourceClientOffset=i=>{const o=this.sourceNodes.get(i);return o&&z2(o)||null},this.endDragNativeItem=()=>{this.isDraggingNativeItem()&&(this.actions.endDrag(),this.currentNativeHandle&&this.registry.removeSource(this.currentNativeHandle),this.currentNativeHandle=null,this.currentNativeSource=null)},this.isNodeInDocument=i=>!!(i&&this.document&&this.document.body&&this.document.body.contains(i)),this.endDragIfSourceWasRemovedFromDOM=()=>{const i=this.currentDragSourceNode;i==null||this.isNodeInDocument(i)||(this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover())},this.scheduleHover=i=>{this.hoverRafId===null&&typeof requestAnimationFrame<"u"&&(this.hoverRafId=requestAnimationFrame(()=>{this.monitor.isDragging()&&this.actions.hover(i||[],{clientOffset:this.lastClientOffset}),this.hoverRafId=null}))},this.cancelHover=()=>{this.hoverRafId!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(this.hoverRafId),this.hoverRafId=null)},this.handleTopDragStartCapture=()=>{this.clearCurrentDragSourceNode(),this.dragStartSourceIds=[]},this.handleTopDragStart=i=>{if(i.defaultPrevented)return;const{dragStartSourceIds:o}=this;this.dragStartSourceIds=null;const a=Us(i);this.monitor.isDragging()&&(this.actions.endDrag(),this.cancelHover()),this.actions.beginDrag(o||[],{publishSource:!1,getSourceClientOffset:this.getSourceClientOffset,clientOffset:a});const{dataTransfer:s}=i,l=Bc(s);if(this.monitor.isDragging()){if(s&&typeof s.setDragImage=="function"){const c=this.monitor.getSourceId(),f=this.sourceNodes.get(c),d=this.sourcePreviewNodes.get(c)||f;if(d){const{anchorX:h,anchorY:m,offsetX:p,offsetY:g}=this.getCurrentSourcePreviewNodeOptions(),y=Ik(f,d,a,{anchorX:h,anchorY:m},{offsetX:p,offsetY:g});s.setDragImage(d,y.x,y.y)}}try{s==null||s.setData("application/json",{})}catch{}this.setCurrentDragSourceNode(i.target);const{captureDraggingState:u}=this.getCurrentSourcePreviewNodeOptions();u?this.actions.publishDragSource():setTimeout(()=>this.actions.publishDragSource(),0)}else if(l)this.beginDragNativeItem(l);else{if(s&&!s.types&&(i.target&&!i.target.hasAttribute||!i.target.hasAttribute("draggable")))return;i.preventDefault()}},this.handleTopDragEndCapture=()=>{this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleTopDragEnterCapture=i=>{if(this.dragEnterTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}if(!this.enterLeaveCounter.enter(i.target)||this.monitor.isDragging())return;const{dataTransfer:s}=i,l=Bc(s);l&&this.beginDragNativeItem(l,s)},this.handleTopDragEnter=i=>{const{dragEnterTargetIds:o}=this;if(this.dragEnterTargetIds=[],!this.monitor.isDragging())return;this.altKeyPressed=i.altKey,o.length>0&&this.actions.hover(o,{clientOffset:Us(i)}),o.some(s=>this.monitor.canDropOnTarget(s))&&(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect()))},this.handleTopDragOverCapture=i=>{if(this.dragOverTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}},this.handleTopDragOver=i=>{const{dragOverTargetIds:o}=this;if(this.dragOverTargetIds=[],!this.monitor.isDragging()){i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none");return}this.altKeyPressed=i.altKey,this.lastClientOffset=Us(i),this.scheduleHover(o),(o||[]).some(s=>this.monitor.canDropOnTarget(s))?(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect())):this.isDraggingNativeItem()?i.preventDefault():(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none"))},this.handleTopDragLeaveCapture=i=>{this.isDraggingNativeItem()&&i.preventDefault(),this.enterLeaveCounter.leave(i.target)&&(this.isDraggingNativeItem()&&setTimeout(()=>this.endDragNativeItem(),0),this.cancelHover())},this.handleTopDropCapture=i=>{if(this.dropTargetIds=[],this.isDraggingNativeItem()){var o;i.preventDefault(),(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}else Bc(i.dataTransfer)&&i.preventDefault();this.enterLeaveCounter.reset()},this.handleTopDrop=i=>{const{dropTargetIds:o}=this;this.dropTargetIds=[],this.actions.hover(o,{clientOffset:Us(i)}),this.actions.drop({dropEffect:this.getCurrentDropEffect()}),this.isDraggingNativeItem()?this.endDragNativeItem():this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleSelectStart=i=>{const o=i.target;typeof o.dragDrop=="function"&&(o.tagName==="INPUT"||o.tagName==="SELECT"||o.tagName==="TEXTAREA"||o.isContentEditable||(i.preventDefault(),o.dragDrop()))},this.options=new bk(r,n),this.actions=t.getActions(),this.monitor=t.getMonitor(),this.registry=t.getRegistry(),this.enterLeaveCounter=new Ck(this.isNodeInDocument)}}const Nk=function(t,r,n){return new $k(t,r,n)};function Mk(){const[e,t]=v.useState(null),[r,n]=v.useState("Interactive Table");v.useEffect(()=>{const a=setInterval(()=>{if(window.json_data){const s=JSON.parse(window.json_data);console.log(s),t(s),s.title&&typeof s.title=="string"&&n(s.title),clearInterval(a)}},100);return()=>clearInterval(a)},[]);const o=(a=>{var h;if(!a)return null;let s=(h=a.title)==null?void 0:h.replace(/|<\/b>/g,"").replace(/ /g,"_"),l=new Date().toISOString().slice(0,10).replace(/-/g,""),u=new Date().toISOString().slice(11,19).replace(/:/g,"");window.title=`openbb_${s}_${l}_${u}`;const c=a.columns;a.index;const d=a.data.map((m,p)=>{const g={};return m.forEach((x,w)=>{g[c[w]]=x||""}),g});return{columns:c,data:d}})(e);return Z("div",{className:"relative h-full bg-white dark:bg-black text-black dark:text-white",children:Z(mI,{backend:Nk,children:o&&Z(_k,{title:r,data:o.data,columns:o.columns,initialTheme:e.theme&&typeof e.theme=="string"&&e.theme==="dark"?"dark":"light",cmd:(e==null?void 0:e.command_location)??""})})})}cv.render(Z(nr.StrictMode,{children:Z(Mk,{})}),document.getElementById("root")); +`;var r=Vd(e,t);return r}function MD(e){var t="",r,n="";if(e==null||e["!ref"]==null)return[];var i=Ge(e["!ref"]),o="",a=[],s,l=[],u=Array.isArray(e);for(s=i.s.c;s<=i.e.c;++s)a[s]=Rt(s);for(var c=i.s.r;c<=i.e.r;++c)for(o=wt(c),s=i.s.c;s<=i.e.c;++s)if(t=a[s]+o,r=u?(e[c]||[])[s]:e[t],n="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;n=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)n=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)n=""+r.v;else if(r.t=="b")n=r.v?"TRUE":"FALSE";else if(r.w!==void 0)n="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?n="'"+r.v:n=""+r.v}}l[l.length]=t+"="+n}return l}function bw(e,t,r){var n=r||{},i=+!n.skipHeader,o=e||{},a=0,s=0;if(o&&n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var l=typeof n.origin=="string"?ut(n.origin):n.origin;a=l.r,s=l.c}var u,c={s:{c:0,r:0},e:{c:s,r:a+t.length-1+i}};if(o["!ref"]){var f=Ge(o["!ref"]);c.e.c=Math.max(c.e.c,f.e.c),c.e.r=Math.max(c.e.r,f.e.r),a==-1&&(a=f.e.r+1,c.e.r=a+t.length-1+i)}else a==-1&&(a=0,c.e.r=t.length-1+i);var d=n.header||[],h=0;t.forEach(function(p,g){Et(p).forEach(function(x){(h=d.indexOf(x))==-1&&(d[h=d.length]=x);var w=p[x],y="z",_="",k=Be({c:s+h,r:a+g+i});u=Ua(o,k),w&&typeof w=="object"&&!(w instanceof Date)?o[k]=w:(typeof w=="number"?y="n":typeof w=="boolean"?y="b":typeof w=="string"?y="s":w instanceof Date?(y="d",n.cellDates||(y="n",w=zt(w)),_=n.dateNF||et[14]):w===null&&n.nullError&&(y="e",w=0),u?(u.t=y,u.v=w,delete u.w,delete u.R,_&&(u.z=_)):o[k]=u={t:y,v:w},_&&(u.z=_))})}),c.e.c=Math.max(c.e.c,s+d.length-1);var m=wt(a);if(i)for(h=0;h=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function UD(){return{SheetNames:[],Sheets:{}}}function HD(e,t,r,n){var i=1;if(!r)for(;i<=65535&&e.SheetNames.indexOf(r="Sheet"+i)!=-1;++i,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0){var o=r.match(/(^.*?)(\d+)$/);i=o&&+o[2]||0;var a=o&&o[1]||r;for(++i;i<=65535&&e.SheetNames.indexOf(r=a+i)!=-1;++i);}if(_w(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function VD(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=BD(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r}function WD(e,t){return e.z=t,e}function kw(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function zD(e,t,r){return kw(e,"#"+t,r)}function GD(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function jD(e,t,r,n){for(var i=typeof t!="string"?t:Ge(t),o=typeof t=="string"?t:nt(t),a=i.s.r;a<=i.e.r;++a)for(var s=i.s.c;s<=i.e.c;++s){var l=Ua(e,a,s);l.t="n",l.F=o,delete l.v,a==i.s.r&&s==i.s.c&&(l.f=r,n&&(l.D=!0))}return e}var Pc={encode_col:Rt,encode_row:wt,encode_cell:Be,encode_range:nt,decode_col:Pd,decode_row:Dd,split_cell:a3,decode_cell:ut,decode_range:Zt,format_cell:rn,sheet_add_aoa:kx,sheet_add_json:bw,sheet_add_dom:Rw,aoa_to_sheet:So,json_to_sheet:LD,table_to_sheet:Ow,table_to_book:gD,sheet_to_csv:Vd,sheet_to_txt:Iw,sheet_to_json:zl,sheet_to_html:Aw,sheet_to_formulae:MD,sheet_to_row_object_array:zl,sheet_get_cell:Ua,book_new:UD,book_append_sheet:HD,book_set_sheet_visibility:VD,cell_set_number_format:WD,cell_set_hyperlink:kw,cell_set_internal_link:zD,cell_add_comment:GD,sheet_set_array_formula:jD,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function XD(e){if(e%1!==0){const t=Math.max(2,e.toString().split(".")[1].length),r=Math.min(4,t);if(e<1e3)return e.toFixed(r)||0}if(e>1e3){const t=Math.min(4,Math.floor(Math.log10(Math.abs(e))/3)),r=["","K","M","B","T"][t];return`${(e/10**(t*3)).toFixed(2)} ${r}`}return e}function Wd(e){return["date","day","time","timestamp","year"].some(t=>e.toLowerCase().includes(t))}function KD(e,t){if(e===t)return!0;if(e==null||t==null||e.length!==t.length)return!1;for(var r=0;r{const i=YC(e.getValue(t),r);return n(i),i},qD=async({fileHandle:e,blob:t})=>{if(!e)throw new Error("Cannot access filesystem");await QD({fileHandle:e,blob:t})},QD=async({fileHandle:e,blob:t})=>{const r=await e.createWritable();await r.write(t),await r.close()},ZD=[{description:"PNG Image",accept:{"image/png":[".png"]}},{description:"JPEG Image",accept:{"image/jpeg":[".jpeg"]}}],$w=({filename:e,is_image:t})=>{if("showSaveFilePicker"in window){const r={suggestedName:e,types:t?ZD:[{description:"CSV File",accept:{"image/csv":[".csv"]}}],excludeAcceptAllOption:!0};return showSaveFilePicker(r)}return new Promise(r=>{r(null)})},Nw=(e,t,r)=>{try{qD({fileHandle:r,blob:e})}catch(n){console.error("oops, something went wrong!",n);const i=URL.createObjectURL(e),o=document.createElement("a");o.setAttribute("href",i),o.setAttribute("download",t),o.style.visibility="hidden",document.body.appendChild(o),o.click(),document.body.removeChild(o)}},qg=(e,t,r)=>{const n=t,i=r.map(l=>n.map(u=>l[u])),o=[n,...i];if(e==="csv"){const l=o.map(f=>f.join(",")).join(` +`),u=new Blob([l],{type:"text/csv;charset=utf-8;"}),c=`${window.title}.csv`;$w({filename:c}).then(f=>{Nw(u,c,f)});return}const a=Pc.book_new(),s=Pc.aoa_to_sheet(o);Pc.book_append_sheet(a,s,"Sheet1"),kD(a,`${window.title}.xlsx`)},JD=e=>{const t=document.getElementById(e),r=`${window.title}.png`;$w({filename:r,is_image:!0}).then(n=>{r4.toBlob(t).then(function(i){Nw(i,r,n)})})},Mw=v.createContext({dragDropManager:void 0});function tr(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var Qg=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Ic=function(){return Math.random().toString(36).substring(7).split("").join(".")},Zg={INIT:"@@redux/INIT"+Ic(),REPLACE:"@@redux/REPLACE"+Ic(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Ic()}};function eP(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Lw(e,t,r){var n;if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(tr(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(tr(1));return r(Lw)(e,t)}if(typeof e!="function")throw new Error(tr(2));var i=e,o=t,a=[],s=a,l=!1;function u(){s===a&&(s=a.slice())}function c(){if(l)throw new Error(tr(3));return o}function f(p){if(typeof p!="function")throw new Error(tr(4));if(l)throw new Error(tr(5));var g=!0;return u(),s.push(p),function(){if(g){if(l)throw new Error(tr(6));g=!1,u();var w=s.indexOf(p);s.splice(w,1),a=null}}}function d(p){if(!eP(p))throw new Error(tr(7));if(typeof p.type>"u")throw new Error(tr(8));if(l)throw new Error(tr(9));try{l=!0,o=i(o,p)}finally{l=!1}for(var g=a=s,x=0;xn&&n[i]?n[i]:r||null,e)}function nP(e,t){return e.filter(r=>r!==t)}function Bw(e){return typeof e=="object"}function iP(e,t){const r=new Map,n=o=>{r.set(o,r.has(o)?r.get(o)+1:1)};e.forEach(n),t.forEach(n);const i=[];return r.forEach((o,a)=>{o===1&&i.push(a)}),i}function oP(e,t){return e.filter(r=>t.indexOf(r)>-1)}const zd="dnd-core/INIT_COORDS",Cu="dnd-core/BEGIN_DRAG",Gd="dnd-core/PUBLISH_DRAG_SOURCE",Au="dnd-core/HOVER",Ru="dnd-core/DROP",Ou="dnd-core/END_DRAG";function Jg(e,t){return{type:zd,payload:{sourceClientOffset:t||null,clientOffset:e||null}}}const aP={type:zd,payload:{clientOffset:null,sourceClientOffset:null}};function sP(e){return function(r=[],n={publishSource:!0}){const{publishSource:i=!0,clientOffset:o,getSourceClientOffset:a}=n,s=e.getMonitor(),l=e.getRegistry();e.dispatch(Jg(o)),lP(r,s,l);const u=fP(r,s);if(u==null){e.dispatch(aP);return}let c=null;if(o){if(!a)throw new Error("getSourceClientOffset must be defined");uP(a),c=a(u)}e.dispatch(Jg(o,c));const d=l.getSource(u).beginDrag(s,u);if(d==null)return;cP(d),l.pinSource(u);const h=l.getSourceType(u);return{type:Cu,payload:{itemType:h,item:d,sourceId:u,clientOffset:o||null,sourceClientOffset:c||null,isSourcePublic:!!i}}}}function lP(e,t,r){Fe(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach(function(n){Fe(r.getSource(n),"Expected sourceIds to be registered.")})}function uP(e){Fe(typeof e=="function","When clientOffset is provided, getSourceClientOffset must be a function.")}function cP(e){Fe(Bw(e),"Item must be an object.")}function fP(e,t){let r=null;for(let n=e.length-1;n>=0;n--)if(t.canDragSource(e[n])){r=e[n];break}return r}function dP(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function hP(e){for(var t=1;t{const l=mP(a,s,i,n),u={type:Ru,payload:{dropResult:hP({},r,l)}};e.dispatch(u)})}}function gP(e){Fe(e.isDragging(),"Cannot call drop while not dragging."),Fe(!e.didDrop(),"Cannot call drop twice during one drag operation.")}function mP(e,t,r,n){const i=r.getTarget(e);let o=i?i.drop(n,e):void 0;return vP(o),typeof o>"u"&&(o=t===0?{}:n.getDropResult()),o}function vP(e){Fe(typeof e>"u"||Bw(e),"Drop result must either be an object or undefined.")}function xP(e){const t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}function wP(e){return function(){const r=e.getMonitor(),n=e.getRegistry();yP(r);const i=r.getSourceId();return i!=null&&(n.getSource(i,!0).endDrag(r,i),n.unpinSource()),{type:Ou}}}function yP(e){Fe(e.isDragging(),"Cannot call endDrag while not dragging.")}function Kf(e,t){return t===null?e===null:Array.isArray(e)?e.some(r=>r===t):e===t}function EP(e){return function(r,{clientOffset:n}={}){_P(r);const i=r.slice(0),o=e.getMonitor(),a=e.getRegistry(),s=o.getItemType();return TP(i,a,s),SP(i,o,a),CP(i,o,a),{type:Au,payload:{targetIds:i,clientOffset:n||null}}}}function _P(e){Fe(Array.isArray(e),"Expected targetIds to be an array.")}function SP(e,t,r){Fe(t.isDragging(),"Cannot call hover while not dragging."),Fe(!t.didDrop(),"Cannot call hover after drop.");for(let n=0;n=0;n--){const i=e[n],o=t.getTargetType(i);Kf(o,r)||e.splice(n,1)}}function CP(e,t,r){e.forEach(function(n){r.getTarget(n).hover(t,n)})}function AP(e){return function(){if(e.getMonitor().isDragging())return{type:Gd}}}function RP(e){return{beginDrag:sP(e),publishDragSource:AP(e),hover:EP(e),drop:pP(e),endDrag:wP(e)}}class OP{receiveBackend(t){this.backend=t}getMonitor(){return this.monitor}getBackend(){return this.backend}getRegistry(){return this.monitor.registry}getActions(){const t=this,{dispatch:r}=this.store;function n(o){return(...a)=>{const s=o.apply(t,a);typeof s<"u"&&r(s)}}const i=RP(this);return Object.keys(i).reduce((o,a)=>{const s=i[a];return o[a]=n(s),o},{})}dispatch(t){this.store.dispatch(t)}constructor(t,r){this.isSetUp=!1,this.handleRefCountChange=()=>{const n=this.store.getState().refCount>0;this.backend&&(n&&!this.isSetUp?(this.backend.setup(),this.isSetUp=!0):!n&&this.isSetUp&&(this.backend.teardown(),this.isSetUp=!1))},this.store=t,this.monitor=r,t.subscribe(this.handleRefCountChange)}}function FP(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Uw(e,t){return{x:e.x-t.x,y:e.y-t.y}}function DP(e){const{clientOffset:t,initialClientOffset:r,initialSourceClientOffset:n}=e;return!t||!r||!n?null:Uw(FP(t,n),r)}function PP(e){const{clientOffset:t,initialClientOffset:r}=e;return!t||!r?null:Uw(t,r)}const xa=[],jd=[];xa.__IS_NONE__=!0;jd.__IS_ALL__=!0;function IP(e,t){return e===xa?!1:e===jd||typeof t>"u"?!0:oP(t,e).length>0}class bP{subscribeToStateChange(t,r={}){const{handlerIds:n}=r;Fe(typeof t=="function","listener must be a function."),Fe(typeof n>"u"||Array.isArray(n),"handlerIds, when specified, must be an array of strings.");let i=this.store.getState().stateId;const o=()=>{const a=this.store.getState(),s=a.stateId;try{s===i||s===i+1&&!IP(a.dirtyHandlerIds,n)||t()}finally{i=s}};return this.store.subscribe(o)}subscribeToOffsetChange(t){Fe(typeof t=="function","listener must be a function.");let r=this.store.getState().dragOffset;const n=()=>{const i=this.store.getState().dragOffset;i!==r&&(r=i,t())};return this.store.subscribe(n)}canDragSource(t){if(!t)return!1;const r=this.registry.getSource(t);return Fe(r,`Expected to find a valid source. sourceId=${t}`),this.isDragging()?!1:r.canDrag(this,t)}canDropOnTarget(t){if(!t)return!1;const r=this.registry.getTarget(t);if(Fe(r,`Expected to find a valid target. targetId=${t}`),!this.isDragging()||this.didDrop())return!1;const n=this.registry.getTargetType(t),i=this.getItemType();return Kf(n,i)&&r.canDrop(this,t)}isDragging(){return!!this.getItemType()}isDraggingSource(t){if(!t)return!1;const r=this.registry.getSource(t,!0);if(Fe(r,`Expected to find a valid source. sourceId=${t}`),!this.isDragging()||!this.isSourcePublic())return!1;const n=this.registry.getSourceType(t),i=this.getItemType();return n!==i?!1:r.isDragging(this,t)}isOverTarget(t,r={shallow:!1}){if(!t)return!1;const{shallow:n}=r;if(!this.isDragging())return!1;const i=this.registry.getTargetType(t),o=this.getItemType();if(o&&!Kf(i,o))return!1;const a=this.getTargetIds();if(!a.length)return!1;const s=a.indexOf(t);return n?s===a.length-1:s>-1}getItemType(){return this.store.getState().dragOperation.itemType}getItem(){return this.store.getState().dragOperation.item}getSourceId(){return this.store.getState().dragOperation.sourceId}getTargetIds(){return this.store.getState().dragOperation.targetIds}getDropResult(){return this.store.getState().dragOperation.dropResult}didDrop(){return this.store.getState().dragOperation.didDrop}isSourcePublic(){return!!this.store.getState().dragOperation.isSourcePublic}getInitialClientOffset(){return this.store.getState().dragOffset.initialClientOffset}getInitialSourceClientOffset(){return this.store.getState().dragOffset.initialSourceClientOffset}getClientOffset(){return this.store.getState().dragOffset.clientOffset}getSourceClientOffset(){return DP(this.store.getState().dragOffset)}getDifferenceFromInitialOffset(){return PP(this.store.getState().dragOffset)}constructor(t,r){this.store=t,this.registry=r}}const e1=typeof global<"u"?global:self,Hw=e1.MutationObserver||e1.WebKitMutationObserver;function Vw(e){return function(){const r=setTimeout(i,0),n=setInterval(i,50);function i(){clearTimeout(r),clearInterval(n),e()}}}function kP(e){let t=1;const r=new Hw(e),n=document.createTextNode("");return r.observe(n,{characterData:!0}),function(){t=-t,n.data=t}}const $P=typeof Hw=="function"?kP:Vw;class NP{enqueueTask(t){const{queue:r,requestFlush:n}=this;r.length||(n(),this.flushing=!0),r[r.length]=t}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:t}=this;for(;this.indexthis.capacity){for(let n=0,i=t.length-this.index;n{this.pendingErrors.push(t),this.requestErrorThrow()},this.requestFlush=$P(this.flush),this.requestErrorThrow=Vw(()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()})}}class MP{call(){try{this.task&&this.task()}catch(t){this.onError(t)}finally{this.task=null,this.release(this)}}constructor(t,r){this.onError=t,this.release=r,this.task=null}}class LP{create(t){const r=this.freeTasks,n=r.length?r.pop():new MP(this.onError,i=>r[r.length]=i);return n.task=t,n}constructor(t){this.onError=t,this.freeTasks=[]}}const Ww=new NP,BP=new LP(Ww.registerPendingError);function UP(e){Ww.enqueueTask(BP.create(e))}const Xd="dnd-core/ADD_SOURCE",Kd="dnd-core/ADD_TARGET",Yd="dnd-core/REMOVE_SOURCE",Fu="dnd-core/REMOVE_TARGET";function HP(e){return{type:Xd,payload:{sourceId:e}}}function VP(e){return{type:Kd,payload:{targetId:e}}}function WP(e){return{type:Yd,payload:{sourceId:e}}}function zP(e){return{type:Fu,payload:{targetId:e}}}function GP(e){Fe(typeof e.canDrag=="function","Expected canDrag to be a function."),Fe(typeof e.beginDrag=="function","Expected beginDrag to be a function."),Fe(typeof e.endDrag=="function","Expected endDrag to be a function.")}function jP(e){Fe(typeof e.canDrop=="function","Expected canDrop to be a function."),Fe(typeof e.hover=="function","Expected hover to be a function."),Fe(typeof e.drop=="function","Expected beginDrag to be a function.")}function Yf(e,t){if(t&&Array.isArray(e)){e.forEach(r=>Yf(r,!1));return}Fe(typeof e=="string"||typeof e=="symbol",t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}var or;(function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"})(or||(or={}));let XP=0;function KP(){return XP++}function YP(e){const t=KP().toString();switch(e){case or.SOURCE:return`S${t}`;case or.TARGET:return`T${t}`;default:throw new Error(`Unknown Handler Role: ${e}`)}}function t1(e){switch(e[0]){case"S":return or.SOURCE;case"T":return or.TARGET;default:throw new Error(`Cannot parse handler ID: ${e}`)}}function r1(e,t){const r=e.entries();let n=!1;do{const{done:i,value:[,o]}=r.next();if(o===t)return!0;n=!!i}while(!n);return!1}class qP{addSource(t,r){Yf(t),GP(r);const n=this.addHandler(or.SOURCE,t,r);return this.store.dispatch(HP(n)),n}addTarget(t,r){Yf(t,!0),jP(r);const n=this.addHandler(or.TARGET,t,r);return this.store.dispatch(VP(n)),n}containsHandler(t){return r1(this.dragSources,t)||r1(this.dropTargets,t)}getSource(t,r=!1){return Fe(this.isSourceId(t),"Expected a valid source ID."),r&&t===this.pinnedSourceId?this.pinnedSource:this.dragSources.get(t)}getTarget(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.dropTargets.get(t)}getSourceType(t){return Fe(this.isSourceId(t),"Expected a valid source ID."),this.types.get(t)}getTargetType(t){return Fe(this.isTargetId(t),"Expected a valid target ID."),this.types.get(t)}isSourceId(t){return t1(t)===or.SOURCE}isTargetId(t){return t1(t)===or.TARGET}removeSource(t){Fe(this.getSource(t),"Expected an existing source."),this.store.dispatch(WP(t)),UP(()=>{this.dragSources.delete(t),this.types.delete(t)})}removeTarget(t){Fe(this.getTarget(t),"Expected an existing target."),this.store.dispatch(zP(t)),this.dropTargets.delete(t),this.types.delete(t)}pinSource(t){const r=this.getSource(t);Fe(r,"Expected an existing source."),this.pinnedSourceId=t,this.pinnedSource=r}unpinSource(){Fe(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}addHandler(t,r,n){const i=YP(t);return this.types.set(i,r),t===or.SOURCE?this.dragSources.set(i,n):t===or.TARGET&&this.dropTargets.set(i,n),i}constructor(t){this.types=new Map,this.dragSources=new Map,this.dropTargets=new Map,this.pinnedSourceId=null,this.pinnedSource=null,this.store=t}}const QP=(e,t)=>e===t;function ZP(e,t){return!e&&!t?!0:!e||!t?!1:e.x===t.x&&e.y===t.y}function JP(e,t,r=QP){if(e.length!==t.length)return!1;for(let n=0;n0||!JP(r,n)))return xa;const a=n[n.length-1],s=r[r.length-1];return a!==s&&(a&&i.push(a),s&&i.push(s)),i}function tI(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function rI(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function gI(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,o;for(o=0;o=0)&&(r[i]=e[i]);return r}let i1=0;const el=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__");var mI=v.memo(function(t){var{children:r}=t,n=pI(t,["children"]);const[i,o]=vI(n);return v.useEffect(()=>{if(o){const a=zw();return++i1,()=>{--i1===0&&(a[el]=null)}}},[]),q(Mw.Provider,{value:i,children:r})});function vI(e){if("manager"in e)return[{dragDropManager:e.manager},!1];const t=xI(e.backend,e.context,e.options,e.debugMode),r=!e.context;return[t,r]}function xI(e,t=zw(),r,n){const i=t;return i[el]||(i[el]={dragDropManager:dI(e,t,r,n)}),i[el]}function zw(){return typeof global<"u"?global:window}var wI=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,i,o;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!e(t[i],r[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,o[i]))return!1;for(i=n;i--!==0;){var a=o[i];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r};const li=typeof window<"u"?v.useLayoutEffect:v.useEffect;function yI(e,t,r){const[n,i]=v.useState(()=>t(e)),o=v.useCallback(()=>{const a=t(e);wI(n,a)||(i(a),r&&r())},[n,e,r]);return li(o),[n,o]}function EI(e,t,r){const[n,i]=yI(e,t,r);return li(function(){const a=e.getHandlerId();if(a!=null)return e.subscribeToStateChange(i,{handlerIds:[a]})},[e,i]),n}function Gw(e,t,r){return EI(t,e||(()=>({})),()=>r.reconnect())}function jw(e,t){const r=[...t||[]];return t==null&&typeof e!="function"&&r.push(e),v.useMemo(()=>typeof e=="function"?e():e,r)}function _I(e){return v.useMemo(()=>e.hooks.dragSource(),[e])}function SI(e){return v.useMemo(()=>e.hooks.dragPreview(),[e])}let bc=!1,kc=!1;class TI{receiveHandlerId(t){this.sourceId=t}getHandlerId(){return this.sourceId}canDrag(){Fe(!bc,"You may not call monitor.canDrag() inside your canDrag() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return bc=!0,this.internalMonitor.canDragSource(this.sourceId)}finally{bc=!1}}isDragging(){if(!this.sourceId)return!1;Fe(!kc,"You may not call monitor.isDragging() inside your isDragging() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return kc=!0,this.internalMonitor.isDraggingSource(this.sourceId)}finally{kc=!1}}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}isDraggingSource(t){return this.internalMonitor.isDraggingSource(t)}isOverTarget(t,r){return this.internalMonitor.isOverTarget(t,r)}getTargetIds(){return this.internalMonitor.getTargetIds()}isSourcePublic(){return this.internalMonitor.isSourcePublic()}getSourceId(){return this.internalMonitor.getSourceId()}subscribeToOffsetChange(t){return this.internalMonitor.subscribeToOffsetChange(t)}canDragSource(t){return this.internalMonitor.canDragSource(t)}canDropOnTarget(t){return this.internalMonitor.canDropOnTarget(t)}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.sourceId=null,this.internalMonitor=t.getMonitor()}}let $c=!1;class CI{receiveHandlerId(t){this.targetId=t}getHandlerId(){return this.targetId}subscribeToStateChange(t,r){return this.internalMonitor.subscribeToStateChange(t,r)}canDrop(){if(!this.targetId)return!1;Fe(!$c,"You may not call monitor.canDrop() inside your canDrop() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor");try{return $c=!0,this.internalMonitor.canDropOnTarget(this.targetId)}finally{$c=!1}}isOver(t){return this.targetId?this.internalMonitor.isOverTarget(this.targetId,t):!1}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(t){this.targetId=null,this.internalMonitor=t.getMonitor()}}function AI(e,t,r){const n=r.getRegistry(),i=n.addTarget(e,t);return[i,()=>n.removeTarget(i)]}function RI(e,t,r){const n=r.getRegistry(),i=n.addSource(e,t);return[i,()=>n.removeSource(i)]}function qf(e,t,r,n){let i=r?r.call(n,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!="object"||!e||typeof t!="object"||!t)return!1;const o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;const s=Object.prototype.hasOwnProperty.bind(t);for(let l=0;l, or turn it into a drag source or a drop target itself.`)}function FI(e){return(t=null,r=null)=>{if(!v.isValidElement(t)){const o=t;return e(o,r),o}const n=t;return OI(n),DI(n,r?o=>e(o,r):e)}}function Xw(e){const t={};return Object.keys(e).forEach(r=>{const n=e[r];if(r.endsWith("Ref"))t[r]=e[r];else{const i=FI(n);t[r]=()=>i}}),t}function o1(e,t){typeof e=="function"?e(t):e.current=t}function DI(e,t){const r=e.ref;return Fe(typeof r!="string","Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or
. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),r?v.cloneElement(e,{ref:n=>{o1(r,n),o1(t,n)}}):v.cloneElement(e,{ref:t})}class PI{receiveHandlerId(t){this.handlerId!==t&&(this.handlerId=t,this.reconnect())}get connectTarget(){return this.dragSource}get dragSourceOptions(){return this.dragSourceOptionsInternal}set dragSourceOptions(t){this.dragSourceOptionsInternal=t}get dragPreviewOptions(){return this.dragPreviewOptionsInternal}set dragPreviewOptions(t){this.dragPreviewOptionsInternal=t}reconnect(){const t=this.reconnectDragSource();this.reconnectDragPreview(t)}reconnectDragSource(){const t=this.dragSource,r=this.didHandlerIdChange()||this.didConnectedDragSourceChange()||this.didDragSourceOptionsChange();return r&&this.disconnectDragSource(),this.handlerId?t?(r&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragSource=t,this.lastConnectedDragSourceOptions=this.dragSourceOptions,this.dragSourceUnsubscribe=this.backend.connectDragSource(this.handlerId,t,this.dragSourceOptions)),r):(this.lastConnectedDragSource=t,r):r}reconnectDragPreview(t=!1){const r=this.dragPreview,n=t||this.didHandlerIdChange()||this.didConnectedDragPreviewChange()||this.didDragPreviewOptionsChange();if(n&&this.disconnectDragPreview(),!!this.handlerId){if(!r){this.lastConnectedDragPreview=r;return}n&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragPreview=r,this.lastConnectedDragPreviewOptions=this.dragPreviewOptions,this.dragPreviewUnsubscribe=this.backend.connectDragPreview(this.handlerId,r,this.dragPreviewOptions))}}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didConnectedDragSourceChange(){return this.lastConnectedDragSource!==this.dragSource}didConnectedDragPreviewChange(){return this.lastConnectedDragPreview!==this.dragPreview}didDragSourceOptionsChange(){return!qf(this.lastConnectedDragSourceOptions,this.dragSourceOptions)}didDragPreviewOptionsChange(){return!qf(this.lastConnectedDragPreviewOptions,this.dragPreviewOptions)}disconnectDragSource(){this.dragSourceUnsubscribe&&(this.dragSourceUnsubscribe(),this.dragSourceUnsubscribe=void 0)}disconnectDragPreview(){this.dragPreviewUnsubscribe&&(this.dragPreviewUnsubscribe(),this.dragPreviewUnsubscribe=void 0,this.dragPreviewNode=null,this.dragPreviewRef=null)}get dragSource(){return this.dragSourceNode||this.dragSourceRef&&this.dragSourceRef.current}get dragPreview(){return this.dragPreviewNode||this.dragPreviewRef&&this.dragPreviewRef.current}clearDragSource(){this.dragSourceNode=null,this.dragSourceRef=null}clearDragPreview(){this.dragPreviewNode=null,this.dragPreviewRef=null}constructor(t){this.hooks=Xw({dragSource:(r,n)=>{this.clearDragSource(),this.dragSourceOptions=n||null,Qf(r)?this.dragSourceRef=r:this.dragSourceNode=r,this.reconnectDragSource()},dragPreview:(r,n)=>{this.clearDragPreview(),this.dragPreviewOptions=n||null,Qf(r)?this.dragPreviewRef=r:this.dragPreviewNode=r,this.reconnectDragPreview()}}),this.handlerId=null,this.dragSourceRef=null,this.dragSourceOptionsInternal=null,this.dragPreviewRef=null,this.dragPreviewOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDragSource=null,this.lastConnectedDragSourceOptions=null,this.lastConnectedDragPreview=null,this.lastConnectedDragPreviewOptions=null,this.backend=t}}class II{get connectTarget(){return this.dropTarget}reconnect(){const t=this.didHandlerIdChange()||this.didDropTargetChange()||this.didOptionsChange();t&&this.disconnectDropTarget();const r=this.dropTarget;if(this.handlerId){if(!r){this.lastConnectedDropTarget=r;return}t&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDropTarget=r,this.lastConnectedDropTargetOptions=this.dropTargetOptions,this.unsubscribeDropTarget=this.backend.connectDropTarget(this.handlerId,r,this.dropTargetOptions))}}receiveHandlerId(t){t!==this.handlerId&&(this.handlerId=t,this.reconnect())}get dropTargetOptions(){return this.dropTargetOptionsInternal}set dropTargetOptions(t){this.dropTargetOptionsInternal=t}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didDropTargetChange(){return this.lastConnectedDropTarget!==this.dropTarget}didOptionsChange(){return!qf(this.lastConnectedDropTargetOptions,this.dropTargetOptions)}disconnectDropTarget(){this.unsubscribeDropTarget&&(this.unsubscribeDropTarget(),this.unsubscribeDropTarget=void 0)}get dropTarget(){return this.dropTargetNode||this.dropTargetRef&&this.dropTargetRef.current}clearDropTarget(){this.dropTargetRef=null,this.dropTargetNode=null}constructor(t){this.hooks=Xw({dropTarget:(r,n)=>{this.clearDropTarget(),this.dropTargetOptions=n,Qf(r)?this.dropTargetRef=r:this.dropTargetNode=r,this.reconnect()}}),this.handlerId=null,this.dropTargetRef=null,this.dropTargetOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDropTarget=null,this.lastConnectedDropTargetOptions=null,this.backend=t}}function Ao(){const{dragDropManager:e}=v.useContext(Mw);return Fe(e!=null,"Expected drag drop context"),e}function bI(e,t){const r=Ao(),n=v.useMemo(()=>new PI(r.getBackend()),[r]);return li(()=>(n.dragSourceOptions=e||null,n.reconnect(),()=>n.disconnectDragSource()),[n,e]),li(()=>(n.dragPreviewOptions=t||null,n.reconnect(),()=>n.disconnectDragPreview()),[n,t]),n}function kI(){const e=Ao();return v.useMemo(()=>new TI(e),[e])}class $I{beginDrag(){const t=this.spec,r=this.monitor;let n=null;return typeof t.item=="object"?n=t.item:typeof t.item=="function"?n=t.item(r):n={},n??null}canDrag(){const t=this.spec,r=this.monitor;return typeof t.canDrag=="boolean"?t.canDrag:typeof t.canDrag=="function"?t.canDrag(r):!0}isDragging(t,r){const n=this.spec,i=this.monitor,{isDragging:o}=n;return o?o(i):r===t.getSourceId()}endDrag(){const t=this.spec,r=this.monitor,n=this.connector,{end:i}=t;i&&i(r.getItem(),r),n.reconnect()}constructor(t,r,n){this.spec=t,this.monitor=r,this.connector=n}}function NI(e,t,r){const n=v.useMemo(()=>new $I(e,t,r),[t,r]);return v.useEffect(()=>{n.spec=e},[e]),n}function MI(e){return v.useMemo(()=>{const t=e.type;return Fe(t!=null,"spec.type must be defined"),t},[e])}function LI(e,t,r){const n=Ao(),i=NI(e,t,r),o=MI(e);li(function(){if(o!=null){const[s,l]=RI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l}},[n,t,r,i,o])}function BI(e,t){const r=jw(e,t);Fe(!r.begin,"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)");const n=kI(),i=bI(r.options,r.previewOptions);return LI(r,n,i),[Gw(r.collect,n,i),_I(i),SI(i)]}function UI(e){return v.useMemo(()=>e.hooks.dropTarget(),[e])}function HI(e){const t=Ao(),r=v.useMemo(()=>new II(t.getBackend()),[t]);return li(()=>(r.dropTargetOptions=e||null,r.reconnect(),()=>r.disconnectDropTarget()),[e]),r}function VI(){const e=Ao();return v.useMemo(()=>new CI(e),[e])}function WI(e){const{accept:t}=e;return v.useMemo(()=>(Fe(e.accept!=null,"accept must be defined"),Array.isArray(t)?t:[t]),[t])}class zI{canDrop(){const t=this.spec,r=this.monitor;return t.canDrop?t.canDrop(r.getItem(),r):!0}hover(){const t=this.spec,r=this.monitor;t.hover&&t.hover(r.getItem(),r)}drop(){const t=this.spec,r=this.monitor;if(t.drop)return t.drop(r.getItem(),r)}constructor(t,r){this.spec=t,this.monitor=r}}function GI(e,t){const r=v.useMemo(()=>new zI(e,t),[t]);return v.useEffect(()=>{r.spec=e},[e]),r}function jI(e,t,r){const n=Ao(),i=GI(e,t),o=WI(e);li(function(){const[s,l]=AI(o,i,n);return t.receiveHandlerId(s),r.receiveHandlerId(s),l},[n,t,i,r,o.map(a=>a.toString()).join("|")])}function XI(e,t){const r=jw(e,t),n=VI(),i=HI(r.options);return jI(r,n,i),[Gw(r.collect,n,i),UI(i)]}function KI(e,t){return v.useReducer((r,n)=>{const i=t[r][n];return i??r},e)}const Ei=e=>{const{present:t,children:r}=e,n=YI(t),i=typeof r=="function"?r({present:n.isPresent}):v.Children.only(r),o=He(n.ref,i.ref);return typeof r=="function"||n.isPresent?v.cloneElement(i,{ref:o}):null};Ei.displayName="Presence";function YI(e){const[t,r]=v.useState(),n=v.useRef({}),i=v.useRef(e),o=v.useRef("none"),a=e?"mounted":"unmounted",[s,l]=KI(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const u=ks(n.current);o.current=s==="mounted"?u:"none"},[s]),xt(()=>{const u=n.current,c=i.current;if(c!==e){const d=o.current,h=ks(u);e?l("MOUNT"):h==="none"||(u==null?void 0:u.display)==="none"?l("UNMOUNT"):l(c&&d!==h?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,l]),xt(()=>{if(t){const u=f=>{const h=ks(n.current).includes(f.animationName);f.target===t&&h&&Jr.flushSync(()=>l("ANIMATION_END"))},c=f=>{f.target===t&&(o.current=ks(n.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:v.useCallback(u=>{u&&(n.current=getComputedStyle(u)),r(u)},[])}}function ks(e){return(e==null?void 0:e.animationName)||"none"}const Nc="rovingFocusGroup.onEntryFocus",qI={bubbles:!1,cancelable:!0},qd="RovingFocusGroup",[Zf,Kw,QI]=su(qd),[ZI,Yw]=on(qd,[QI]),[JI,e5]=ZI(qd),t5=v.forwardRef((e,t)=>v.createElement(Zf.Provider,{scope:e.__scopeRovingFocusGroup},v.createElement(Zf.Slot,{scope:e.__scopeRovingFocusGroup},v.createElement(r5,de({},e,{ref:t}))))),r5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:o,currentTabStopId:a,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,...c}=e,f=v.useRef(null),d=He(t,f),h=ud(o),[m=null,p]=lo({prop:a,defaultProp:s,onChange:l}),[g,x]=v.useState(!1),w=Dt(u),y=Kw(r),_=v.useRef(!1),[k,N]=v.useState(0);return v.useEffect(()=>{const S=f.current;if(S)return S.addEventListener(Nc,w),()=>S.removeEventListener(Nc,w)},[w]),v.createElement(JI,{scope:r,orientation:n,dir:h,loop:i,currentTabStopId:m,onItemFocus:v.useCallback(S=>p(S),[p]),onItemShiftTab:v.useCallback(()=>x(!0),[]),onFocusableItemAdd:v.useCallback(()=>N(S=>S+1),[]),onFocusableItemRemove:v.useCallback(()=>N(S=>S-1),[])},v.createElement(Ie.div,de({tabIndex:g||k===0?-1:0,"data-orientation":n},c,{ref:d,style:{outline:"none",...e.style},onMouseDown:Ee(e.onMouseDown,()=>{_.current=!0}),onFocus:Ee(e.onFocus,S=>{const A=!_.current;if(S.target===S.currentTarget&&A&&!g){const R=new CustomEvent(Nc,qI);if(S.currentTarget.dispatchEvent(R),!R.defaultPrevented){const L=y().filter(re=>re.focusable),V=L.find(re=>re.active),U=L.find(re=>re.id===m),Y=[V,U,...L].filter(Boolean).map(re=>re.ref.current);qw(Y)}}_.current=!1}),onBlur:Ee(e.onBlur,()=>x(!1))})))}),n5="RovingFocusGroupItem",i5=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:o,...a}=e,s=Xr(),l=o||s,u=e5(n5,r),c=u.currentTabStopId===l,f=Kw(r),{onFocusableItemAdd:d,onFocusableItemRemove:h}=u;return v.useEffect(()=>{if(n)return d(),()=>h()},[n,d,h]),v.createElement(Zf.ItemSlot,{scope:r,id:l,focusable:n,active:i},v.createElement(Ie.span,de({tabIndex:c?0:-1,"data-orientation":u.orientation},a,{ref:t,onMouseDown:Ee(e.onMouseDown,m=>{n?u.onItemFocus(l):m.preventDefault()}),onFocus:Ee(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:Ee(e.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){u.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const p=s5(m,u.orientation,u.dir);if(p!==void 0){m.preventDefault();let x=f().filter(w=>w.focusable).map(w=>w.ref.current);if(p==="last")x.reverse();else if(p==="prev"||p==="next"){p==="prev"&&x.reverse();const w=x.indexOf(m.currentTarget);x=u.loop?l5(x,w+1):x.slice(w+1)}setTimeout(()=>qw(x))}})})))}),o5={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function a5(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function s5(e,t,r){const n=a5(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return o5[n]}function qw(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function l5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}const u5=t5,c5=i5,f5=["Enter"," "],d5=["ArrowDown","PageUp","Home"],Qw=["ArrowUp","PageDown","End"],h5=[...d5,...Qw],Du="Menu",[Jf,p5,g5]=su(Du),[_i,Pu]=on(Du,[g5,fu,Yw]),Qd=fu(),Zw=Yw(),[m5,ns]=_i(Du),[v5,Zd]=_i(Du),x5=e=>{const{__scopeMenu:t,open:r=!1,children:n,dir:i,onOpenChange:o,modal:a=!0}=e,s=Qd(t),[l,u]=v.useState(null),c=v.useRef(!1),f=Dt(o),d=ud(i);return v.useEffect(()=>{const h=()=>{c.current=!0,document.addEventListener("pointerdown",m,{capture:!0,once:!0}),document.addEventListener("pointermove",m,{capture:!0,once:!0})},m=()=>c.current=!1;return document.addEventListener("keydown",h,{capture:!0}),()=>{document.removeEventListener("keydown",h,{capture:!0}),document.removeEventListener("pointerdown",m,{capture:!0}),document.removeEventListener("pointermove",m,{capture:!0})}},[]),v.createElement(Nv,s,v.createElement(m5,{scope:t,open:r,onOpenChange:f,content:l,onContentChange:u},v.createElement(v5,{scope:t,onClose:v.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:c,dir:d,modal:a},n)))},w5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e,i=Qd(r);return v.createElement(Mv,de({},i,n,{ref:t}))}),Jw="MenuPortal",[y5,E5]=_i(Jw,{forceMount:void 0}),_5=e=>{const{__scopeMenu:t,forceMount:r,children:n,container:i}=e,o=ns(Jw,t);return v.createElement(y5,{scope:t,forceMount:r},v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},n)))},Rn="MenuContent",[S5,e2]=_i(Rn),T5=v.forwardRef((e,t)=>{const r=E5(Rn,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,o=ns(Rn,e.__scopeMenu),a=Zd(Rn,e.__scopeMenu);return v.createElement(Jf.Provider,{scope:e.__scopeMenu},v.createElement(Ei,{present:n||o.open},v.createElement(Jf.Slot,{scope:e.__scopeMenu},a.modal?v.createElement(C5,de({},i,{ref:t})):v.createElement(A5,de({},i,{ref:t})))))}),C5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu),n=v.useRef(null),i=He(t,n);return v.useEffect(()=>{const o=n.current;if(o)return vd(o)},[]),v.createElement(t2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)}))}),A5=v.forwardRef((e,t)=>{const r=ns(Rn,e.__scopeMenu);return v.createElement(t2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)}))}),t2=v.forwardRef((e,t)=>{const{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h,disableOutsideScroll:m,...p}=e,g=ns(Rn,r),x=Zd(Rn,r),w=Qd(r),y=Zw(r),_=p5(r),[k,N]=v.useState(null),S=v.useRef(null),A=He(t,S,g.onContentChange),R=v.useRef(0),L=v.useRef(""),V=v.useRef(0),U=v.useRef(null),W=v.useRef("right"),Y=v.useRef(0),re=m?xd:v.Fragment,ye=m?{as:ii,allowPinchZoom:!0}:void 0,ge=ie=>{var we,Z;const F=L.current+ie,M=_().filter(ee=>!ee.disabled),b=document.activeElement,T=(we=M.find(ee=>ee.ref.current===b))===null||we===void 0?void 0:we.textValue,B=M.map(ee=>ee.textValue),H=M5(B,F,T),Q=(Z=M.find(ee=>ee.textValue===H))===null||Z===void 0?void 0:Z.ref.current;(function ee(K){L.current=K,window.clearTimeout(R.current),K!==""&&(R.current=window.setTimeout(()=>ee(""),1e3))})(F),Q&&setTimeout(()=>Q.focus())};v.useEffect(()=>()=>window.clearTimeout(R.current),[]),fd();const Se=v.useCallback(ie=>{var we,Z;return W.current===((we=U.current)===null||we===void 0?void 0:we.side)&&B5(ie,(Z=U.current)===null||Z===void 0?void 0:Z.area)},[]);return v.createElement(S5,{scope:r,searchRef:L,onItemEnter:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),onItemLeave:v.useCallback(ie=>{var we;Se(ie)||((we=S.current)===null||we===void 0||we.focus(),N(null))},[Se]),onTriggerLeave:v.useCallback(ie=>{Se(ie)&&ie.preventDefault()},[Se]),pointerGraceTimerRef:V,onPointerGraceIntentChange:v.useCallback(ie=>{U.current=ie},[])},v.createElement(re,ye,v.createElement(dd,{asChild:!0,trapped:i,onMountAutoFocus:Ee(o,ie=>{var we;ie.preventDefault(),(we=S.current)===null||we===void 0||we.focus()}),onUnmountAutoFocus:a},v.createElement(lu,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:f,onInteractOutside:d,onDismiss:h},v.createElement(u5,de({asChild:!0},y,{dir:x.dir,orientation:"vertical",loop:n,currentTabStopId:k,onCurrentTabStopIdChange:N,onEntryFocus:Ee(l,ie=>{x.isUsingKeyboardRef.current||ie.preventDefault()})}),v.createElement(Lv,de({role:"menu","aria-orientation":"vertical","data-state":k5(g.open),"data-radix-menu-content":"",dir:x.dir},w,p,{ref:A,style:{outline:"none",...p.style},onKeyDown:Ee(p.onKeyDown,ie=>{const Z=ie.target.closest("[data-radix-menu-content]")===ie.currentTarget,F=ie.ctrlKey||ie.altKey||ie.metaKey,M=ie.key.length===1;Z&&(ie.key==="Tab"&&ie.preventDefault(),!F&&M&&ge(ie.key));const b=S.current;if(ie.target!==b||!h5.includes(ie.key))return;ie.preventDefault();const B=_().filter(H=>!H.disabled).map(H=>H.ref.current);Qw.includes(ie.key)&&B.reverse(),$5(B)}),onBlur:Ee(e.onBlur,ie=>{ie.currentTarget.contains(ie.target)||(window.clearTimeout(R.current),L.current="")}),onPointerMove:Ee(e.onPointerMove,t0(ie=>{const we=ie.target,Z=Y.current!==ie.clientX;if(ie.currentTarget.contains(we)&&Z){const F=ie.clientX>Y.current?"right":"left";W.current=F,Y.current=ie.clientX}}))})))))))}),R5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({role:"group"},n,{ref:t}))}),O5=v.forwardRef((e,t)=>{const{__scopeMenu:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),e0="MenuItem",a1="menu.itemSelect",F5=v.forwardRef((e,t)=>{const{disabled:r=!1,onSelect:n,...i}=e,o=v.useRef(null),a=Zd(e0,e.__scopeMenu),s=e2(e0,e.__scopeMenu),l=He(t,o),u=v.useRef(!1),c=()=>{const f=o.current;if(!r&&f){const d=new CustomEvent(a1,{bubbles:!0,cancelable:!0});f.addEventListener(a1,h=>n==null?void 0:n(h),{once:!0}),cd(f,d),d.defaultPrevented?u.current=!1:a.onClose()}};return v.createElement(D5,de({},i,{ref:l,disabled:r,onClick:Ee(e.onClick,c),onPointerDown:f=>{var d;(d=e.onPointerDown)===null||d===void 0||d.call(e,f),u.current=!0},onPointerUp:Ee(e.onPointerUp,f=>{var d;u.current||(d=f.currentTarget)===null||d===void 0||d.click()}),onKeyDown:Ee(e.onKeyDown,f=>{const d=s.searchRef.current!=="";r||d&&f.key===" "||f5.includes(f.key)&&(f.currentTarget.click(),f.preventDefault())})}))}),D5=v.forwardRef((e,t)=>{const{__scopeMenu:r,disabled:n=!1,textValue:i,...o}=e,a=e2(e0,r),s=Zw(r),l=v.useRef(null),u=He(t,l),[c,f]=v.useState(!1),[d,h]=v.useState("");return v.useEffect(()=>{const m=l.current;if(m){var p;h(((p=m.textContent)!==null&&p!==void 0?p:"").trim())}},[o.children]),v.createElement(Jf.ItemSlot,{scope:r,disabled:n,textValue:i??d},v.createElement(c5,de({asChild:!0},s,{focusable:!n}),v.createElement(Ie.div,de({role:"menuitem","data-highlighted":c?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0},o,{ref:u,onPointerMove:Ee(e.onPointerMove,t0(m=>{n?a.onItemLeave(m):(a.onItemEnter(m),m.defaultPrevented||m.currentTarget.focus())})),onPointerLeave:Ee(e.onPointerLeave,t0(m=>a.onItemLeave(m))),onFocus:Ee(e.onFocus,()=>f(!0)),onBlur:Ee(e.onBlur,()=>f(!1))}))))}),P5="MenuRadioGroup";_i(P5,{value:void 0,onValueChange:()=>{}});const I5="MenuItemIndicator";_i(I5,{checked:!1});const b5="MenuSub";_i(b5);function k5(e){return e?"open":"closed"}function $5(e){const t=document.activeElement;for(const r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function N5(e,t){return e.map((r,n)=>e[(t+n)%e.length])}function M5(e,t,r){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=r?e.indexOf(r):-1;let a=N5(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==r));const l=a.find(u=>u.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}function L5(e,t){const{x:r,y:n}=e;let i=!1;for(let o=0,a=t.length-1;on!=c>n&&r<(u-s)*(n-l)/(c-l)+s&&(i=!i)}return i}function B5(e,t){if(!t)return!1;const r={x:e.clientX,y:e.clientY};return L5(r,t)}function t0(e){return t=>t.pointerType==="mouse"?e(t):void 0}const r2=x5,n2=w5,i2=_5,o2=T5,U5=R5,H5=O5,V5=F5,a2="ContextMenu",[W5,Uk]=on(a2,[Pu]),Iu=Pu(),[z5,s2]=W5(a2),G5=e=>{const{__scopeContextMenu:t,children:r,onOpenChange:n,dir:i,modal:o=!0}=e,[a,s]=v.useState(!1),l=Iu(t),u=Dt(n),c=v.useCallback(f=>{s(f),u(f)},[u]);return v.createElement(z5,{scope:t,open:a,onOpenChange:c,modal:o},v.createElement(r2,de({},l,{dir:i,open:a,onOpenChange:c,modal:o}),r))},j5="ContextMenuTrigger",X5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,disabled:n=!1,...i}=e,o=s2(j5,r),a=Iu(r),s=v.useRef({x:0,y:0}),l=v.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...s.current})}),u=v.useRef(0),c=v.useCallback(()=>window.clearTimeout(u.current),[]),f=d=>{s.current={x:d.clientX,y:d.clientY},o.onOpenChange(!0)};return v.useEffect(()=>c,[c]),v.useEffect(()=>void(n&&c()),[n,c]),v.createElement(v.Fragment,null,v.createElement(n2,de({},a,{virtualRef:l})),v.createElement(Ie.span,de({"data-state":o.open?"open":"closed","data-disabled":n?"":void 0},i,{ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:n?e.onContextMenu:Ee(e.onContextMenu,d=>{c(),f(d),d.preventDefault()}),onPointerDown:n?e.onPointerDown:Ee(e.onPointerDown,$s(d=>{c(),u.current=window.setTimeout(()=>f(d),700)})),onPointerMove:n?e.onPointerMove:Ee(e.onPointerMove,$s(c)),onPointerCancel:n?e.onPointerCancel:Ee(e.onPointerCancel,$s(c)),onPointerUp:n?e.onPointerUp:Ee(e.onPointerUp,$s(c))})))}),K5=e=>{const{__scopeContextMenu:t,...r}=e,n=Iu(t);return v.createElement(i2,de({},n,r))},Y5="ContextMenuContent",q5=v.forwardRef((e,t)=>{const{__scopeContextMenu:r,...n}=e,i=s2(Y5,r),o=Iu(r),a=v.useRef(!1);return v.createElement(o2,de({},o,n,{ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:s=>{var l;(l=e.onCloseAutoFocus)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&a.current&&s.preventDefault(),a.current=!1},onInteractOutside:s=>{var l;(l=e.onInteractOutside)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&!i.modal&&(a.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))});function $s(e){return t=>t.pointerType!=="mouse"?e(t):void 0}const Q5=G5,Z5=X5,J5=K5,e8=q5;function t8({column:e,table:t,numberOfColumns:r}){const n=t.getPreFilteredRowModel().flatRows.map(u=>u.getValue(e.id)),i=n.every(u=>typeof u=="string"||u===null),o=n.every(u=>typeof u=="number"||u===null),a=n.some(u=>typeof u=="string"&&u.includes(" ")),s=e.getFilterValue();if(n.every(u=>typeof u!="string"?!1:u.replace(/[^0-9]/g,"").length>=4&&(Wd(e.id)||e.id.toLowerCase()==="index"&&!a))){let u=function(c){if(!c)return null;const f=new Date(c),d=f.getFullYear(),h=f.getMonth()+1>9?f.getMonth()+1:`0${f.getMonth()+1}`,m=f.getDate()>9?f.getDate():`0${f.getDate()}`;return`${d}-${h}-${m}`};return Te("div",{className:"flex gap-2 h-10",children:[q("input",{type:"datetime-local",value:u(s==null?void 0:s[0])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[f,d==null?void 0:d[1]])},placeholder:"Start date",className:"_input"}),q("input",{type:"datetime-local",value:u(s==null?void 0:s[1])??"",onChange:c=>{const f=new Date(c.target.value).getTime();e.setFilterValue(d=>[d==null?void 0:d[0],f])},placeholder:"End date",className:"_input"})]})}return o?Te("div",{className:"flex gap-0.5 h-10",children:[q("input",{type:"number",value:(s==null?void 0:s[0])??"",onChange:u=>e.setFilterValue(c=>[u.target.value,c==null?void 0:c[1]]),placeholder:"Min",className:"_input p-0.5"}),q("input",{type:"number",value:(s==null?void 0:s[1])??"",onChange:u=>e.setFilterValue(c=>[c==null?void 0:c[0],u.target.value]),placeholder:"Max",className:"_input p-0.5"})]}):i?q("div",{className:"h-10",children:q("input",{type:"text",value:s??"",onChange:u=>e.setFilterValue(u.target.value),placeholder:"Search...",className:"_input"})}):q("div",{className:"h-10"})}const r8=(e,t,r)=>(r.splice(r.indexOf(t),0,r.splice(r.indexOf(e),1)[0]),[...r]),n8=({header:e,table:t,advanced:r,idx:n,lockFirstColumn:i,setLockFirstColumn:o})=>{const{getState:a,setColumnOrder:s}=t,{columnOrder:l}=a(),{column:u}=e,[,c]=XI({accept:"column",drop:p=>{const g=r8(p.id,u.id,l);s(g)}}),[{isDragging:f},d,h]=BI({collect:p=>({isDragging:p.isDragging()}),item:()=>u,type:"column"}),m=()=>q("div",{ref:h,className:"flex gap-1 flex-col",children:e.isPlaceholder?null:Te($1,{children:[Te("div",{className:"font-bold uppercase text-grey-700 dark:text-white tracking-widest flex gap-2 whitespace-nowrap justify-between",children:[Te("div",{onClick:u.getToggleSortingHandler(),className:bt("flex gap-1",{"cursor-pointer select-none":u.getCanSort()}),children:[bf(u.columnDef.header,e.getContext()),u.getCanSort()&&Te("div",{className:"flex flex-col gap-0.5 items-center justify-center",children:[q("button",{className:bt({"text-[#669DCB]":u.getIsSorted()==="asc","text-grey-600":u.getIsSorted()!=="asc"}),children:q("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:q("path",{fill:"currentColor",d:"M10.333 5l-5-5-5 5"})})}),q("button",{className:bt({"text-[#669DCB]":e.column.getIsSorted()==="desc","text-grey-600":e.column.getIsSorted()!=="desc"}),children:q("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"4",fill:"none",viewBox:"0 0 11 5",children:q("path",{fill:"currentColor",d:"M.333 0l5 5 5-5"})})})]})]}),r&&u.id!=="select"&&q("button",{ref:d,className:"text-grey-600 hover:text-grey-800 dark:hover:text-white",children:q("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"16",fill:"none",viewBox:"0 0 17 16",children:q("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",d:"M3.667 6l-2 2 2 2M6.333 3.333l2-2 2 2M10.333 12.667l-2 2-2-2M13 6l2 2-2 2M1.667 8H15M8.333 1.333v13.334"})})})]}),r&&u.getCanFilter()?q("div",{children:q(t8,{column:u,table:t,numberOfColumns:l.length})}):null]})});return Te("th",{className:bt("h-[70px] p-4 sticky",{"left-0 z-50 bg-white dark:bg-grey-900":n===0&&i}),colSpan:e.colSpan,style:{width:e.getSize(),opacity:f?.5:1},ref:c,children:[n===0?Te(Q5,{children:[q(Z5,{asChild:!0,children:m()}),q(J5,{children:q(e8,{className:"bg-white text-black dark:text-white dark:bg-grey-900 border border-grey-200 dark:border-grey-800 rounded-md shadow-lg p-2 z-50 text-xs",children:q("div",{className:"flex flex-col gap-2",children:Te("button",{onClick:()=>{o(!i)},className:"hover:bg-grey-300 dark:hover:bg-grey-800 rounded-md p-2",children:[i?"Unlock":"Lock"," first column"]})})})})]}):m(),q("button",{className:"resizer bg-grey-300/20 dark:hover:bg-white absolute top-0 right-0 w-0.5 h-full",onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler()})]})};function l2(e){return typeof e!="number"?typeof e=="string"&&e.includes("All")?e:o0:e<1?o0:e}function i8({table:e,currentPage:t,setCurrentPage:r}){const n=e.getFilteredRowModel().rows.length;return Te("div",{className:"hidden md:flex items-center gap-8",children:[q(Vi,{value:t,onChange:i=>{const o=l2(i);r(o),o.toString().includes("All")?e.setPageSize(n):e.setPageSize(o)},labelType:"row",label:"Rows per page",placeholder:"Select rows per page",groups:[{label:"Rows per page",items:[10,20,30,40,50,`All (${n})`].map(i=>({label:`${i}`,value:i}))}]}),Te("span",{className:"flex items-center gap-1",children:[q("strong",{children:e.getState().pagination.pageIndex+1}),"of",q("strong",{children:e.getPageCount()})]}),Te("div",{className:"hidden lg:block",children:[q("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:"<<"}),q("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanPreviousPage(),"dark:text-white":e.getCanPreviousPage()}),onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:"<"}),q("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:">"}),q("button",{className:bt("px-2",{"text-grey-400 dark:text-grey-700":!e.getCanNextPage(),"dark:text-white":e.getCanNextPage()}),onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:">>"})]})]})}function o8({columns:e,data:t,type:r,setType:n}){const i=()=>{switch(r){case"csv":qg("csv",e,t);break;case"xlsx":qg("xlsx",e,t);break;case"png":JD("table");break}};return Te("div",{className:"flex gap-6 items-center",children:[q(Vi,{labelType:"row",value:r,onChange:o=>{n(o)},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:a0.map(o=>({label:o,value:o}))}]}),q("button",{onClick:i,className:"_btn",children:"Export"})]})}const u2="DropdownMenu",[a8,Hk]=on(u2,[Pu]),Si=Pu(),[s8,c2]=a8(u2),l8=e=>{const{__scopeDropdownMenu:t,children:r,dir:n,open:i,defaultOpen:o,onOpenChange:a,modal:s=!0}=e,l=Si(t),u=v.useRef(null),[c=!1,f]=lo({prop:i,defaultProp:o,onChange:a});return v.createElement(s8,{scope:t,triggerId:Xr(),triggerRef:u,contentId:Xr(),open:c,onOpenChange:f,onOpenToggle:v.useCallback(()=>f(d=>!d),[f]),modal:s},v.createElement(r2,de({},l,{open:c,onOpenChange:f,dir:n,modal:s}),r))},u8="DropdownMenuTrigger",c8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,disabled:n=!1,...i}=e,o=c2(u8,r),a=Si(r);return v.createElement(n2,de({asChild:!0},a),v.createElement(Ie.button,de({type:"button",id:o.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?"open":"closed","data-disabled":n?"":void 0,disabled:n},i,{ref:ld(t,o.triggerRef),onPointerDown:Ee(e.onPointerDown,s=>{!n&&s.button===0&&s.ctrlKey===!1&&(o.onOpenToggle(),o.open||s.preventDefault())}),onKeyDown:Ee(e.onKeyDown,s=>{n||(["Enter"," "].includes(s.key)&&o.onOpenToggle(),s.key==="ArrowDown"&&o.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(s.key)&&s.preventDefault())})})))}),f8=e=>{const{__scopeDropdownMenu:t,...r}=e,n=Si(t);return v.createElement(i2,de({},n,r))},d8="DropdownMenuContent",h8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=c2(d8,r),o=Si(r),a=v.useRef(!1);return v.createElement(o2,de({id:i.contentId,"aria-labelledby":i.triggerId},o,n,{ref:t,onCloseAutoFocus:Ee(e.onCloseAutoFocus,s=>{var l;a.current||(l=i.triggerRef.current)===null||l===void 0||l.focus(),a.current=!1,s.preventDefault()}),onInteractOutside:Ee(e.onInteractOutside,s=>{const l=s.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,c=l.button===2||u;(!i.modal||c)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}}))}),p8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(U5,de({},i,n,{ref:t}))}),g8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(H5,de({},i,n,{ref:t}))}),m8=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:r,...n}=e,i=Si(r);return v.createElement(V5,de({},i,n,{ref:t}))}),v8=l8,s1=c8,x8=f8,w8=h8,y8=p8,E8=g8,Mc=m8;function _8(e,t){v.useEffect(()=>{const r=n=>{!e.current||e.current.contains(n.target)||t(n)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}},[e,t])}function l1({label:e,table:t,onlyIconTrigger:r=!1}){const[n,i]=v.useState(!1),o=v.useRef(null);_8(o,()=>i(!1)),v.useEffect(()=>{const s=l=>{l.key==="Escape"&&i(!1)};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[]);function a(){t.resetColumnFilters(),i(!1)}return Te(v8,{open:n,children:[r?q(s1,{title:"Filter columns",onClick:()=>i(!n),children:q("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"w-7 h-7",children:q("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z"})})}):Te(y8,{className:"flex flex-row items-center gap-2",children:[q(E8,{className:"whitespace-nowrap",children:e}),Te(s1,{onClick:()=>i(!n),className:"bg-white text-black dark:bg-grey-900 dark:text-white whitespace-nowrap h-[36px] border-[1.5px] border-grey-700 rounded p-3 inline-flex items-center justify-center leading-none gap-[5px] shadow-[0_2px_10px] shadow-black/10 focus:shadow-[0_0_0_2px] focus:shadow-black data-[placeholder]:text-white outline-none","aria-label":e,children:[q("span",{children:"Filter columns"}),q(Vf,{className:bt({"transform rotate-180 duration-200 transition":n})})]})]}),q(x8,{children:Te(w8,{sideOffset:10,ref:o,className:"z-50 bg-white/80 dark:bg-grey-900/80 backdrop-filter backdrop-blur flex flex-col gap-4 overflow-auto border-[1.5px] border-grey-700 rounded p-3 max-h-[500px] text-black dark:text-white",children:[q(Mc,{children:q("button",{className:"_btn w-full",onClick:a,children:"Clear Filters"})}),q(Mc,{children:Te("label",{className:"flex items-center gap-2",children:[q("input",{type:"checkbox",checked:t.getIsAllColumnsVisible(),onChange:t.getToggleAllColumnsVisibilityHandler()}),"Toggle All"]})}),t.getAllLeafColumns().filter(s=>s.id!=="select").map(s=>q(Mc,{children:Te("label",{className:"flex items-center gap-2",children:[q("input",{type:"checkbox",checked:s.getIsVisible(),onChange:s.getToggleVisibilityHandler()}),s.id]})},s.id))]})})]})}var Gl={},S8={get exports(){return Gl},set exports(e){Gl=e}},qe={},fo={},T8={get exports(){return fo},set exports(e){fo=e}},Ti={};function f2(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function C8(e,t,r){}function A8(e,t,r){}var R8=/javascript\s*\:/img;function O8(e,t){return R8.test(t)?"":t}Ti.whiteList=f2();Ti.getDefaultWhiteList=f2;Ti.onAttr=C8;Ti.onIgnoreAttr=A8;Ti.safeAttrValue=O8;var F8={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r/g,z8=/"/g,G8=/"/g,j8=/&#([a-zA-Z0-9]*);?/gim,X8=/:?/gim,K8=/&newline;?/gim,Ms=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,c1=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,f1=/u\s*r\s*l\s*\(.*/gi;function m2(e){return e.replace(z8,""")}function v2(e){return e.replace(G8,'"')}function x2(e){return e.replace(j8,function(r,n){return n[0]==="x"||n[0]==="X"?String.fromCharCode(parseInt(n.substr(1),16)):String.fromCharCode(parseInt(n,10))})}function w2(e){return e.replace(X8,":").replace(K8," ")}function y2(e){for(var t="",r=0,n=e.length;r",n);if(i===-1)break;r=i+3}return t}function Z8(e){var t=e.split("");return t=t.filter(function(r){var n=r.charCodeAt(0);return n===127?!1:n<=31?n===10||n===13:!0}),t.join("")}qe.whiteList=h2();qe.getDefaultWhiteList=h2;qe.onTag=M8;qe.onIgnoreTag=L8;qe.onTagAttr=B8;qe.onIgnoreTagAttr=U8;qe.safeAttrValue=H8;qe.escapeHtml=g2;qe.escapeQuote=m2;qe.unescapeQuote=v2;qe.escapeHtmlEntities=x2;qe.escapeDangerHtml5Entities=w2;qe.clearNonPrintableCharacter=y2;qe.friendlyAttrValue=E2;qe.escapeAttrValue=_2;qe.onIgnoreTagStripAll=Y8;qe.StripTagBody=q8;qe.stripCommentTag=Q8;qe.stripBlankChar=Z8;qe.cssFilter=p2;qe.getDefaultCSSWhiteList=N8;var bu={},cn=Jd;function J8(e){var t=cn.spaceIndex(e),r;return t===-1?r=e.slice(1,-1):r=e.slice(1,t+1),r=cn.trim(r).toLowerCase(),r.slice(0,1)==="/"&&(r=r.slice(1)),r.slice(-1)==="/"&&(r=r.slice(0,-1)),r}function eb(e){return e.slice(0,2)===""||s===l-1){n+=r(e.slice(i,o)),c=e.slice(o,s+1),u=J8(c),n+=t(o,n.length,u,c,eb(c)),i=s+1,o=!1;continue}if(f==='"'||f==="'")for(var d=1,h=e.charAt(s-d);h.trim()===""||h==="=";){if(h==="="){a=f;continue e}h=e.charAt(s-++d)}}else if(f===a){a=!1;continue}}return i0;t--){var r=e[t];if(r!==" ")return r==="="?t:-1}}function sb(e){return e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'"}function d1(e){return sb(e)?e.substr(1,e.length-2):e}bu.parseTag=tb;bu.parseAttr=nb;var lb=fo.FilterCSS,xr=qe,S2=bu,ub=S2.parseTag,cb=S2.parseAttr,tl=Jd;function Ls(e){return e==null}function fb(e){var t=tl.spaceIndex(e);if(t===-1)return{html:"",closing:e[e.length-2]==="/"};e=tl.trim(e.slice(t+1,-1));var r=e[e.length-1]==="/";return r&&(e=tl.trim(e.slice(0,-1))),{html:e,closing:r}}function db(e){var t={};for(var r in e)t[r]=e[r];return t}function hb(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(n){return n.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}function T2(e){e=db(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=xr.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=hb(e.whiteList||e.allowList):e.whiteList=xr.whiteList,e.onTag=e.onTag||xr.onTag,e.onTagAttr=e.onTagAttr||xr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||xr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||xr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||xr.safeAttrValue,e.escapeHtml=e.escapeHtml||xr.escapeHtml,this.options=e,e.css===!1?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new lb(e.css))}T2.prototype.process=function(e){if(e=e||"",e=e.toString(),!e)return"";var t=this,r=t.options,n=r.whiteList,i=r.onTag,o=r.onIgnoreTag,a=r.onTagAttr,s=r.onIgnoreTagAttr,l=r.safeAttrValue,u=r.escapeHtml,c=t.cssFilter;r.stripBlankChar&&(e=xr.stripBlankChar(e)),r.allowCommentTag||(e=xr.stripCommentTag(e));var f=!1;r.stripIgnoreTagBody&&(f=xr.StripTagBody(r.stripIgnoreTagBody,o),o=f.onIgnoreTag);var d=ub(e,function(h,m,p,g,x){var w={sourcePosition:h,position:m,isClosing:x,isWhite:Object.prototype.hasOwnProperty.call(n,p)},y=i(p,g,w);if(!Ls(y))return y;if(w.isWhite){if(w.isClosing)return"";var _=fb(g),k=n[p],N=cb(_.html,function(S,A){var R=tl.indexOf(k,S)!==-1,L=a(p,S,A,R);return Ls(L)?R?(A=l(p,S,A,c),A?S+'="'+A+'"':S):(L=s(p,S,A,R),Ls(L)?void 0:L):L});return g="<"+p,N&&(g+=" "+N),_.closing&&(g+=" /"),g+=">",g}else return y=o(p,g,w),Ls(y)?u(g):y},u);return f&&(d=f.remove(d)),d};var pb=T2;(function(e,t){var r=qe,n=bu,i=pb;function o(s,l){var u=new i(l);return u.process(s)}t=e.exports=o,t.filterXSS=o,t.FilterXSS=i,function(){for(var s in r)t[s]=r[s];for(var l in n)t[l]=n[l]}(),typeof window<"u"&&(window.filterXSS=e.exports);function a(){return typeof self<"u"&&typeof DedicatedWorkerGlobalScope<"u"&&self instanceof DedicatedWorkerGlobalScope}a()&&(self.filterXSS=e.exports)})(S8,Gl);const gb=Gl;function jo(e,t,r){const[n,i]=v.useState(()=>{if(typeof window>"u")return t;try{const a=window.localStorage.getItem(e);return a?r?r(JSON.parse(a)):JSON.parse(a):t}catch(a){return console.log(a),t}});return[n,a=>{try{const s=a instanceof Function?a(n):a;i(s),typeof window<"u"&&window.localStorage.setItem(e,JSON.stringify(s))}catch(s){console.log(s)}}]}const C2="ToastProvider",[eh,mb,vb]=su("Toast"),[A2,Vk]=on("Toast",[vb]),[xb,ku]=A2(C2),R2=e=>{const{__scopeToast:t,label:r="Notification",duration:n=5e3,swipeDirection:i="right",swipeThreshold:o=50,children:a}=e,[s,l]=v.useState(null),[u,c]=v.useState(0),f=v.useRef(!1),d=v.useRef(!1);return v.createElement(eh.Provider,{scope:t},v.createElement(xb,{scope:t,label:r,duration:n,swipeDirection:i,swipeThreshold:o,toastCount:u,viewport:s,onViewportChange:l,onToastAdd:v.useCallback(()=>c(h=>h+1),[]),onToastRemove:v.useCallback(()=>c(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:d},a))};R2.propTypes={label(e){if(e.label&&typeof e.label=="string"&&!e.label.trim()){const t=`Invalid prop \`label\` supplied to \`${C2}\`. Expected non-empty \`string\`.`;return new Error(t)}return null}};const wb="ToastViewport",yb=["F8"],r0="toast.viewportPause",n0="toast.viewportResume",Eb=v.forwardRef((e,t)=>{const{__scopeToast:r,hotkey:n=yb,label:i="Notifications ({hotkey})",...o}=e,a=ku(wb,r),s=mb(r),l=v.useRef(null),u=v.useRef(null),c=v.useRef(null),f=v.useRef(null),d=He(t,f,a.onViewportChange),h=n.join("+").replace(/Key/g,"").replace(/Digit/g,""),m=a.toastCount>0;v.useEffect(()=>{const g=x=>{var w;n.every(_=>x[_]||x.code===_)&&((w=f.current)===null||w===void 0||w.focus())};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[n]),v.useEffect(()=>{const g=l.current,x=f.current;if(m&&g&&x){const w=()=>{if(!a.isClosePausedRef.current){const N=new CustomEvent(r0);x.dispatchEvent(N),a.isClosePausedRef.current=!0}},y=()=>{if(a.isClosePausedRef.current){const N=new CustomEvent(n0);x.dispatchEvent(N),a.isClosePausedRef.current=!1}},_=N=>{!g.contains(N.relatedTarget)&&y()},k=()=>{g.contains(document.activeElement)||y()};return g.addEventListener("focusin",w),g.addEventListener("focusout",_),g.addEventListener("pointermove",w),g.addEventListener("pointerleave",k),window.addEventListener("blur",w),window.addEventListener("focus",y),()=>{g.removeEventListener("focusin",w),g.removeEventListener("focusout",_),g.removeEventListener("pointermove",w),g.removeEventListener("pointerleave",k),window.removeEventListener("blur",w),window.removeEventListener("focus",y)}}},[m,a.isClosePausedRef]);const p=v.useCallback(({tabbingDirection:g})=>{const w=s().map(y=>{const _=y.ref.current,k=[_,...Lb(_)];return g==="forwards"?k:k.reverse()});return(g==="forwards"?w.reverse():w).flat()},[s]);return v.useEffect(()=>{const g=f.current;if(g){const x=w=>{const y=w.altKey||w.ctrlKey||w.metaKey;if(w.key==="Tab"&&!y){const A=document.activeElement,R=w.shiftKey;if(w.target===g&&R){var k;(k=u.current)===null||k===void 0||k.focus();return}const U=p({tabbingDirection:R?"backwards":"forwards"}),W=U.findIndex(Y=>Y===A);if(Lc(U.slice(W+1)))w.preventDefault();else{var N,S;R?(N=u.current)===null||N===void 0||N.focus():(S=c.current)===null||S===void 0||S.focus()}}};return g.addEventListener("keydown",x),()=>g.removeEventListener("keydown",x)}},[s,p]),v.createElement(TS,{ref:l,role:"region","aria-label":i.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:m?void 0:"none"}},m&&v.createElement(h1,{ref:u,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"forwards"});Lc(g)}}),v.createElement(eh.Slot,{scope:r},v.createElement(Ie.ol,de({tabIndex:-1},o,{ref:d}))),m&&v.createElement(h1,{ref:c,onFocusFromOutsideViewport:()=>{const g=p({tabbingDirection:"backwards"});Lc(g)}}))}),_b="ToastFocusProxy",h1=v.forwardRef((e,t)=>{const{__scopeToast:r,onFocusFromOutsideViewport:n,...i}=e,o=ku(_b,r);return v.createElement(md,de({"aria-hidden":!0,tabIndex:0},i,{ref:t,style:{position:"fixed"},onFocus:a=>{var s;const l=a.relatedTarget;!((s=o.viewport)!==null&&s!==void 0&&s.contains(l))&&n()}}))}),$u="Toast",Sb="toast.swipeStart",Tb="toast.swipeMove",Cb="toast.swipeCancel",Ab="toast.swipeEnd",Rb=v.forwardRef((e,t)=>{const{forceMount:r,open:n,defaultOpen:i,onOpenChange:o,...a}=e,[s=!0,l]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Ei,{present:r||s},v.createElement(O2,de({open:s},a,{ref:t,onClose:()=>l(!1),onPause:Dt(e.onPause),onResume:Dt(e.onResume),onSwipeStart:Ee(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:Ee(e.onSwipeMove,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${f}px`)}),onSwipeCancel:Ee(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:Ee(e.onSwipeEnd,u=>{const{x:c,y:f}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${c}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${f}px`),l(!1)})})))}),[Ob,Fb]=A2($u,{onClose(){}}),O2=v.forwardRef((e,t)=>{const{__scopeToast:r,type:n="foreground",duration:i,open:o,onClose:a,onEscapeKeyDown:s,onPause:l,onResume:u,onSwipeStart:c,onSwipeMove:f,onSwipeCancel:d,onSwipeEnd:h,...m}=e,p=ku($u,r),[g,x]=v.useState(null),w=He(t,Y=>x(Y)),y=v.useRef(null),_=v.useRef(null),k=i||p.duration,N=v.useRef(0),S=v.useRef(k),A=v.useRef(0),{onToastAdd:R,onToastRemove:L}=p,V=Dt(()=>{var Y;(g==null?void 0:g.contains(document.activeElement))&&((Y=p.viewport)===null||Y===void 0||Y.focus()),a()}),U=v.useCallback(Y=>{!Y||Y===1/0||(window.clearTimeout(A.current),N.current=new Date().getTime(),A.current=window.setTimeout(V,Y))},[V]);v.useEffect(()=>{const Y=p.viewport;if(Y){const re=()=>{U(S.current),u==null||u()},ye=()=>{const ge=new Date().getTime()-N.current;S.current=S.current-ge,window.clearTimeout(A.current),l==null||l()};return Y.addEventListener(r0,ye),Y.addEventListener(n0,re),()=>{Y.removeEventListener(r0,ye),Y.removeEventListener(n0,re)}}},[p.viewport,k,l,u,U]),v.useEffect(()=>{o&&!p.isClosePausedRef.current&&U(k)},[o,k,p.isClosePausedRef,U]),v.useEffect(()=>(R(),()=>L()),[R,L]);const W=v.useMemo(()=>g?P2(g):null,[g]);return p.viewport?v.createElement(v.Fragment,null,W&&v.createElement(Db,{__scopeToast:r,role:"status","aria-live":n==="foreground"?"assertive":"polite","aria-atomic":!0},W),v.createElement(Ob,{scope:r,onClose:V},Jr.createPortal(v.createElement(eh.ItemSlot,{scope:r},v.createElement(SS,{asChild:!0,onEscapeKeyDown:Ee(s,()=>{p.isFocusedToastEscapeKeyDownRef.current||V(),p.isFocusedToastEscapeKeyDownRef.current=!1})},v.createElement(Ie.li,de({role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":p.swipeDirection},m,{ref:w,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:Ee(e.onKeyDown,Y=>{Y.key==="Escape"&&(s==null||s(Y.nativeEvent),Y.nativeEvent.defaultPrevented||(p.isFocusedToastEscapeKeyDownRef.current=!0,V()))}),onPointerDown:Ee(e.onPointerDown,Y=>{Y.button===0&&(y.current={x:Y.clientX,y:Y.clientY})}),onPointerMove:Ee(e.onPointerMove,Y=>{if(!y.current)return;const re=Y.clientX-y.current.x,ye=Y.clientY-y.current.y,ge=!!_.current,Se=["left","right"].includes(p.swipeDirection),ie=["left","up"].includes(p.swipeDirection)?Math.min:Math.max,we=Se?ie(0,re):0,Z=Se?0:ie(0,ye),F=Y.pointerType==="touch"?10:2,M={x:we,y:Z},b={originalEvent:Y,delta:M};ge?(_.current=M,Bs(Tb,f,b,{discrete:!1})):p1(M,p.swipeDirection,F)?(_.current=M,Bs(Sb,c,b,{discrete:!1}),Y.target.setPointerCapture(Y.pointerId)):(Math.abs(re)>F||Math.abs(ye)>F)&&(y.current=null)}),onPointerUp:Ee(e.onPointerUp,Y=>{const re=_.current,ye=Y.target;if(ye.hasPointerCapture(Y.pointerId)&&ye.releasePointerCapture(Y.pointerId),_.current=null,y.current=null,re){const ge=Y.currentTarget,Se={originalEvent:Y,delta:re};p1(re,p.swipeDirection,p.swipeThreshold)?Bs(Ab,h,Se,{discrete:!0}):Bs(Cb,d,Se,{discrete:!0}),ge.addEventListener("click",ie=>ie.preventDefault(),{once:!0})}})})))),p.viewport))):null});O2.propTypes={type(e){if(e.type&&!["foreground","background"].includes(e.type)){const t=`Invalid prop \`type\` supplied to \`${$u}\`. Expected \`foreground | background\`.`;return new Error(t)}return null}};const Db=e=>{const{__scopeToast:t,children:r,...n}=e,i=ku($u,t),[o,a]=v.useState(!1),[s,l]=v.useState(!1);return Nb(()=>a(!0)),v.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),s?null:v.createElement(du,{asChild:!0},v.createElement(md,n,o&&v.createElement(v.Fragment,null,i.label," ",r)))},Pb=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),Ib=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e;return v.createElement(Ie.div,de({},n,{ref:t}))}),bb="ToastAction",kb=v.forwardRef((e,t)=>{const{altText:r,...n}=e;return r?v.createElement(D2,{altText:r,asChild:!0},v.createElement(F2,de({},n,{ref:t}))):null});kb.propTypes={altText(e){return e.altText?null:new Error(`Missing prop \`altText\` expected on \`${bb}\``)}};const $b="ToastClose",F2=v.forwardRef((e,t)=>{const{__scopeToast:r,...n}=e,i=Fb($b,r);return v.createElement(D2,{asChild:!0},v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,i.onClose)})))}),D2=v.forwardRef((e,t)=>{const{__scopeToast:r,altText:n,...i}=e;return v.createElement(Ie.div,de({"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":n||void 0},i,{ref:t}))});function P2(e){const t=[];return Array.from(e.childNodes).forEach(n=>{if(n.nodeType===n.TEXT_NODE&&n.textContent&&t.push(n.textContent),Mb(n)){const i=n.ariaHidden||n.hidden||n.style.display==="none",o=n.dataset.radixToastAnnounceExclude==="";if(!i)if(o){const a=n.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...P2(n))}}),t}function Bs(e,t,r,{discrete:n}){const i=r.originalEvent.currentTarget,o=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?cd(i,o):i.dispatchEvent(o)}const p1=(e,t,r=0)=>{const n=Math.abs(e.x),i=Math.abs(e.y),o=n>i;return t==="left"||t==="right"?o&&n>r:!o&&i>r};function Nb(e=()=>{}){const t=Dt(e);xt(()=>{let r=0,n=0;return r=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(r),window.cancelAnimationFrame(n)}},[t])}function Mb(e){return e.nodeType===e.ELEMENT_NODE}function Lb(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function Lc(e){const t=document.activeElement;return e.some(r=>r===t?!0:(r.focus(),document.activeElement!==t))}const Bb=R2,Ub=Eb,Hb=Rb,Vb=Pb,Wb=Ib,zb=F2,I2=({title:e,titleId:t,...r})=>q("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,...r,children:q("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}),Gb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?q("title",{id:t,children:e}):null,q("path",{d:"M9 16.5a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15ZM11.25 6.75l-4.5 4.5M6.75 6.75l4.5 4.5",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),jb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 24 24",width:24,height:24,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?q("title",{id:t,children:e}):null,q("path",{d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10ZM12 16v-4M12 8h.01",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Xb=({title:e,titleId:t,...r})=>Te("svg",{width:18,height:18,viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?q("title",{id:t,children:e}):null,q("path",{d:"M16.5 8.31V9a7.5 7.5 0 1 1-4.447-6.855",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),q("path",{d:"M16.5 3 9 10.508l-2.25-2.25",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Kb=({title:e,titleId:t,...r})=>Te("svg",{viewBox:"0 0 18 18",width:18,height:18,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t,...r,children:[e?q("title",{id:t,children:e}):null,q("path",{d:"M7.718 2.895 1.366 13.5a1.5 1.5 0 0 0 1.282 2.25h12.705a1.5 1.5 0 0 0 1.283-2.25L10.283 2.895a1.5 1.5 0 0 0-2.565 0v0ZM9 6.75v3M9 12.75h.008",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]}),Yb=({toast:e,open:t,setOpen:r})=>Te(Bb,{children:[Te(Hb,{open:t,onOpenChange:n=>{e.preventClose||r(n)},className:bt("z-50 fixed bottom-4 md:left-1/2 md:-translate-x-[50%] inset-x-4 w-auto shadow-lg md:max-w-[658px] duration-300","radix-state-open:animate-fade-in","radix-state-closed:animate-toast-hide","radix-swipe-end:animate-toast-swipe-out","translate-x-radix-toast-swipe-move-x","radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]","px-[40px] md:px-[58px] py-6 flex flex-col border rounded-[4px]",{"bg-green-100 text-green-600 border-green-600":e.status==="success","bg-red-200 text-red-600 border-red-600":e.status==="error","bg-blue-100 text-blue-700 border-blue-600":e.status==="info","bg-orange-200 text-orange-600 border-orange-600":e.status==="warning"},{"h-[72px]":!e.description}),children:[e.status==="success"?q(Xb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="warning"?q(Kb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):e.status==="error"?q(Gb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}):q(jb,{className:"absolute left-[8px] md:left-[25px] top-[25px]"}),q(Vb,{className:"text-grey-900 font-bold text-sm",children:e.title}),e.description&&q(Wb,{className:"mt-2 text-[10px] md:text-xs text-grey-800",children:e.description}),q(zb,{className:"absolute top-7 right-5 md:right-7",children:q(I2,{className:"w-4 h-4 text-grey-900"})})]}),q(Ub,{})]});function qb(e){const[t,r]=v.useState(e),n=t==="dark"?"light":"dark";return v.useEffect(()=>{const i=window.document.documentElement;i.classList.remove(n),i.classList.add(t)},[t,n]),[n,r]}const b2="Dialog",[k2,Wk]=on(b2),[Qb,$r]=k2(b2),Zb=e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:o,modal:a=!0}=e,s=v.useRef(null),l=v.useRef(null),[u=!1,c]=lo({prop:n,defaultProp:i,onChange:o});return v.createElement(Qb,{scope:t,triggerRef:s,contentRef:l,contentId:Xr(),titleId:Xr(),descriptionId:Xr(),open:u,onOpenChange:c,onOpenToggle:v.useCallback(()=>c(f=>!f),[c]),modal:a},r)},Jb="DialogTrigger",ek=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(Jb,r),o=He(t,i.triggerRef);return v.createElement(Ie.button,de({type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":th(i.open)},n,{ref:o,onClick:Ee(e.onClick,i.onOpenToggle)}))}),$2="DialogPortal",[tk,N2]=k2($2,{forceMount:void 0}),rk=e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,o=$r($2,t);return v.createElement(tk,{scope:t,forceMount:r},v.Children.map(n,a=>v.createElement(Ei,{present:r||o.open},v.createElement(du,{asChild:!0,container:i},a))))},i0="DialogOverlay",nk=v.forwardRef((e,t)=>{const r=N2(i0,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(i0,e.__scopeDialog);return o.modal?v.createElement(Ei,{present:n||o.open},v.createElement(ik,de({},i,{ref:t}))):null}),ik=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(i0,r);return v.createElement(xd,{as:ii,allowPinchZoom:!0,shards:[i.contentRef]},v.createElement(Ie.div,de({"data-state":th(i.open)},n,{ref:t,style:{pointerEvents:"auto",...n.style}})))}),Ha="DialogContent",ok=v.forwardRef((e,t)=>{const r=N2(Ha,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,o=$r(Ha,e.__scopeDialog);return v.createElement(Ei,{present:n||o.open},o.modal?v.createElement(ak,de({},i,{ref:t})):v.createElement(sk,de({},i,{ref:t})))}),ak=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(null),i=He(t,r.contentRef,n);return v.useEffect(()=>{const o=n.current;if(o)return vd(o)},[]),v.createElement(M2,de({},e,{ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,o=>{var a;o.preventDefault(),(a=r.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,o=>{const a=o.detail.originalEvent,s=a.button===0&&a.ctrlKey===!0;(a.button===2||s)&&o.preventDefault()}),onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault())}))}),sk=v.forwardRef((e,t)=>{const r=$r(Ha,e.__scopeDialog),n=v.useRef(!1);return v.createElement(M2,de({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var o;if((o=e.onCloseAutoFocus)===null||o===void 0||o.call(e,i),!i.defaultPrevented){var a;n.current||(a=r.triggerRef.current)===null||a===void 0||a.focus(),i.preventDefault()}n.current=!1},onInteractOutside:i=>{var o,a;(o=e.onInteractOutside)===null||o===void 0||o.call(e,i),i.defaultPrevented||(n.current=!0);const s=i.target;((a=r.triggerRef.current)===null||a===void 0?void 0:a.contains(s))&&i.preventDefault()}}))}),M2=v.forwardRef((e,t)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:o,...a}=e,s=$r(Ha,r),l=v.useRef(null),u=He(t,l);return fd(),v.createElement(v.Fragment,null,v.createElement(dd,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:o},v.createElement(lu,de({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":th(s.open)},a,{ref:u,onDismiss:()=>s.onOpenChange(!1)}))),!1)}),lk="DialogTitle",uk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(lk,r);return v.createElement(Ie.h2,de({id:i.titleId},n,{ref:t}))}),ck="DialogClose",fk=v.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=$r(ck,r);return v.createElement(Ie.button,de({type:"button"},n,{ref:t,onClick:Ee(e.onClick,()=>i.onOpenChange(!1))}))});function th(e){return e?"open":"closed"}const dk=Zb,hk=ek,pk=rk,gk=nk,mk=ok,vk=uk,xk=fk,wk=new Date,yk=50,o0=30;function Ek(e,t){try{const r=e.hasOwnProperty("index")?"index":e.hasOwnProperty("Index")?"Index":null,n=r?e[r]:null,i=e[t],o=typeof i,s=(i==null?void 0:i.toString().replace(/[^0-9]/g,"")).length>=4&&(Wd(t)||t.toLowerCase()==="index"||n&&n&&typeof n=="string"&&(n.toLowerCase().includes("date")||n.toLowerCase().includes("day")||n.toLowerCase().includes("time")||n.toLowerCase().includes("timestamp")||n.toLowerCase().includes("year")||n.toLowerCase().includes("month")||n.toLowerCase().includes("week")||n.toLowerCase().includes("hour")||n.toLowerCase().includes("minute")));if(o==="string"&&i.startsWith("http"))return(i==null?void 0:i.toString().length)??0;if(s){if(typeof i=="string")return(i==null?void 0:i.toString().length)??0;try{const u=new Date(i);let c="";return u.getUTCHours()===0&&u.getUTCMinutes()===0&&u.getUTCSeconds()===0&&u.getMilliseconds()===0?c=u.toISOString().split("T")[0]:(c=u.toISOString(),c=c.split("T")[0]+" "+c.split("T")[1].split(".")[0]),(c==null?void 0:c.toString().length)??0}catch{return(i==null?void 0:i.toString().length)??0}}return(i==null?void 0:i.toString().length)??0}catch{return 0}}const a0=["csv","xlsx","png"];function _k({data:e,columns:t,title:r,initialTheme:n,cmd:i=""}){const[o,a]=jo("exportType",a0[0]),[s,l]=qb(n),[u,c]=v.useState(s==="dark"),f=T=>{l(s),c(T)},[d,h]=jo("rowsPerPage",o0,l2),[m,p]=jo("advanced",!1),[g,x]=jo("colors",!1),[w,y]=v.useState([]),[_,k]=v.useState(""),[N,S]=jo("fontSize","1"),[A,R]=v.useState(!1),L=t.reduce((T,B,H)=>(T[B]=H{const K=Math.max(...T.map(ve=>Ek(ve,B)),H.length+8);return Math.min(200,K*12)},Y=v.useMemo(()=>[...t.map((T,B)=>({accessorKey:T,id:T,header:T,size:W(e,T,T),footer:T,cell:({row:H})=>{var je;const Q=H.original.hasOwnProperty("index")?"index":H.original.hasOwnProperty("Index")?"Index":t[0],ee=Q?H.original[Q]:null,K=H.original[T],ve=typeof K,De=(K==null?void 0:K.toString().replace(/[^0-9]/g,"")).length>=4&&(Wd(T)||T.toLowerCase()==="index"||ee&&typeof ee=="string"&&(ee.toLowerCase().includes("date")||ee.toLowerCase().includes("time")||ee.toLowerCase().includes("timestamp")||ee.toLowerCase().includes("year")));if(ve==="string"&&K.startsWith("http"))return q("a",{className:"_hyper-link",href:K,target:"_blank",rel:"noreferrer",children:K.length>25?K.substring(0,25)+"...":K});if(De){if(typeof K=="string"){const Re=K.split("T")[0],ce=(je=K.split("T")[1])==null?void 0:je.split(".")[0];return ce==="00:00:00"?q("p",{children:Re}):Te("p",{children:[Re," ",ce]})}if(typeof K=="number"&&K<1e12)return q("p",{children:K});try{const Re=new Date(K);let ce="";return Re.getUTCHours()===0&&Re.getUTCMinutes()===0&&Re.getUTCSeconds()===0&&Re.getMilliseconds()===0?ce=Re.toISOString().split("T")[0]:(ce=Re.toISOString(),ce=ce.split("T")[0]+" "+ce.split("T")[1].split(".")[0]),q("p",{children:ce})}catch{return q("p",{children:K})}}if(ve==="number"){const Re=XD(K);return q("p",{className:bt("whitespace-nowrap",{"text-black dark:text-white":!g,"text-[#16A34A]":K>0&&g,"text-[#F87171]":K<0&&g,"text-[#404040]":K===0&&g}),children:K!==0?K>0?`${Re}`:`${Re}`:Re})}else if(ve==="string")return q("div",{dangerouslySetInnerHTML:{__html:gb(K)}});return q("p",{children:K})}}))],[m,g]),[re,ye]=v.useState(!1),[ge,Se]=v.useState(Y.map(T=>T.id)),ie=()=>Se(t.map(T=>T.id)),we=v.useMemo(()=>{const T=ge.map(H=>H),B=Y.map(H=>H.id);return!KD(T,B)},[ge,Y]),Z=uS({data:e,columns:Y,getCoreRowModel:Z_(),getSortedRowModel:nS(),getFilteredRowModel:rS(),getPaginationRowModel:oS(),columnResizeMode:"onChange",onColumnVisibilityChange:U,onColumnOrderChange:Se,onSortingChange:y,onGlobalFilterChange:k,globalFilterFn:YD,state:{sorting:w,globalFilter:_,columnOrder:ge,columnVisibility:V},initialState:{pagination:{pageIndex:0,pageSize:typeof d=="string"?d.includes("All")?e.length:parseInt(d):d}}}),F=v.useRef(null),{rows:M}=Z.getRowModel(),b=Z.getVisibleFlatColumns();return Te($1,{children:[q(Yb,{toast:{id:"max-columns",title:"Max 12 columns are visible by default",description:"You can change this by clicking on advanced and then top right 'Filter' button",status:"info"},open:A,setOpen:R}),Te("div",{ref:F,className:bt("overflow-x-hidden h-screen"),children:[Te("div",{className:"relative p-4",id:"table",children:[q("div",{className:"absolute -inset-0.5 bg-gradient-to-r rounded-md blur-md from-[#072e49]/30 via-[#0d345f]/30 to-[#0d3362]/30"}),Te("div",{className:"border border-grey-500/60 dark:border-grey-200/60 bg-white dark:bg-grey-900 rounded overflow-hidden relative z-20",children:[Te("div",{className:"_header relative gap-4 py-2 text-center text-xs flex items-center justify-between px-4 text-white",style:{fontSize:`${Number(N)*100}%`},children:[q("div",{className:"w-1/3",children:q("svg",{xmlns:"http://www.w3.org/2000/svg",width:"64",height:"40",fill:"none",viewBox:"0 0 64 40",children:q("path",{fill:"#fff",d:"M61.283 3.965H33.608v27.757h25.699V19.826H37.561v-3.965H63.26V3.965h-1.977zM39.538 23.792h15.815v3.965H37.561v-3.965h1.977zM59.306 9.913v1.983H37.561V7.931h21.745v1.982zM33.606 0h-3.954v3.965H33.606V0zM25.7 3.966H0V15.86h25.7v3.965H3.953v11.896h25.7V3.966h-3.955zm0 21.808v1.983H7.907v-3.965h17.791v1.982zm0-15.86v1.982H3.953V7.931h21.745v1.982zM37.039 35.693v2.952l-.246-.246-.245-.245-.245-.247-.245-.246-.246-.246-.245-.245-.245-.247-.247-.246-.245-.246-.245-.246-.245-.246-.246-.246h-.49v3.936h.49v-3.198l.246.246.245.246.245.246.245.246.246.246.246.246.245.247.246.245.245.246.245.247.245.246.246.245.245.246h.245v-3.936h-.49zM44.938 37.17h-.491v-1.477h-2.944v3.937h3.93v-2.46h-.495zm-2.944-.246v-.739h1.962v.984h-1.962v-.245zm2.944.984v1.23h-2.944V37.66h2.944v.247zM52.835 37.17h-.49v-1.477h-2.946v3.937h3.925v-2.46h-.489zm-2.944-.246v-.739h1.963v.984h-1.965l.002-.245zm2.944.984v1.23H49.89V37.66h2.946v.247zM29.174 35.693H25.739v3.936H29.663v-.491H26.229v-.984h2.943v-.493H26.229v-1.476h3.434v-.492h-.489zM13.37 35.693H9.934v3.937h3.925v-3.937h-.49zm0 .738v2.709h-2.945v-2.955h2.943l.001.246zM21.276 35.693h-3.435v3.937h.491v-1.476h3.434v-2.461h-.49zm0 .738v1.23h-2.944v-1.476h2.944v.246z"})})}),q("p",{className:"font-bold w-1/3 flex flex-col gap-0.5 items-center",children:r}),Te("p",{className:"w-1/3 text-right text-xs",children:[new Intl.DateTimeFormat("en-GB",{dateStyle:"full",timeStyle:"long"}).format(wk).replace(/:\d\d /," "),q("br",{}),q("span",{className:"text-grey-400",children:i})]})]}),q("div",{className:"overflow-auto max-h-[calc(100vh-160px)] smh:max-h-[calc(100vh-95px)]",children:Te("table",{className:"text-sm relative",style:{fontSize:`${Number(N)*100}%`},children:[q("thead",{className:"sticky top-0 bg-white dark:bg-grey-900",children:Z.getHeaderGroups().map((T,B)=>q("tr",{children:T.headers.map((H,Q)=>q(n8,{setLockFirstColumn:ye,lockFirstColumn:re,idx:Q,advanced:m,header:H,table:Z},H.id))},T.id))}),q("tbody",{children:Z.getRowModel().rows.map((T,B)=>q("tr",{className:"!h-[64px] border-b border-grey-400",children:T.getVisibleCells().map((H,Q)=>q("td",{className:bt("whitespace-normal p-4 text-black dark:text-white",{"bg-white dark:bg-grey-850":B%2===0,"bg-grey-100 dark:bg-[#202020]":B%2===1,"sticky left-0 z-10":Q===0&&re}),style:{width:H.column.getSize()},children:bf(H.column.columnDef.cell,H.getContext())},H.id))},T.id))}),M.length>30&&b.length>4&&q("tfoot",{children:Z.getFooterGroups().map(T=>q("tr",{children:T.headers.map(B=>q("th",{colSpan:B.colSpan,className:"text-grey-500 bg-grey-100 dark:bg-grey-850 font-normal text-left text-sm h-10 p-4",style:{width:B.getSize()},children:B.isPlaceholder?null:bf(B.column.columnDef.footer,B.getContext())},B.id))},T.id))})]})})]})]}),Te("div",{className:"smh:hidden flex max-h-[68px] overflow-x-auto bg-white/70 dark:bg-grey-900/70 backdrop-filter backdrop-blur z-20 bottom-0 left-0 w-full gap-10 justify-between py-4 px-4 text-sm",children:[Te("div",{className:"flex items-center gap-10",children:[Te(dk,{children:[q(hk,{className:"_btn",children:"Settings"}),Te(pk,{children:[q(gk,{className:"_modal-overlay"}),Te(mk,{className:"_modal",children:[q(xk,{className:"absolute top-[40px] right-[46px] text-grey-200 hover:text-white rounded-[4px] focus:outline focus:outline-2 focus:outline-grey-500",children:q(I2,{className:"w-6 h-6"})}),q(vk,{className:"uppercase font-bold tracking-widest",children:"Settings"}),Te("div",{className:"grid grid-cols-2 gap-4 mt-10 text-sm",children:[we&&q("button",{onClick:()=>ie(),className:"_btn h-9",children:"Reset Order"}),q(Vi,{labelType:"row",value:u?"light":"dark",onChange:T=>{f(T!=="dark")},label:"Theme",placeholder:"Select theme",groups:[{label:"Theme",items:[{label:"Dark",value:"dark"},{label:"Light",value:"light"}]}]}),q(Vi,{labelType:"row",value:o,onChange:T=>{a(T)},label:"Export type",placeholder:"Select export type",groups:[{label:"Export type",items:a0.map(T=>({label:T,value:T}))}]}),q(Vi,{labelType:"row",value:N,onChange:S,label:"Font size",placeholder:"Select font size",groups:[{label:"Font size",items:[{label:"50%",value:"0.5"},{label:"75%",value:"0.75"},{label:"100%",value:"1"},{label:"125%",value:"1.25"},{label:"150%",value:"1.5"},{label:"175%",value:"1.75"},{label:"200%",value:"2"}]}]}),q(l1,{table:Z,label:"Filter"}),q("div",{className:"flex gap-2 items-center",children:q(Vi,{labelType:"row",value:m?"advanced":"simple",onChange:T=>{p(T==="advanced")},label:"Type",placeholder:"Select type",groups:[{label:"Type",items:[{label:"Simple",value:"simple"},{label:"Advanced",value:"advanced"}]}]})}),Te("div",{className:"flex gap-2 items-center",children:[q("label",{htmlFor:"colors",children:"Colors"}),q("input",{id:"colors",type:"checkbox",checked:g,onChange:()=>x(!g)})]})]})]})]})]}),q(l1,{onlyIconTrigger:!0,table:Z,label:""})]}),q(i8,{currentPage:d,setCurrentPage:h,table:Z}),q(o8,{setType:a,type:o,columns:t,data:e})]})]})]})}function L2(e){let t=null;return()=>(t==null&&(t=e()),t)}function Sk(e,t){return e.filter(r=>r!==t)}function Tk(e,t){const r=new Set,n=o=>r.add(o);e.forEach(n),t.forEach(n);const i=[];return r.forEach(o=>i.push(o)),i}class Ck{enter(t){const r=this.entered.length,n=i=>this.isNodeInDocument(i)&&(!i.contains||i.contains(t));return this.entered=Tk(this.entered.filter(n),[t]),r===0&&this.entered.length>0}leave(t){const r=this.entered.length;return this.entered=Sk(this.entered.filter(this.isNodeInDocument),t),r>0&&this.entered.length===0}reset(){this.entered=[]}constructor(t){this.entered=[],this.isNodeInDocument=t}}class Ak{initializeExposedProperties(){Object.keys(this.config.exposeProperties).forEach(t=>{Object.defineProperty(this.item,t,{configurable:!0,enumerable:!0,get(){return console.warn(`Browser doesn't allow reading "${t}" until the drop event.`),null}})})}loadDataTransfer(t){if(t){const r={};Object.keys(this.config.exposeProperties).forEach(n=>{const i=this.config.exposeProperties[n];i!=null&&(r[n]={value:i(t,this.config.matchesTypes),configurable:!0,enumerable:!0})}),Object.defineProperties(this.item,r)}}canDrag(){return!0}beginDrag(){return this.item}isDragging(t,r){return r===t.getSourceId()}endDrag(){}constructor(t){this.config=t,this.item={},this.initializeExposedProperties()}}const B2="__NATIVE_FILE__",U2="__NATIVE_URL__",H2="__NATIVE_TEXT__",V2="__NATIVE_HTML__",g1=Object.freeze(Object.defineProperty({__proto__:null,FILE:B2,HTML:V2,TEXT:H2,URL:U2},Symbol.toStringTag,{value:"Module"}));function Bc(e,t,r){const n=t.reduce((i,o)=>i||e.getData(o),"");return n??r}const s0={[B2]:{exposeProperties:{files:e=>Array.prototype.slice.call(e.files),items:e=>e.items,dataTransfer:e=>e},matchesTypes:["Files"]},[V2]:{exposeProperties:{html:(e,t)=>Bc(e,t,""),dataTransfer:e=>e},matchesTypes:["Html","text/html"]},[U2]:{exposeProperties:{urls:(e,t)=>Bc(e,t,"").split(` +`),dataTransfer:e=>e},matchesTypes:["Url","text/uri-list"]},[H2]:{exposeProperties:{text:(e,t)=>Bc(e,t,""),dataTransfer:e=>e},matchesTypes:["Text","text/plain"]}};function Rk(e,t){const r=s0[e];if(!r)throw new Error(`native type ${e} has no configuration`);const n=new Ak(r);return n.loadDataTransfer(t),n}function Uc(e){if(!e)return null;const t=Array.prototype.slice.call(e.types||[]);return Object.keys(s0).filter(r=>{const n=s0[r];return n!=null&&n.matchesTypes?n.matchesTypes.some(i=>t.indexOf(i)>-1):!1})[0]||null}const Ok=L2(()=>/firefox/i.test(navigator.userAgent)),W2=L2(()=>!!window.safari);class m1{interpolate(t){const{xs:r,ys:n,c1s:i,c2s:o,c3s:a}=this;let s=r.length-1;if(t===r[s])return n[s];let l=0,u=a.length-1,c;for(;l<=u;){c=Math.floor(.5*(l+u));const h=r[c];if(ht)u=c-1;else return n[c]}s=Math.max(0,u);const f=t-r[s],d=f*f;return n[s]+i[s]*f+o[s]*d+a[s]*f*d}constructor(t,r){const{length:n}=t,i=[];for(let h=0;ht[h]{let N=new m1([0,.5,1],[l.y,l.y/c*m,l.y+m-c]).interpolate(d);return W2()&&o&&(N+=(window.devicePixelRatio-1)*m),N},g=()=>new m1([0,.5,1],[l.x,l.x/u*h,l.x+h-u]).interpolate(f),{offsetX:x,offsetY:w}=i,y=x===0||x,_=w===0||w;return{x:y?x:g(),y:_?w:p()}}class bk{get window(){if(this.globalContext)return this.globalContext;if(typeof window<"u")return window}get document(){var t;return!((t=this.globalContext)===null||t===void 0)&&t.document?this.globalContext.document:this.window?this.window.document:void 0}get rootElement(){var t;return((t=this.optionsArgs)===null||t===void 0?void 0:t.rootElement)||this.window}constructor(t,r){this.ownerDocument=null,this.globalContext=t,this.optionsArgs=r}}function kk(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v1(e){for(var t=1;t{this.sourcePreviewNodes.delete(t),this.sourcePreviewNodeOptions.delete(t)}}connectDragSource(t,r,n){this.sourceNodes.set(t,r),this.sourceNodeOptions.set(t,n);const i=a=>this.handleDragStart(a,t),o=a=>this.handleSelectStart(a);return r.setAttribute("draggable","true"),r.addEventListener("dragstart",i),r.addEventListener("selectstart",o),()=>{this.sourceNodes.delete(t),this.sourceNodeOptions.delete(t),r.removeEventListener("dragstart",i),r.removeEventListener("selectstart",o),r.setAttribute("draggable","false")}}connectDropTarget(t,r){const n=a=>this.handleDragEnter(a,t),i=a=>this.handleDragOver(a,t),o=a=>this.handleDrop(a,t);return r.addEventListener("dragenter",n),r.addEventListener("dragover",i),r.addEventListener("drop",o),()=>{r.removeEventListener("dragenter",n),r.removeEventListener("dragover",i),r.removeEventListener("drop",o)}}addEventListeners(t){t.addEventListener&&(t.addEventListener("dragstart",this.handleTopDragStart),t.addEventListener("dragstart",this.handleTopDragStartCapture,!0),t.addEventListener("dragend",this.handleTopDragEndCapture,!0),t.addEventListener("dragenter",this.handleTopDragEnter),t.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.addEventListener("dragover",this.handleTopDragOver),t.addEventListener("dragover",this.handleTopDragOverCapture,!0),t.addEventListener("drop",this.handleTopDrop),t.addEventListener("drop",this.handleTopDropCapture,!0))}removeEventListeners(t){t.removeEventListener&&(t.removeEventListener("dragstart",this.handleTopDragStart),t.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),t.removeEventListener("dragend",this.handleTopDragEndCapture,!0),t.removeEventListener("dragenter",this.handleTopDragEnter),t.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),t.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),t.removeEventListener("dragover",this.handleTopDragOver),t.removeEventListener("dragover",this.handleTopDragOverCapture,!0),t.removeEventListener("drop",this.handleTopDrop),t.removeEventListener("drop",this.handleTopDropCapture,!0))}getCurrentSourceNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourceNodeOptions.get(t);return v1({dropEffect:this.altKeyPressed?"copy":"move"},r||{})}getCurrentDropEffect(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}getCurrentSourcePreviewNodeOptions(){const t=this.monitor.getSourceId(),r=this.sourcePreviewNodeOptions.get(t);return v1({anchorX:.5,anchorY:.5,captureDraggingState:!1},r||{})}isDraggingNativeItem(){const t=this.monitor.getItemType();return Object.keys(g1).some(r=>g1[r]===t)}beginDragNativeItem(t,r){this.clearCurrentDragSourceNode(),this.currentNativeSource=Rk(t,r),this.currentNativeHandle=this.registry.addSource(t,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}setCurrentDragSourceNode(t){this.clearCurrentDragSourceNode(),this.currentDragSourceNode=t;const r=1e3;this.mouseMoveTimeoutTimer=setTimeout(()=>{var n;return(n=this.rootElement)===null||n===void 0?void 0:n.addEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)},r)}clearCurrentDragSourceNode(){if(this.currentDragSourceNode){if(this.currentDragSourceNode=null,this.rootElement){var t;(t=this.window)===null||t===void 0||t.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}return this.mouseMoveTimeoutTimer=null,!0}return!1}handleDragStart(t,r){t.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(r))}handleDragEnter(t,r){this.dragEnterTargetIds.unshift(r)}handleDragOver(t,r){this.dragOverTargetIds===null&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(r)}handleDrop(t,r){this.dropTargetIds.unshift(r)}constructor(t,r,n){this.sourcePreviewNodes=new Map,this.sourcePreviewNodeOptions=new Map,this.sourceNodes=new Map,this.sourceNodeOptions=new Map,this.dragStartSourceIds=null,this.dropTargetIds=[],this.dragEnterTargetIds=[],this.currentNativeSource=null,this.currentNativeHandle=null,this.currentDragSourceNode=null,this.altKeyPressed=!1,this.mouseMoveTimeoutTimer=null,this.asyncEndDragFrameId=null,this.dragOverTargetIds=null,this.lastClientOffset=null,this.hoverRafId=null,this.getSourceClientOffset=i=>{const o=this.sourceNodes.get(i);return o&&z2(o)||null},this.endDragNativeItem=()=>{this.isDraggingNativeItem()&&(this.actions.endDrag(),this.currentNativeHandle&&this.registry.removeSource(this.currentNativeHandle),this.currentNativeHandle=null,this.currentNativeSource=null)},this.isNodeInDocument=i=>!!(i&&this.document&&this.document.body&&this.document.body.contains(i)),this.endDragIfSourceWasRemovedFromDOM=()=>{const i=this.currentDragSourceNode;i==null||this.isNodeInDocument(i)||(this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover())},this.scheduleHover=i=>{this.hoverRafId===null&&typeof requestAnimationFrame<"u"&&(this.hoverRafId=requestAnimationFrame(()=>{this.monitor.isDragging()&&this.actions.hover(i||[],{clientOffset:this.lastClientOffset}),this.hoverRafId=null}))},this.cancelHover=()=>{this.hoverRafId!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(this.hoverRafId),this.hoverRafId=null)},this.handleTopDragStartCapture=()=>{this.clearCurrentDragSourceNode(),this.dragStartSourceIds=[]},this.handleTopDragStart=i=>{if(i.defaultPrevented)return;const{dragStartSourceIds:o}=this;this.dragStartSourceIds=null;const a=Us(i);this.monitor.isDragging()&&(this.actions.endDrag(),this.cancelHover()),this.actions.beginDrag(o||[],{publishSource:!1,getSourceClientOffset:this.getSourceClientOffset,clientOffset:a});const{dataTransfer:s}=i,l=Uc(s);if(this.monitor.isDragging()){if(s&&typeof s.setDragImage=="function"){const c=this.monitor.getSourceId(),f=this.sourceNodes.get(c),d=this.sourcePreviewNodes.get(c)||f;if(d){const{anchorX:h,anchorY:m,offsetX:p,offsetY:g}=this.getCurrentSourcePreviewNodeOptions(),y=Ik(f,d,a,{anchorX:h,anchorY:m},{offsetX:p,offsetY:g});s.setDragImage(d,y.x,y.y)}}try{s==null||s.setData("application/json",{})}catch{}this.setCurrentDragSourceNode(i.target);const{captureDraggingState:u}=this.getCurrentSourcePreviewNodeOptions();u?this.actions.publishDragSource():setTimeout(()=>this.actions.publishDragSource(),0)}else if(l)this.beginDragNativeItem(l);else{if(s&&!s.types&&(i.target&&!i.target.hasAttribute||!i.target.hasAttribute("draggable")))return;i.preventDefault()}},this.handleTopDragEndCapture=()=>{this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleTopDragEnterCapture=i=>{if(this.dragEnterTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}if(!this.enterLeaveCounter.enter(i.target)||this.monitor.isDragging())return;const{dataTransfer:s}=i,l=Uc(s);l&&this.beginDragNativeItem(l,s)},this.handleTopDragEnter=i=>{const{dragEnterTargetIds:o}=this;if(this.dragEnterTargetIds=[],!this.monitor.isDragging())return;this.altKeyPressed=i.altKey,o.length>0&&this.actions.hover(o,{clientOffset:Us(i)}),o.some(s=>this.monitor.canDropOnTarget(s))&&(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect()))},this.handleTopDragOverCapture=i=>{if(this.dragOverTargetIds=[],this.isDraggingNativeItem()){var o;(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}},this.handleTopDragOver=i=>{const{dragOverTargetIds:o}=this;if(this.dragOverTargetIds=[],!this.monitor.isDragging()){i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none");return}this.altKeyPressed=i.altKey,this.lastClientOffset=Us(i),this.scheduleHover(o),(o||[]).some(s=>this.monitor.canDropOnTarget(s))?(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect=this.getCurrentDropEffect())):this.isDraggingNativeItem()?i.preventDefault():(i.preventDefault(),i.dataTransfer&&(i.dataTransfer.dropEffect="none"))},this.handleTopDragLeaveCapture=i=>{this.isDraggingNativeItem()&&i.preventDefault(),this.enterLeaveCounter.leave(i.target)&&(this.isDraggingNativeItem()&&setTimeout(()=>this.endDragNativeItem(),0),this.cancelHover())},this.handleTopDropCapture=i=>{if(this.dropTargetIds=[],this.isDraggingNativeItem()){var o;i.preventDefault(),(o=this.currentNativeSource)===null||o===void 0||o.loadDataTransfer(i.dataTransfer)}else Uc(i.dataTransfer)&&i.preventDefault();this.enterLeaveCounter.reset()},this.handleTopDrop=i=>{const{dropTargetIds:o}=this;this.dropTargetIds=[],this.actions.hover(o,{clientOffset:Us(i)}),this.actions.drop({dropEffect:this.getCurrentDropEffect()}),this.isDraggingNativeItem()?this.endDragNativeItem():this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleSelectStart=i=>{const o=i.target;typeof o.dragDrop=="function"&&(o.tagName==="INPUT"||o.tagName==="SELECT"||o.tagName==="TEXTAREA"||o.isContentEditable||(i.preventDefault(),o.dragDrop()))},this.options=new bk(r,n),this.actions=t.getActions(),this.monitor=t.getMonitor(),this.registry=t.getRegistry(),this.enterLeaveCounter=new Ck(this.isNodeInDocument)}}const Nk=function(t,r,n){return new $k(t,r,n)};function Mk(){const[e,t]=v.useState(null),[r,n]=v.useState("Interactive Table");v.useEffect(()=>{const a=setInterval(()=>{if(window.json_data){const s=JSON.parse(window.json_data);console.log(s),t(s),s.title&&typeof s.title=="string"&&n(s.title),clearInterval(a)}},100);return()=>clearInterval(a)},[]);const o=(a=>{var h;if(!a)return null;let s=(h=a.title)==null?void 0:h.replace(/|<\/b>/g,"").replace(/ /g,"_"),l=new Date().toISOString().slice(0,10).replace(/-/g,""),u=new Date().toISOString().slice(11,19).replace(/:/g,"");window.title=`openbb_${s}_${l}_${u}`;const c=a.columns;a.index;const d=a.data.map((m,p)=>{const g={};return m.forEach((x,w)=>{g[c[w]]=x||""}),g});return{columns:c,data:d}})(e);return q("div",{className:"relative h-full bg-white dark:bg-black text-black dark:text-white",children:q(mI,{backend:Nk,children:o&&q(_k,{title:r,data:o.data,columns:o.columns,initialTheme:e.theme&&typeof e.theme=="string"&&e.theme==="dark"?"dark":"light",cmd:(e==null?void 0:e.command_location)??""})})})}cv.render(q(nr.StrictMode,{children:q(Mk,{})}),document.getElementById("root")); ",""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}},99863:function(D,E){E.isLeftAnchor=function(e){return e.xanchor==="left"||e.xanchor==="auto"&&e.x<=.3333333333333333},E.isCenterAnchor=function(e){return e.xanchor==="center"||e.xanchor==="auto"&&e.x>.3333333333333333&&e.x<.6666666666666666},E.isRightAnchor=function(e){return e.xanchor==="right"||e.xanchor==="auto"&&e.x>=.6666666666666666},E.isTopAnchor=function(e){return e.yanchor==="top"||e.yanchor==="auto"&&e.y>=.6666666666666666},E.isMiddleAnchor=function(e){return e.yanchor==="middle"||e.yanchor==="auto"&&e.y>.3333333333333333&&e.y<.6666666666666666},E.isBottomAnchor=function(e){return e.yanchor==="bottom"||e.yanchor==="auto"&&e.y<=.3333333333333333}},26348:function(D,E,e){var _=e(64872),w=_.mod,s=_.modHalf,T=Math.PI,y=2*T;function f(r){return Math.abs(r[1]-r[0])>y-1e-14}function l(r,n){return s(n-r,y)}function t(r,n){if(f(n))return!0;var o,a;n[0](a=w(a,y))&&(a+=y);var u=w(r,y),p=u+y;return u>=o&&u<=a||p>=o&&p<=a}function i(r,n,o,a,u,p,c){u=u||0,p=p||0;var b,d,v,x,g,m=f([o,a]);function k(C,L){return[C*Math.cos(L)+u,p-C*Math.sin(L)]}m?(b=0,d=T,v=y):o=u&&r<=p);var u,p},pathArc:function(r,n,o,a,u){return i(null,r,n,o,a,u,0)},pathSector:function(r,n,o,a,u){return i(null,r,n,o,a,u,1)},pathAnnulus:function(r,n,o,a,u,p){return i(r,n,o,a,u,p,1)}}},73627:function(D,E){var e=Array.isArray,_=ArrayBuffer,w=DataView;function s(f){return _.isView(f)&&!(f instanceof w)}function T(f){return e(f)||s(f)}function y(f,l,t){if(T(f)){if(T(f[0])){for(var i=t,r=0;rp.max?a.set(u):a.set(+o)}},integer:{coerceFunction:function(o,a,u,p){o%1||!_(o)||p.min!==void 0&&op.max?a.set(u):a.set(+o)}},string:{coerceFunction:function(o,a,u,p){if(typeof o!="string"){var c=typeof o=="number";p.strict!==!0&&c?a.set(String(o)):a.set(u)}else p.noBlank&&!o?a.set(u):a.set(o)}},color:{coerceFunction:function(o,a,u){w(o).isValid()?a.set(o):a.set(u)}},colorlist:{coerceFunction:function(o,a,u){Array.isArray(o)&&o.length&&o.every(function(p){return w(p).isValid()})?a.set(o):a.set(u)}},colorscale:{coerceFunction:function(o,a,u){a.set(T.get(o,u))}},angle:{coerceFunction:function(o,a,u){o==="auto"?a.set("auto"):_(o)?a.set(i(+o,360)):a.set(u)}},subplotid:{coerceFunction:function(o,a,u,p){var c=p.regex||t(u);typeof o=="string"&&c.test(o)?a.set(o):a.set(u)},validateFunction:function(o,a){var u=a.dflt;return o===u||typeof o=="string"&&!!t(u).test(o)}},flaglist:{coerceFunction:function(o,a,u,p){if((p.extras||[]).indexOf(o)===-1)if(typeof o=="string"){for(var c=o.split("+"),b=0;b=_&&R<=w?R:t}if(typeof R!="string"&&typeof R!="number")return t;R=String(R);var j=v(U),V=R.charAt(0);!j||V!=="G"&&V!=="g"||(R=R.substr(1),U="");var H=j&&U.substr(0,7)==="chinese",ee=R.match(H?b:c);if(!ee)return t;var Q=ee[1],X=ee[3]||"1",Y=Number(ee[5]||1),K=Number(ee[7]||0),te=Number(ee[9]||0),ae=Number(ee[11]||0);if(j){if(Q.length===2)return t;var oe;Q=Number(Q);try{var se=u.getComponentMethod("calendars","getCal")(U);if(H){var fe=X.charAt(X.length-1)==="i";X=parseInt(X,10),oe=se.newDate(Q,se.toMonthIndex(Q,X,fe),Y)}else oe=se.newDate(Q,Number(X),Y)}catch{return t}return oe?(oe.toJD()-a)*i+K*r+te*n+ae*o:t}Q=Q.length===2?(Number(Q)+2e3-d)%100+d:Number(Q),X-=1;var ye=new Date(Date.UTC(2e3,X,Y,K,te));return ye.setUTCFullYear(Q),ye.getUTCMonth()!==X||ye.getUTCDate()!==Y?t:ye.getTime()+ae*o},_=E.MIN_MS=E.dateTime2ms("-9999"),w=E.MAX_MS=E.dateTime2ms("9999-12-31 23:59:59.9999"),E.isDateTime=function(R,U){return E.dateTime2ms(R,U)!==t};var g=90*i,m=3*r,k=5*n;function h(R,U,B,G,N){if((U||B||G||N)&&(R+=" "+x(U,2)+":"+x(B,2),(G||N)&&(R+=":"+x(G,2),N))){for(var j=4;N%10==0;)j-=1,N/=10;R+="."+x(N,j)}return R}E.ms2DateTime=function(R,U,B){if(typeof R!="number"||!(R>=_&&R<=w))return t;U||(U=0);var G,N,j,V,H,ee,Q=Math.floor(10*f(R+.05,1)),X=Math.round(R-Q/10);if(v(B)){var Y=Math.floor(X/i)+a,K=Math.floor(f(R,i));try{G=u.getComponentMethod("calendars","getCal")(B).fromJD(Y).formatDate("yyyy-mm-dd")}catch{G=p("G%Y-%m-%d")(new Date(X))}if(G.charAt(0)==="-")for(;G.length<11;)G="-0"+G.substr(1);else for(;G.length<10;)G="0"+G;N=U=_+i&&R<=w-i))return t;var U=Math.floor(10*f(R+.05,1)),B=new Date(Math.round(R-U/10));return h(s("%Y-%m-%d")(B),B.getHours(),B.getMinutes(),B.getSeconds(),10*B.getUTCMilliseconds()+U)},E.cleanDate=function(R,U,B){if(R===t)return U;if(E.isJSDate(R)||typeof R=="number"&&isFinite(R)){if(v(B))return y.error("JS Dates and milliseconds are incompatible with world calendars",R),U;if(!(R=E.ms2DateTimeLocal(+R))&&U!==void 0)return U}else if(!E.isDateTime(R,B))return y.error("unrecognized date",R),U;return R};var M=/%\d?f/g,A=/%h/g,C={1:"1",2:"1",3:"2",4:"2"};function L(R,U,B,G){R=R.replace(M,function(j){var V=Math.min(+j.charAt(1)||6,6);return(U/1e3%1+2).toFixed(V).substr(2).replace(/0+$/,"")||"0"});var N=new Date(Math.floor(U+.05));if(R=R.replace(A,function(){return C[B("%q")(N)]}),v(G))try{R=u.getComponentMethod("calendars","worldCalFmt")(R,U,G)}catch{return"Invalid"}return B(R)(N)}var O=[59,59.9,59.99,59.999,59.9999];E.formatDate=function(R,U,B,G,N,j){if(N=v(N)&&N,!U)if(B==="y")U=j.year;else if(B==="m")U=j.month;else{if(B!=="d")return function(V,H){var ee=f(V+.05,i),Q=x(Math.floor(ee/r),2)+":"+x(f(Math.floor(ee/n),60),2);if(H!=="M"){T(H)||(H=0);var X=(100+Math.min(f(V/o,60),O[H])).toFixed(H).substr(1);H>0&&(X=X.replace(/0+$/,"").replace(/[\.]$/,"")),Q+=":"+X}return Q}(R,B)+` +`+L(j.dayMonthYear,R,G,N);U=j.dayMonth+` +`+j.year}return L(U,R,G,N)};var I=3*i;E.incrementMonth=function(R,U,B){B=v(B)&&B;var G=f(R,i);if(R=Math.round(R-G),B)try{var N=Math.round(R/i)+a,j=u.getComponentMethod("calendars","getCal")(B),V=j.fromJD(N);return U%12?j.add(V,U,"m"):j.add(V,U/12,"y"),(V.toJD()-a)*i+G}catch{y.error("invalid ms "+R+" in calendar "+B)}var H=new Date(R+I);return H.setUTCMonth(H.getUTCMonth()+U)+G-I},E.findExactDates=function(R,U){for(var B,G,N=0,j=0,V=0,H=0,ee=v(U)&&u.getComponentMethod("calendars","getCal")(U),Q=0;Q0&&h[M+1][0]<0)return M;return null}switch(p=g==="RUS"||g==="FJI"?function(h){var M;if(k(h)===null)M=h;else for(M=new Array(h.length),d=0;dM?A[C++]=[h[d][0]+360,h[d][1]]:d===M?(A[C++]=h[d],A[C++]=[h[d][0],-90]):A[C++]=h[d];var L=r.tester(A);L.pts.pop(),m.push(L)}:function(h){m.push(r.tester(h))},v.type){case"MultiPolygon":for(c=0;cB&&(B=j,I=N)}else I=R;return T.default(I).geometry.coordinates}(L),A.fIn=h,A.fOut=L,v.push(L)}else l.log(["Location",A.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete d[M]}switch(c.type){case"FeatureCollection":var m=c.features;for(b=0;b100?(clearInterval(M),k("Unexpected error while fetching from "+g)):void h++},50)})}for(var v=0;v0&&(T.push(y),y=[])}return y.length>0&&T.push(y),T},E.makeLine=function(w){return w.length===1?{type:"LineString",coordinates:w[0]}:{type:"MultiLineString",coordinates:w}},E.makePolygon=function(w){if(w.length===1)return{type:"Polygon",coordinates:w};for(var s=new Array(w.length),T=0;T1||m<0||m>1?null:{x:l+p*m,y:t+d*m}}function f(l,t,i,r,n){var o=r*l+n*t;if(o<0)return r*r+n*n;if(o>i){var a=r-l,u=n-t;return a*a+u*u}var p=r*t-n*l;return p*p/i}E.segmentsIntersect=y,E.segmentDistance=function(l,t,i,r,n,o,a,u){if(y(l,t,i,r,n,o,a,u))return 0;var p=i-l,c=r-t,b=a-n,d=u-o,v=p*p+c*c,x=b*b+d*d,g=Math.min(f(p,c,v,n-l,o-t),f(p,c,v,a-l,u-t),f(b,d,x,l-n,t-o),f(b,d,x,i-n,r-o));return Math.sqrt(g)},E.getTextLocation=function(l,t,i,r){if(l===w&&r===s||(_={},w=l,s=r),_[i])return _[i];var n=l.getPointAtLength(T(i-r/2,t)),o=l.getPointAtLength(T(i+r/2,t)),a=Math.atan((o.y-n.y)/(o.x-n.x)),u=l.getPointAtLength(T(i,t)),p={x:(4*u.x+n.x+o.x)/6,y:(4*u.y+n.y+o.y)/6,theta:a};return _[i]=p,p},E.clearLocationCache=function(){w=null},E.getVisibleSegment=function(l,t,i){var r,n,o=t.left,a=t.right,u=t.top,p=t.bottom,c=0,b=l.getTotalLength(),d=b;function v(g){var m=l.getPointAtLength(g);g===0?r=m:g===b&&(n=m);var k=m.xa?m.x-a:0,h=m.yp?m.y-p:0;return Math.sqrt(k*k+h*h)}for(var x=v(c);x;){if((c+=x+i)>d)return;x=v(c)}for(x=v(d);x;){if(c>(d-=x+i))return;x=v(d)}return{min:c,max:d,len:d-c,total:b,isClosed:c===0&&d===b&&Math.abs(r.x-n.x)<.1&&Math.abs(r.y-n.y)<.1}},E.findPointOnPath=function(l,t,i,r){for(var n,o,a,u=(r=r||{}).pathLength||l.getTotalLength(),p=r.tolerance||.001,c=r.iterationLimit||30,b=l.getPointAtLength(0)[i]>l.getPointAtLength(u)[i]?-1:1,d=0,v=0,x=u;d0?x=n:v=n,d++}return o}},81697:function(D,E,e){var _=e(92770),w=e(84267),s=e(25075),T=e(21081),y=e(22399).defaultLine,f=e(73627).isArrayOrTypedArray,l=s(y);function t(n,o){var a=n;return a[3]*=o,a}function i(n){if(_(n))return l;var o=s(n);return o.length?o:l}function r(n){return _(n)?n:1}D.exports={formatColor:function(n,o,a){var u,p,c,b,d,v=n.color,x=f(v),g=f(o),m=T.extractOpts(n),k=[];if(u=m.colorscale!==void 0?T.makeColorScaleFuncFromTrace(n):i,p=x?function(M,A){return M[A]===void 0?l:s(u(M[A]))}:i,c=g?function(M,A){return M[A]===void 0?1:r(M[A])}:r,x||g)for(var h=0;h1?(_*E+_*e)/_:E+e,s=String(w).length;if(s>16){var T=String(e).length;if(s>=String(E).length+T){var y=parseFloat(w).toPrecision(12);y.indexOf("e+")===-1&&(w=+y)}}return w}},71828:function(D,E,e){var _=e(39898),w=e(84096).g0,s=e(60721).WU,T=e(92770),y=e(50606),f=y.FP_SAFE,l=-f,t=y.BADNUM,i=D.exports={};i.adjustFormat=function(K){return!K||/^\d[.]\df/.test(K)||/[.]\d%/.test(K)?K:K==="0.f"?"~f":/^\d%/.test(K)?"~%":/^\ds/.test(K)?"~s":!/^[~,.0$]/.test(K)&&/[&fps]/.test(K)?"~"+K:K};var r={};i.warnBadFormat=function(K){var te=String(K);r[te]||(r[te]=1,i.warn('encountered bad format: "'+te+'"'))},i.noFormat=function(K){return String(K)},i.numberFormat=function(K){var te;try{te=s(i.adjustFormat(K))}catch{return i.warnBadFormat(K),i.noFormat}return te},i.nestedProperty=e(65487),i.keyedContainer=e(66636),i.relativeAttr=e(6962),i.isPlainObject=e(41965),i.toLogRange=e(58163),i.relinkPrivateKeys=e(51332);var n=e(73627);i.isTypedArray=n.isTypedArray,i.isArrayOrTypedArray=n.isArrayOrTypedArray,i.isArray1D=n.isArray1D,i.ensureArray=n.ensureArray,i.concat=n.concat,i.maxRowLength=n.maxRowLength,i.minRowLength=n.minRowLength;var o=e(64872);i.mod=o.mod,i.modHalf=o.modHalf;var a=e(96554);i.valObjectMeta=a.valObjectMeta,i.coerce=a.coerce,i.coerce2=a.coerce2,i.coerceFont=a.coerceFont,i.coercePattern=a.coercePattern,i.coerceHoverinfo=a.coerceHoverinfo,i.coerceSelectionMarkerOpacity=a.coerceSelectionMarkerOpacity,i.validate=a.validate;var u=e(41631);i.dateTime2ms=u.dateTime2ms,i.isDateTime=u.isDateTime,i.ms2DateTime=u.ms2DateTime,i.ms2DateTimeLocal=u.ms2DateTimeLocal,i.cleanDate=u.cleanDate,i.isJSDate=u.isJSDate,i.formatDate=u.formatDate,i.incrementMonth=u.incrementMonth,i.dateTick0=u.dateTick0,i.dfltRange=u.dfltRange,i.findExactDates=u.findExactDates,i.MIN_MS=u.MIN_MS,i.MAX_MS=u.MAX_MS;var p=e(65888);i.findBin=p.findBin,i.sorterAsc=p.sorterAsc,i.sorterDes=p.sorterDes,i.distinctVals=p.distinctVals,i.roundUp=p.roundUp,i.sort=p.sort,i.findIndexOfMin=p.findIndexOfMin,i.sortObjectKeys=e(78607);var c=e(80038);i.aggNums=c.aggNums,i.len=c.len,i.mean=c.mean,i.median=c.median,i.midRange=c.midRange,i.variance=c.variance,i.stdev=c.stdev,i.interp=c.interp;var b=e(35657);i.init2dArray=b.init2dArray,i.transposeRagged=b.transposeRagged,i.dot=b.dot,i.translationMatrix=b.translationMatrix,i.rotationMatrix=b.rotationMatrix,i.rotationXYMatrix=b.rotationXYMatrix,i.apply3DTransform=b.apply3DTransform,i.apply2DTransform=b.apply2DTransform,i.apply2DTransform2=b.apply2DTransform2,i.convertCssMatrix=b.convertCssMatrix,i.inverseTransformMatrix=b.inverseTransformMatrix;var d=e(26348);i.deg2rad=d.deg2rad,i.rad2deg=d.rad2deg,i.angleDelta=d.angleDelta,i.angleDist=d.angleDist,i.isFullCircle=d.isFullCircle,i.isAngleInsideSector=d.isAngleInsideSector,i.isPtInsideSector=d.isPtInsideSector,i.pathArc=d.pathArc,i.pathSector=d.pathSector,i.pathAnnulus=d.pathAnnulus;var v=e(99863);i.isLeftAnchor=v.isLeftAnchor,i.isCenterAnchor=v.isCenterAnchor,i.isRightAnchor=v.isRightAnchor,i.isTopAnchor=v.isTopAnchor,i.isMiddleAnchor=v.isMiddleAnchor,i.isBottomAnchor=v.isBottomAnchor;var x=e(87642);i.segmentsIntersect=x.segmentsIntersect,i.segmentDistance=x.segmentDistance,i.getTextLocation=x.getTextLocation,i.clearLocationCache=x.clearLocationCache,i.getVisibleSegment=x.getVisibleSegment,i.findPointOnPath=x.findPointOnPath;var g=e(1426);i.extendFlat=g.extendFlat,i.extendDeep=g.extendDeep,i.extendDeepAll=g.extendDeepAll,i.extendDeepNoArrays=g.extendDeepNoArrays;var m=e(47769);i.log=m.log,i.warn=m.warn,i.error=m.error;var k=e(30587);i.counterRegex=k.counter;var h=e(79990);i.throttle=h.throttle,i.throttleDone=h.done,i.clearThrottle=h.clear;var M=e(24401);function A(K){var te={};for(var ae in K)for(var oe=K[ae],se=0;sef||K=te)&&T(K)&&K>=0&&K%1==0},i.noop=e(64213),i.identity=e(23389),i.repeat=function(K,te){for(var ae=new Array(te),oe=0;oeae?Math.max(ae,Math.min(te,K)):Math.max(te,Math.min(ae,K))},i.bBoxIntersect=function(K,te,ae){return ae=ae||0,K.left<=te.right+ae&&te.left<=K.right+ae&&K.top<=te.bottom+ae&&te.top<=K.bottom+ae},i.simpleMap=function(K,te,ae,oe,se){for(var fe=K.length,ye=new Array(fe),pe=0;pe=Math.pow(2,ae)?se>10?(i.warn("randstr failed uniqueness"),de):K(te,ae,oe,(se||0)+1):de},i.OptionControl=function(K,te){K||(K={}),te||(te="opt");var ae={optionList:[],_newoption:function(oe){oe[te]=K,ae[oe.name]=oe,ae.optionList.push(oe)}};return ae["_"+te]=K,ae},i.smooth=function(K,te){if((te=Math.round(te)||0)<2)return K;var ae,oe,se,fe,ye=K.length,pe=2*ye,de=2*te-1,he=new Array(de),xe=new Array(ye);for(ae=0;ae=pe&&(se-=pe*Math.floor(se/pe)),se<0?se=-1-se:se>=ye&&(se=pe-1-se),fe+=K[se]*he[oe];xe[ae]=fe}return xe},i.syncOrAsync=function(K,te,ae){var oe;function se(){return i.syncOrAsync(K,te,ae)}for(;K.length;)if((oe=(0,K.splice(0,1)[0])(te))&&oe.then)return oe.then(se);return ae&&ae(te)},i.stripTrailingSlash=function(K){return K.substr(-1)==="/"?K.substr(0,K.length-1):K},i.noneOrAll=function(K,te,ae){if(K){var oe,se=!1,fe=!0;for(oe=0;oe0?se:0})},i.fillArray=function(K,te,ae,oe){if(oe=oe||i.identity,i.isArrayOrTypedArray(K))for(var se=0;se1?se+ye[1]:"";if(fe&&(ye.length>1||pe.length>4||ae))for(;oe.test(pe);)pe=pe.replace(oe,"$1"+fe+"$2");return pe+de},i.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var U=/^\w*$/;i.templateString=function(K,te){var ae={};return K.replace(i.TEMPLATE_STRING_REGEX,function(oe,se){var fe;return U.test(se)?fe=te[se]:(ae[se]=ae[se]||i.nestedProperty(te,se).get,fe=ae[se]()),i.isValidTextValue(fe)?fe:""})};var B={max:10,count:0,name:"hovertemplate"};i.hovertemplateString=function(){return ee.apply(B,arguments)};var G={max:10,count:0,name:"texttemplate"};i.texttemplateString=function(){return ee.apply(G,arguments)};var N=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function j(K){var te=K.match(N);return te?{key:te[1],op:te[2],number:Number(te[3])}:{key:K,op:null,number:null}}var V={max:10,count:0,name:"texttemplate",parseMultDiv:!0};i.texttemplateStringForShapes=function(){return ee.apply(V,arguments)};var H=/^[:|\|]/;function ee(K,te,ae){var oe=this,se=arguments;te||(te={});var fe={};return K.replace(i.TEMPLATE_STRING_REGEX,function(ye,pe,de){var he=pe==="_xother"||pe==="_yother",xe=pe==="_xother_"||pe==="_yother_",Re=pe==="xother_"||pe==="yother_",we=pe==="xother"||pe==="yother"||he||Re||xe,Ae=pe;(he||xe)&&(Ae=Ae.substring(1)),(Re||xe)&&(Ae=Ae.substring(0,Ae.length-1));var Me,Ce,ne,ue=null,me=null;if(oe.parseMultDiv){var Te=j(Ae);Ae=Te.key,ue=Te.op,me=Te.number}if(we){if((Me=te[Ae])===void 0)return""}else for(ne=3;ne=48&&ye<=57,he=pe>=48&&pe<=57;if(de&&(oe=10*oe+ye-48),he&&(se=10*se+pe-48),!de||!he){if(oe!==se)return oe-se;if(ye!==pe)return ye-pe}}return se-oe};var Q=2e9;i.seedPseudoRandom=function(){Q=2e9},i.pseudoRandom=function(){var K=Q;return Q=(69069*Q+1)%4294967296,Math.abs(Q-K)<429496729?i.pseudoRandom():Q/4294967296},i.fillText=function(K,te,ae){var oe=Array.isArray(ae)?function(ye){ae.push(ye)}:function(ye){ae.text=ye},se=i.extractOption(K,te,"htx","hovertext");if(i.isValidTextValue(se))return oe(se);var fe=i.extractOption(K,te,"tx","text");return i.isValidTextValue(fe)?oe(fe):void 0},i.isValidTextValue=function(K){return K||K===0},i.formatPercent=function(K,te){te=te||0;for(var ae=(Math.round(100*K*Math.pow(10,te))*Math.pow(.1,te)).toFixed(te)+"%",oe=0;oe1&&(he=1):he=0,i.strTranslate(se-he*(ae+ye),fe-he*(oe+pe))+i.strScale(he)+(de?"rotate("+de+(te?"":" "+ae+" "+oe)+")":"")},i.setTransormAndDisplay=function(K,te){K.attr("transform",i.getTextTransform(te)),K.style("display",te.scale?null:"none")},i.ensureUniformFontSize=function(K,te){var ae=i.extendFlat({},te);return ae.size=Math.max(te.size,K._fullLayout.uniformtext.minsize||0),ae},i.join2=function(K,te,ae){var oe=K.length;return oe>1?K.slice(0,-1).join(te)+ae+K[oe-1]:K.join(te)},i.bigFont=function(K){return Math.round(1.2*K)};var X=i.getFirefoxVersion(),Y=X!==null&&X<86;i.getPositionFromD3Event=function(){return Y?[_.event.layerX,_.event.layerY]:[_.event.offsetX,_.event.offsetY]}},41965:function(D){D.exports=function(E){return window&&window.process&&window.process.versions?Object.prototype.toString.call(E)==="[object Object]":Object.prototype.toString.call(E)==="[object Object]"&&Object.getPrototypeOf(E).hasOwnProperty("hasOwnProperty")}},66636:function(D,E,e){var _=e(65487),w=/^\w*$/;D.exports=function(s,T,y,f){var l,t,i;y=y||"name",f=f||"value";var r={};T&&T.length?(i=_(s,T),t=i.get()):t=s,T=T||"";var n={};if(t)for(l=0;l2)return r[p]=2|r[p],a.set(u,null);if(o){for(l=p;l1){var y=["LOG:"];for(T=0;T1){var f=[];for(T=0;T"),"long")}},s.warn=function(){var T;if(_.logging>0){var y=["WARN:"];for(T=0;T0){var f=[];for(T=0;T"),"stick")}},s.error=function(){var T;if(_.logging>0){var y=["ERROR:"];for(T=0;T0){var f=[];for(T=0;T"),"stick")}}},77310:function(D,E,e){var _=e(39898);D.exports=function(w,s,T){var y=w.selectAll("g."+T.replace(/\s/g,".")).data(s,function(l){return l[0].trace.uid});y.exit().remove(),y.enter().append("g").attr("class",T),y.order();var f=w.classed("rangeplot")?"nodeRangePlot3":"node3";return y.each(function(l){l[0][f]=_.select(this)}),y}},35657:function(D,E,e){var _=e(79576);E.init2dArray=function(w,s){for(var T=new Array(w),y=0;ye/2?E-Math.round(E/e)*e:E}}},65487:function(D,E,e){var _=e(92770),w=e(73627).isArrayOrTypedArray;function s(r,n){return function(){var o,a,u,p,c,b=r;for(p=0;p/g),a=0;at||d===w||dr||c&&n(p))}:function(p,c){var b=p[0],d=p[1];if(b===w||bt||d===w||dr)return!1;var v,x,g,m,k,h=f.length,M=f[0][0],A=f[0][1],C=0;for(v=1;vMath.max(x,M)||d>Math.max(g,A)))if(da||Math.abs(_(i,p))>l)return!0;return!1},s.filter=function(T,y){var f=[T[0]],l=0,t=0;function i(r){T.push(r);var n=f.length,o=l;f.splice(t+1);for(var a=o+1;a1&&i(T.pop()),{addPt:i,raw:T,filtered:f}}},79749:function(D,E,e){var _=e(58617),w=e(98580);D.exports=function(s,T,y){var f=s._fullLayout,l=!0;return f._glcanvas.each(function(t){if(t.regl)t.regl.preloadCachedCode(y);else if(!t.pick||f._has("parcoords")){try{t.regl=w({canvas:this,attributes:{antialias:!t.pick,preserveDrawingBuffer:!0},pixelRatio:s._context.plotGlPixelRatio||e.g.devicePixelRatio,extensions:T||[],cachedCode:y||{}})}catch{l=!1}t.regl||(l=!1),l&&this.addEventListener("webglcontextlost",function(i){s&&s.emit&&s.emit("plotly_webglcontextlost",{event:i,layer:t.key})},!1)}}),l||_({container:f._glcontainer.node()}),l}},45142:function(D,E,e){var _=e(92770),w=e(35791);D.exports=function(s){var T;if(typeof(T=s&&s.hasOwnProperty("userAgent")?s.userAgent:function(){var n;return typeof navigator<"u"&&(n=navigator.userAgent),n&&n.headers&&typeof n.headers["user-agent"]=="string"&&(n=n.headers["user-agent"]),n}())!="string")return!0;var y=w({ua:{headers:{"user-agent":T}},tablet:!0,featureDetect:!1});if(!y){for(var f=T.split(" "),l=1;l-1;t--){var i=f[t];if(i.substr(0,8)==="Version/"){var r=i.substr(8).split(".")[0];if(_(r)&&(r=+r),r>=13)return!0}}}return y}},75138:function(D){D.exports=function(E,e){if(e instanceof RegExp){for(var _=e.toString(),w=0;ww.queueLength&&(T.undoQueue.queue.shift(),T.undoQueue.index--))},startSequence:function(T){T.undoQueue=T.undoQueue||{index:0,queue:[],sequence:!1},T.undoQueue.sequence=!0,T.undoQueue.beginSequence=!0},stopSequence:function(T){T.undoQueue=T.undoQueue||{index:0,queue:[],sequence:!1},T.undoQueue.sequence=!1,T.undoQueue.beginSequence=!1},undo:function(T){var y,f;if(!(T.undoQueue===void 0||isNaN(T.undoQueue.index)||T.undoQueue.index<=0)){for(T.undoQueue.index--,y=T.undoQueue.queue[T.undoQueue.index],T.undoQueue.inSequence=!0,f=0;f=T.undoQueue.queue.length)){for(y=T.undoQueue.queue[T.undoQueue.index],T.undoQueue.inSequence=!0,f=0;fn}function i(r,n){return r>=n}E.findBin=function(r,n,o){if(_(n.start))return o?Math.ceil((r-n.start)/n.size-y)-1:Math.floor((r-n.start)/n.size+y);var a,u,p=0,c=n.length,b=0,d=c>1?(n[c-1]-n[0])/(c-1):1;for(u=d>=0?o?f:l:o?i:t,r+=d*y*(o?-1:1)*(d>=0?1:-1);p90&&w.log("Long binary search..."),p-1},E.sorterAsc=function(r,n){return r-n},E.sorterDes=function(r,n){return n-r},E.distinctVals=function(r){var n,o=r.slice();for(o.sort(E.sorterAsc),n=o.length-1;n>-1&&o[n]===T;n--);for(var a,u=o[n]-o[0]||1,p=u/(n||1)/1e4,c=[],b=0;b<=n;b++){var d=o[b],v=d-a;a===void 0?(c.push(d),a=d):v>p&&(u=Math.min(u,v),c.push(d),a=d)}return{vals:c,minDiff:u}},E.roundUp=function(r,n,o){for(var a,u=0,p=n.length-1,c=0,b=o?0:1,d=o?1:0,v=o?Math.ceil:Math.floor;u0&&(a=1),o&&a)return r.sort(n)}return a?r:r.reverse()},E.findIndexOfMin=function(r,n){n=n||s;for(var o,a=1/0,u=0;uy.length)&&(f=y.length),_(T)||(T=!1),w(y[0])){for(t=new Array(f),l=0;ls.length-1)return s[s.length-1];var y=T%1;return y*s[Math.ceil(T)]+(1-y)*s[Math.floor(T)]}},78614:function(D,E,e){var _=e(25075);D.exports=function(w){return w?_(w):[0,0,0,1]}},63893:function(D,E,e){var _=e(39898),w=e(71828),s=w.strTranslate,T=e(77922),y=e(18783).LINE_SPACING,f=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;E.convertToTspans=function(R,U,B){var G=R.text(),N=!R.attr("data-notex")&&U&&U._context.typesetMath&&typeof MathJax<"u"&&G.match(f),j=_.select(R.node().parentNode);if(!j.empty()){var V=R.attr("class")?R.attr("class").split(" ")[0]:"text";return V+="-math",j.selectAll("svg."+V).remove(),j.selectAll("g."+V+"-group").remove(),R.style("display",null).attr({"data-unformatted":G,"data-math":"N"}),N?(U&&U._promises||[]).push(new Promise(function(ee){R.style("display","none");var Q=parseInt(R.node().style.fontSize,10),X={fontSize:Q};(function(Y,K,te){var ae,oe,se,fe,ye=parseInt((MathJax.version||"").split(".")[0]);if(ye===2||ye===3){var pe=function(){var he="math-output-"+w.randstr({},64),xe=(fe=_.select("body").append("div").attr({id:he}).style({visibility:"hidden",position:"absolute","font-size":K.fontSize+"px"}).text(Y.replace(l,"\\lt ").replace(t,"\\gt "))).node();return ye===2?MathJax.Hub.Typeset(xe):MathJax.typeset([xe])},de=function(){var he=fe.select(ye===2?".MathJax_SVG":".MathJax"),xe=!he.empty()&&fe.select("svg").node();if(xe){var Re,we=xe.getBoundingClientRect();Re=ye===2?_.select("body").select("#MathJax_SVG_glyphs"):he.select("defs"),te(he,Re,we)}else w.log("There was an error in the tex syntax.",Y),te();fe.remove()};ye===2?MathJax.Hub.Queue(function(){return oe=w.extendDeepAll({},MathJax.Hub.config),se=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:i},displayAlign:"left"})},function(){if((ae=MathJax.Hub.config.menuSettings.renderer)!=="SVG")return MathJax.Hub.setRenderer("SVG")},pe,de,function(){if(ae!=="SVG")return MathJax.Hub.setRenderer(ae)},function(){return se!==void 0&&(MathJax.Hub.processSectionDelay=se),MathJax.Hub.Config(oe)}):ye===3&&(oe=w.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=i,(ae=MathJax.config.startup.output)!=="svg"&&(MathJax.config.startup.output="svg"),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){pe(),de(),ae!=="svg"&&(MathJax.config.startup.output=ae),MathJax.config=oe}))}else w.warn("No MathJax version:",MathJax.version)})(N[2],X,function(Y,K,te){j.selectAll("svg."+V).remove(),j.selectAll("g."+V+"-group").remove();var ae=Y&&Y.select("svg");if(!ae||!ae.node())return H(),void ee();var oe=j.append("g").classed(V+"-group",!0).attr({"pointer-events":"none","data-unformatted":G,"data-math":"Y"});oe.node().appendChild(ae.node()),K&&K.node()&&ae.node().insertBefore(K.node().cloneNode(!0),ae.node().firstChild);var se=te.width,fe=te.height;ae.attr({class:V,height:fe,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var ye=R.node().style.fill||"black",pe=ae.select("g");pe.attr({fill:ye,stroke:ye});var de=pe.node().getBoundingClientRect(),he=de.width,xe=de.height;(he>se||xe>fe)&&(ae.style("overflow","hidden"),he=(de=ae.node().getBoundingClientRect()).width,xe=de.height);var Re=+R.attr("x"),we=+R.attr("y"),Ae=-(Q||R.node().getBoundingClientRect().height)/4;if(V[0]==="y")oe.attr({transform:"rotate("+[-90,Re,we]+")"+s(-he/2,Ae-xe/2)});else if(V[0]==="l")we=Ae-xe/2;else if(V[0]==="a"&&V.indexOf("atitle")!==0)Re=0,we=Ae;else{var Me=R.attr("text-anchor");Re-=he*(Me==="middle"?.5:Me==="end"?1:0),we=we+Ae-xe/2}ae.attr({x:Re,y:we}),B&&B.call(R,oe),ee(oe)})})):H(),R}function H(){j.empty()||(V=R.attr("class")+"-math",j.select("svg."+V).remove()),R.text("").style("white-space","pre");var ee=function(Q,X){X=X.replace(p," ");var Y,K=!1,te=[],ae=-1;function oe(){ae++;var me=document.createElementNS(T.svg,"tspan");_.select(me).attr({class:"line",dy:ae*y+"em"}),Q.appendChild(me),Y=me;var Te=te;if(te=[{node:me}],Te.length>1)for(var Ee=1;Ee doesnt match end tag <"+me+">. Pretending it did match.",X),Y=te[te.length-1].node}else w.log("Ignoring unexpected end tag .",X)}d.test(X)?oe():(Y=Q,te=[{node:Q}]);for(var pe=X.split(c),de=0;de|>|>)/g,i=[["$","$"],["\\(","\\)"]],r={sup:"font-size:70%",sub:"font-size:70%",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},n={sub:"0.3em",sup:"-0.6em"},o={sub:"-0.21em",sup:"0.42em"},a="​",u=["http:","https:","mailto:","",void 0,":"],p=E.NEWLINES=/(\r\n?|\n)/g,c=/(<[^<>]*>)/,b=/<(\/?)([^ >]*)(\s+(.*))?>/i,d=//i;E.BR_TAG_ALL=//gi;var v=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,x=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,g=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,m=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function k(R,U){if(!R)return null;var B=R.match(U),G=B&&(B[3]||B[4]);return G&&C(G)}var h=/(^|;)\s*color:/;E.plainText=function(R,U){for(var B=(U=U||{}).len!==void 0&&U.len!==-1?U.len:1/0,G=U.allowedTags!==void 0?U.allowedTags:["br"],N=3,j=R.split(c),V=[],H="",ee=0,Q=0;QN?V.push(X.substr(0,ae-N)+"..."):V.push(X.substr(0,ae));break}H=""}}return V.join("")};var M={mu:"μ",amp:"&",lt:"<",gt:">",nbsp:" ",times:"×",plusmn:"±",deg:"°"},A=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function C(R){return R.replace(A,function(U,B){return(B.charAt(0)==="#"?function(G){if(!(G>1114111)){var N=String.fromCodePoint;if(N)return N(G);var j=String.fromCharCode;return G<=65535?j(G):j(55232+(G>>10),G%1024+56320)}}(B.charAt(1)==="x"?parseInt(B.substr(2),16):parseInt(B.substr(1),10)):M[B])||U})}function L(R){var U=encodeURI(decodeURI(R)),B=document.createElement("a"),G=document.createElement("a");B.href=R,G.href=U;var N=B.protocol,j=G.protocol;return u.indexOf(N)!==-1&&u.indexOf(j)!==-1?U:""}function O(R,U,B){var G,N,j,V=B.horizontalAlign,H=B.verticalAlign||"top",ee=R.node().getBoundingClientRect(),Q=U.node().getBoundingClientRect();return N=H==="bottom"?function(){return ee.bottom-G.height}:H==="middle"?function(){return ee.top+(ee.height-G.height)/2}:function(){return ee.top},j=V==="right"?function(){return ee.right-G.width}:V==="center"?function(){return ee.left+(ee.width-G.width)/2}:function(){return ee.left},function(){G=this.node().getBoundingClientRect();var X=j()-Q.left,Y=N()-Q.top,K=B.gd||{};if(B.gd){K._fullLayout._calcInverseTransform(K);var te=w.apply3DTransform(K._fullLayout._invTransform)(X,Y);X=te[0],Y=te[1]}return this.style({top:Y+"px",left:X+"px","z-index":1e3}),this}}E.convertEntities=C,E.sanitizeHTML=function(R){R=R.replace(p," ");for(var U=document.createElement("p"),B=U,G=[],N=R.split(c),j=0;jy.ts+s?t():y.timer=setTimeout(function(){t(),y.timer=null},s)},E.done=function(w){var s=e[w];return s&&s.timer?new Promise(function(T){var y=s.onDone;s.onDone=function(){y&&y(),T(),s.onDone=null}}):Promise.resolve()},E.clear=function(w){if(w)_(e[w]),delete e[w];else for(var s in e)E.clear(s)}},58163:function(D,E,e){var _=e(92770);D.exports=function(w,s){if(w>0)return Math.log(w)/Math.LN10;var T=Math.log(Math.min(s[0],s[1]))/Math.LN10;return _(T)||(T=Math.log(Math.max(s[0],s[1]))/Math.LN10-6),T}},90973:function(D,E,e){var _=D.exports={},w=e(78776).locationmodeToLayer,s=e(96892).zL;_.getTopojsonName=function(T){return[T.scope.replace(/ /g,"-"),"_",T.resolution.toString(),"m"].join("")},_.getTopojsonPath=function(T,y){return T+y+".json"},_.getTopojsonFeatures=function(T,y){var f=w[T.locationmode],l=y.objects[f];return s(y,l).features}},37815:function(D){D.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}},92177:function(D){D.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}},14458:function(D,E,e){var _=e(73972);D.exports=function(w){for(var s,T,y=_.layoutArrayContainers,f=_.layoutArrayRegexes,l=w.split("[")[0],t=0;t0&&T.log("Clearing previous rejected promises from queue."),x._promises=[]},E.cleanLayout=function(x){var g,m;x||(x={}),x.xaxis1&&(x.xaxis||(x.xaxis=x.xaxis1),delete x.xaxis1),x.yaxis1&&(x.yaxis||(x.yaxis=x.yaxis1),delete x.yaxis1),x.scene1&&(x.scene||(x.scene=x.scene1),delete x.scene1);var k=(y.subplotsRegistry.cartesian||{}).attrRegex,h=(y.subplotsRegistry.polar||{}).attrRegex,M=(y.subplotsRegistry.ternary||{}).attrRegex,A=(y.subplotsRegistry.gl3d||{}).attrRegex,C=Object.keys(x);for(g=0;g3?(te.x=1.02,te.xanchor="left"):te.x<-2&&(te.x=-.02,te.xanchor="right"),te.y>3?(te.y=1.02,te.yanchor="bottom"):te.y<-2&&(te.y=-.02,te.yanchor="top")),o(x),x.dragmode==="rotate"&&(x.dragmode="orbit"),l.clean(x),x.template&&x.template.layout&&E.cleanLayout(x.template.layout),x},E.cleanData=function(x){for(var g=0;g0)return x.substr(0,g)}E.hasParent=function(x,g){for(var m=d(g);m;){if(m in x)return!0;m=d(m)}return!1};var v=["x","y","z"];E.clearAxisTypes=function(x,g,m){for(var k=0;k1&&s.warn("Full array edits are incompatible with other edits",a);var x=r[""][""];if(l(x))i.set(null);else{if(!Array.isArray(x))return s.warn("Unrecognized full array edit value",a,x),!0;i.set(x)}return!b&&(u(d,v),p(t),!0)}var g,m,k,h,M,A,C,L,O=Object.keys(r).map(Number).sort(T),I=i.get(),R=I||[],U=o(v,a).get(),B=[],G=-1,N=R.length;for(g=0;gR.length-(C?0:1))s.warn("index out of range",a,k);else if(A!==void 0)M.length>1&&s.warn("Insertion & removal are incompatible with edits to the same index.",a,k),l(A)?B.push(k):C?(A==="add"&&(A={}),R.splice(k,0,A),U&&U.splice(k,0,{})):s.warn("Unrecognized full object edit value",a,k,A),G===-1&&(G=k);else for(m=0;m=0;g--)R.splice(B[g],1),U&&U.splice(B[g],1);if(R.length?I||i.set(R):i.set(null),b)return!1;if(u(d,v),c!==w){var j;if(G===-1)j=O;else{for(N=Math.max(R.length,N),j=[],g=0;g=G);g++)j.push(k);for(g=G;g=ne.data.length||Ee<-ne.data.length)throw new Error(me+" must be valid indices for gd.data.");if(ue.indexOf(Ee,Te+1)>-1||Ee>=0&&ue.indexOf(-ne.data.length+Ee)>-1||Ee<0&&ue.indexOf(ne.data.length+Ee)>-1)throw new Error("each index in "+me+" must be unique.")}}function I(ne,ue,me){if(!Array.isArray(ne.data))throw new Error("gd.data must be an array.");if(ue===void 0)throw new Error("currentIndices is a required argument.");if(Array.isArray(ue)||(ue=[ue]),O(ne,ue,"currentIndices"),me===void 0||Array.isArray(me)||(me=[me]),me!==void 0&&O(ne,me,"newIndices"),me!==void 0&&ue.length!==me.length)throw new Error("current and new indices must be of equal length.")}function R(ne,ue,me,Te,Ee){(function(Ye,Ze,st,ot){var ft=T.isPlainObject(ot);if(!Array.isArray(Ye.data))throw new Error("gd.data must be an array");if(!T.isPlainObject(Ze))throw new Error("update must be a key:value object");if(st===void 0)throw new Error("indices must be an integer or array of integers");for(var yt in O(Ye,st,"indices"),Ze){if(!Array.isArray(Ze[yt])||Ze[yt].length!==st.length)throw new Error("attribute "+yt+" must be an array of length equal to indices array length");if(ft&&(!(yt in ot)||!Array.isArray(ot[yt])||ot[yt].length!==Ze[yt].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}})(ne,ue,me,Te);for(var Ue=function(Ye,Ze,st,ot){var ft,yt,Et,Tt,xt,Dt=T.isPlainObject(ot),It=[];for(var Ft in Array.isArray(st)||(st=[st]),st=L(st,Ye.data.length-1),Ze)for(var qt=0;qt-1&&me.indexOf("grouptitlefont")===-1?je(me,me.replace("titlefont","title.font")):me.indexOf("titleposition")>-1?je(me,me.replace("titleposition","title.position")):me.indexOf("titleside")>-1?je(me,me.replace("titleside","title.side")):me.indexOf("titleoffset")>-1&&je(me,me.replace("titleoffset","title.offset")):je(me,me.replace("title","title.text"));function je(ge,be){ne[be]=ne[ge],delete ne[ge]}}function ee(ne,ue,me){ne=T.getGraphDiv(ne),v.clearPromiseQueue(ne);var Te={};if(typeof ue=="string")Te[ue]=me;else{if(!T.isPlainObject(ue))return T.warn("Relayout fail.",ue,me),Promise.reject();Te=T.extendFlat({},ue)}Object.keys(Te).length&&(ne.changed=!0);var Ee=ae(ne,Te),Ue=Ee.flags;Ue.calc&&(ne.calcdata=void 0);var De=[r.previousPromises];Ue.layoutReplot?De.push(x.layoutReplot):Object.keys(Te).length&&(Q(ne,Ue,Ee)||r.supplyDefaults(ne),Ue.legend&&De.push(x.doLegend),Ue.layoutstyle&&De.push(x.layoutStyles),Ue.axrange&&X(De,Ee.rangesAltered),Ue.ticks&&De.push(x.doTicksRelayout),Ue.modebar&&De.push(x.doModeBar),Ue.camera&&De.push(x.doCamera),Ue.colorbars&&De.push(x.doColorBars),De.push(h)),De.push(r.rehover,r.redrag,r.reselect),l.add(ne,ee,[ne,Ee.undoit],ee,[ne,Ee.redoit]);var je=T.syncOrAsync(De,ne);return je&&je.then||(je=Promise.resolve(ne)),je.then(function(){return ne.emit("plotly_relayout",Ee.eventData),ne})}function Q(ne,ue,me){var Te=ne._fullLayout;if(!ue.axrange)return!1;for(var Ee in ue)if(Ee!=="axrange"&&ue[Ee])return!1;for(var Ue in me.rangesAltered){var De=n.id2name(Ue),je=ne.layout[De],ge=Te[De];if(ge.autorange=je.autorange,je.range&&(ge.range=je.range.slice()),ge.cleanRange(),ge._matchGroup){for(var be in ge._matchGroup)if(be!==Ue){var Se=Te[n.id2name(be)];Se.autorange=ge.autorange,Se.range=ge.range.slice(),Se._input.range=ge.range.slice()}}}return!0}function X(ne,ue){var me=ue?function(Te){var Ee=[];for(var Ue in ue){var De=n.getFromId(Te,Ue);if(Ee.push(Ue),(De.ticklabelposition||"").indexOf("inside")!==-1&&De._anchorAxis&&Ee.push(De._anchorAxis._id),De._matchGroup)for(var je in De._matchGroup)ue[je]||Ee.push(je)}return n.draw(Te,Ee,{skipTitle:!0})}:function(Te){return n.draw(Te,"redraw")};ne.push(c,x.doAutoRangeAndConstraints,me,x.drawData,x.finalDraw)}var Y=/^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/,K=/^[xyz]axis[0-9]*\.autorange$/,te=/^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;function ae(ne,ue){var me,Te,Ee,Ue=ne.layout,De=ne._fullLayout,je=De._guiEditing,ge=N(De._preGUI,je),be=Object.keys(ue),Se=n.list(ne),Ne=T.extendDeepAll({},ue),Ye={};for(H(ue),be=Object.keys(ue),Te=0;Te0&&typeof qt.parts[Je]!="string";)Je--;var Ke=qt.parts[Je],Ge=qt.parts[Je-1]+"."+Ke,nt=qt.parts.slice(0,Je).join("."),ht=y(ne.layout,nt).get(),Oe=y(De,nt).get(),Be=qt.get();if(Nt!==void 0){yt[Ft]=Nt,Et[Ft]=Ke==="reverse"?Nt:G(Be);var Qe=i.getLayoutValObject(De,qt.parts);if(Qe&&Qe.impliedEdits&&Nt!==null)for(var ut in Qe.impliedEdits)Tt(T.relativeAttr(Ft,ut),Qe.impliedEdits[ut]);if(["width","height"].indexOf(Ft)!==-1)if(Nt){Tt("autosize",null);var pt=Ft==="height"?"width":"height";Tt(pt,De[pt])}else De[Ft]=ne._initialAutoSize[Ft];else if(Ft==="autosize")Tt("width",Nt?null:De.width),Tt("height",Nt?null:De.height);else if(Ge.match(Y))It(Ge),y(De,nt+"._inputRange").set(null);else if(Ge.match(K)){It(Ge),y(De,nt+"._inputRange").set(null);var bt=y(De,nt).get();bt._inputDomain&&(bt._input.domain=bt._inputDomain.slice())}else Ge.match(te)&&y(De,nt+"._inputDomain").set(null);if(Ke==="type"){xt=ht;var Lt=Oe.type==="linear"&&Nt==="log",Ct=Oe.type==="log"&&Nt==="linear";if(Lt||Ct){if(xt&&xt.range)if(Oe.autorange)Lt&&(xt.range=xt.range[1]>xt.range[0]?[1,2]:[2,1]);else{var mt=xt.range[0],Ot=xt.range[1];Lt?(mt<=0&&Ot<=0&&Tt(nt+".autorange",!0),mt<=0?mt=Ot/1e6:Ot<=0&&(Ot=mt/1e6),Tt(nt+".range[0]",Math.log(mt)/Math.LN10),Tt(nt+".range[1]",Math.log(Ot)/Math.LN10)):(Tt(nt+".range[0]",Math.pow(10,mt)),Tt(nt+".range[1]",Math.pow(10,Ot)))}else Tt(nt+".autorange",!0);Array.isArray(De._subplots.polar)&&De._subplots.polar.length&&De[qt.parts[0]]&&qt.parts[1]==="radialaxis"&&delete De[qt.parts[0]]._subplot.viewInitial["radialaxis.range"],t.getComponentMethod("annotations","convertCoords")(ne,Oe,Nt,Tt),t.getComponentMethod("images","convertCoords")(ne,Oe,Nt,Tt)}else Tt(nt+".autorange",!0),Tt(nt+".range",null);y(De,nt+"._inputRange").set(null)}else if(Ke.match(m)){var _t=y(De,Ft).get(),Pt=(Nt||{}).type;Pt&&Pt!=="-"||(Pt="linear"),t.getComponentMethod("annotations","convertCoords")(ne,_t,Pt,Tt),t.getComponentMethod("images","convertCoords")(ne,_t,Pt,Tt)}var Bt=d.containerArrayMatch(Ft);if(Bt){me=Bt.array,Te=Bt.index;var Wt=Bt.property,Gt=Qe||{editType:"calc"};Te!==""&&Wt===""&&(d.isAddVal(Nt)?Et[Ft]=null:d.isRemoveVal(Nt)?Et[Ft]=(y(Ue,me).get()||[])[Te]:T.warn("unrecognized full object value",ue)),g.update(ft,Gt),Ye[me]||(Ye[me]={});var Xt=Ye[me][Te];Xt||(Xt=Ye[me][Te]={}),Xt[Wt]=Nt,delete ue[Ft]}else Ke==="reverse"?(ht.range?ht.range.reverse():(Tt(nt+".autorange",!0),ht.range=[1,0]),Oe.autorange?ft.calc=!0:ft.plot=!0):(Ft==="dragmode"&&(Nt===!1&&Be!==!1||Nt!==!1&&Be===!1)||De._has("scatter-like")&&De._has("regl")&&Ft==="dragmode"&&(Nt==="lasso"||Nt==="select")&&Be!=="lasso"&&Be!=="select"||De._has("gl2d")?ft.plot=!0:Qe?g.update(ft,Qe):ft.calc=!0,qt.set(Nt))}}for(me in Ye)d.applyContainerArrayChanges(ne,ge(Ue,me),Ye[me],ft,ge)||(ft.plot=!0);for(var Kt in Dt){var nn=(xt=n.getFromId(ne,Kt))&&xt._constraintGroup;if(nn)for(var yn in ft.calc=!0,nn)Dt[yn]||(n.getFromId(ne,yn)._constraintShrinkable=!0)}return(oe(ne)||ue.height||ue.width)&&(ft.plot=!0),(ft.plot||ft.calc)&&(ft.layoutReplot=!0),{flags:ft,rangesAltered:Dt,undoit:Et,redoit:yt,eventData:Ne}}function oe(ne){var ue=ne._fullLayout,me=ue.width,Te=ue.height;return ne.layout.autosize&&r.plotAutoSize(ne,ne.layout,ue),ue.width!==me||ue.height!==Te}function se(ne,ue,me,Te){ne=T.getGraphDiv(ne),v.clearPromiseQueue(ne),T.isPlainObject(ue)||(ue={}),T.isPlainObject(me)||(me={}),Object.keys(ue).length&&(ne.changed=!0),Object.keys(me).length&&(ne.changed=!0);var Ee=v.coerceTraceIndices(ne,Te),Ue=V(ne,T.extendFlat({},ue),Ee),De=Ue.flags,je=ae(ne,T.extendFlat({},me)),ge=je.flags;(De.calc||ge.calc)&&(ne.calcdata=void 0),De.clearAxisTypes&&v.clearAxisTypes(ne,Ee,me);var be=[];ge.layoutReplot?be.push(x.layoutReplot):De.fullReplot?be.push(E._doPlot):(be.push(r.previousPromises),Q(ne,ge,je)||r.supplyDefaults(ne),De.style&&be.push(x.doTraceStyle),(De.colorbars||ge.colorbars)&&be.push(x.doColorBars),ge.legend&&be.push(x.doLegend),ge.layoutstyle&&be.push(x.layoutStyles),ge.axrange&&X(be,je.rangesAltered),ge.ticks&&be.push(x.doTicksRelayout),ge.modebar&&be.push(x.doModeBar),ge.camera&&be.push(x.doCamera),be.push(h)),be.push(r.rehover,r.redrag,r.reselect),l.add(ne,se,[ne,Ue.undoit,je.undoit,Ue.traces],se,[ne,Ue.redoit,je.redoit,Ue.traces]);var Se=T.syncOrAsync(be,ne);return Se&&Se.then||(Se=Promise.resolve(ne)),Se.then(function(){return ne.emit("plotly_update",{data:Ue.eventData,layout:je.eventData}),ne})}function fe(ne){return function(ue){ue._fullLayout._guiEditing=!0;var me=ne.apply(null,arguments);return ue._fullLayout._guiEditing=!1,me}}var ye=[{pattern:/^hiddenlabels/,attr:"legend.uirevision"},{pattern:/^((x|y)axis\d*)\.((auto)?range|title\.text)/},{pattern:/axis\d*\.showspikes$/,attr:"modebar.uirevision"},{pattern:/(hover|drag)mode$/,attr:"modebar.uirevision"},{pattern:/^(scene\d*)\.camera/},{pattern:/^(geo\d*)\.(projection|center|fitbounds)/},{pattern:/^(ternary\d*\.[abc]axis)\.(min|title\.text)$/},{pattern:/^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/},{pattern:/^(polar\d*\.angularaxis)\.rotation/},{pattern:/^(mapbox\d*)\.(center|zoom|bearing|pitch)/},{pattern:/^legend\.(x|y)$/,attr:"editrevision"},{pattern:/^(shapes|annotations)/,attr:"editrevision"},{pattern:/^title\.text$/,attr:"editrevision"}],pe=[{pattern:/^selectedpoints$/,attr:"selectionrevision"},{pattern:/(^|value\.)visible$/,attr:"legend.uirevision"},{pattern:/^dimensions\[\d+\]\.constraintrange/},{pattern:/^node\.(x|y|groups)/},{pattern:/^level$/},{pattern:/(^|value\.)name$/},{pattern:/colorbar\.title\.text$/},{pattern:/colorbar\.(x|y)$/,attr:"editrevision"}];function de(ne,ue){for(var me=0;me1;)if(Te.pop(),(me=y(ue,Te.join(".")+".uirevision").get())!==void 0)return me;return ue.uirevision}function xe(ne,ue){for(var me=0;me=Ee.length?Ee[0]:Ee[be]:Ee}function je(be){return Array.isArray(Ue)?be>=Ue.length?Ue[0]:Ue[be]:Ue}function ge(be,Se){var Ne=0;return function(){if(be&&++Ne===Se)return be()}}return Te._frameWaitingCnt===void 0&&(Te._frameWaitingCnt=0),new Promise(function(be,Se){function Ne(){ne.emit("plotly_animating"),Te._lastFrameAt=-1/0,Te._timeToNext=0,Te._runningTransitions=0,Te._currentFrame=null;var Ft=function(){Te._animationRaf=window.requestAnimationFrame(Ft),Date.now()-Te._lastFrameAt>Te._timeToNext&&function(){Te._currentFrame&&Te._currentFrame.onComplete&&Te._currentFrame.onComplete();var qt=Te._currentFrame=Te._frameQueue.shift();if(qt){var Nt=qt.name?qt.name.toString():null;ne._fullLayout._currentFrame=Nt,Te._lastFrameAt=Date.now(),Te._timeToNext=qt.frameOpts.duration,r.transition(ne,qt.frame.data,qt.frame.layout,v.coerceTraceIndices(ne,qt.frame.traces),qt.frameOpts,qt.transitionOpts).then(function(){qt.onComplete&&qt.onComplete()}),ne.emit("plotly_animatingframe",{name:Nt,frame:qt.frame,animation:{frame:qt.frameOpts,transition:qt.transitionOpts}})}else ne.emit("plotly_animated"),window.cancelAnimationFrame(Te._animationRaf),Te._animationRaf=null}()};Ft()}var Ye,Ze,st=0;function ot(Ft){return Array.isArray(Ee)?st>=Ee.length?Ft.transitionOpts=Ee[st]:Ft.transitionOpts=Ee[0]:Ft.transitionOpts=Ee,st++,Ft}var ft=[],yt=ue==null,Et=Array.isArray(ue);if(yt||Et||!T.isPlainObject(ue)){if(yt||["string","number"].indexOf(typeof ue)!==-1)for(Ye=0;Ye0&&DtDt)&&It.push(Ze);ft=It}}ft.length>0?function(Ft){if(Ft.length!==0){for(var qt=0;qt=0;Te--)if(T.isPlainObject(ue[Te])){var Ye=ue[Te].name,Ze=(ge[Ye]||Ne[Ye]||{}).name,st=ue[Te].name,ot=ge[Ze]||Ne[Ze];Ze&&st&&typeof st=="number"&&ot&&k<5&&(k++,T.warn('addFrames: overwriting frame "'+(ge[Ze]||Ne[Ze]).name+'" with a frame whose name of type "number" also equates to "'+Ze+'". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),k===5&&T.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")),Ne[Ye]={name:Ye},Se.push({frame:r.supplyFrameDefaults(ue[Te]),index:me&&me[Te]!==void 0&&me[Te]!==null?me[Te]:be+Te})}Se.sort(function(Ft,qt){return Ft.index>qt.index?-1:Ft.index=0;Te--){if(typeof(Ee=Se[Te].frame).name=="number"&&T.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!Ee.name)for(;ge[Ee.name="frame "+ne._transitionData._counter++];);if(ge[Ee.name]){for(Ue=0;Ue=0;me--)Te=ue[me],Ue.push({type:"delete",index:Te}),De.unshift({type:"insert",index:Te,value:Ee[Te]});var je=r.modifyFrames,ge=r.modifyFrames,be=[ne,De],Se=[ne,Ue];return l&&l.add(ne,je,be,ge,Se),r.modifyFrames(ne,Ue)},E.addTraces=function ne(ue,me,Te){ue=T.getGraphDiv(ue);var Ee,Ue,De=[],je=E.deleteTraces,ge=ne,be=[ue,De],Se=[ue,me];for(function(Ne,Ye,Ze){var st,ot;if(!Array.isArray(Ne.data))throw new Error("gd.data must be an array.");if(Ye===void 0)throw new Error("traces must be defined.");for(Array.isArray(Ye)||(Ye=[Ye]),st=0;st=0&&Ne=0&&Ne=O.length)return!1;if(h.dimensions===2){if(A++,M.length===A)return h;var I=M[A];if(!v(I))return!1;h=O[L][I]}else h=O[L]}else h=O}}return h}function v(h){return h===Math.round(h)&&h>=0}function x(){var h,M,A={};for(h in i(A,T),_.subplotsRegistry)if((M=_.subplotsRegistry[h]).layoutAttributes)if(Array.isArray(M.attr))for(var C=0;C=I.length)return!1;C=(A=(_.transformsRegistry[I[R].type]||{}).attributes)&&A[M[2]],O=3}else{var U=h._module;if(U||(U=(_.modules[h.type||s.type.dflt]||{})._module),!U)return!1;if(!(C=(A=U.attributes)&&A[L])){var B=U.basePlotModule;B&&B.attributes&&(C=B.attributes[L])}C||(C=s[L])}return d(C,M,O)},E.getLayoutValObject=function(h,M){var A=function(C,L){var O,I,R,U,B=C._basePlotModules;if(B){var G;for(O=0;O=i&&(t._input||{})._templateitemname;n&&(r=i);var o,a=l+"["+r+"]";function u(){o={},n&&(o[a]={},o[a].templateitemname=n)}function p(b,d){n?_.nestedProperty(o[a],b).set(d):o[a+"."+b]=d}function c(){var b=o;return u(),b}return u(),{modifyBase:function(b,d){o[b]=d},modifyItem:p,getUpdateObj:c,applyUpdate:function(b,d){b&&p(b,d);var v=c();for(var x in v)_.nestedProperty(f,x).set(v[x])}}}},61549:function(D,E,e){var _=e(39898),w=e(73972),s=e(74875),T=e(71828),y=e(63893),f=e(33306),l=e(7901),t=e(91424),i=e(92998),r=e(64168),n=e(89298),o=e(18783),a=e(99082),u=a.enforce,p=a.clean,c=e(71739).doAutoRange,b="start";function d(k,h,M){for(var A=0;A=k[1]||C[1]<=k[0])&&L[0]h[0])return!0}return!1}function v(k){var h,M,A,C,L,O,I=k._fullLayout,R=I._size,U=R.p,B=n.list(k,"",!0);if(I._paperdiv.style({width:k._context.responsive&&I.autosize&&!k._context._hasZeroWidth&&!k.layout.width?"100%":I.width+"px",height:k._context.responsive&&I.autosize&&!k._context._hasZeroHeight&&!k.layout.height?"100%":I.height+"px"}).selectAll(".main-svg").call(t.setSize,I.width,I.height),k._context.setBackground(k,I.paper_bgcolor),E.drawMainTitle(k),r.manage(k),!I._has("cartesian"))return s.previousPromises(k);function G(Ne,Ye,Ze){var st=Ne._lw/2;return Ne._id.charAt(0)==="x"?Ye?Ze==="top"?Ye._offset-U-st:Ye._offset+Ye._length+U+st:R.t+R.h*(1-(Ne.position||0))+st%1:Ye?Ze==="right"?Ye._offset+Ye._length+U+st:Ye._offset-U-st:R.l+R.w*(Ne.position||0)+st%1}for(h=0;h.5?"t":"b",Q=G._fullLayout.margin[ee],X=0;return N.yref==="paper"?X=j+N.pad.t+N.pad.b:N.yref==="container"&&(X=function(Y,K,te,ae,oe){var se=0;return te==="middle"&&(se+=oe/2),Y==="t"?(te==="top"&&(se+=oe),se+=ae-K*ae):(te==="bottom"&&(se+=oe),se+=K*ae),se}(ee,V,H,G._fullLayout.height,j)+N.pad.t+N.pad.b),X>Q?X:0}(k,M,U);B>0&&(function(G,N,j,V){var H="title.automargin",ee=G._fullLayout.title,Q=ee.y>.5?"t":"b",X={x:ee.x,y:ee.y,t:0,b:0},Y={};ee.yref==="paper"&&function(K,te,ae,oe,se){var fe=te.yref==="paper"?K._fullLayout._size.h:K._fullLayout.height,ye=T.isTopAnchor(te)?oe:oe-se,pe=ae==="b"?fe-ye:ye;return!(T.isTopAnchor(te)&&ae==="t"||T.isBottomAnchor(te)&&ae==="b")&&peR?m.push({code:"unused",traceType:A,templateCount:I,dataCount:R}):R>I&&m.push({code:"reused",traceType:A,templateCount:I,dataCount:R})}}else m.push({code:"data"});if(function U(B,G){for(var N in B)if(N.charAt(0)!=="_"){var j=B[N],V=a(B,N,G);w(j)?(Array.isArray(B)&&j._template===!1&&j.templateitemname&&m.push({code:"missing",path:V,templateitemname:j.templateitemname}),U(j,V)):Array.isArray(j)&&u(j)&&U(j,V)}}({data:h,layout:k},""),m.length)return m.map(p)}},403:function(D,E,e){var _=e(92770),w=e(72391),s=e(74875),T=e(71828),y=e(25095),f=e(5900),l=e(70942),t=e(11506).version,i={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};D.exports=function(r,n){var o,a,u,p;function c(R){return!(R in n)||T.validate(n[R],i[R])}if(n=n||{},T.isPlainObject(r)?(o=r.data||[],a=r.layout||{},u=r.config||{},p={}):(r=T.getGraphDiv(r),o=T.extendDeep([],r.data),a=T.extendDeep({},r.layout),u=r._context,p=r._fullLayout||{}),!c("width")&&n.width!==null||!c("height")&&n.height!==null)throw new Error("Height and width should be pixel values.");if(!c("format"))throw new Error("Export format is not "+T.join2(i.format.values,", "," or ")+".");var b={};function d(R,U){return T.coerce(n,b,i,R,U)}var v=d("format"),x=d("width"),g=d("height"),m=d("scale"),k=d("setBackground"),h=d("imageDataOnly"),M=document.createElement("div");M.style.position="absolute",M.style.left="-5000px",document.body.appendChild(M);var A=T.extendFlat({},a);x?A.width=x:n.width===null&&_(p.width)&&(A.width=p.width),g?A.height=g:n.height===null&&_(p.height)&&(A.height=p.height);var C=T.extendFlat({},u,{_exportedPlot:!0,staticPlot:!0,setBackground:k}),L=y.getRedrawFunc(M);function O(){return new Promise(function(R){setTimeout(R,y.getDelay(M._fullLayout))})}function I(){return new Promise(function(R,U){var B=f(M,v,m),G=M._fullLayout.width,N=M._fullLayout.height;function j(){w.purge(M),document.body.removeChild(M)}if(v==="full-json"){var V=s.graphJson(M,!1,"keepdata","object",!0,!0);return V.version=t,V=JSON.stringify(V),j(),R(h?V:y.encodeJSON(V))}if(j(),v==="svg")return R(h?B:y.encodeSVG(B));var H=document.createElement("canvas");H.id=T.randstr(),l({format:v,width:G,height:N,scale:m,canvas:H,svg:B,promise:!0}).then(R).catch(U)})}return new Promise(function(R,U){w.newPlot(M,o,A,C).then(L).then(O).then(I).then(function(B){R(function(G){return h?G.replace(y.IMAGE_URL_PREFIX,""):G}(B))}).catch(function(B){U(B)})})}},84936:function(D,E,e){var _=e(71828),w=e(74875),s=e(86281),T=e(72075).dfltConfig,y=_.isPlainObject,f=Array.isArray,l=_.isArrayOrTypedArray;function t(b,d,v,x,g,m){m=m||[];for(var k=Object.keys(b),h=0;hL.length&&x.push(o("unused",g,A.concat(L.length)));var G,N,j,V,H,ee=L.length,Q=Array.isArray(B);if(Q&&(ee=Math.min(ee,B.length)),O.dimensions===2)for(N=0;NL[N].length&&x.push(o("unused",g,A.concat(N,L[N].length)));var X=L[N].length;for(G=0;G<(Q?Math.min(X,B[N].length):X);G++)j=Q?B[N][G]:B,V=C[N][G],H=L[N][G],_.validate(V,j)?H!==V&&H!==+V&&x.push(o("dynamic",g,A.concat(N,G),V,H)):x.push(o("value",g,A.concat(N,G),V))}else x.push(o("array",g,A.concat(N),C[N]));else for(N=0;N1&&m.push(o("object","layout"))),w.supplyDefaults(k);for(var h=k._fullData,M=v.length,A=0;A0&&Math.round(a)===a))return{vals:i};n=a}for(var u=l.calendar,p=r==="start",c=r==="end",b=f[t+"period0"],d=s(b,u)||0,v=[],x=[],g=[],m=i.length,k=0;kC;)A=T(A,-n,u);for(;A<=C;)A=T(A,n,u);M=T(A,-n,u)}else{for(A=d+(h=Math.round((C-d)/o))*o;A>C;)A-=o;for(;A<=C;)A+=o;M=A-o}v[k]=p?M:c?A:(M+A)/2,x[k]=M,g[k]=A}return{vals:v,starts:x,ends:g}}},89502:function(D){D.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}},71739:function(D,E,e){var _=e(39898),w=e(92770),s=e(71828),T=e(50606).FP_SAFE,y=e(73972),f=e(91424),l=e(41675),t=l.getFromId,i=l.isLinked;function r(x,g){var m,k,h=[],M=x._fullLayout,A=o(M,g,0),C=o(M,g,1),L=a(x,g),O=L.min,I=L.max;if(O.length===0||I.length===0)return s.simpleMap(g.range,g.r2l);var R=O[0].val,U=I[0].val;for(m=1;m0&&((ee=te-A(N)-C(j))>ae?Q/ee>oe&&(V=N,H=j,oe=Q/ee):Q/te>oe&&(V={val:N.val,nopad:1},H={val:j.val,nopad:1},oe=Q/te));if(R===U){var se=R-1,fe=R+1;if(Y)if(R===0)h=[0,1];else{var ye=(R>0?I:O).reduce(function(de,he){return Math.max(de,C(he))},0),pe=R/(1-Math.min(.5,ye/te));h=R>0?[0,pe]:[pe,0]}else h=K?[Math.max(0,se),Math.max(1,fe)]:[se,fe]}else Y?(V.val>=0&&(V={val:0,nopad:1}),H.val<=0&&(H={val:0,nopad:1})):K&&(V.val-oe*A(V)<0&&(V={val:0,nopad:1}),H.val<=0&&(H={val:1,nopad:1})),oe=(H.val-V.val-n(g,N.val,j.val))/(te-A(V)-C(H)),h=[V.val-oe*A(V),H.val+oe*C(H)];return B&&h.reverse(),s.simpleMap(h,g.l2r||Number)}function n(x,g,m){var k=0;if(x.rangebreaks)for(var h=x.locateBreaks(g,m),M=0;M=m&&(O.extrapad||!A)){C=!1;break}h(g,O.val)&&O.pad<=m&&(A||!O.extrapad)&&(x.splice(L,1),L--)}if(C){var I=M&&g===0;x.push({val:g,pad:I?0:m,extrapad:!I&&A})}}function b(x){return w(x)&&Math.abs(x)=g}D.exports={getAutoRange:r,makePadFn:o,doAutoRange:function(x,g,m){if(g.setScale(),g.autorange){g.range=m?m.slice():r(x,g),g._r=g.range.slice(),g._rl=s.simpleMap(g._r,g.r2l);var k=g._input,h={};h[g._attr+".range"]=g.range,h[g._attr+".autorange"]=g.autorange,y.call("_storeDirectGUIEdit",x.layout,x._fullLayout._preGUI,h),k.range=g.range.slice(),k.autorange=g.autorange}var M=g._anchorAxis;if(M&&M.rangeslider){var A=M.rangeslider[g._name];A&&A.rangemode==="auto"&&(A.range=r(x,g)),M._input.rangeslider[g._name]=s.extendFlat({},A)}},findExtremes:function(x,g,m){m||(m={}),x._m||x.setScale();var k,h,M,A,C,L,O,I,R,U=[],B=[],G=g.length,N=m.padded||!1,j=m.tozero&&(x.type==="linear"||x.type==="-"),V=x.type==="log",H=!1,ee=m.vpadLinearized||!1;function Q(fe){if(Array.isArray(fe))return H=!0,function(pe){return Math.max(Number(fe[pe]||0),0)};var ye=Math.max(Number(fe||0),0);return function(){return ye}}var X=Q((x._m>0?m.ppadplus:m.ppadminus)||m.ppad||0),Y=Q((x._m>0?m.ppadminus:m.ppadplus)||m.ppad||0),K=Q(m.vpadplus||m.vpad),te=Q(m.vpadminus||m.vpad);if(!H){if(I=1/0,R=-1/0,V)for(k=0;k0&&(I=h),h>R&&h-T&&(I=h),h>R&&h=se;k--)oe(k);return{min:U,max:B,opts:m}},concatExtremes:a}},89298:function(D,E,e){var _=e(39898),w=e(92770),s=e(74875),T=e(73972),y=e(71828),f=y.strTranslate,l=e(63893),t=e(92998),i=e(7901),r=e(91424),n=e(13838),o=e(66287),a=e(50606),u=a.ONEMAXYEAR,p=a.ONEAVGYEAR,c=a.ONEMINYEAR,b=a.ONEMAXQUARTER,d=a.ONEAVGQUARTER,v=a.ONEMINQUARTER,x=a.ONEMAXMONTH,g=a.ONEAVGMONTH,m=a.ONEMINMONTH,k=a.ONEWEEK,h=a.ONEDAY,M=h/2,A=a.ONEHOUR,C=a.ONEMIN,L=a.ONESEC,O=a.MINUS_SIGN,I=a.BADNUM,R={K:"zeroline"},U={K:"gridline",L:"path"},B={K:"minor-gridline",L:"path"},G={K:"tick",L:"path"},N={K:"tick",L:"text"},j={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},V=e(18783),H=V.MID_SHIFT,ee=V.CAP_SHIFT,Q=V.LINE_SPACING,X=V.OPPOSITE_SIDE,Y=D.exports={};Y.setConvert=e(21994);var K=e(4322),te=e(41675),ae=te.idSort,oe=te.isLinked;Y.id2name=te.id2name,Y.name2id=te.name2id,Y.cleanId=te.cleanId,Y.list=te.list,Y.listIds=te.listIds,Y.getFromId=te.getFromId,Y.getFromTrace=te.getFromTrace;var se=e(71739);function fe(Oe){var Be=1e-4*(Oe[1]-Oe[0]);return[Oe[0]-Be,Oe[1]+Be]}Y.getAutoRange=se.getAutoRange,Y.findExtremes=se.findExtremes,Y.coerceRef=function(Oe,Be,Qe,ut,pt,bt){var Lt=ut.charAt(ut.length-1),Ct=Qe._fullLayout._subplots[Lt+"axis"],mt=ut+"ref",Ot={};return pt||(pt=Ct[0]||(typeof bt=="string"?bt:bt[0])),bt||(bt=pt),Ct=Ct.concat(Ct.map(function(_t){return _t+" domain"})),Ot[mt]={valType:"enumerated",values:Ct.concat(bt?typeof bt=="string"?[bt]:bt:[]),dflt:pt},y.coerce(Oe,Be,Ot,mt)},Y.getRefType=function(Oe){return Oe===void 0?Oe:Oe==="paper"?"paper":Oe==="pixel"?"pixel":/( domain)$/.test(Oe)?"domain":"range"},Y.coercePosition=function(Oe,Be,Qe,ut,pt,bt){var Lt,Ct;if(Y.getRefType(ut)!=="range")Lt=y.ensureNumber,Ct=Qe(pt,bt);else{var mt=Y.getFromId(Be,ut);Ct=Qe(pt,bt=mt.fraction2r(bt)),Lt=mt.cleanPos}Oe[pt]=Lt(Ct)},Y.cleanPosition=function(Oe,Be,Qe){return(Qe==="paper"||Qe==="pixel"?y.ensureNumber:Y.getFromId(Be,Qe).cleanPos)(Oe)},Y.redrawComponents=function(Oe,Be){Be=Be||Y.listIds(Oe);var Qe=Oe._fullLayout;function ut(pt,bt,Lt,Ct){for(var mt=T.getComponentMethod(pt,bt),Ot={},_t=0;_tQe&&_t2e-6||((Qe-Oe._forceTick0)/Oe._minDtick%1+1.000001)%1>2e-6)&&(Oe._minDtick=0)):Oe._minDtick=0},Y.saveRangeInitial=function(Oe,Be){for(var Qe=Y.list(Oe,"",!0),ut=!1,pt=0;pt.3*In||fn(ln)||fn(kn))){var Cn=yn.dtick/2;Kt+=Kt+Cn.8){var wn=Number(yn.substr(1));Wn.exactYears>.8&&wn%12==0?Kt=Y.tickIncrement(Kt,"M6","reverse")+1.5*h:Wn.exactMonths>.8?Kt=Y.tickIncrement(Kt,"M1","reverse")+15.5*h:Kt-=M;var on=Y.tickIncrement(Kt,yn);if(on<=ln)return on}return Kt}(Xt,Oe,Gt,Ct,pt)),Wt=Xt;Wt<=mt;)Wt=Y.tickIncrement(Wt,Gt,!1,pt);return{start:Be.c2r(Xt,0,pt),end:Be.c2r(Wt,0,pt),size:Gt,_dataSpan:mt-Ct}},Y.prepMinorTicks=function(Oe,Be,Qe){if(!Be.minor.dtick){delete Oe.dtick;var ut,pt=Be.dtick&&w(Be._tmin);if(pt){var bt=Y.tickIncrement(Be._tmin,Be.dtick,!0);ut=[Be._tmin,.99*bt+.01*Be._tmin]}else{var Lt=y.simpleMap(Be.range,Be.r2l);ut=[Lt[0],.8*Lt[0]+.2*Lt[1]]}if(Oe.range=y.simpleMap(ut,Be.l2r),Oe._isMinor=!0,Y.prepTicks(Oe,Qe),pt){var Ct=w(Be.dtick),mt=w(Oe.dtick),Ot=Ct?Be.dtick:+Be.dtick.substring(1),_t=mt?Oe.dtick:+Oe.dtick.substring(1);Ct&&mt?he(Ot,_t)?Ot===2*k&&_t===2*h&&(Oe.dtick=k):Ot===2*k&&_t===3*h?Oe.dtick=k:Ot!==k||(Be._input.minor||{}).nticks?xe(Ot/_t,2.5)?Oe.dtick=Ot/2:Oe.dtick=Ot:Oe.dtick=h:String(Be.dtick).charAt(0)==="M"?mt?Oe.dtick="M1":he(Ot,_t)?Ot>=12&&_t===2&&(Oe.dtick="M3"):Oe.dtick=Be.dtick:String(Oe.dtick).charAt(0)==="L"?String(Be.dtick).charAt(0)==="L"?he(Ot,_t)||(Oe.dtick=xe(Ot/_t,2.5)?Be.dtick/2:Be.dtick):Oe.dtick="D1":Oe.dtick==="D2"&&+Be.dtick>1&&(Oe.dtick=1)}Oe.range=Be.range}Be.minor._tick0Init===void 0&&(Oe.tick0=Be.tick0)},Y.prepTicks=function(Oe,Be){var Qe=y.simpleMap(Oe.range,Oe.r2l,void 0,void 0,Be);if(Oe.tickmode==="auto"||!Oe.dtick){var ut,pt=Oe.nticks;pt||(Oe.type==="category"||Oe.type==="multicategory"?(ut=Oe.tickfont?y.bigFont(Oe.tickfont.size||12):15,pt=Oe._length/ut):(ut=Oe._id.charAt(0)==="y"?40:80,pt=y.constrain(Oe._length/ut,4,9)+1),Oe._name==="radialaxis"&&(pt*=2)),Oe.minor&&Oe.minor.tickmode!=="array"||Oe.tickmode==="array"&&(pt*=100),Oe._roughDTick=Math.abs(Qe[1]-Qe[0])/pt,Y.autoTicks(Oe,Oe._roughDTick),Oe._minDtick>0&&Oe.dtick<2*Oe._minDtick&&(Oe.dtick=Oe._minDtick,Oe.tick0=Oe.l2r(Oe._forceTick0))}Oe.ticklabelmode==="period"&&function(bt){var Lt;function Ct(){return!(w(bt.dtick)||bt.dtick.charAt(0)!=="M")}var mt=Ct(),Ot=Y.getTickFormat(bt);if(Ot){var _t=bt._dtickInit!==bt.dtick;/%[fLQsSMX]/.test(Ot)||(/%[HI]/.test(Ot)?(Lt=A,_t&&!mt&&bt.dtick=(nn?0:1);yn--){var ln=!yn;yn?(Oe._dtickInit=Oe.dtick,Oe._tick0Init=Oe.tick0):(Oe.minor._dtickInit=Oe.minor.dtick,Oe.minor._tick0Init=Oe.minor.tick0);var kn=yn?Oe:y.extendFlat({},Oe,Oe.minor);if(ln?Y.prepMinorTicks(kn,Oe,Be):Y.prepTicks(kn,Be),kn.tickmode!=="array")if(kn.tickmode!=="sync"){var Wn=fe(mt),wn=Wn[0],on=Wn[1],_n=w(kn.dtick),fn=pt==="log"&&!(_n||kn.dtick.charAt(0)==="L"),hn=Y.tickFirst(kn,Be);if(yn){if(Oe._tmin=hn,hn=on:Hn<=on;Hn=Y.tickIncrement(Hn,qn,Ot,bt)){if(yn&&In++,kn.rangebreaks&&!Ot){if(Hn=Pt)break}if(Xt.length>Bt||Hn===Nn)break;Nn=Hn;var or={value:Hn};yn?(fn&&Hn!==(0|Hn)&&(or.simpleLabel=!0),Lt>1&&In%Lt&&(or.skipLabel=!0),Xt.push(or)):(or.minor=!0,Kt.push(or))}}else Xt=[],Wt=Ae(Oe);else yn?(Xt=[],Wt=Me(Oe)):(Kt=[],Gt=Me(Oe))}if(nn&&!(Oe.minor.ticks==="inside"&&Oe.ticks==="outside"||Oe.minor.ticks==="outside"&&Oe.ticks==="inside")){for(var tr=Xt.map(function(Pn){return Pn.value}),kr=[],gr=0;gr0?(On=un-1,Sn=un):(On=un,Sn=un);var pn,bn=Pn[On].value,dn=Pn[Sn].value,vn=Math.abs(dn-bn),An=Jt||vn,Bn=0;An>=c?Bn=vn>=c&&vn<=u?vn:p:Jt===d&&An>=v?Bn=vn>=v&&vn<=b?vn:d:An>=m?Bn=vn>=m&&vn<=x?vn:g:Jt===k&&An>=k?Bn=k:An>=h?Bn=h:Jt===M&&An>=M?Bn=M:Jt===A&&An>=A&&(Bn=A),Bn>=vn&&(Bn=vn,pn=!0);var Xn=Rn+Bn;if(jt.rangebreaks&&Bn>0){for(var er=0,Jn=0;Jn<84;Jn++){var lr=(Jn+.5)/84;jt.maskBreaks(Rn*(1-lr)+lr*Xn)!==I&&er++}(Bn*=er/84)||(Pn[un].drop=!0),pn&&vn>k&&(Bn=vn)}(Bn>0||un===0)&&(Pn[un].periodX=Rn+Bn/2)}}(Xt,Oe,Oe._definedDelta),Oe.rangebreaks){var mn=Oe._id.charAt(0)==="y",Ln=1;Oe.tickmode==="auto"&&(Ln=Oe.tickfont?Oe.tickfont.size:12);var En=NaN;for(Qe=Xt.length-1;Qe>-1;Qe--)if(Xt[Qe].drop)Xt.splice(Qe,1);else{Xt[Qe].value=Ke(Xt[Qe].value,Oe);var jn=Oe.c2p(Xt[Qe].value);(mn?En>jn-Ln:EnPt||Zn<_t)&&(Zn>Pt&&($n.periodX=Pt),Zn<_t&&($n.periodX=_t),Qn($n))),Xt[Qe].skipLabel&&Qn($n),Wt.push($n))}return Wt=Wt.concat(Gt),Oe._inCalcTicks=!1,Ct&&Wt.length&&(Wt[0].noTick=!0),Wt};var Ce=[2,5,10],ne=[1,2,3,6,12],ue=[1,2,5,10,15,30],me=[1,2,3,7,14],Te=[-.046,0,.301,.477,.602,.699,.778,.845,.903,.954,1],Ee=[-.301,0,.301,.699,1],Ue=[15,30,45,90,180];function De(Oe,Be,Qe){return Be*y.roundUp(Oe/Be,Qe)}function je(Oe){var Be=Oe.dtick;if(Oe._tickexponent=0,w(Be)||typeof Be=="string"||(Be=1),Oe.type!=="category"&&Oe.type!=="multicategory"||(Oe._tickround=null),Oe.type==="date"){var Qe=Oe.r2l(Oe.tick0),ut=Oe.l2r(Qe).replace(/(^-|i)/g,""),pt=ut.length;if(String(Be).charAt(0)==="M")pt>10||ut.substr(5)!=="01-01"?Oe._tickround="d":Oe._tickround=+Be.substr(1)%12==0?"y":"m";else if(Be>=h&&pt<=10||Be>=15*h)Oe._tickround="d";else if(Be>=C&&pt<=16||Be>=A)Oe._tickround="M";else if(Be>=L&&pt<=19||Be>=C)Oe._tickround="S";else{var bt=Oe.l2r(Qe+Be).replace(/^-/,"").length;Oe._tickround=Math.max(pt,bt)-20,Oe._tickround<0&&(Oe._tickround=4)}}else if(w(Be)||Be.charAt(0)==="L"){var Lt=Oe.range.map(Oe.r2d||Number);w(Be)||(Be=Number(Be.substr(1))),Oe._tickround=2-Math.floor(Math.log(Be)/Math.LN10+.01);var Ct=Math.max(Math.abs(Lt[0]),Math.abs(Lt[1])),mt=Math.floor(Math.log(Ct)/Math.LN10+.01),Ot=Oe.minexponent===void 0?3:Oe.minexponent;Math.abs(mt)>Ot&&(Se(Oe.exponentformat)&&!Ne(mt)?Oe._tickexponent=3*Math.round((mt-1)/3):Oe._tickexponent=mt)}else Oe._tickround=null}function ge(Oe,Be,Qe){var ut=Oe.tickfont||{};return{x:Be,dx:0,dy:0,text:Qe||"",fontSize:ut.size,font:ut.family,fontColor:ut.color}}Y.autoTicks=function(Oe,Be,Qe){var ut;function pt(Pt){return Math.pow(Pt,Math.floor(Math.log(Be)/Math.LN10))}if(Oe.type==="date"){Oe.tick0=y.dateTick0(Oe.calendar,0);var bt=2*Be;if(bt>p)Be/=p,ut=pt(10),Oe.dtick="M"+12*De(Be,ut,Ce);else if(bt>g)Be/=g,Oe.dtick="M"+De(Be,1,ne);else if(bt>h){if(Oe.dtick=De(Be,h,Oe._hasDayOfWeekBreaks?[1,2,7,14]:me),!Qe){var Lt=Y.getTickFormat(Oe),Ct=Oe.ticklabelmode==="period";Ct&&(Oe._rawTick0=Oe.tick0),/%[uVW]/.test(Lt)?Oe.tick0=y.dateTick0(Oe.calendar,2):Oe.tick0=y.dateTick0(Oe.calendar,1),Ct&&(Oe._dowTick0=Oe.tick0)}}else bt>A?Oe.dtick=De(Be,A,ne):bt>C?Oe.dtick=De(Be,C,ue):bt>L?Oe.dtick=De(Be,L,ue):(ut=pt(10),Oe.dtick=De(Be,ut,Ce))}else if(Oe.type==="log"){Oe.tick0=0;var mt=y.simpleMap(Oe.range,Oe.r2l);if(Oe._isMinor&&(Be*=1.5),Be>.7)Oe.dtick=Math.ceil(Be);else if(Math.abs(mt[1]-mt[0])<1){var Ot=1.5*Math.abs((mt[1]-mt[0])/Be);Be=Math.abs(Math.pow(10,mt[1])-Math.pow(10,mt[0]))/Ot,ut=pt(10),Oe.dtick="L"+De(Be,ut,Ce)}else Oe.dtick=Be>.3?"D2":"D1"}else Oe.type==="category"||Oe.type==="multicategory"?(Oe.tick0=0,Oe.dtick=Math.ceil(Math.max(Be,1))):Je(Oe)?(Oe.tick0=0,ut=1,Oe.dtick=De(Be,ut,Ue)):(Oe.tick0=0,ut=pt(10),Oe.dtick=De(Be,ut,Ce));if(Oe.dtick===0&&(Oe.dtick=1),!w(Oe.dtick)&&typeof Oe.dtick!="string"){var _t=Oe.dtick;throw Oe.dtick=1,"ax.dtick error: "+String(_t)}},Y.tickIncrement=function(Oe,Be,Qe,ut){var pt=Qe?-1:1;if(w(Be))return y.increment(Oe,pt*Be);var bt=Be.charAt(0),Lt=pt*Number(Be.substr(1));if(bt==="M")return y.incrementMonth(Oe,Lt,ut);if(bt==="L")return Math.log(Math.pow(10,Oe)+Lt)/Math.LN10;if(bt==="D"){var Ct=Be==="D2"?Ee:Te,mt=Oe+.01*pt,Ot=y.roundUp(y.mod(mt,1),Ct,Qe);return Math.floor(mt)+Math.log(_.round(Math.pow(10,Ot),1))/Math.LN10}throw"unrecognized dtick "+String(Be)},Y.tickFirst=function(Oe,Be){var Qe=Oe.r2l||Number,ut=y.simpleMap(Oe.range,Qe,void 0,void 0,Be),pt=ut[1] ")}else Kt._prevDateHead=wn,on+="
"+wn;nn.text=on}(Oe,bt,Qe,Ct):mt==="log"?function(Kt,nn,yn,ln,kn){var Wn=Kt.dtick,wn=nn.x,on=Kt.tickformat,_n=typeof Wn=="string"&&Wn.charAt(0);if(kn==="never"&&(kn=""),ln&&_n!=="L"&&(Wn="L3",_n="L"),on||_n==="L")nn.text=Ye(Math.pow(10,wn),Kt,kn,ln);else if(w(Wn)||_n==="D"&&y.mod(wn+.01,1)<.1){var fn=Math.round(wn),hn=Math.abs(fn),In=Kt.exponentformat;In==="power"||Se(In)&&Ne(fn)?(nn.text=fn===0?1:fn===1?"10":"10"+(fn>1?"":O)+hn+"",nn.fontSize*=1.25):(In==="e"||In==="E")&&hn>2?nn.text="1"+In+(fn>0?"+":O)+hn:(nn.text=Ye(Math.pow(10,wn),Kt,"","fakehover"),Wn==="D1"&&Kt._id.charAt(0)==="y"&&(nn.dy-=nn.fontSize/6))}else{if(_n!=="D")throw"unrecognized dtick "+String(Wn);nn.text=String(Math.round(Math.pow(10,y.mod(wn,1)))),nn.fontSize*=.75}if(Kt.dtick==="D1"){var Cn=String(nn.text).charAt(0);Cn!=="0"&&Cn!=="1"||(Kt._id.charAt(0)==="y"?nn.dx-=nn.fontSize/4:(nn.dy+=nn.fontSize/2,nn.dx+=(Kt.range[1]>Kt.range[0]?1:-1)*nn.fontSize*(wn<0?.5:.25)))}}(Oe,bt,0,Ct,Wt):mt==="category"?function(Kt,nn){var yn=Kt._categories[Math.round(nn.x)];yn===void 0&&(yn=""),nn.text=String(yn)}(Oe,bt):mt==="multicategory"?function(Kt,nn,yn){var ln=Math.round(nn.x),kn=Kt._categories[ln]||[],Wn=kn[1]===void 0?"":String(kn[1]),wn=kn[0]===void 0?"":String(kn[0]);yn?nn.text=wn+" - "+Wn:(nn.text=Wn,nn.text2=wn)}(Oe,bt,Qe):Je(Oe)?function(Kt,nn,yn,ln,kn){if(Kt.thetaunit!=="radians"||yn)nn.text=Ye(nn.x,Kt,kn,ln);else{var Wn=nn.x/180;if(Wn===0)nn.text="0";else{var wn=function(_n){function fn(Nn,Hn){return Math.abs(Nn-Hn)<=1e-6}var hn=function(Nn){for(var Hn=1;!fn(Math.round(Nn*Hn)/Hn,Nn);)Hn*=10;return Hn}(_n),In=_n*hn,Cn=Math.abs(function Nn(Hn,qn){return fn(qn,0)?Hn:Nn(qn,Hn%qn)}(In,hn));return[Math.round(In/Cn),Math.round(hn/Cn)]}(Wn);if(wn[1]>=100)nn.text=Ye(y.deg2rad(nn.x),Kt,kn,ln);else{var on=nn.x<0;wn[1]===1?wn[0]===1?nn.text="π":nn.text=wn[0]+"π":nn.text=["",wn[0],"","⁄","",wn[1],"","π"].join(""),on&&(nn.text=O+nn.text)}}}}(Oe,bt,Qe,Ct,Wt):function(Kt,nn,yn,ln,kn){kn==="never"?kn="":Kt.showexponent==="all"&&Math.abs(nn.x/Kt.dtick)<1e-6&&(kn="hide"),nn.text=Ye(nn.x,Kt,kn,ln)}(Oe,bt,0,Ct,Wt),ut||(Oe.tickprefix&&!Bt(Oe.showtickprefix)&&(bt.text=Oe.tickprefix+bt.text),Oe.ticksuffix&&!Bt(Oe.showticksuffix)&&(bt.text+=Oe.ticksuffix)),Oe.labelalias&&Oe.labelalias.hasOwnProperty(bt.text)){var Gt=Oe.labelalias[bt.text];typeof Gt=="string"&&(bt.text=Gt)}if(Oe.tickson==="boundaries"||Oe.showdividers){var Xt=function(Kt){var nn=Oe.l2p(Kt);return nn>=0&&nn<=Oe._length?Kt:null};bt.xbnd=[Xt(bt.x-.5),Xt(bt.x+Oe.dtick-.5)]}return bt},Y.hoverLabelText=function(Oe,Be,Qe){Qe&&(Oe=y.extendFlat({},Oe,{hoverformat:Qe}));var ut=Array.isArray(Be)?Be[0]:Be,pt=Array.isArray(Be)?Be[1]:void 0;if(pt!==void 0&&pt!==ut)return Y.hoverLabelText(Oe,ut,Qe)+" - "+Y.hoverLabelText(Oe,pt,Qe);var bt=Oe.type==="log"&&ut<=0,Lt=Y.tickText(Oe,Oe.c2l(bt?-ut:ut),"hover").text;return bt?ut===0?"0":O+Lt:Lt};var be=["f","p","n","μ","m","","k","M","G","T"];function Se(Oe){return Oe==="SI"||Oe==="B"}function Ne(Oe){return Oe>14||Oe<-15}function Ye(Oe,Be,Qe,ut){var pt=Oe<0,bt=Be._tickround,Lt=Qe||Be.exponentformat||"B",Ct=Be._tickexponent,mt=Y.getTickFormat(Be),Ot=Be.separatethousands;if(ut){var _t={exponentformat:Lt,minexponent:Be.minexponent,dtick:Be.showexponent==="none"?Be.dtick:w(Oe)&&Math.abs(Oe)||1,range:Be.showexponent==="none"?Be.range.map(Be.r2d):[0,Oe||1]};je(_t),bt=(Number(_t._tickround)||0)+4,Ct=_t._tickexponent,Be.hoverformat&&(mt=Be.hoverformat)}if(mt)return Be._numFormat(mt)(Oe).replace(/-/g,O);var Pt,Bt=Math.pow(10,-bt)/2;if(Lt==="none"&&(Ct=0),(Oe=Math.abs(Oe))"+Pt+"":Lt==="B"&&Ct===9?Oe+="B":Se(Lt)&&(Oe+=be[Ct/3+5])),pt?O+Oe:Oe}function Ze(Oe,Be){if(Oe){var Qe=Object.keys(j).reduce(function(ut,pt){return Be.indexOf(pt)!==-1&&j[pt].forEach(function(bt){ut[bt]=1}),ut},{});Object.keys(Oe).forEach(function(ut){Qe[ut]||(ut.length===1?Oe[ut]=0:delete Oe[ut])})}}function st(Oe,Be){for(var Qe=[],ut={},pt=0;pt1&&Qe=pt.min&&Oe=0,nn=_t(Bt,Wt[1])<=0;return(Gt||Kt)&&(Xt||nn)}if(Oe.tickformatstops&&Oe.tickformatstops.length>0)switch(Oe.type){case"date":case"linear":for(Be=0;Be=Lt(pt)))){Qe=ut;break}break;case"log":for(Be=0;Be=0&&pt.unshift(pt.splice(Ot,1).shift())}});var Lt={false:{left:0,right:0}};return y.syncOrAsync(pt.map(function(Ct){return function(){if(Ct){var mt=Y.getFromId(Oe,Ct);Qe||(Qe={}),Qe.axShifts=Lt,Qe.overlayingShiftedAx=bt;var Ot=Y.drawOne(Oe,mt,Qe);return mt._shiftPusher&&ht(mt,mt._fullDepth||0,Lt,!0),mt._r=mt.range.slice(),mt._rl=y.simpleMap(mt._r,mt.r2l),Ot}}}))},Y.drawOne=function(Oe,Be,Qe){var ut,pt,bt,Lt=(Qe=Qe||{}).axShifts||{},Ct=Qe.overlayingShiftedAx||[];Be.setScale();var mt=Oe._fullLayout,Ot=Be._id,_t=Ot.charAt(0),Pt=Y.counterLetter(Ot),Bt=mt._plots[Be._mainSubplot];if(Bt){if(Be._shiftPusher=Be.autoshift||Ct.indexOf(Be._id)!==-1||Ct.indexOf(Be.overlaying)!==-1,Be._shiftPusher&Be.anchor==="free"){var Wt=Be.linewidth/2||0;Be.ticks==="inside"&&(Wt+=Be.ticklen),ht(Be,Wt,Lt,!0),ht(Be,Be.shift||0,Lt,!1)}Qe.skipTitle===!0&&Be._shift!==void 0||(Be._shift=function(Sn,pn){return Sn.autoshift?pn[Sn.overlaying][Sn.side]:Sn.shift||0}(Be,Lt));var Gt=Bt[_t+"axislayer"],Xt=Be._mainLinePosition,Kt=Xt+=Be._shift,nn=Be._mainMirrorPosition,yn=Be._vals=Y.calcTicks(Be),ln=[Be.mirror,Kt,nn].join("_");for(ut=0;ut0?Sn.bottom-Bn:0,Xn))));var er=0,Jn=0;if(Be._shiftPusher&&(er=Math.max(Xn,Sn.height>0?vn==="l"?Bn-Sn.left:Sn.right-Bn:0),Be.title.text!==mt._dfltTitle[_t]&&(Jn=(Be._titleStandoff||0)+(Be._titleScoot||0),vn==="l"&&(Jn+=yt(Be))),Be._fullDepth=Math.max(er,Jn)),Be.automargin){pn={x:0,y:0,r:0,l:0,t:0,b:0};var lr=[0,1],sr=typeof Be._shift=="number"?Be._shift:0;if(_t==="x"){if(vn==="b"?pn[vn]=Be._depth:(pn[vn]=Be._depth=Math.max(Sn.width>0?Bn-Sn.top:0,Xn),lr.reverse()),Sn.width>0){var fr=Sn.right-(Be._offset+Be._length);fr>0&&(pn.xr=1,pn.r=fr);var cr=Be._offset-Sn.left;cr>0&&(pn.xl=0,pn.l=cr)}}else if(vn==="l"?(Be._depth=Math.max(Sn.height>0?Bn-Sn.left:0,Xn),pn[vn]=Be._depth-sr):(Be._depth=Math.max(Sn.height>0?Sn.right-Bn:0,Xn),pn[vn]=Be._depth+sr,lr.reverse()),Sn.height>0){var vr=Sn.bottom-(Be._offset+Be._length);vr>0&&(pn.yb=0,pn.b=vr);var Sr=Be._offset-Sn.top;Sr>0&&(pn.yt=1,pn.t=Sr)}pn[Pt]=Be.anchor==="free"?Be.position:Be._anchorAxis.domain[lr[0]],Be.title.text!==mt._dfltTitle[_t]&&(pn[vn]+=yt(Be)+(Be.title.standoff||0)),Be.mirror&&Be.anchor!=="free"&&((bn={x:0,y:0,r:0,l:0,t:0,b:0})[An]=Be.linewidth,Be.mirror&&Be.mirror!==!0&&(bn[An]+=Xn),Be.mirror===!0||Be.mirror==="ticks"?bn[Pt]=Be._anchorAxis.domain[lr[1]]:Be.mirror!=="all"&&Be.mirror!=="allticks"||(bn[Pt]=[Be._counterDomainMin,Be._counterDomainMax][lr[1]]))}Rn&&(dn=T.getComponentMethod("rangeslider","autoMarginOpts")(Oe,Be)),typeof Be.automargin=="string"&&(Ze(pn,Be.automargin),Ze(bn,Be.automargin)),s.autoMargin(Oe,xt(Be),pn),s.autoMargin(Oe,Dt(Be),bn),s.autoMargin(Oe,It(Be),dn)}),y.syncOrAsync(Jt)}}function On(Sn){var pn=Ot+(Sn||"tick");return kn[pn]||(kn[pn]=function(bn,dn){var vn,An,Bn,Xn;return bn._selections[dn].size()?(vn=1/0,An=-1/0,Bn=1/0,Xn=-1/0,bn._selections[dn].each(function(){var er=Tt(this),Jn=r.bBox(er.node().parentNode);vn=Math.min(vn,Jn.top),An=Math.max(An,Jn.bottom),Bn=Math.min(Bn,Jn.left),Xn=Math.max(Xn,Jn.right)})):(vn=0,An=0,Bn=0,Xn=0),{top:vn,bottom:An,left:Bn,right:Xn,height:An-vn,width:Xn-Bn}}(Be,pn)),kn[pn]}},Y.getTickSigns=function(Oe,Be){var Qe=Oe._id.charAt(0),ut={x:"top",y:"right"}[Qe],pt=Oe.side===ut?1:-1,bt=[-1,1,pt,-pt];return(Be?(Oe.minor||{}).ticks:Oe.ticks)!=="inside"==(Qe==="x")&&(bt=bt.map(function(Lt){return-Lt})),Oe.side&&bt.push({l:-1,t:-1,r:1,b:1}[Oe.side.charAt(0)]),bt},Y.makeTransTickFn=function(Oe){return Oe._id.charAt(0)==="x"?function(Be){return f(Oe._offset+Oe.l2p(Be.x),0)}:function(Be){return f(0,Oe._offset+Oe.l2p(Be.x))}},Y.makeTransTickLabelFn=function(Oe){var Be=function(pt){var bt=pt.ticklabelposition||"",Lt=function(nn){return bt.indexOf(nn)!==-1},Ct=Lt("top"),mt=Lt("left"),Ot=Lt("right"),_t=Lt("bottom"),Pt=Lt("inside"),Bt=_t||mt||Ct||Ot;if(!Bt&&!Pt)return[0,0];var Wt=pt.side,Gt=Bt?(pt.tickwidth||0)/2:0,Xt=3,Kt=pt.tickfont?pt.tickfont.size:12;return(_t||Ct)&&(Gt+=Kt*ee,Xt+=(pt.linewidth||0)/2),(mt||Ot)&&(Gt+=(pt.linewidth||0)/2,Xt+=3),Pt&&Wt==="top"&&(Xt-=Kt*(1-ee)),(mt||Ct)&&(Gt=-Gt),Wt!=="bottom"&&Wt!=="right"||(Xt=-Xt),[Bt?Gt:0,Pt?Xt:0]}(Oe),Qe=Be[0],ut=Be[1];return Oe._id.charAt(0)==="x"?function(pt){return f(Qe+Oe._offset+Oe.l2p(ot(pt)),ut)}:function(pt){return f(ut,Qe+Oe._offset+Oe.l2p(ot(pt)))}},Y.makeTickPath=function(Oe,Be,Qe,ut){ut||(ut={});var pt=ut.minor;if(pt&&!Oe.minor)return"";var bt=ut.len!==void 0?ut.len:pt?Oe.minor.ticklen:Oe.ticklen,Lt=Oe._id.charAt(0),Ct=(Oe.linewidth||1)/2;return Lt==="x"?"M0,"+(Be+Ct*Qe)+"v"+bt*Qe:"M"+(Be+Ct*Qe)+",0h"+bt*Qe},Y.makeLabelFns=function(Oe,Be,Qe){var ut=Oe.ticklabelposition||"",pt=function(In){return ut.indexOf(In)!==-1},bt=pt("top"),Lt=pt("left"),Ct=pt("right"),mt=pt("bottom")||Lt||bt||Ct,Ot=pt("inside"),_t=ut==="inside"&&Oe.ticks==="inside"||!Ot&&Oe.ticks==="outside"&&Oe.tickson!=="boundaries",Pt=0,Bt=0,Wt=_t?Oe.ticklen:0;if(Ot?Wt*=-1:mt&&(Wt=0),_t&&(Pt+=Wt,Qe)){var Gt=y.deg2rad(Qe);Pt=Wt*Math.cos(Gt)+1,Bt=Wt*Math.sin(Gt)}Oe.showticklabels&&(_t||Oe.showline)&&(Pt+=.2*Oe.tickfont.size);var Xt,Kt,nn,yn,ln,kn={labelStandoff:Pt+=(Oe.linewidth||1)/2*(Ot?-1:1),labelShift:Bt},Wn=0,wn=Oe.side,on=Oe._id.charAt(0),_n=Oe.tickangle;if(on==="x")yn=(ln=!Ot&&wn==="bottom"||Ot&&wn==="top")?1:-1,Ot&&(yn*=-1),Xt=Bt*yn,Kt=Be+Pt*yn,nn=ln?1:-.2,Math.abs(_n)===90&&(Ot?nn+=H:nn=_n===-90&&wn==="bottom"?ee:_n===90&&wn==="top"?H:.5,Wn=H/2*(_n/90)),kn.xFn=function(In){return In.dx+Xt+Wn*In.fontSize},kn.yFn=function(In){return In.dy+Kt+In.fontSize*nn},kn.anchorFn=function(In,Cn){if(mt){if(Lt)return"end";if(Ct)return"start"}return w(Cn)&&Cn!==0&&Cn!==180?Cn*yn<0!==Ot?"end":"start":"middle"},kn.heightFn=function(In,Cn,Nn){return Cn<-60||Cn>60?-.5*Nn:Oe.side==="top"!==Ot?-Nn:0};else if(on==="y"){if(yn=(ln=!Ot&&wn==="left"||Ot&&wn==="right")?1:-1,Ot&&(yn*=-1),Xt=Pt,Kt=Bt*yn,nn=0,Ot||Math.abs(_n)!==90||(nn=_n===-90&&wn==="left"||_n===90&&wn==="right"?ee:.5),Ot){var fn=w(_n)?+_n:0;if(fn!==0){var hn=y.deg2rad(fn);Wn=Math.abs(Math.sin(hn))*ee*yn,nn=0}}kn.xFn=function(In){return In.dx+Be-(Xt+In.fontSize*nn)*yn+Wn*In.fontSize},kn.yFn=function(In){return In.dy+Kt+In.fontSize*H},kn.anchorFn=function(In,Cn){return w(Cn)&&Math.abs(Cn)===90?"middle":ln?"end":"start"},kn.heightFn=function(In,Cn,Nn){return Oe.side==="right"&&(Cn*=-1),Cn<-30?-Nn:Cn<30?-.5*Nn:0}}return kn},Y.drawTicks=function(Oe,Be,Qe){Qe=Qe||{};var ut=Be._id+"tick",pt=[].concat(Be.minor&&Be.minor.ticks?Qe.vals.filter(function(Lt){return Lt.minor&&!Lt.noTick}):[]).concat(Be.ticks?Qe.vals.filter(function(Lt){return!Lt.minor&&!Lt.noTick}):[]),bt=Qe.layer.selectAll("path."+ut).data(pt,ft);bt.exit().remove(),bt.enter().append("path").classed(ut,1).classed("ticks",1).classed("crisp",Qe.crisp!==!1).each(function(Lt){return i.stroke(_.select(this),Lt.minor?Be.minor.tickcolor:Be.tickcolor)}).style("stroke-width",function(Lt){return r.crispRound(Oe,Lt.minor?Be.minor.tickwidth:Be.tickwidth,1)+"px"}).attr("d",Qe.path).style("display",null),nt(Be,[G]),bt.attr("transform",Qe.transFn)},Y.drawGrid=function(Oe,Be,Qe){if(Qe=Qe||{},Be.tickmode!=="sync"){var ut=Be._id+"grid",pt=Be.minor&&Be.minor.showgrid,bt=pt?Qe.vals.filter(function(nn){return nn.minor}):[],Lt=Be.showgrid?Qe.vals.filter(function(nn){return!nn.minor}):[],Ct=Qe.counterAxis;if(Ct&&Y.shouldShowZeroLine(Oe,Be,Ct))for(var mt=Be.tickmode==="array",Ot=0;Ot=0;Gt--){var Xt=Gt?Bt:Wt;if(Xt){var Kt=Xt.selectAll("path."+ut).data(Gt?Lt:bt,ft);Kt.exit().remove(),Kt.enter().append("path").classed(ut,1).classed("crisp",Qe.crisp!==!1),Kt.attr("transform",Qe.transFn).attr("d",Qe.path).each(function(nn){return i.stroke(_.select(this),nn.minor?Be.minor.gridcolor:Be.gridcolor||"#ddd")}).style("stroke-dasharray",function(nn){return r.dashStyle(nn.minor?Be.minor.griddash:Be.griddash,nn.minor?Be.minor.gridwidth:Be.gridwidth)}).style("stroke-width",function(nn){return(nn.minor?Pt:Be._gw)+"px"}).style("display",null),typeof Qe.path=="function"&&Kt.attr("d",Qe.path)}}nt(Be,[U,B])}},Y.drawZeroLine=function(Oe,Be,Qe){Qe=Qe||Qe;var ut=Be._id+"zl",pt=Y.shouldShowZeroLine(Oe,Be,Qe.counterAxis),bt=Qe.layer.selectAll("path."+ut).data(pt?[{x:0,id:Be._id}]:[]);bt.exit().remove(),bt.enter().append("path").classed(ut,1).classed("zl",1).classed("crisp",Qe.crisp!==!1).each(function(){Qe.layer.selectAll("path").sort(function(Lt,Ct){return ae(Lt.id,Ct.id)})}),bt.attr("transform",Qe.transFn).attr("d",Qe.path).call(i.stroke,Be.zerolinecolor||i.defaultLine).style("stroke-width",r.crispRound(Oe,Be.zerolinewidth,Be._gw||1)+"px").style("display",null),nt(Be,[R])},Y.drawLabels=function(Oe,Be,Qe){Qe=Qe||{};var ut=Oe._fullLayout,pt=Be._id,bt=pt.charAt(0),Lt=Qe.cls||pt+"tick",Ct=Qe.vals.filter(function(yn){return yn.text}),mt=Qe.labelFns,Ot=Qe.secondary?0:Be.tickangle,_t=(Be._prevTickAngles||{})[Lt],Pt=Qe.layer.selectAll("g."+Lt).data(Be.showticklabels?Ct:[],ft),Bt=[];function Wt(yn,ln){yn.each(function(kn){var Wn=_.select(this),wn=Wn.select(".text-math-group"),on=mt.anchorFn(kn,ln),_n=Qe.transFn.call(Wn.node(),kn)+(w(ln)&&+ln!=0?" rotate("+ln+","+mt.xFn(kn)+","+(mt.yFn(kn)-kn.fontSize/2)+")":""),fn=l.lineCount(Wn),hn=Q*kn.fontSize,In=mt.heightFn(kn,w(ln)?+ln:0,(fn-1)*hn);if(In&&(_n+=f(0,In)),wn.empty()){var Cn=Wn.select("text");Cn.attr({transform:_n,"text-anchor":on}),Cn.style("opacity",1),Be._adjustTickLabelsOverflow&&Be._adjustTickLabelsOverflow()}else{var Nn=r.bBox(wn.node()).width*{end:-.5,start:.5}[on];wn.attr("transform",_n+f(Nn,0))}})}Pt.enter().append("g").classed(Lt,1).append("text").attr("text-anchor","middle").each(function(yn){var ln=_.select(this),kn=Oe._promises.length;ln.call(l.positionText,mt.xFn(yn),mt.yFn(yn)).call(r.font,yn.font,yn.fontSize,yn.fontColor).text(yn.text).call(l.convertToTspans,Oe),Oe._promises[kn]?Bt.push(Oe._promises.pop().then(function(){Wt(ln,Ot)})):Wt(ln,Ot)}),nt(Be,[N]),Pt.exit().remove(),Qe.repositionOnUpdate&&Pt.each(function(yn){_.select(this).select("text").call(l.positionText,mt.xFn(yn),mt.yFn(yn))}),Be._adjustTickLabelsOverflow=function(){var yn=Be.ticklabeloverflow;if(yn&&yn!=="allow"){var ln=yn.indexOf("hide")!==-1,kn=Be._id.charAt(0)==="x",Wn=0,wn=kn?Oe._fullLayout.width:Oe._fullLayout.height;if(yn.indexOf("domain")!==-1){var on=y.simpleMap(Be.range,Be.r2l);Wn=Be.l2p(on[0])+Be._offset,wn=Be.l2p(on[1])+Be._offset}var _n=Math.min(Wn,wn),fn=Math.max(Wn,wn),hn=Be.side,In=1/0,Cn=-1/0;for(var Nn in Pt.each(function(or){var tr=_.select(this);if(tr.select(".text-math-group").empty()){var kr=r.bBox(tr.node()),gr=0;kn?(kr.right>fn||kr.left<_n)&&(gr=1):(kr.bottom>fn||kr.top+(Be.tickangle?0:or.fontSize/4)<_n)&&(gr=1);var ir=tr.select("text");gr?ln&&ir.style("opacity",0):(ir.style("opacity",1),In=hn==="bottom"||hn==="right"?Math.min(In,kn?kr.top:kr.left):-1/0,Cn=hn==="top"||hn==="left"?Math.max(Cn,kn?kr.bottom:kr.right):1/0)}}),ut._plots){var Hn=ut._plots[Nn];if(Be._id===Hn.xaxis._id||Be._id===Hn.yaxis._id){var qn=kn?Hn.yaxis:Hn.xaxis;qn&&(qn["_visibleLabelMin_"+Be._id]=In,qn["_visibleLabelMax_"+Be._id]=Cn)}}}},Be._hideCounterAxisInsideTickLabels=function(yn){var ln=Be._id.charAt(0)==="x",kn=[];for(var Wn in ut._plots){var wn=ut._plots[Wn];Be._id!==wn.xaxis._id&&Be._id!==wn.yaxis._id||kn.push(ln?wn.yaxis:wn.xaxis)}kn.forEach(function(on,_n){on&&Ge(on)&&(yn||[R,B,U,G,N]).forEach(function(fn){var hn=fn.K==="tick"&&fn.L==="text"&&Be.ticklabelmode==="period",In=ut._plots[Be._mainSubplot];(fn.K===R.K?In.zerolinelayer.selectAll("."+Be._id+"zl"):fn.K===B.K?In.minorGridlayer.selectAll("."+Be._id):fn.K===U.K?In.gridlayer.selectAll("."+Be._id):In[Be._id.charAt(0)+"axislayer"]).each(function(){var Cn=_.select(this);fn.L&&(Cn=Cn.selectAll(fn.L)),Cn.each(function(Nn){var Hn=Be.l2p(hn?ot(Nn):Nn.x)+Be._offset,qn=_.select(this);HnBe["_visibleLabelMin_"+on._id]?qn.style("display","none"):fn.K!=="tick"||_n||qn.style("display",null)})})})})},Wt(Pt,_t+1?_t:Ot);var Gt=null;Be._selections&&(Be._selections[Lt]=Pt);var Xt=[function(){return Bt.length&&Promise.all(Bt)}];Be.automargin&&ut._redrawFromAutoMarginCount&&_t===90?(Gt=90,Xt.push(function(){Wt(Pt,_t)})):Xt.push(function(){if(Wt(Pt,Ot),Ct.length&&bt==="x"&&!w(Ot)&&(Be.type!=="log"||String(Be.dtick).charAt(0)!=="D")){Gt=0;var yn,ln=0,kn=[];if(Pt.each(function(tr){ln=Math.max(ln,tr.fontSize);var kr=Be.l2p(tr.x),gr=Tt(this),ir=r.bBox(gr.node());kn.push({top:0,bottom:10,height:10,left:kr-ir.width/2,right:kr+ir.width/2+2,width:ir.width+2})}),Be.tickson!=="boundaries"&&!Be.showdividers||Qe.secondary){var Wn=Ct.length,wn=Math.abs((Ct[Wn-1].x-Ct[0].x)*Be._m)/(Wn-1),on=Be.ticklabelposition||"",_n=function(tr){return on.indexOf(tr)!==-1},fn=_n("top"),hn=_n("left"),In=_n("right"),Cn=_n("bottom")||hn||fn||In?(Be.tickwidth||0)+6:0,Nn=wn<2.5*ln||Be.type==="multicategory"||Be._name==="realaxis";for(yn=0;yn1)for(Ct=1;Ct2*h}(a,n))return"date";var d=o.autotypenumbers!=="strict";return function(v,x){for(var g=v.length,m=i(g),k=0,h=0,M={},A=0;A2*k}(a,d)?"category":function(v,x){for(var g=v.length,m=0;m=2){var h,M,A="";if(k.length===2){for(h=0;h<2;h++)if(M=d(k[h])){A=u;break}}var C=m("pattern",A);if(C===u)for(h=0;h<2;h++)(M=d(k[h]))&&(x.bounds[h]=k[h]=M-1);if(C)for(h=0;h<2;h++)switch(M=k[h],C){case u:if(!_(M)||(M=+M)!==Math.floor(M)||M<0||M>=7)return void(x.enabled=!1);x.bounds[h]=k[h]=M;break;case p:if(!_(M)||(M=+M)<0||M>24)return void(x.enabled=!1);x.bounds[h]=k[h]=M}if(g.autorange===!1){var L=g.range;if(L[0]L[1])return void(x.enabled=!1)}else if(k[0]>L[0]&&k[1]l?1:-1:+(T.substr(1)||1)-+(y.substr(1)||1)},E.ref2id=function(T){return!!/^[xyz]/.test(T)&&T.split(" ")[0]},E.isLinked=function(T,y){return s(y,T._axisMatchGroups)||s(y,T._axisConstraintGroups)}},15258:function(D){D.exports=function(E,e,_,w){if(e.type==="category"){var s,T=E.categoryarray,y=Array.isArray(T)&&T.length>0;y&&(s="array");var f,l=_("categoryorder",s);l==="array"&&(f=_("categoryarray")),y||l!=="array"||(l=e.categoryorder="trace"),l==="trace"?e._initialCategories=[]:l==="array"?e._initialCategories=f.slice():(f=function(t,i){var r,n,o,a=i.dataAttr||t._id.charAt(0),u={};if(i.axData)r=i.axData;else for(r=[],n=0;nv?x.substr(v):g.substr(d))+m:x+g+c*b:m}function u(c,b){for(var d=b._size,v=d.h/d.w,x={},g=Object.keys(c),m=0;ml*O)||B){for(d=0;dK&&seX&&(X=se);h/=(X-Q)/(2*Y),Q=g.l2r(Q),X=g.l2r(X),g.range=g._input.range=V=0?Math.min(se,.9):1/(1/Math.max(se,-.3)+3.222))}function V(se,fe,ye,pe,de){return se.append("path").attr("class","zoombox").style({fill:fe>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",l(ye,pe)).attr("d",de+"Z")}function H(se,fe,ye){return se.append("path").attr("class","zoombox-corners").style({fill:i.background,stroke:i.defaultLine,"stroke-width":1,opacity:0}).attr("transform",l(fe,ye)).attr("d","M0,0Z")}function ee(se,fe,ye,pe,de,he){se.attr("d",pe+"M"+ye.l+","+ye.t+"v"+ye.h+"h"+ye.w+"v-"+ye.h+"h-"+ye.w+"Z"),Q(se,fe,de,he)}function Q(se,fe,ye,pe){ye||(se.transition().style("fill",pe>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),fe.transition().style("opacity",1).duration(200))}function X(se){_.select(se).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function Y(se){I&&se.data&&se._context.showTips&&(w.notifier(w._(se,"Double-click to zoom back out"),"long"),I=!1)}function K(se){var fe=Math.floor(Math.min(se.b-se.t,se.r-se.l,O)/2);return"M"+(se.l-3.5)+","+(se.t-.5+fe)+"h3v"+-fe+"h"+fe+"v-3h-"+(fe+3)+"ZM"+(se.r+3.5)+","+(se.t-.5+fe)+"h-3v"+-fe+"h"+-fe+"v-3h"+(fe+3)+"ZM"+(se.r+3.5)+","+(se.b+.5-fe)+"h-3v"+fe+"h"+-fe+"v3h"+(fe+3)+"ZM"+(se.l-3.5)+","+(se.b+.5-fe)+"h3v"+fe+"h"+fe+"v3h-"+(fe+3)+"Z"}function te(se,fe,ye,pe,de){for(var he,xe,Re,we,Ae=!1,Me={},Ce={},ne=(de||{}).xaHash,ue=(de||{}).yaHash,me=0;me=0)fn._fullLayout._deactivateShape(fn);else{var hn=fn._fullLayout.clickmode;if(X(fn),on!==2||Dt||nn(),xt)hn.indexOf("select")>-1&&M(_n,fn,ne,ue,fe.id,pt),hn.indexOf("event")>-1&&n.click(fn,_n,fe.id);else if(on===1&&Dt){var In=xe?Ae:we,Cn=xe==="s"||Re==="w"?0:1,Nn=In._name+".range["+Cn+"]",Hn=function(tr,kr){var gr,ir=tr.range[kr],dr=Math.abs(ir-tr.range[1-kr]);return tr.type==="date"?ir:tr.type==="log"?(gr=Math.ceil(Math.max(0,-Math.log(dr)/Math.LN10))+3,s("."+gr+"g")(Math.pow(10,ir))):(gr=Math.floor(Math.log(Math.abs(ir))/Math.LN10)-Math.floor(Math.log(dr)/Math.LN10)+4,s("."+String(gr)+"g")(ir))}(In,Cn),qn="left",or="middle";if(In.fixedrange)return;xe?(or=xe==="n"?"top":"bottom",In.side==="right"&&(qn="right")):Re==="e"&&(qn="right"),fn._context.showAxisRangeEntryBoxes&&_.select(qt).call(t.makeEditable,{gd:fn,immediate:!0,background:fn._fullLayout.paper_bgcolor,text:String(Hn),fill:In.tickfont?In.tickfont.color:"#444",horizontalAlign:qn,verticalAlign:or}).on("edit",function(tr){var kr=In.d2r(tr);kr!==void 0&&f.call("_guiRelayout",fn,Nn,kr)})}}}function Ct(on,_n){if(se._transitioningWithDuration)return!1;var fn=Math.max(0,Math.min(Ee,yt*on+Nt)),hn=Math.max(0,Math.min(Ue,Et*_n+Je)),In=Math.abs(fn-Nt),Cn=Math.abs(hn-Je);function Nn(){Oe="",Ke.r=Ke.l,Ke.t=Ke.b,Qe.attr("d","M0,0Z")}if(Ke.l=Math.min(Nt,fn),Ke.r=Math.max(Nt,fn),Ke.t=Math.min(Je,hn),Ke.b=Math.max(Je,hn),De.isSubplotConstrained)In>O||Cn>O?(Oe="xy",In/Ee>Cn/Ue?(Cn=In*Ue/Ee,Je>hn?Ke.t=Je-Cn:Ke.b=Je+Cn):(In=Cn*Ee/Ue,Nt>fn?Ke.l=Nt-In:Ke.r=Nt+In),Qe.attr("d",K(Ke))):Nn();else if(je.isSubplotConstrained)if(In>O||Cn>O){Oe="xy";var Hn=Math.min(Ke.l/Ee,(Ue-Ke.b)/Ue),qn=Math.max(Ke.r/Ee,(Ue-Ke.t)/Ue);Ke.l=Hn*Ee,Ke.r=qn*Ee,Ke.b=(1-Hn)*Ue,Ke.t=(1-qn)*Ue,Qe.attr("d",K(Ke))}else Nn();else!be||Cn0){var or;if(je.isSubplotConstrained||!ge&&be.length===1){for(or=0;org[1]-.000244140625&&(T.domain=t),w.noneOrAll(s.domain,T.domain,t),T.tickmode==="sync"&&(T.tickmode="auto")}return y("layer"),T}},89426:function(D,E,e){var _=e(59652);D.exports=function(w,s,T,y,f){f||(f={});var l=f.tickSuffixDflt,t=_(w);T("tickprefix")&&T("showtickprefix",t),T("ticksuffix",l)&&T("showticksuffix",t)}},42449:function(D,E,e){var _=e(18783).FROM_BL;D.exports=function(w,s,T){T===void 0&&(T=_[w.constraintoward||"center"]);var y=[w.r2l(w.range[0]),w.r2l(w.range[1])],f=y[0]+(y[1]-y[0])*T;w.range=w._input.range=[w.l2r(f+(y[0]-f)*s),w.l2r(f+(y[1]-f)*s)],w.setScale()}},21994:function(D,E,e){var _=e(39898),w=e(84096).g0,s=e(71828),T=s.numberFormat,y=e(92770),f=s.cleanNumber,l=s.ms2DateTime,t=s.dateTime2ms,i=s.ensureNumber,r=s.isArrayOrTypedArray,n=e(50606),o=n.FP_SAFE,a=n.BADNUM,u=n.LOG_CLIP,p=n.ONEWEEK,c=n.ONEDAY,b=n.ONEHOUR,d=n.ONEMIN,v=n.ONESEC,x=e(41675),g=e(85555),m=g.HOUR_PATTERN,k=g.WEEKDAY_PATTERN;function h(A){return Math.pow(10,A)}function M(A){return A!=null}D.exports=function(A,C){C=C||{};var L=A._id||"x",O=L.charAt(0);function I(te,ae){if(te>0)return Math.log(te)/Math.LN10;if(te<=0&&ae&&A.range&&A.range.length===2){var oe=A.range[0],se=A.range[1];return .5*(oe+se-2*u*Math.abs(oe-se))}return a}function R(te,ae,oe,se){if((se||{}).msUTC&&y(te))return+te;var fe=t(te,oe||A.calendar);if(fe===a){if(!y(te))return a;te=+te;var ye=Math.floor(10*s.mod(te+.05,1)),pe=Math.round(te-ye/10);fe=t(new Date(pe))+ye/10}return fe}function U(te,ae,oe){return l(te,ae,oe||A.calendar)}function B(te){return A._categories[Math.round(te)]}function G(te){if(M(te)){if(A._categoriesMap===void 0&&(A._categoriesMap={}),A._categoriesMap[te]!==void 0)return A._categoriesMap[te];A._categories.push(typeof te=="number"?String(te):te);var ae=A._categories.length-1;return A._categoriesMap[te]=ae,ae}return a}function N(te){if(A._categoriesMap)return A._categoriesMap[te]}function j(te){var ae=N(te);return ae!==void 0?ae:y(te)?+te:void 0}function V(te){return y(te)?+te:N(te)}function H(te,ae,oe){return _.round(oe+ae*te,2)}function ee(te,ae,oe){return(te-oe)/ae}var Q=function(te){return y(te)?H(te,A._m,A._b):a},X=function(te){return ee(te,A._m,A._b)};if(A.rangebreaks){var Y=O==="y";Q=function(te){if(!y(te))return a;var ae=A._rangebreaks.length;if(!ae)return H(te,A._m,A._b);var oe=Y;A.range[0]>A.range[1]&&(oe=!oe);for(var se=oe?-1:1,fe=se*te,ye=0,pe=0;pehe)){ye=fe<(de+he)/2?pe:pe+1;break}ye=pe+1}var xe=A._B[ye]||0;return isFinite(xe)?H(te,A._m2,xe):0},X=function(te){var ae=A._rangebreaks.length;if(!ae)return ee(te,A._m,A._b);for(var oe=0,se=0;seA._rangebreaks[se].pmax&&(oe=se+1);return ee(te,A._m2,A._B[oe])}}A.c2l=A.type==="log"?I:i,A.l2c=A.type==="log"?h:i,A.l2p=Q,A.p2l=X,A.c2p=A.type==="log"?function(te,ae){return Q(I(te,ae))}:Q,A.p2c=A.type==="log"?function(te){return h(X(te))}:X,["linear","-"].indexOf(A.type)!==-1?(A.d2r=A.r2d=A.d2c=A.r2c=A.d2l=A.r2l=f,A.c2d=A.c2r=A.l2d=A.l2r=i,A.d2p=A.r2p=function(te){return A.l2p(f(te))},A.p2d=A.p2r=X,A.cleanPos=i):A.type==="log"?(A.d2r=A.d2l=function(te,ae){return I(f(te),ae)},A.r2d=A.r2c=function(te){return h(f(te))},A.d2c=A.r2l=f,A.c2d=A.l2r=i,A.c2r=I,A.l2d=h,A.d2p=function(te,ae){return A.l2p(A.d2r(te,ae))},A.p2d=function(te){return h(X(te))},A.r2p=function(te){return A.l2p(f(te))},A.p2r=X,A.cleanPos=i):A.type==="date"?(A.d2r=A.r2d=s.identity,A.d2c=A.r2c=A.d2l=A.r2l=R,A.c2d=A.c2r=A.l2d=A.l2r=U,A.d2p=A.r2p=function(te,ae,oe){return A.l2p(R(te,0,oe))},A.p2d=A.p2r=function(te,ae,oe){return U(X(te),ae,oe)},A.cleanPos=function(te){return s.cleanDate(te,a,A.calendar)}):A.type==="category"?(A.d2c=A.d2l=G,A.r2d=A.c2d=A.l2d=B,A.d2r=A.d2l_noadd=j,A.r2c=function(te){var ae=V(te);return ae!==void 0?ae:A.fraction2r(.5)},A.l2r=A.c2r=i,A.r2l=V,A.d2p=function(te){return A.l2p(A.r2c(te))},A.p2d=function(te){return B(X(te))},A.r2p=A.d2p,A.p2r=X,A.cleanPos=function(te){return typeof te=="string"&&te!==""?te:i(te)}):A.type==="multicategory"&&(A.r2d=A.c2d=A.l2d=B,A.d2r=A.d2l_noadd=j,A.r2c=function(te){var ae=j(te);return ae!==void 0?ae:A.fraction2r(.5)},A.r2c_just_indices=N,A.l2r=A.c2r=i,A.r2l=j,A.d2p=function(te){return A.l2p(A.r2c(te))},A.p2d=function(te){return B(X(te))},A.r2p=A.d2p,A.p2r=X,A.cleanPos=function(te){return Array.isArray(te)||typeof te=="string"&&te!==""?te:i(te)},A.setupMultiCategory=function(te){var ae,oe,se=A._traceIndices,fe=A._matchGroup;if(fe&&A._categories.length===0){for(var ye in fe)if(ye!==L){var pe=C[x.id2name(ye)];se=se.concat(pe._traceIndices)}}var de=[[0,{}],[0,{}]],he=[];for(ae=0;aeo&&(fe[oe]=o),fe[0]===fe[1]){var pe=Math.max(1,Math.abs(1e-6*fe[0]));fe[0]-=pe,fe[1]+=pe}}else s.nestedProperty(A,te).set(se)},A.setScale=function(te){var ae=C._size;if(A.overlaying){var oe=x.getFromId({_fullLayout:C},A.overlaying);A.domain=oe.domain}var se=te&&A._r?"_r":"range",fe=A.calendar;A.cleanRange(se);var ye,pe,de=A.r2l(A[se][0],fe),he=A.r2l(A[se][1],fe),xe=O==="y";if(xe?(A._offset=ae.t+(1-A.domain[1])*ae.h,A._length=ae.h*(A.domain[1]-A.domain[0]),A._m=A._length/(de-he),A._b=-A._m*he):(A._offset=ae.l+A.domain[0]*ae.w,A._length=ae.w*(A.domain[1]-A.domain[0]),A._m=A._length/(he-de),A._b=-A._m*de),A._rangebreaks=[],A._lBreaks=0,A._m2=0,A._B=[],A.rangebreaks&&(A._rangebreaks=A.locateBreaks(Math.min(de,he),Math.max(de,he)),A._rangebreaks.length)){for(ye=0;yehe&&(Re=!Re),Re&&A._rangebreaks.reverse();var we=Re?-1:1;for(A._m2=we*A._length/(Math.abs(he-de)-A._lBreaks),A._B.push(-A._m2*(xe?he:de)),ye=0;yese&&(se+=7,fese&&(se+=24,fe=oe&&fe=oe&&te=je.min&&(Teje.max&&(je.max=Ee),Ue=!1)}Ue&&pe.push({min:Te,max:Ee})}};for(oe=0;oet.duration?(function(){for(var m={},k=0;k rect").call(T.setTranslate,0,0).call(T.setScale,1,1),d.plot.call(T.setTranslate,v._offset,x._offset).call(T.setScale,1,1);var g=d.plot.selectAll(".scatterlayer .trace");g.selectAll(".point").call(T.setPointGroupScale,1,1),g.selectAll(".textpoint").call(T.setTextPointsScale,1,1),g.call(T.hideOutsideRangePoints,d)}function b(d,v){var x=d.plotinfo,g=x.xaxis,m=x.yaxis,k=g._length,h=m._length,M=!!d.xr1,A=!!d.yr1,C=[];if(M){var L=s.simpleMap(d.xr0,g.r2l),O=s.simpleMap(d.xr1,g.r2l),I=L[1]-L[0],R=O[1]-O[0];C[0]=(L[0]*(1-v)+v*O[0]-L[0])/(L[1]-L[0])*k,C[2]=k*(1-v+v*R/I),g.range[0]=g.l2r(L[0]*(1-v)+v*O[0]),g.range[1]=g.l2r(L[1]*(1-v)+v*O[1])}else C[0]=0,C[2]=k;if(A){var U=s.simpleMap(d.yr0,m.r2l),B=s.simpleMap(d.yr1,m.r2l),G=U[1]-U[0],N=B[1]-B[0];C[1]=(U[1]*(1-v)+v*B[1]-U[1])/(U[0]-U[1])*h,C[3]=h*(1-v+v*N/G),m.range[0]=g.l2r(U[0]*(1-v)+v*B[0]),m.range[1]=m.l2r(U[1]*(1-v)+v*B[1])}else C[1]=0,C[3]=h;y.drawOne(f,g,{skipTitle:!0}),y.drawOne(f,m,{skipTitle:!0}),y.redrawComponents(f,[g._id,m._id]);var j=M?k/C[2]:1,V=A?h/C[3]:1,H=M?C[0]:0,ee=A?C[1]:0,Q=M?C[0]/C[2]*k:0,X=A?C[1]/C[3]*h:0,Y=g._offset-Q,K=m._offset-X;x.clipRect.call(T.setTranslate,H,ee).call(T.setScale,1/j,1/V),x.plot.call(T.setTranslate,Y,K).call(T.setScale,j,V),T.setPointGroupScale(x.zoomScalePts,1/j,1/V),T.setTextPointsScale(x.zoomScaleTxt,1/j,1/V)}y.redrawComponents(f)}},951:function(D,E,e){var _=e(73972).traceIs,w=e(4322);function s(y){return{v:"x",h:"y"}[y.orientation||"v"]}function T(y,f){var l=s(y),t=_(y,"box-violin"),i=_(y._fullInput||{},"candlestick");return t&&!i&&f===l&&y[l]===void 0&&y[l+"0"]===void 0}D.exports=function(y,f,l,t){l("autotypenumbers",t.autotypenumbersDflt),l("type",(t.splomStash||{}).type)==="-"&&(function(i,r){if(i.type==="-"){var n,o=i._id,a=o.charAt(0);o.indexOf("scene")!==-1&&(o=a);var u=function(m,k,h){for(var M=0;M0&&(A["_"+h+"axes"]||{})[k]||(A[h+"axis"]||h)===k&&(T(A,h)||(A[h]||[]).length||A[h+"0"]))return A}}(r,o,a);if(u)if(u.type!=="histogram"||a!=={v:"y",h:"x"}[u.orientation||"v"]){var p=a+"calendar",c=u[p],b={noMultiCategory:!_(u,"cartesian")||_(u,"noMultiCategory")};if(u.type==="box"&&u._hasPreCompStats&&a==={h:"x",v:"y"}[u.orientation||"v"]&&(b.noMultiCategory=!0),b.autotypenumbers=i.autotypenumbers,T(u,a)){var d=s(u),v=[];for(n=0;n0?".":"")+n;w.isPlainObject(o)?f(o,t,a,r+1):t(a,n,o)}})}E.manageCommandObserver=function(l,t,i,r){var n={},o=!0;t&&t._commandObserver&&(n=t._commandObserver),n.cache||(n.cache={}),n.lookupTable={};var a=E.hasSimpleAPICommandBindings(l,i,n.lookupTable);if(t&&t._commandObserver){if(a)return n;if(t._commandObserver.remove)return t._commandObserver.remove(),t._commandObserver=null,n}if(a){s(l,a,n.cache),n.check=function(){if(o){var c=s(l,a,n.cache);return c.changed&&r&&n.lookupTable[c.value]!==void 0&&(n.disable(),Promise.resolve(r({value:c.value,type:a.type,prop:a.prop,traces:a.traces,index:n.lookupTable[c.value]})).then(n.enable,n.enable)),c.changed}};for(var u=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],p=0;p0&&R<0&&(R+=360);var G=(R-I)/4;return{type:"Polygon",coordinates:[[[I,U],[I,B],[I+G,B],[I+2*G,B],[I+3*G,B],[R,B],[R,U],[R-G,U],[R-2*G,U],[R-3*G,U],[I,U]]]}}D.exports=function(C){return new h(C)},M.plot=function(C,L,O,I){var R=this;if(I)return R.update(C,L,!0);R._geoCalcData=C,R._fullLayout=L;var U=L[this.id],B=[],G=!1;for(var N in x.layerNameToAdjective)if(N!=="frame"&&U["show"+N]){G=!0;break}for(var j=!1,V=0;V0&&B._module.calcGeoJSON(U,L)}if(!O){if(this.updateProjection(C,L))return;this.viewInitial&&this.scope===I.scope||this.saveViewInitial(I)}this.scope=I.scope,this.updateBaseLayers(L,I),this.updateDims(L,I),this.updateFx(L,I),o.generalUpdatePerTraceModule(this.graphDiv,this,C,I);var G=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=G.selectAll(".point"),this.dataPoints.text=G.selectAll("text"),this.dataPaths.line=G.selectAll(".js-line");var N=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=N.selectAll("path"),this._render()},M.updateProjection=function(C,L){var O=this.graphDiv,I=L[this.id],R=L._size,U=I.domain,B=I.projection,G=I.lonaxis,N=I.lataxis,j=G._ax,V=N._ax,H=this.projection=function(Ce){var ne=Ce.projection,ue=ne.type,me=x.projNames[ue];me="geo"+l.titleCase(me);for(var Te=(w[me]||y[me])(),Ee=Ce._isSatellite?180*Math.acos(1/ne.distance)/Math.PI:Ce._isClipped?x.lonaxisSpan[ue]/2:null,Ue=["center","rotate","parallels","clipExtent"],De=function(be){return be?Te:[]},je=0;jeEe*Math.PI/180}return!1},Te.getPath=function(){return s().projection(Te)},Te.getBounds=function(be){return Te.getPath().bounds(be)},Te.precision(x.precision),Ce._isSatellite&&Te.tilt(ne.tilt).distance(ne.distance),Ee&&Te.clipAngle(Ee-x.clipPad),Te}(I),ee=[[R.l+R.w*U.x[0],R.t+R.h*(1-U.y[1])],[R.l+R.w*U.x[1],R.t+R.h*(1-U.y[0])]],Q=I.center||{},X=B.rotation||{},Y=G.range||[],K=N.range||[];if(I.fitbounds){j._length=ee[1][0]-ee[0][0],V._length=ee[1][1]-ee[0][1],j.range=u(O,j),V.range=u(O,V);var te=(j.range[0]+j.range[1])/2,ae=(V.range[0]+V.range[1])/2;if(I._isScoped)Q={lon:te,lat:ae};else if(I._isClipped){Q={lon:te,lat:ae},X={lon:te,lat:ae,roll:X.roll};var oe=B.type,se=x.lonaxisSpan[oe]/2||180,fe=x.lataxisSpan[oe]/2||90;Y=[te-se,te+se],K=[ae-fe,ae+fe]}else Q={lon:te,lat:ae},X={lon:te,lat:X.lat,roll:X.roll}}H.center([Q.lon-X.lon,Q.lat-X.lat]).rotate([-X.lon,-X.lat,X.roll]).parallels(B.parallels);var ye=A(Y,K);H.fitExtent(ee,ye);var pe=this.bounds=H.getBounds(ye),de=this.fitScale=H.scale(),he=H.translate();if(I.fitbounds){var xe=H.getBounds(A(j.range,V.range)),Re=Math.min((pe[1][0]-pe[0][0])/(xe[1][0]-xe[0][0]),(pe[1][1]-pe[0][1])/(xe[1][1]-xe[0][1]));isFinite(Re)?H.scale(Re*de):l.warn("Something went wrong during"+this.id+"fitbounds computations.")}else H.scale(B.scale*de);var we=this.midPt=[(pe[0][0]+pe[1][0])/2,(pe[0][1]+pe[1][1])/2];if(H.translate([he[0]+(we[0]-he[0]),he[1]+(we[1]-he[1])]).clipExtent(pe),I._isAlbersUsa){var Ae=H([Q.lon,Q.lat]),Me=H.translate();H.translate([Me[0]-(Ae[0]-Me[0]),Me[1]-(Ae[1]-Me[1])])}},M.updateBaseLayers=function(C,L){var O=this,I=O.topojson,R=O.layers,U=O.basePaths;function B(H){return H==="lonaxis"||H==="lataxis"}function G(H){return!!x.lineLayers[H]}function N(H){return!!x.fillLayers[H]}var j=(this.hasChoropleth?x.layersForChoropleth:x.layers).filter(function(H){return G(H)||N(H)?L["show"+H]:!B(H)||L[H].showgrid}),V=O.framework.selectAll(".layer").data(j,String);V.exit().each(function(H){delete R[H],delete U[H],_.select(this).remove()}),V.enter().append("g").attr("class",function(H){return"layer "+H}).each(function(H){var ee=R[H]=_.select(this);H==="bg"?O.bgRect=ee.append("rect").style("pointer-events","all"):B(H)?U[H]=ee.append("path").style("fill","none"):H==="backplot"?ee.append("g").classed("choroplethlayer",!0):H==="frontplot"?ee.append("g").classed("scatterlayer",!0):G(H)?U[H]=ee.append("path").style("fill","none").style("stroke-miterlimit",2):N(H)&&(U[H]=ee.append("path").style("stroke","none"))}),V.order(),V.each(function(H){var ee=U[H],Q=x.layerNameToAdjective[H];H==="frame"?ee.datum(x.sphereSVG):G(H)||N(H)?ee.datum(k(I,I.objects[H])):B(H)&&ee.datum(function(X,Y,K){var te,ae,oe,se=Y[X],fe=x.scopeDefaults[Y.scope];X==="lonaxis"?(te=fe.lonaxisRange,ae=fe.lataxisRange,oe=function(Me,Ce){return[Me,Ce]}):X==="lataxis"&&(te=fe.lataxisRange,ae=fe.lonaxisRange,oe=function(Me,Ce){return[Ce,Me]});var ye={type:"linear",range:[te[0],te[1]-1e-6],tick0:se.tick0,dtick:se.dtick};a.setConvert(ye,K);var pe=a.calcTicks(ye);Y.isScoped||X!=="lonaxis"||pe.pop();for(var de=pe.length,he=new Array(de),xe=0;xe-1&&d(_.event,I,[O.xaxis],[O.yaxis],O.id,G),B.indexOf("event")>-1&&n.click(I,_.event))})}function N(j){return O.projection.invert([j[0]+O.xaxis._offset,j[1]+O.yaxis._offset])}},M.makeFramework=function(){var C=this,L=C.graphDiv,O=L._fullLayout,I="clip"+O._uid+C.id;C.clipDef=O._clips.append("clipPath").attr("id",I),C.clipRect=C.clipDef.append("rect"),C.framework=_.select(C.container).append("g").attr("class","geo "+C.id).call(r.setClipUrl,I,L),C.project=function(R){var U=C.projection(R);return U?[U[0]-C.xaxis._offset,U[1]-C.yaxis._offset]:[null,null]},C.xaxis={_id:"x",c2p:function(R){return C.project(R)[0]}},C.yaxis={_id:"y",c2p:function(R){return C.project(R)[1]}},C.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},a.setConvert(C.mockAxis,O)},M.saveViewInitial=function(C){var L,O=C.center||{},I=C.projection,R=I.rotation||{};this.viewInitial={fitbounds:C.fitbounds,"projection.scale":I.scale},L=C._isScoped?{"center.lon":O.lon,"center.lat":O.lat}:C._isClipped?{"projection.rotation.lon":R.lon,"projection.rotation.lat":R.lat}:{"center.lon":O.lon,"center.lat":O.lat,"projection.rotation.lon":R.lon},l.extendFlat(this.viewInitial,L)},M.render=function(C){this._hasMarkerAngles&&C?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()},M._render=function(){var C,L=this.projection,O=L.getPath();function I(U){var B=L(U.lonlat);return B?t(B[0],B[1]):null}function R(U){return L.isLonLatOverEdges(U.lonlat)?"none":null}for(C in this.basePaths)this.basePaths[C].attr("d",O);for(C in this.dataPaths)this.dataPaths[C].attr("d",function(U){return O(U.geojson)});for(C in this.dataPoints)this.dataPoints[C].attr("display",R).attr("transform",I)}},44622:function(D,E,e){var _=e(27659).AU,w=e(71828).counterRegex,s=e(69082),T="geo",y=w(T),f={};f.geo={valType:"subplotid",dflt:T,editType:"calc"},D.exports={attr:T,name:T,idRoot:T,idRegex:y,attrRegex:y,attributes:f,layoutAttributes:e(77519),supplyLayoutDefaults:e(82161),plot:function(l){for(var t=l._fullLayout,i=l.calcdata,r=t._subplots.geo,n=0;n0&&N<0&&(N+=360);var j,V,H,ee=(G+N)/2;if(!b){var Q=d?p.projRotate:[ee,0,0];j=r("projection.rotation.lon",Q[0]),r("projection.rotation.lat",Q[1]),r("projection.rotation.roll",Q[2]),r("showcoastlines",!d&&k)&&(r("coastlinecolor"),r("coastlinewidth")),r("showocean",!!k&&void 0)&&r("oceancolor")}b?(V=-96.6,H=38.7):(V=d?ee:j,H=(B[0]+B[1])/2),r("center.lon",V),r("center.lat",H),v&&(r("projection.tilt"),r("projection.distance")),x&&r("projection.parallels",p.projParallels||[0,60]),r("projection.scale"),r("showland",!!k&&void 0)&&r("landcolor"),r("showlakes",!!k&&void 0)&&r("lakecolor"),r("showrivers",!!k&&void 0)&&(r("rivercolor"),r("riverwidth")),r("showcountries",d&&u!=="usa"&&k)&&(r("countrycolor"),r("countrywidth")),(u==="usa"||u==="north america"&&a===50)&&(r("showsubunits",k),r("subunitcolor"),r("subunitwidth")),d||r("showframe",k)&&(r("framecolor"),r("framewidth")),r("bgcolor"),r("fitbounds")&&(delete i.projection.scale,d?(delete i.center.lon,delete i.center.lat):g?(delete i.center.lon,delete i.center.lat,delete i.projection.rotation.lon,delete i.projection.rotation.lat,delete i.lonaxis.range,delete i.lataxis.range):(delete i.center.lon,delete i.center.lat,delete i.projection.rotation.lon))}D.exports=function(t,i,r){w(t,i,r,{type:"geo",attributes:y,handleDefaults:l,fullData:r,partition:"y"})}},74455:function(D,E,e){var _=e(39898),w=e(71828),s=e(73972),T=Math.PI/180,y=180/Math.PI,f={cursor:"pointer"},l={cursor:"auto"};function t(k,h){return _.behavior.zoom().translate(h.translate()).scale(h.scale())}function i(k,h,M){var A=k.id,C=k.graphDiv,L=C.layout,O=L[A],I=C._fullLayout,R=I[A],U={},B={};function G(N,j){U[A+"."+N]=w.nestedProperty(O,N).get(),s.call("_storeDirectGUIEdit",L,I._preGUI,U);var V=w.nestedProperty(R,N);V.get()!==j&&(V.set(j),w.nestedProperty(O,N).set(j),B[A+"."+N]=j)}M(G),G("projection.scale",h.scale()/k.fitScale),G("fitbounds",!1),C.emit("plotly_relayout",B)}function r(k,h){var M=t(0,h);function A(C){var L=h.invert(k.midPt);C("center.lon",L[0]),C("center.lat",L[1])}return M.on("zoomstart",function(){_.select(this).style(f)}).on("zoom",function(){h.scale(_.event.scale).translate(_.event.translate),k.render(!0);var C=h.invert(k.midPt);k.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":h.scale()/k.fitScale,"geo.center.lon":C[0],"geo.center.lat":C[1]})}).on("zoomend",function(){_.select(this).style(l),i(k,h,A)}),M}function n(k,h){var M,A,C,L,O,I,R,U,B,G=t(0,h);function N(V){return h.invert(V)}function j(V){var H=h.rotate(),ee=h.invert(k.midPt);V("projection.rotation.lon",-H[0]),V("center.lon",ee[0]),V("center.lat",ee[1])}return G.on("zoomstart",function(){_.select(this).style(f),M=_.mouse(this),A=h.rotate(),C=h.translate(),L=A,O=N(M)}).on("zoom",function(){if(I=_.mouse(this),function(ee){var Q=N(ee);if(!Q)return!0;var X=h(Q);return Math.abs(X[0]-ee[0])>2||Math.abs(X[1]-ee[1])>2}(M))return G.scale(h.scale()),void G.translate(h.translate());h.scale(_.event.scale),h.translate([C[0],_.event.translate[1]]),O?N(I)&&(U=N(I),R=[L[0]+(U[0]-O[0]),A[1],A[2]],h.rotate(R),L=R):O=N(M=I),B=!0,k.render(!0);var V=h.rotate(),H=h.invert(k.midPt);k.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":h.scale()/k.fitScale,"geo.center.lon":H[0],"geo.center.lat":H[1],"geo.projection.rotation.lon":-V[0]})}).on("zoomend",function(){_.select(this).style(l),B&&i(k,h,j)}),G}function o(k,h){var M;h.rotate(),h.scale();var A=t(0,h),C=function(G){for(var N=0,j=arguments.length,V=[];++Nj?(L=(B>0?90:-90)-N,C=0):(L=Math.asin(B/j)*y-N,C=Math.sqrt(j*j-B*B));var V=180-L-2*N,H=(Math.atan2(G,U)-Math.atan2(R,C))*y,ee=(Math.atan2(G,U)-Math.atan2(R,-C))*y;return d(M[0],M[1],L,H)<=d(M[0],M[1],V,ee)?[L,H,M[2]]:[V,ee,M[2]]}function d(k,h,M,A){var C=v(M-k),L=v(A-h);return Math.sqrt(C*C+L*L)}function v(k){return(k%360+540)%360-180}function x(k,h,M){var A=M*T,C=k.slice(),L=h===0?1:0,O=h===2?1:2,I=Math.cos(A),R=Math.sin(A);return C[L]=k[L]*I-k[O]*R,C[O]=k[O]*I+k[L]*R,C}function g(k){return[Math.atan2(2*(k[0]*k[1]+k[2]*k[3]),1-2*(k[1]*k[1]+k[2]*k[2]))*y,Math.asin(Math.max(-1,Math.min(1,2*(k[0]*k[2]-k[3]*k[1]))))*y,Math.atan2(2*(k[0]*k[3]+k[1]*k[2]),1-2*(k[2]*k[2]+k[3]*k[3]))*y]}function m(k,h){for(var M=0,A=0,C=k.length;AMath.abs(b)?(r.boxEnd[1]=r.boxStart[1]+Math.abs(c)*O*(b>=0?1:-1),r.boxEnd[1]d[3]&&(r.boxEnd[1]=d[3],r.boxEnd[0]=r.boxStart[0]+(d[3]-r.boxStart[1])/Math.abs(O))):(r.boxEnd[0]=r.boxStart[0]+Math.abs(b)/O*(c>=0?1:-1),r.boxEnd[0]d[2]&&(r.boxEnd[0]=d[2],r.boxEnd[1]=r.boxStart[1]+(d[2]-r.boxStart[0])*Math.abs(O)))}}else r.boxEnabled?(c=r.boxStart[0]!==r.boxEnd[0],b=r.boxStart[1]!==r.boxEnd[1],c||b?(c&&(h(0,r.boxStart[0],r.boxEnd[0]),l.xaxis.autorange=!1),b&&(h(1,r.boxStart[1],r.boxEnd[1]),l.yaxis.autorange=!1),l.relayoutCallback()):l.glplot.setDirty(),r.boxEnabled=!1,r.boxInited=!1):r.boxInited&&(r.boxInited=!1);break;case"pan":r.boxEnabled=!1,r.boxInited=!1,a?(r.panning||(r.dragStart[0]=u,r.dragStart[1]=p),Math.abs(r.dragStart[0]-u).999&&(g="turntable"):g="turntable")}else g="turntable";o("dragmode",g),o("hovermode",a.getDfltFromLayout("hovermode"))}D.exports=function(r,n,o){var a=n._basePlotModules.length>1;T(r,n,o,{type:t,attributes:f,handleDefaults:i,fullLayout:n,font:n.font,fullData:o,getDfltFromLayout:function(u){if(!a)return _.validate(r[u],f[u])?r[u]:void 0},autotypenumbersDflt:n.autotypenumbers,paper_bgcolor:n.paper_bgcolor,calendar:n.calendar})}},65500:function(D,E,e){var _=e(77894),w=e(27670).Y,s=e(1426).extendFlat,T=e(71828).counterRegex;function y(f,l,t){return{x:{valType:"number",dflt:f,editType:"camera"},y:{valType:"number",dflt:l,editType:"camera"},z:{valType:"number",dflt:t,editType:"camera"},editType:"camera"}}D.exports={_arrayAttrRegexps:[T("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:s(y(0,0,1),{}),center:s(y(0,0,0),{}),eye:s(y(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:w({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:_,yaxis:_,zaxis:_,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot",_deprecated:{cameraposition:{valType:"info_array",editType:"camera"}}}},13133:function(D,E,e){var _=e(78614),w=["xaxis","yaxis","zaxis"];function s(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}s.prototype.merge=function(T){for(var y=0;y<3;++y){var f=T[w[y]];f.visible?(this.enabled[y]=f.showspikes,this.colors[y]=_(f.spikecolor),this.drawSides[y]=f.spikesides,this.lineWidth[y]=f.spikethickness):(this.enabled[y]=!1,this.drawSides[y]=!1)}},D.exports=function(T){var y=new s;return y.merge(T),y}},96085:function(D,E,e){D.exports=function(y){for(var f=y.axesOptions,l=y.glplot.axesPixels,t=y.fullSceneLayout,i=[[],[],[]],r=0;r<3;++r){var n=t[s[r]];if(n._length=(l[r].hi-l[r].lo)*l[r].pixelsPerDataUnit/y.dataScale[r],Math.abs(n._length)===1/0||isNaN(n._length))i[r]=[];else{n._input_range=n.range.slice(),n.range[0]=l[r].lo/y.dataScale[r],n.range[1]=l[r].hi/y.dataScale[r],n._m=1/(y.dataScale[r]*l[r].pixelsPerDataUnit),n.range[0]===n.range[1]&&(n.range[0]-=1,n.range[1]+=1);var o=n.tickmode;if(n.tickmode==="auto"){n.tickmode="linear";var a=n.nticks||w.constrain(n._length/40,4,9);_.autoTicks(n,Math.abs(n.range[1]-n.range[0])/a)}for(var u=_.calcTicks(n,{msUTC:!0}),p=0;p/g," "));i[r]=u,n.tickmode=o}}for(f.ticks=i,r=0;r<3;++r)for(T[r]=.5*(y.glplot.bounds[0][r]+y.glplot.bounds[1][r]),p=0;p<2;++p)f.bounds[p][r]=y.glplot.bounds[p][r];y.contourLevels=function(c){for(var b=new Array(3),d=0;d<3;++d){for(var v=c[d],x=new Array(v.length),g=0;gI.deltaY?1.1:.9090909090909091,U=M.glplot.getAspectratio();M.glplot.setAspectratio({x:R*U.x,y:R*U.y,z:R*U.z})}O(M)}},!!l&&{passive:!1}),M.glplot.canvas.addEventListener("mousemove",function(){if(M.fullSceneLayout.dragmode!==!1&&M.camera.mouseListener.buttons!==0){var I=L();M.graphDiv.emit("plotly_relayouting",I)}}),M.staticMode||M.glplot.canvas.addEventListener("webglcontextlost",function(I){A&&A.emit&&A.emit("plotly_webglcontextlost",{event:I,layer:M.id})},!1)),M.glplot.oncontextloss=function(){M.recoverContext()},M.glplot.onrender=function(){M.render()},!0},g.render=function(){var M,A=this,C=A.graphDiv,L=A.svgContainer,O=A.container.getBoundingClientRect();C._fullLayout._calcInverseTransform(C);var I=C._fullLayout._invScaleX,R=C._fullLayout._invScaleY,U=O.width*I,B=O.height*R;L.setAttributeNS(null,"viewBox","0 0 "+U+" "+B),L.setAttributeNS(null,"width",U),L.setAttributeNS(null,"height",B),d(A),A.glplot.axes.update(A.axesOptions);for(var G=Object.keys(A.traces),N=null,j=A.glplot.selection,V=0;V")):M.type==="isosurface"||M.type==="volume"?(K.valueLabel=n.hoverLabelText(A._mockAxis,A._mockAxis.d2l(j.traceCoordinate[3]),M.valuehoverformat),se.push("value: "+K.valueLabel),j.textLabel&&se.push(j.textLabel),Q=se.join("
")):Q=j.textLabel;var fe={x:j.traceCoordinate[0],y:j.traceCoordinate[1],z:j.traceCoordinate[2],data:X._input,fullData:X,curveNumber:X.index,pointNumber:Y};o.appendArrayPointValue(fe,X,Y),M._module.eventData&&(fe=X._module.eventData(fe,j,X,{},Y));var ye={points:[fe]};if(A.fullSceneLayout.hovermode){var pe=[];o.loneHover({trace:X,x:(.5+.5*ee[0]/ee[3])*U,y:(.5-.5*ee[1]/ee[3])*B,xLabel:K.xLabel,yLabel:K.yLabel,zLabel:K.zLabel,text:Q,name:N.name,color:o.castHoverOption(X,Y,"bgcolor")||N.color,borderColor:o.castHoverOption(X,Y,"bordercolor"),fontFamily:o.castHoverOption(X,Y,"font.family"),fontSize:o.castHoverOption(X,Y,"font.size"),fontColor:o.castHoverOption(X,Y,"font.color"),nameLength:o.castHoverOption(X,Y,"namelength"),textAlign:o.castHoverOption(X,Y,"align"),hovertemplate:i.castOption(X,Y,"hovertemplate"),hovertemplateLabels:i.extendFlat({},fe,K),eventData:[fe]},{container:L,gd:C,inOut_bbox:pe}),fe.bbox=pe[0]}j.distance<5&&(j.buttons||v)?C.emit("plotly_click",ye):C.emit("plotly_hover",ye),this.oldEventData=ye}else o.loneUnhover(L),this.oldEventData&&C.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;A.drawAnnotations(A)},g.recoverContext=function(){var M=this;M.glplot.dispose();var A=function(){M.glplot.gl.isContextLost()?requestAnimationFrame(A):M.initializeGLPlot()?M.plot.apply(M,M.plotArgs):i.error("Catastrophic and unrecoverable WebGL error. Context lost.")};requestAnimationFrame(A)};var k=["xaxis","yaxis","zaxis"];function h(M,A,C){for(var L=M.fullSceneLayout,O=0;O<3;O++){var I=k[O],R=I.charAt(0),U=L[I],B=A[R],G=A[R+"calendar"],N=A["_"+R+"length"];if(i.isArrayOrTypedArray(B))for(var j,V=0;V<(N||B.length);V++)if(i.isArrayOrTypedArray(B[V]))for(var H=0;HX[1][R])X[0][R]=-1,X[1][R]=1;else{var he=X[1][R]-X[0][R];X[0][R]-=he/32,X[1][R]+=he/32}if(B.autorange==="reversed"){var xe=X[0][R];X[0][R]=X[1][R],X[1][R]=xe}}else{var Re=B.range;X[0][R]=B.r2l(Re[0]),X[1][R]=B.r2l(Re[1])}X[0][R]===X[1][R]&&(X[0][R]-=1,X[1][R]+=1),Y[R]=X[1][R]-X[0][R],L.glplot.setBounds(R,{min:X[0][R]*H[R],max:X[1][R]*H[R]})}var we=N.aspectmode;if(we==="cube")Q=[1,1,1];else if(we==="manual"){var Ae=N.aspectratio;Q=[Ae.x,Ae.y,Ae.z]}else{if(we!=="auto"&&we!=="data")throw new Error("scene.js aspectRatio was not one of the enumerated types");var Me=[1,1,1];for(R=0;R<3;++R){var Ce=K[G=(B=N[k[R]]).type];Me[R]=Math.pow(Ce.acc,1/Ce.count)/H[R]}Q=we==="data"||Math.max.apply(null,Me)/Math.min.apply(null,Me)<=4?Me:[1,1,1]}N.aspectratio.x=j.aspectratio.x=Q[0],N.aspectratio.y=j.aspectratio.y=Q[1],N.aspectratio.z=j.aspectratio.z=Q[2],L.glplot.setAspectratio(N.aspectratio),L.viewInitial.aspectratio||(L.viewInitial.aspectratio={x:N.aspectratio.x,y:N.aspectratio.y,z:N.aspectratio.z}),L.viewInitial.aspectmode||(L.viewInitial.aspectmode=N.aspectmode);var ne=N.domain||null,ue=A._size||null;if(ne&&ue){var me=L.container.style;me.position="absolute",me.left=ue.l+ne.x[0]*ue.w+"px",me.top=ue.t+(1-ne.y[1])*ue.h+"px",me.width=ue.w*(ne.x[1]-ne.x[0])+"px",me.height=ue.h*(ne.y[1]-ne.y[0])+"px"}L.glplot.redraw()}},g.destroy=function(){var M=this;M.glplot&&(M.camera.mouseListener.enabled=!1,M.container.removeEventListener("wheel",M.camera.wheelListener),M.camera=null,M.glplot.dispose(),M.container.parentNode.removeChild(M.container),M.glplot=null)},g.getCamera=function(){var M,A=this;return A.camera.view.recalcMatrix(A.camera.view.lastT()),{up:{x:(M=A.camera).up[0],y:M.up[1],z:M.up[2]},center:{x:M.center[0],y:M.center[1],z:M.center[2]},eye:{x:M.eye[0],y:M.eye[1],z:M.eye[2]},projection:{type:M._ortho===!0?"orthographic":"perspective"}}},g.setViewport=function(M){var A,C=this,L=M.camera;C.camera.lookAt.apply(this,[[(A=L).eye.x,A.eye.y,A.eye.z],[A.center.x,A.center.y,A.center.z],[A.up.x,A.up.y,A.up.z]]),C.glplot.setAspectratio(M.aspectratio),L.projection.type==="orthographic"!==C.camera._ortho&&(C.glplot.redraw(),C.glplot.clearRGBA(),C.glplot.dispose(),C.initializeGLPlot())},g.isCameraChanged=function(M){var A=this.getCamera(),C=i.nestedProperty(M,this.id+".camera").get();function L(U,B,G,N){var j=["up","center","eye"],V=["x","y","z"];return B[j[G]]&&U[j[G]][V[N]]===B[j[G]][V[N]]}var O=!1;if(C===void 0)O=!0;else{for(var I=0;I<3;I++)for(var R=0;R<3;R++)if(!L(A,C,I,R)){O=!0;break}(!C.projection||A.projection&&A.projection.type!==C.projection.type)&&(O=!0)}return O},g.isAspectChanged=function(M){var A=this.glplot.getAspectratio(),C=i.nestedProperty(M,this.id+".aspectratio").get();return C===void 0||C.x!==A.x||C.y!==A.y||C.z!==A.z},g.saveLayout=function(M){var A,C,L,O,I,R,U=this,B=U.fullLayout,G=U.isCameraChanged(M),N=U.isAspectChanged(M),j=G||N;if(j){var V={};G&&(A=U.getCamera(),L=(C=i.nestedProperty(M,U.id+".camera")).get(),V[U.id+".camera"]=L),N&&(O=U.glplot.getAspectratio(),R=(I=i.nestedProperty(M,U.id+".aspectratio")).get(),V[U.id+".aspectratio"]=R),t.call("_storeDirectGUIEdit",M,B._preGUI,V),G&&(C.set(A),i.nestedProperty(B,U.id+".camera").set(A)),N&&(I.set(O),i.nestedProperty(B,U.id+".aspectratio").set(O),U.glplot.redraw())}return j},g.updateFx=function(M,A){var C=this,L=C.camera;if(L)if(M==="orbit")L.mode="orbit",L.keyBindingMode="rotate";else if(M==="turntable"){L.up=[0,0,1],L.mode="turntable",L.keyBindingMode="rotate";var O=C.graphDiv,I=O._fullLayout,R=C.fullSceneLayout.camera,U=R.up.x,B=R.up.y,G=R.up.z;if(G/Math.sqrt(U*U+B*B+G*G)<.999){var N=C.id+".camera.up",j={x:0,y:0,z:1},V={};V[N]=j;var H=O.layout;t.call("_storeDirectGUIEdit",H,I._preGUI,V),R.up=j,i.nestedProperty(H,N).set(j)}}else L.keyBindingMode=M;C.fullSceneLayout.hovermode=A},g.toImage=function(M){var A=this;M||(M="png"),A.staticMode&&A.container.appendChild(_),A.glplot.redraw();var C=A.glplot.gl,L=C.drawingBufferWidth,O=C.drawingBufferHeight;C.bindFramebuffer(C.FRAMEBUFFER,null);var I=new Uint8Array(L*O*4);C.readPixels(0,0,L,O,C.RGBA,C.UNSIGNED_BYTE,I),function(N,j,V){for(var H=0,ee=V-1;H0)for(var Y=255/X,K=0;K<3;++K)N[Q+K]=Math.min(Y*N[Q+K],255)}}(I,L,O);var R=document.createElement("canvas");R.width=L,R.height=O;var U,B=R.getContext("2d",{willReadFrequently:!0}),G=B.createImageData(L,O);switch(G.data.set(I),B.putImageData(G,0,0),M){case"jpeg":U=R.toDataURL("image/jpeg");break;case"webp":U=R.toDataURL("image/webp");break;default:U=R.toDataURL("image/png")}return A.staticMode&&A.container.removeChild(_),U},g.setConvert=function(){for(var M=0;M<3;M++){var A=this.fullSceneLayout[k[M]];n.setConvert(A,this.fullLayout),A.setScale=i.noop}},g.make4thDimension=function(){var M=this,A=M.graphDiv._fullLayout;M._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},n.setConvert(M._mockAxis,A)},D.exports=x},90060:function(D){D.exports=function(E,e,_,w){w=w||E.length;for(var s=new Array(w),T=0;TOpenStreetMap contributors',s=['© Carto',w].join(" "),T=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),y={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:w,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}]},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}]},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:s,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}]},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:s,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}]},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:T,tiles:["https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}]},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:T,tiles:["https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}]},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),tiles:["https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}]}},f=_(y);D.exports={requiredVersion:"1.10.1",styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:y,styleValuesNonMapbox:f,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install mapbox-gl@1.10.1."].join(` +`),noAccessTokenErrorMsg:["Missing Mapbox access token.","Mapbox trace type require a Mapbox access token to be registered.","For example:"," Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",f.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` +`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",path1:"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",path2:"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",polygon:"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner":"display: none;","ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner":"display: block; margin-top:2px","ctrl-attrib.mapboxgl-compact:hover":"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;","ctrl-attrib.mapboxgl-compact::after":`content: ""; cursor: pointer; position: absolute; background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;`,"ctrl-attrib.mapboxgl-compact":"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;","ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":`display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`}}},13056:function(D,E,e){var _=e(71828);D.exports=function(w,s){var T=w.split(" "),y=T[0],f=T[1],l=_.isArrayOrTypedArray(s)?_.mean(s):s,t=.5+l/100,i=1.5+l/100,r=["",""],n=[0,0];switch(y){case"top":r[0]="top",n[1]=-i;break;case"bottom":r[0]="bottom",n[1]=i}switch(f){case"left":r[1]="right",n[0]=-t;break;case"right":r[1]="left",n[0]=t}return{anchor:r[0]&&r[1]?r.join("-"):r[0]?r[0]:r[1]?r[1]:"center",offset:n}}},50101:function(D,E,e){var _=e(44517),w=e(71828),s=w.strTranslate,T=w.strScale,y=e(27659).AU,f=e(77922),l=e(39898),t=e(91424),i=e(63893),r=e(10481),n="mapbox",o=E.constants=e(77734);function a(u){return typeof u=="string"&&(o.styleValuesMapbox.indexOf(u)!==-1||u.indexOf("mapbox://")===0)}E.name=n,E.attr="subplot",E.idRoot=n,E.idRegex=E.attrRegex=w.counterRegex(n),E.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}},E.layoutAttributes=e(23585),E.supplyLayoutDefaults=e(77882),E.plot=function(u){var p=u._fullLayout,c=u.calcdata,b=p._subplots.mapbox;if(_.version!==o.requiredVersion)throw new Error(o.wrongVersionErrorMsg);var d=function(h,M){var A=h._fullLayout;if(h._context.mapboxAccessToken==="")return"";for(var C=[],L=[],O=!1,I=!1,R=0;R1&&w.warn(o.multipleTokensErrorMsg),C[0]):(L.length&&w.log(["Listed mapbox access token(s)",L.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}(u,b);_.accessToken=d;for(var v=0;vL/2){var O=h.split("|").join("
");A.text(O).attr("data-unformatted",O).call(i.convertToTspans,u),C=t.bBox(A.node())}A.attr("transform",s(-3,8-C.height)),M.insert("rect",".static-attribution").attr({x:-C.width-6,y:-C.height-3,width:C.width+6,height:C.height+3,fill:"rgba(255, 255, 255, 0.75)"});var I=1;C.width+6>L&&(I=L/(C.width+6));var R=[b.l+b.w*x.x[1],b.t+b.h*(1-x.y[0])];M.attr("transform",s(R[0],R[1])+T(I))}},E.updateFx=function(u){for(var p=u._fullLayout,c=p._subplots.mapbox,b=0;b0){for(var n=0;n0}function t(i){var r={},n={};switch(i.type){case"circle":_.extendFlat(n,{"circle-radius":i.circle.radius,"circle-color":i.color,"circle-opacity":i.opacity});break;case"line":_.extendFlat(n,{"line-width":i.line.width,"line-color":i.color,"line-opacity":i.opacity,"line-dasharray":i.line.dash});break;case"fill":_.extendFlat(n,{"fill-color":i.color,"fill-outline-color":i.fill.outlinecolor,"fill-opacity":i.opacity});break;case"symbol":var o=i.symbol,a=s(o.textposition,o.iconsize);_.extendFlat(r,{"icon-image":o.icon+"-15","icon-size":o.iconsize/10,"text-field":o.text,"text-size":o.textfont.size,"text-anchor":a.anchor,"text-offset":a.offset,"symbol-placement":o.placement}),_.extendFlat(n,{"icon-color":i.color,"text-color":o.textfont.color,"text-opacity":i.opacity});break;case"raster":_.extendFlat(n,{"raster-fade-duration":0,"raster-opacity":i.opacity})}return{layout:r,paint:n}}f.update=function(i){this.visible?this.needsNewImage(i)?this.updateImage(i):this.needsNewSource(i)?(this.removeLayer(),this.updateSource(i),this.updateLayer(i)):this.needsNewLayer(i)?this.updateLayer(i):this.updateStyle(i):(this.updateSource(i),this.updateLayer(i)),this.visible=l(i)},f.needsNewImage=function(i){return this.subplot.map.getSource(this.idSource)&&this.sourceType==="image"&&i.sourcetype==="image"&&(this.source!==i.source||JSON.stringify(this.coordinates)!==JSON.stringify(i.coordinates))},f.needsNewSource=function(i){return this.sourceType!==i.sourcetype||JSON.stringify(this.source)!==JSON.stringify(i.source)||this.layerType!==i.type},f.needsNewLayer=function(i){return this.layerType!==i.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},f.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},f.updateImage=function(i){this.subplot.map.getSource(this.idSource).updateImage({url:i.source,coordinates:i.coordinates});var r=this.findFollowingMapboxLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)},f.updateSource=function(i){var r=this.subplot.map;if(r.getSource(this.idSource)&&r.removeSource(this.idSource),this.sourceType=i.sourcetype,this.source=i.source,l(i)){var n=function(o){var a,u=o.sourcetype,p=o.source,c={type:u};return u==="geojson"?a="data":u==="vector"?a=typeof p=="string"?"url":"tiles":u==="raster"?(a="tiles",c.tileSize=256):u==="image"&&(a="url",c.coordinates=o.coordinates),c[a]=p,o.sourceattribution&&(c.attribution=w(o.sourceattribution)),c}(i);r.addSource(this.idSource,n)}},f.findFollowingMapboxLayerId=function(i){if(i==="traces")for(var r=this.subplot.getMapLayers(),n=0;n1)for(M=0;M-1&&u(R.originalEvent,A,[M.xaxis],[M.yaxis],M.id,I),U.indexOf("event")>-1&&l.click(A,R.originalEvent)}}},d.updateFx=function(k){var h=this,M=h.map,A=h.gd;if(!h.isStatic){var C,L=k.dragmode;C=function(R,U){U.isRect?(R.range={})[h.id]=[I([U.xmin,U.ymin]),I([U.xmax,U.ymax])]:(R.lassoPoints={})[h.id]=U.map(I)};var O=h.dragOptions;h.dragOptions=w.extendDeep(O||{},{dragmode:k.dragmode,element:h.div,gd:A,plotinfo:{id:h.id,domain:k[h.id].domain,xaxis:h.xaxis,yaxis:h.yaxis,fillRangeItems:C},xaxes:[h.xaxis],yaxes:[h.yaxis],subplot:h.id}),M.off("click",h.onClickInPanHandler),r(L)||i(L)?(M.dragPan.disable(),M.on("zoomstart",h.clearOutline),h.dragOptions.prepFn=function(R,U,B){n(R,U,B,h.dragOptions,L)},f.init(h.dragOptions)):(M.dragPan.enable(),M.off("zoomstart",h.clearOutline),h.div.onmousedown=null,h.div.ontouchstart=null,h.div.removeEventListener("touchstart",h.div._ontouchstart),h.onClickInPanHandler=h.onClickInPanFn(h.dragOptions),M.on("click",h.onClickInPanHandler))}function I(R){var U=h.map.unproject(R);return[U.lng,U.lat]}},d.updateFramework=function(k){var h=k[this.id].domain,M=k._size,A=this.div.style;A.width=M.w*(h.x[1]-h.x[0])+"px",A.height=M.h*(h.y[1]-h.y[0])+"px",A.left=M.l+h.x[0]*M.w+"px",A.top=M.t+(1-h.y[1])*M.h+"px",this.xaxis._offset=M.l+h.x[0]*M.w,this.xaxis._length=M.w*(h.x[1]-h.x[0]),this.yaxis._offset=M.t+(1-h.y[1])*M.h,this.yaxis._length=M.h*(h.y[1]-h.y[0])},d.updateLayers=function(k){var h,M=k[this.id].layers,A=this.layerList;if(M.length!==A.length){for(h=0;h=j.width-20?(ee["text-anchor"]="start",ee.x=5):(ee["text-anchor"]="end",ee.x=j._paper.attr("width")-7),V.attr(ee);var Q=V.select(".js-link-to-tool"),X=V.select(".js-link-spacer"),Y=V.select(".js-sourcelinks");N._context.showSources&&N._context.showSources(N),N._context.showLink&&function(K,te){te.text("");var ae=te.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(K._context.linkText+" "+String.fromCharCode(187));if(K._context.sendData)ae.on("click",function(){v.sendDataToCloud(K)});else{var oe=window.location.pathname.split("/"),se=window.location.search;ae.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+oe[2].split(".")[0]+"/"+oe[1]+se})}}(N,Q),X.text(Q.text()&&Y.text()?" - ":"")}},v.sendDataToCloud=function(N){var j=(window.PLOTLYENV||{}).BASE_URL||N._context.plotlyServerURL;if(j){N.emit("plotly_beforeexport");var V=_.select(N).append("div").attr("id","hiddenform").style("display","none"),H=V.append("form").attr({action:j+"/external",method:"post",target:"_blank"});return H.append("input").attr({type:"text",name:"data"}).node().value=v.graphJson(N,!1,"keepdata"),H.node().submit(),V.remove(),N.emit("plotly_afterexport"),!1}};var m=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],k=["year","month","dayMonth","dayMonthYear"];function h(N,j){var V=N._context.locale;V||(V="en-US");var H=!1,ee={};function Q(oe){for(var se=!0,fe=0;fe1&&Me.length>1){for(y.getComponentMethod("grid","sizeDefaults")(X,Q),ee=0;ee15&&Me.length>15&&Q.shapes.length===0&&Q.images.length===0,v.linkSubplots(K,Q,Y,H),v.cleanPlot(K,Q,Y,H);var Te=!(!H._has||!H._has("gl2d")),Ee=!(!Q._has||!Q._has("gl2d")),Ue=!(!H._has||!H._has("cartesian"))||Te,De=!(!Q._has||!Q._has("cartesian"))||Ee;Ue&&!De?H._bgLayer.remove():De&&!Ue&&(Q._shouldCreateBgLayer=!0),H._zoomlayer&&!N._dragging&&o({_fullLayout:H}),function(Se,Ne){var Ye,Ze=[];Ne.meta&&(Ye=Ne._meta={meta:Ne.meta,layout:{meta:Ne.meta}});for(var st=0;st0){var te=1-2*X;H=Math.round(te*H),ee=Math.round(te*ee)}}var ae=v.layoutAttributes.width.min,oe=v.layoutAttributes.height.min;H1,fe=!j.height&&Math.abs(V.height-ee)>1;(fe||se)&&(se&&(V.width=H),fe&&(V.height=ee)),N._initialAutoSize||(N._initialAutoSize={width:H,height:ee}),v.sanitizeMargins(V)},v.supplyLayoutModuleDefaults=function(N,j,V,H){var ee,Q,X,Y=y.componentsRegistry,K=j._basePlotModules,te=y.subplotsRegistry.cartesian;for(ee in Y)(X=Y[ee]).includeBasePlot&&X.includeBasePlot(N,j);for(var ae in K.length||K.push(te),j._has("cartesian")&&(y.getComponentMethod("grid","contentDefaults")(N,j),te.finalizeSubplots(N,j)),j._subplots)j._subplots[ae].sort(t.subplotSort);for(Q=0;Q1&&(V.l/=de,V.r/=de)}if(se){var he=(V.t+V.b)/se;he>1&&(V.t/=he,V.b/=he)}var xe=V.xl!==void 0?V.xl:V.x,Re=V.xr!==void 0?V.xr:V.x,we=V.yt!==void 0?V.yt:V.y,Ae=V.yb!==void 0?V.yb:V.y;fe[j]={l:{val:xe,size:V.l+pe},r:{val:Re,size:V.r+pe},b:{val:Ae,size:V.b+pe},t:{val:we,size:V.t+pe}},ye[j]=1}else delete fe[j],delete ye[j];if(!H._replotting)return v.doAutoMargin(N)}},v.doAutoMargin=function(N){var j=N._fullLayout,V=j.width,H=j.height;j._size||(j._size={}),O(j);var ee=j._size,Q=j.margin,X={t:0,b:0,l:0,r:0},Y=t.extendFlat({},ee),K=N._fullLayout._reservedMargin;for(var te in K)for(var ae in K[te]){var oe=K[te][ae];X[ae]=Math.max(X[ae],oe)}var se=Q.l,fe=Q.r,ye=Q.t,pe=Q.b,de=j._pushmargin,he=j._pushmarginIds,xe=j.minreducedwidth,Re=j.minreducedheight;if(j.margin.autoexpand!==!1){for(var we in de)he[we]||delete de[we];for(var Ae in de.base={l:{val:0,size:se},r:{val:1,size:fe},t:{val:1,size:ye},b:{val:0,size:pe}},de){var Me=de[Ae].l||{},Ce=de[Ae].b||{},ne=Me.val,ue=Me.size,me=Ce.val,Te=Ce.size,Ee=V-X.r-X.l,Ue=H-X.t-X.b;for(var De in de){if(T(ue)&&de[De].r){var je=de[De].r.val,ge=de[De].r.size;if(je>ne){var be=(ue*je+(ge-Ee)*ne)/(je-ne),Se=(ge*(1-ne)+(ue-Ee)*(1-je))/(je-ne);be+Se>se+fe&&(se=be,fe=Se)}}if(T(Te)&&de[De].t){var Ne=de[De].t.val,Ye=de[De].t.size;if(Ne>me){var Ze=(Te*Ne+(Ye-Ue)*me)/(Ne-me),st=(Ye*(1-me)+(Te-Ue)*(1-Ne))/(Ne-me);Ze+st>pe+ye&&(pe=Ze,ye=st)}}}}}var ot=t.constrain(V-Q.l-Q.r,2,xe),ft=t.constrain(H-Q.t-Q.b,2,Re),yt=Math.max(0,V-ot),Et=Math.max(0,H-ft);if(yt){var Tt=(se+fe)/yt;Tt>1&&(se/=Tt,fe/=Tt)}if(Et){var xt=(pe+ye)/Et;xt>1&&(pe/=xt,ye/=xt)}if(ee.l=Math.round(se)+X.l,ee.r=Math.round(fe)+X.r,ee.t=Math.round(ye)+X.t,ee.b=Math.round(pe)+X.b,ee.p=Math.round(Q.pad),ee.w=Math.round(V)-ee.l-ee.r,ee.h=Math.round(H)-ee.t-ee.b,!j._replotting&&(v.didMarginChange(Y,ee)||function(It){if("_redrawFromAutoMarginCount"in It._fullLayout)return!1;var Ft=n.list(It,"",!0);for(var qt in Ft)if(Ft[qt].autoshift||Ft[qt].shift)return!0;return!1}(N))){"_redrawFromAutoMarginCount"in j?j._redrawFromAutoMarginCount++:j._redrawFromAutoMarginCount=1;var Dt=3*(1+Object.keys(he).length);if(j._redrawFromAutoMarginCount0&&(N._transitioningWithDuration=!0),N._transitionData._interruptCallbacks.push(function(){H=!0}),V.redraw&&N._transitionData._interruptCallbacks.push(function(){return y.call("redraw",N)}),N._transitionData._interruptCallbacks.push(function(){N.emit("plotly_transitioninterrupted",[])});var Y=0,K=0;function te(){return Y++,function(){var ae;K++,H||K!==Y||(ae=X,N._transitionData&&(function(oe){if(oe)for(;oe.length;)oe.shift()}(N._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(V.redraw)return y.call("redraw",N)}).then(function(){N._transitioning=!1,N._transitioningWithDuration=!1,N.emit("plotly_transitioned",[])}).then(ae)))}}V.runFn(te),setTimeout(te())})}],Q=t.syncOrAsync(ee,N);return Q&&Q.then||(Q=Promise.resolve()),Q.then(function(){return N})}v.didMarginChange=function(N,j){for(var V=0;V1)return!0}return!1},v.graphJson=function(N,j,V,H,ee,Q){(ee&&j&&!N._fullData||ee&&!j&&!N._fullLayout)&&v.supplyDefaults(N);var X=ee?N._fullData:N.data,Y=ee?N._fullLayout:N.layout,K=(N._transitionData||{})._frames;function te(se,fe){if(typeof se=="function")return fe?"_function_":null;if(t.isPlainObject(se)){var ye,pe={};return Object.keys(se).sort().forEach(function(de){if(["_","["].indexOf(de.charAt(0))===-1)if(typeof se[de]!="function"){if(V==="keepdata"){if(de.substr(de.length-3)==="src")return}else if(V==="keepstream"){if(typeof(ye=se[de+"src"])=="string"&&ye.indexOf(":")>0&&!t.isPlainObject(se.stream))return}else if(V!=="keepall"&&typeof(ye=se[de+"src"])=="string"&&ye.indexOf(":")>0)return;pe[de]=te(se[de],fe)}else fe&&(pe[de]="_function")}),pe}return Array.isArray(se)?se.map(function(de){return te(de,fe)}):t.isTypedArray(se)?t.simpleMap(se,t.identity):t.isJSDate(se)?t.ms2DateTimeLocal(+se):se}var ae={data:(X||[]).map(function(se){var fe=te(se);return j&&delete fe.fit,fe})};if(!j&&(ae.layout=te(Y),ee)){var oe=Y._size;ae.layout.computed={margin:{b:oe.b,l:oe.l,r:oe.r,t:oe.t}}}return K&&(ae.frames=te(K)),Q&&(ae.config=te(N._context,!0)),H==="object"?ae:JSON.stringify(ae)},v.modifyFrames=function(N,j){var V,H,ee,Q=N._transitionData._frames,X=N._transitionData._frameHash;for(V=0;V=0;Q--)if(Ae[Q].enabled){V._indexToPoints=Ae[Q]._indexToPoints;break}H&&H.calc&&(we=H.calc(N,V))}Array.isArray(we)&&we[0]||(we=[{x:r,y:r}]),we[0].t||(we[0].t={}),we[0].trace=V,te[xe]=we}}for(B(X,Y,K),ee=0;ee1e-10?n:0}function r(n,o,a){o=o||0,a=a||0;for(var u=n.length,p=new Array(u),c=0;c0?c:1/0}),u=_.mod(a+1,o.length);return[o[a],o[u]]},findIntersectionXY:l,findXYatLength:function(n,o,a,u){var p=-o*a,c=o*o+1,b=2*(o*p-a),d=p*p+a*a-n*n,v=Math.sqrt(b*b-4*c*d),x=(-b+v)/(2*c),g=(-b-v)/(2*c);return[[x,o*x+p+u],[g,o*g+p+u]]},clampTiny:i,pathPolygon:function(n,o,a,u,p,c){return"M"+r(t(n,o,a,u),p,c).join("L")},pathPolygonAnnulus:function(n,o,a,u,p,c,b){var d,v;n=90||Tt>90&&xt>=450?1:It<=0&&qt<=0?0:Math.max(It,qt),[Tt<=180&&xt>=180||Tt>180&&xt>=540?-1:Dt>=0&&Ft>=0?0:Math.min(Dt,Ft),Tt<=270&&xt>=270||Tt>270&&xt>=630?-1:It>=0&&qt>=0?0:Math.min(It,qt),xt>=360?1:Dt<=0&&Ft<=0?0:Math.max(Dt,Ft),ft]}(he),ne=Ce[2]-Ce[0],ue=Ce[3]-Ce[1],me=de/pe,Te=Math.abs(ue/ne);me>Te?(xe=pe,Me=(de-(Re=pe*Te))/ae.h/2,we=[fe[0],fe[1]],Ae=[ye[0]+Me,ye[1]-Me]):(Re=de,Me=(pe-(xe=de/Te))/ae.w/2,we=[fe[0]+Me,fe[1]-Me],Ae=[ye[0],ye[1]]),K.xLength2=xe,K.yLength2=Re,K.xDomain2=we,K.yDomain2=Ae;var Ee,Ue=K.xOffset2=ae.l+ae.w*we[0],De=K.yOffset2=ae.t+ae.h*(1-Ae[1]),je=K.radius=xe/ne,ge=K.innerRadius=K.getHole(Y)*je,be=K.cx=Ue-je*Ce[0],Se=K.cy=De+je*Ce[3],Ne=K.cxx=be-Ue,Ye=K.cyy=Se-De,Ze=oe.side;Ze==="counterclockwise"?(Ee=Ze,Ze="top"):Ze==="clockwise"&&(Ee=Ze,Ze="bottom"),K.radialAxis=K.mockAxis(X,Y,oe,{_id:"x",side:Ze,_trueSide:Ee,domain:[ge/ae.w,je/ae.w]}),K.angularAxis=K.mockAxis(X,Y,se,{side:"right",domain:[0,Math.PI],autorange:!1}),K.doAutoRange(X,Y),K.updateAngularAxis(X,Y),K.updateRadialAxis(X,Y),K.updateRadialAxisTitle(X,Y),K.xaxis=K.mockCartesianAxis(X,Y,{_id:"x",domain:we}),K.yaxis=K.mockCartesianAxis(X,Y,{_id:"y",domain:Ae});var st=K.pathSubplot();K.clipPaths.forTraces.select("path").attr("d",st).attr("transform",f(Ne,Ye)),te.frontplot.attr("transform",f(Ue,De)).call(t.setClipUrl,K._hasClipOnAxisFalse?null:K.clipIds.forTraces,K.gd),te.bg.attr("d",st).attr("transform",f(be,Se)).call(l.fill,Y.bgcolor)},V.mockAxis=function(X,Y,K,te){var ae=T.extendFlat({},K,te);return o(ae,Y,X),ae},V.mockCartesianAxis=function(X,Y,K){var te=this,ae=te.isSmith,oe=K._id,se=T.extendFlat({type:"linear"},K);n(se,X);var fe={x:[0,2],y:[1,3]};return se.setRange=function(){var ye=te.sectorBBox,pe=fe[oe],de=te.radialAxis._rl,he=(de[1]-de[0])/(1-te.getHole(Y));se.range=[ye[pe[0]]*he,ye[pe[1]]*he]},se.isPtWithinRange=oe!=="x"||ae?function(){return!0}:function(ye){return te.isPtInside(ye)},se.setRange(),se.setScale(),se},V.doAutoRange=function(X,Y){var K=this,te=K.gd,ae=K.radialAxis,oe=K.getRadial(Y);a(te,ae);var se=ae.range;oe.range=se.slice(),oe._input.range=se.slice(),ae._rl=[ae.r2l(se[0],null,"gregorian"),ae.r2l(se[1],null,"gregorian")]},V.updateRadialAxis=function(X,Y){var K=this,te=K.gd,ae=K.layers,oe=K.radius,se=K.innerRadius,fe=K.cx,ye=K.cy,pe=K.getRadial(Y),de=B(K.getSector(Y)[0],360),he=K.radialAxis,xe=se90&&de<=270&&(he.tickangle=180);var we=Re?function(De){var je=R(K,L([De.x,0]));return f(je[0]-fe,je[1]-ye)}:function(De){return f(he.l2p(De.x)+se,0)},Ae=Re?function(De){return I(K,De.x,-1/0,1/0)}:function(De){return K.pathArc(he.r2p(De.x)+se)},Me=H(pe);if(K.radialTickLayout!==Me&&(ae["radial-axis"].selectAll(".xtick").remove(),K.radialTickLayout=Me),xe){he.setScale();var Ce=0,ne=Re?(he.tickvals||[]).filter(function(De){return De>=0}).map(function(De){return r.tickText(he,De,!0,!1)}):r.calcTicks(he),ue=Re?ne:r.clipEnds(he,ne),me=r.getTickSigns(he)[2];Re&&((he.ticks==="top"&&he.side==="bottom"||he.ticks==="bottom"&&he.side==="top")&&(me=-me),he.ticks==="top"&&he.side==="top"&&(Ce=-he.ticklen),he.ticks==="bottom"&&he.side==="bottom"&&(Ce=he.ticklen)),r.drawTicks(te,he,{vals:ne,layer:ae["radial-axis"],path:r.makeTickPath(he,0,me),transFn:we,crisp:!1}),r.drawGrid(te,he,{vals:ue,layer:ae["radial-grid"],path:Ae,transFn:T.noop,crisp:!1}),r.drawLabels(te,he,{vals:ne,layer:ae["radial-axis"],transFn:we,labelFns:r.makeLabelFns(he,Ce)})}var Te=K.radialAxisAngle=K.vangles?N(ee(G(pe.angle),K.vangles)):pe.angle,Ee=f(fe,ye),Ue=Ee+y(-Te);Q(ae["radial-axis"],xe&&(pe.showticklabels||pe.ticks),{transform:Ue}),Q(ae["radial-grid"],xe&&pe.showgrid,{transform:Re?"":Ee}),Q(ae["radial-line"].select("line"),xe&&pe.showline,{x1:Re?-oe:se,y1:0,x2:oe,y2:0,transform:Ue}).attr("stroke-width",pe.linewidth).call(l.stroke,pe.linecolor)},V.updateRadialAxisTitle=function(X,Y,K){if(!this.isSmith){var te=this,ae=te.gd,oe=te.radius,se=te.cx,fe=te.cy,ye=te.getRadial(Y),pe=te.id+"title",de=0;if(ye.title){var he=t.bBox(te.layers["radial-axis"].node()).height,xe=ye.title.font.size,Re=ye.side;de=Re==="top"?xe:Re==="counterclockwise"?-(he+.4*xe):he+.8*xe}var we=K!==void 0?K:te.radialAxisAngle,Ae=G(we),Me=Math.cos(Ae),Ce=Math.sin(Ae),ne=se+oe/2*Me+de*Ce,ue=fe-oe/2*Ce+de*Me;te.layers["radial-axis-title"]=b.draw(ae,pe,{propContainer:ye,propName:te.id+".radialaxis.title",placeholder:U(ae,"Click to enter radial axis title"),attributes:{x:ne,y:ue,"text-anchor":"middle"},transform:{rotate:-we}})}},V.updateAngularAxis=function(X,Y){var K=this,te=K.gd,ae=K.layers,oe=K.radius,se=K.innerRadius,fe=K.cx,ye=K.cy,pe=K.getAngular(Y),de=K.angularAxis,he=K.isSmith;he||(K.fillViewInitialKey("angularaxis.rotation",pe.rotation),de.setGeometry(),de.setScale());var xe=he?function(De){var je=R(K,L([0,De.x]));return Math.atan2(je[0]-fe,je[1]-ye)-Math.PI/2}:function(De){return de.t2g(De.x)};de.type==="linear"&&de.thetaunit==="radians"&&(de.tick0=N(de.tick0),de.dtick=N(de.dtick));var Re=function(De){return f(fe+oe*Math.cos(De),ye-oe*Math.sin(De))},we=he?function(De){var je=R(K,L([0,De.x]));return f(je[0],je[1])}:function(De){return Re(xe(De))},Ae=he?function(De){var je=R(K,L([0,De.x])),ge=Math.atan2(je[0]-fe,je[1]-ye)-Math.PI/2;return f(je[0],je[1])+y(-N(ge))}:function(De){var je=xe(De);return Re(je)+y(-N(je))},Me=he?function(De){return O(K,De.x,0,1/0)}:function(De){var je=xe(De),ge=Math.cos(je),be=Math.sin(je);return"M"+[fe+se*ge,ye-se*be]+"L"+[fe+oe*ge,ye-oe*be]},Ce=r.makeLabelFns(de,0).labelStandoff,ne={xFn:function(De){var je=xe(De);return Math.cos(je)*Ce},yFn:function(De){var je=xe(De),ge=Math.sin(je)>0?.2:1;return-Math.sin(je)*(Ce+De.fontSize*ge)+Math.abs(Math.cos(je))*(De.fontSize*h)},anchorFn:function(De){var je=xe(De),ge=Math.cos(je);return Math.abs(ge)<.1?"middle":ge>0?"start":"end"},heightFn:function(De,je,ge){var be=xe(De);return-.5*(1+Math.sin(be))*ge}},ue=H(pe);K.angularTickLayout!==ue&&(ae["angular-axis"].selectAll("."+de._id+"tick").remove(),K.angularTickLayout=ue);var me,Te=he?[1/0].concat(de.tickvals||[]).map(function(De){return r.tickText(de,De,!0,!1)}):r.calcTicks(de);if(he&&(Te[0].text="∞",Te[0].fontSize*=1.75),Y.gridshape==="linear"?(me=Te.map(xe),T.angleDelta(me[0],me[1])<0&&(me=me.slice().reverse())):me=null,K.vangles=me,de.type==="category"&&(Te=Te.filter(function(De){return T.isAngleInsideSector(xe(De),K.sectorInRad)})),de.visible){var Ee=de.ticks==="inside"?-1:1,Ue=(de.linewidth||1)/2;r.drawTicks(te,de,{vals:Te,layer:ae["angular-axis"],path:"M"+Ee*Ue+",0h"+Ee*de.ticklen,transFn:Ae,crisp:!1}),r.drawGrid(te,de,{vals:Te,layer:ae["angular-grid"],path:Me,transFn:T.noop,crisp:!1}),r.drawLabels(te,de,{vals:Te,layer:ae["angular-axis"],repositionOnUpdate:!0,transFn:we,labelFns:ne})}Q(ae["angular-line"].select("path"),pe.showline,{d:K.pathSubplot(),transform:f(fe,ye)}).attr("stroke-width",pe.linewidth).call(l.stroke,pe.linecolor)},V.updateFx=function(X,Y){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(X),this.updateRadialDrag(X,Y,0),this.updateRadialDrag(X,Y,1)),this.updateHoverAndMainDrag(X))},V.updateHoverAndMainDrag=function(X){var Y,K,te=this,ae=te.isSmith,oe=te.gd,se=te.layers,fe=X._zoomlayer,ye=M.MINZOOM,pe=M.OFFEDGE,de=te.radius,he=te.innerRadius,xe=te.cx,Re=te.cy,we=te.cxx,Ae=te.cyy,Me=te.sectorInRad,Ce=te.vangles,ne=te.radialAxis,ue=A.clampTiny,me=A.findXYatLength,Te=A.findEnclosingVertexAngles,Ee=M.cornerHalfWidth,Ue=M.cornerLen/2,De=u.makeDragger(se,"path","maindrag",X.dragmode===!1?"none":"crosshair");_.select(De).attr("d",te.pathSubplot()).attr("transform",f(xe,Re)),De.onmousemove=function(Oe){c.hover(oe,Oe,te.id),oe._fullLayout._lasthover=De,oe._fullLayout._hoversubplot=te.id},De.onmouseout=function(Oe){oe._dragging||p.unhover(oe,Oe)};var je,ge,be,Se,Ne,Ye,Ze,st,ot,ft={element:De,gd:oe,subplot:te.id,plotinfo:{id:te.id,xaxis:te.xaxis,yaxis:te.yaxis},xaxes:[te.xaxis],yaxes:[te.yaxis]};function yt(Oe,Be){return Math.sqrt(Oe*Oe+Be*Be)}function Et(Oe,Be){return yt(Oe-we,Be-Ae)}function Tt(Oe,Be){return Math.atan2(Ae-Be,Oe-we)}function xt(Oe,Be){return[Oe*Math.cos(Be),Oe*Math.sin(-Be)]}function Dt(Oe,Be){if(Oe===0)return te.pathSector(2*Ee);var Qe=Ue/Oe,ut=Be-Qe,pt=Be+Qe,bt=Math.max(0,Math.min(Oe,de)),Lt=bt-Ee,Ct=bt+Ee;return"M"+xt(Lt,ut)+"A"+[Lt,Lt]+" 0,0,0 "+xt(Lt,pt)+"L"+xt(Ct,pt)+"A"+[Ct,Ct]+" 0,0,1 "+xt(Ct,ut)+"Z"}function It(Oe,Be,Qe){if(Oe===0)return te.pathSector(2*Ee);var ut,pt,bt=xt(Oe,Be),Lt=xt(Oe,Qe),Ct=ue((bt[0]+Lt[0])/2),mt=ue((bt[1]+Lt[1])/2);if(Ct&&mt){var Ot=mt/Ct,_t=-1/Ot,Pt=me(Ee,Ot,Ct,mt);ut=me(Ue,_t,Pt[0][0],Pt[0][1]),pt=me(Ue,_t,Pt[1][0],Pt[1][1])}else{var Bt,Wt;mt?(Bt=Ue,Wt=Ee):(Bt=Ee,Wt=Ue),ut=[[Ct-Bt,mt-Wt],[Ct+Bt,mt-Wt]],pt=[[Ct-Bt,mt+Wt],[Ct+Bt,mt+Wt]]}return"M"+ut.join("L")+"L"+pt.reverse().join("L")+"Z"}function Ft(Oe,Be){return Be=Math.max(Math.min(Be,de),he),Oeye?(Oe-1&&Oe===1&&v(Be,oe,[te.xaxis],[te.yaxis],te.id,ft),Qe.indexOf("event")>-1&&c.click(oe,Be,te.id)}ft.prepFn=function(Oe,Be,Qe){var ut=oe._fullLayout.dragmode,pt=De.getBoundingClientRect();oe._fullLayout._calcInverseTransform(oe);var bt=oe._fullLayout._invTransform;Y=oe._fullLayout._invScaleX,K=oe._fullLayout._invScaleY;var Lt=T.apply3DTransform(bt)(Be-pt.left,Qe-pt.top);if(je=Lt[0],ge=Lt[1],Ce){var Ct=A.findPolygonOffset(de,Me[0],Me[1],Ce);je+=we+Ct[0],ge+=Ae+Ct[1]}switch(ut){case"zoom":ft.clickFn=ht,ae||(ft.moveFn=Ce?Ke:Nt,ft.doneFn=Ge,function(){be=null,Se=null,Ne=te.pathSubplot(),Ye=!1;var mt=oe._fullLayout[te.id];Ze=w(mt.bgcolor).getLuminance(),(st=u.makeZoombox(fe,Ze,xe,Re,Ne)).attr("fill-rule","evenodd"),ot=u.makeCorners(fe,xe,Re),x(oe)}());break;case"select":case"lasso":d(Oe,Be,Qe,ft,ut)}},p.init(ft)},V.updateRadialDrag=function(X,Y,K){var te=this,ae=te.gd,oe=te.layers,se=te.radius,fe=te.innerRadius,ye=te.cx,pe=te.cy,de=te.radialAxis,he=M.radialDragBoxSize,xe=he/2;if(de.visible){var Re,we,Ae,Me=G(te.radialAxisAngle),Ce=de._rl,ne=Ce[0],ue=Ce[1],me=Ce[K],Te=.75*(Ce[1]-Ce[0])/(1-te.getHole(Y))/se;K?(Re=ye+(se+xe)*Math.cos(Me),we=pe-(se+xe)*Math.sin(Me),Ae="radialdrag"):(Re=ye+(fe-xe)*Math.cos(Me),we=pe-(fe-xe)*Math.sin(Me),Ae="radialdrag-inner");var Ee,Ue,De,je=u.makeRectDragger(oe,Ae,"crosshair",-xe,-xe,he,he),ge={element:je,gd:ae};X.dragmode===!1&&(ge.dragmode=!1),Q(_.select(je),de.visible&&fe0==(K?De>ne:Deo?function(b){return b<=0}:function(b){return b>=0};t.c2g=function(b){var d=t.c2l(b)-n;return(c(d)?d:0)+p},t.g2c=function(b){return t.l2c(b+n-p)},t.g2p=function(b){return b*u},t.c2p=function(b){return t.g2p(t.c2g(b))}}})(y,f);break;case"angularaxis":(function(t,i){var r=t.type;if(r==="linear"){var n=t.d2c,o=t.c2d;t.d2c=function(a,u){return function(p,c){return c==="degrees"?s(p):p}(n(a),u)},t.c2d=function(a,u){return o(function(p,c){return c==="degrees"?T(p):p}(a,u))}}t.makeCalcdata=function(a,u){var p,c,b=a[u],d=a._length,v=function(h){return t.d2c(h,a.thetaunit)};if(b){if(_.isTypedArray(b)&&r==="linear"){if(d===b.length)return b;if(b.subarray)return b.subarray(0,d)}for(p=new Array(d),c=0;c0?1:0}function e(s){var T=s[0],y=s[1];if(!isFinite(T)||!isFinite(y))return[1,0];var f=(T+1)*(T+1)+y*y;return[(T*T+y*y-1)/f,2*y/f]}function _(s,T){var y=T[0],f=T[1];return[y*s.radius+s.cx,-f*s.radius+s.cy]}function w(s,T){return T*s.radius}D.exports={smith:e,reactanceArc:function(s,T,y,f){var l=_(s,e([y,T])),t=l[0],i=l[1],r=_(s,e([f,T])),n=r[0],o=r[1];if(T===0)return["M"+t+","+i,"L"+n+","+o].join(" ");var a=w(s,1/Math.abs(T));return["M"+t+","+i,"A"+a+","+a+" 0 0,"+(T<0?1:0)+" "+n+","+o].join(" ")},resistanceArc:function(s,T,y,f){var l=w(s,1/(T+1)),t=_(s,e([T,y])),i=t[0],r=t[1],n=_(s,e([T,f])),o=n[0],a=n[1];if(E(y)!==E(f)){var u=_(s,e([T,0]));return["M"+i+","+r,"A"+l+","+l+" 0 0,"+(00){for(var f=[],l=0;l=m&&(h.min=0,M.min=0,A.min=0,u.aaxis&&delete u.aaxis.min,u.baxis&&delete u.baxis.min,u.caxis&&delete u.caxis.min)}function a(u,p,c,b){var d=r[p._name];function v(M,A){return s.coerce(u,p,d,M,A)}v("uirevision",b.uirevision),p.type="linear";var x=v("color"),g=x!==d.color.dflt?x:c.font.color,m=p._name.charAt(0).toUpperCase(),k="Component "+m,h=v("title.text",k);p._hovertitle=h===k?h:m,s.coerceFont(v,"title.font",{family:c.font.family,size:s.bigFont(c.font.size),color:g}),v("min"),t(u,p,v,"linear"),f(u,p,v,"linear"),y(u,p,v,"linear"),l(u,p,v,{outerTicks:!0}),v("showticklabels")&&(s.coerceFont(v,"tickfont",{family:c.font.family,size:c.font.size,color:g}),v("tickangle"),v("tickformat")),i(u,p,v,{dfltColor:x,bgColor:c.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:d}),v("hoverformat"),v("layer")}D.exports=function(u,p,c){T(u,p,c,{type:"ternary",attributes:r,handleDefaults:o,font:p.font,paper_bgcolor:p.paper_bgcolor})}},64380:function(D,E,e){var _=e(39898),w=e(84267),s=e(73972),T=e(71828),y=T.strTranslate,f=T._,l=e(7901),t=e(91424),i=e(21994),r=e(1426).extendFlat,n=e(74875),o=e(89298),a=e(28569),u=e(30211),p=e(64505),c=p.freeMode,b=p.rectMode,d=e(92998),v=e(47322).prepSelect,x=e(47322).selectOnClick,g=e(47322).clearOutline,m=e(47322).clearSelectionsCache,k=e(85555);function h(B,G){this.id=B.id,this.graphDiv=B.graphDiv,this.init(G),this.makeFramework(G),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}D.exports=h;var M=h.prototype;M.init=function(B){this.container=B._ternarylayer,this.defs=B._defs,this.layoutId=B._uid,this.traceHash={},this.layers={}},M.plot=function(B,G){var N=this,j=G[N.id],V=G._size;N._hasClipOnAxisFalse=!1;for(var H=0;HA*fe?V=(H=fe)*A:H=(V=se)/A,ee=ae*V/se,Q=oe*H/fe,N=G.l+G.w*K-V/2,j=G.t+G.h*(1-te)-H/2,X.x0=N,X.y0=j,X.w=V,X.h=H,X.sum=ye,X.xaxis={type:"linear",range:[pe+2*he-ye,ye-pe-2*de],domain:[K-ee/2,K+ee/2],_id:"x"},i(X.xaxis,X.graphDiv._fullLayout),X.xaxis.setScale(),X.xaxis.isPtWithinRange=function(Ee){return Ee.a>=X.aaxis.range[0]&&Ee.a<=X.aaxis.range[1]&&Ee.b>=X.baxis.range[1]&&Ee.b<=X.baxis.range[0]&&Ee.c>=X.caxis.range[1]&&Ee.c<=X.caxis.range[0]},X.yaxis={type:"linear",range:[pe,ye-de-he],domain:[te-Q/2,te+Q/2],_id:"y"},i(X.yaxis,X.graphDiv._fullLayout),X.yaxis.setScale(),X.yaxis.isPtWithinRange=function(){return!0};var xe=X.yaxis.domain[0],Re=X.aaxis=r({},B.aaxis,{range:[pe,ye-de-he],side:"left",tickangle:(+B.aaxis.tickangle||0)-30,domain:[xe,xe+Q*A],anchor:"free",position:0,_id:"y",_length:V});i(Re,X.graphDiv._fullLayout),Re.setScale();var we=X.baxis=r({},B.baxis,{range:[ye-pe-he,de],side:"bottom",domain:X.xaxis.domain,anchor:"free",position:0,_id:"x",_length:V});i(we,X.graphDiv._fullLayout),we.setScale();var Ae=X.caxis=r({},B.caxis,{range:[ye-pe-de,he],side:"right",tickangle:(+B.caxis.tickangle||0)+30,domain:[xe,xe+Q*A],anchor:"free",position:0,_id:"y",_length:V});i(Ae,X.graphDiv._fullLayout),Ae.setScale();var Me="M"+N+","+(j+H)+"h"+V+"l-"+V/2+",-"+H+"Z";X.clipDef.select("path").attr("d",Me),X.layers.plotbg.select("path").attr("d",Me);var Ce="M0,"+H+"h"+V+"l-"+V/2+",-"+H+"Z";X.clipDefRelative.select("path").attr("d",Ce);var ne=y(N,j);X.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",ne),X.clipDefRelative.select("path").attr("transform",null);var ue=y(N-we._offset,j+H);X.layers.baxis.attr("transform",ue),X.layers.bgrid.attr("transform",ue);var me=y(N+V/2,j)+"rotate(30)"+y(0,-Re._offset);X.layers.aaxis.attr("transform",me),X.layers.agrid.attr("transform",me);var Te=y(N+V/2,j)+"rotate(-30)"+y(0,-Ae._offset);X.layers.caxis.attr("transform",Te),X.layers.cgrid.attr("transform",Te),X.drawAxes(!0),X.layers.aline.select("path").attr("d",Re.showline?"M"+N+","+(j+H)+"l"+V/2+",-"+H:"M0,0").call(l.stroke,Re.linecolor||"#000").style("stroke-width",(Re.linewidth||0)+"px"),X.layers.bline.select("path").attr("d",we.showline?"M"+N+","+(j+H)+"h"+V:"M0,0").call(l.stroke,we.linecolor||"#000").style("stroke-width",(we.linewidth||0)+"px"),X.layers.cline.select("path").attr("d",Ae.showline?"M"+(N+V/2)+","+j+"l"+V/2+","+H:"M0,0").call(l.stroke,Ae.linecolor||"#000").style("stroke-width",(Ae.linewidth||0)+"px"),X.graphDiv._context.staticPlot||X.initInteractions(),t.setClipUrl(X.layers.frontplot,X._hasClipOnAxisFalse?null:X.clipId,X.graphDiv)},M.drawAxes=function(B){var G=this,N=G.graphDiv,j=G.id.substr(7)+"title",V=G.layers,H=G.aaxis,ee=G.baxis,Q=G.caxis;if(G.drawAx(H),G.drawAx(ee),G.drawAx(Q),B){var X=Math.max(H.showticklabels?H.tickfont.size/2:0,(Q.showticklabels?.75*Q.tickfont.size:0)+(Q.ticks==="outside"?.87*Q.ticklen:0)),Y=(ee.showticklabels?ee.tickfont.size:0)+(ee.ticks==="outside"?ee.ticklen:0)+3;V["a-title"]=d.draw(N,"a"+j,{propContainer:H,propName:G.id+".aaxis.title",placeholder:f(N,"Click to enter Component A title"),attributes:{x:G.x0+G.w/2,y:G.y0-H.title.font.size/3-X,"text-anchor":"middle"}}),V["b-title"]=d.draw(N,"b"+j,{propContainer:ee,propName:G.id+".baxis.title",placeholder:f(N,"Click to enter Component B title"),attributes:{x:G.x0-Y,y:G.y0+G.h+.83*ee.title.font.size+Y,"text-anchor":"middle"}}),V["c-title"]=d.draw(N,"c"+j,{propContainer:Q,propName:G.id+".caxis.title",placeholder:f(N,"Click to enter Component C title"),attributes:{x:G.x0+G.w+Y,y:G.y0+G.h+.83*Q.title.font.size+Y,"text-anchor":"middle"}})}},M.drawAx=function(B){var G,N=this,j=N.graphDiv,V=B._name,H=V.charAt(0),ee=B._id,Q=N.layers[V],X=H+"tickLayout",Y=(G=B).ticks+String(G.ticklen)+String(G.showticklabels);N[X]!==Y&&(Q.selectAll("."+ee+"tick").remove(),N[X]=Y),B.setScale();var K=o.calcTicks(B),te=o.clipEnds(B,K),ae=o.makeTransTickFn(B),oe=o.getTickSigns(B)[2],se=T.deg2rad(30),fe=oe*(B.linewidth||1)/2,ye=oe*B.ticklen,pe=N.w,de=N.h,he=H==="b"?"M0,"+fe+"l"+Math.sin(se)*ye+","+Math.cos(se)*ye:"M"+fe+",0l"+Math.cos(se)*ye+","+-Math.sin(se)*ye,xe={a:"M0,0l"+de+",-"+pe/2,b:"M0,0l-"+pe/2+",-"+de,c:"M0,0l-"+de+","+pe/2}[H];o.drawTicks(j,B,{vals:B.ticks==="inside"?te:K,layer:Q,path:he,transFn:ae,crisp:!1}),o.drawGrid(j,B,{vals:te,layer:N.layers[H+"grid"],path:xe,transFn:ae,crisp:!1}),o.drawLabels(j,B,{vals:K,layer:Q,transFn:ae,labelFns:o.makeLabelFns(B,0,30)})};var C=k.MINZOOM/2+.87,L="m-0.87,.5h"+C+"v3h-"+(C+5.2)+"l"+(C/2+2.6)+",-"+(.87*C+4.5)+"l2.6,1.5l-"+C/2+","+.87*C+"Z",O="m0.87,.5h-"+C+"v3h"+(C+5.2)+"l-"+(C/2+2.6)+",-"+(.87*C+4.5)+"l-2.6,1.5l"+C/2+","+.87*C+"Z",I="m0,1l"+C/2+","+.87*C+"l2.6,-1.5l-"+(C/2+2.6)+",-"+(.87*C+4.5)+"l-"+(C/2+2.6)+","+(.87*C+4.5)+"l2.6,1.5l"+C/2+",-"+.87*C+"Z",R=!0;function U(B){_.select(B).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}M.clearOutline=function(){m(this.dragOptions),g(this.dragOptions.gd)},M.initInteractions=function(){var B,G,N,j,V,H,ee,Q,X,Y,K,te,ae=this,oe=ae.layers.plotbg.select("path").node(),se=ae.graphDiv,fe=se._fullLayout._zoomlayer;function ye(Ce){var ne={};return ne[ae.id+".aaxis.min"]=Ce.a,ne[ae.id+".baxis.min"]=Ce.b,ne[ae.id+".caxis.min"]=Ce.c,ne}function pe(Ce,ne){var ue=se._fullLayout.clickmode;U(se),Ce===2&&(se.emit("plotly_doubleclick",null),s.call("_guiRelayout",se,ye({a:0,b:0,c:0}))),ue.indexOf("select")>-1&&Ce===1&&x(ne,se,[ae.xaxis],[ae.yaxis],ae.id,ae.dragOptions),ue.indexOf("event")>-1&&u.click(se,ne,ae.id)}function de(Ce,ne){return 1-ne/ae.h}function he(Ce,ne){return 1-(Ce+(ae.h-ne)/Math.sqrt(3))/ae.w}function xe(Ce,ne){return(Ce-(ae.h-ne)/Math.sqrt(3))/ae.w}function Re(Ce,ne){var ue=N+Ce*B,me=j+ne*G,Te=Math.max(0,Math.min(1,de(0,j),de(0,me))),Ee=Math.max(0,Math.min(1,he(N,j),he(ue,me))),Ue=Math.max(0,Math.min(1,xe(N,j),xe(ue,me))),De=(Te/2+Ue)*ae.w,je=(1-Te/2-Ee)*ae.w,ge=(De+je)/2,be=je-De,Se=(1-Te)*ae.h,Ne=Se-be/A;be.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),te.transition().style("opacity",1).duration(200),Y=!0),se.emit("plotly_relayouting",ye(ee))}function we(){U(se),ee!==V&&(s.call("_guiRelayout",se,ye(ee)),R&&se.data&&se._context.showTips&&(T.notifier(f(se,"Double-click to zoom back out"),"long"),R=!1))}function Ae(Ce,ne){var ue=Ce/ae.xaxis._m,me=ne/ae.yaxis._m,Te=[(ee={a:V.a-me,b:V.b+(ue+me)/2,c:V.c-(ue-me)/2}).a,ee.b,ee.c].sort(T.sorterAsc),Ee=Te.indexOf(ee.a),Ue=Te.indexOf(ee.b),De=Te.indexOf(ee.c);Te[0]<0&&(Te[1]+Te[0]/2<0?(Te[2]+=Te[0]+Te[1],Te[0]=Te[1]=0):(Te[2]+=Te[0]/2,Te[1]+=Te[0]/2,Te[0]=0),ee={a:Te[Ee],b:Te[Ue],c:Te[De]},ne=(V.a-ee.a)*ae.yaxis._m,Ce=(V.c-ee.c-V.b+ee.b)*ae.xaxis._m);var je=y(ae.x0+Ce,ae.y0+ne);ae.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",je);var ge=y(-Ce,-ne);ae.clipDefRelative.select("path").attr("transform",ge),ae.aaxis.range=[ee.a,ae.sum-ee.b-ee.c],ae.baxis.range=[ae.sum-ee.a-ee.c,ee.b],ae.caxis.range=[ae.sum-ee.a-ee.b,ee.c],ae.drawAxes(!1),ae._hasClipOnAxisFalse&&ae.plotContainer.select(".scatterlayer").selectAll(".trace").call(t.hideOutsideRangePoints,ae),se.emit("plotly_relayouting",ye(ee))}function Me(){s.call("_guiRelayout",se,ye(ee))}this.dragOptions={element:oe,gd:se,plotinfo:{id:ae.id,domain:se._fullLayout[ae.id].domain,xaxis:ae.xaxis,yaxis:ae.yaxis},subplot:ae.id,prepFn:function(Ce,ne,ue){ae.dragOptions.xaxes=[ae.xaxis],ae.dragOptions.yaxes=[ae.yaxis],B=se._fullLayout._invScaleX,G=se._fullLayout._invScaleY;var me=ae.dragOptions.dragmode=se._fullLayout.dragmode;c(me)?ae.dragOptions.minDrag=1:ae.dragOptions.minDrag=void 0,me==="zoom"?(ae.dragOptions.moveFn=Re,ae.dragOptions.clickFn=pe,ae.dragOptions.doneFn=we,function(Te,Ee,Ue){var De=oe.getBoundingClientRect();N=Ee-De.left,j=Ue-De.top,se._fullLayout._calcInverseTransform(se);var je=se._fullLayout._invTransform,ge=T.apply3DTransform(je)(N,j);N=ge[0],j=ge[1],V={a:ae.aaxis.range[0],b:ae.baxis.range[1],c:ae.caxis.range[1]},ee=V,H=ae.aaxis.range[1]-V.a,Q=w(ae.graphDiv._fullLayout[ae.id].bgcolor).getLuminance(),X="M0,"+ae.h+"L"+ae.w/2+", 0L"+ae.w+","+ae.h+"Z",Y=!1,K=fe.append("path").attr("class","zoombox").attr("transform",y(ae.x0,ae.y0)).style({fill:Q>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",X),te=fe.append("path").attr("class","zoombox-corners").attr("transform",y(ae.x0,ae.y0)).style({fill:l.background,stroke:l.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),ae.clearOutline(se)}(0,ne,ue)):me==="pan"?(ae.dragOptions.moveFn=Ae,ae.dragOptions.clickFn=pe,ae.dragOptions.doneFn=Me,V={a:ae.aaxis.range[0],b:ae.baxis.range[1],c:ae.caxis.range[1]},ee=V,ae.clearOutline(se)):(b(me)||c(me))&&v(Ce,ne,ue,ae.dragOptions,me)}},oe.onmousemove=function(Ce){u.hover(se,Ce,ae.id),se._fullLayout._lasthover=oe,se._fullLayout._hoversubplot=ae.id},oe.onmouseout=function(Ce){se._dragging||a.unhover(se,Ce)},a.init(this.dragOptions)}},73972:function(D,E,e){var _=e(47769),w=e(64213),s=e(75138),T=e(41965),y=e(24401).addStyleRule,f=e(1426),l=e(9012),t=e(10820),i=f.extendFlat,r=f.extendDeepAll;function n(x){var g=x.name,m=x.categories,k=x.meta;if(E.modules[g])_.log("Type "+g+" already registered");else{E.subplotsRegistry[x.basePlotModule.name]||function(R){var U=R.name;if(E.subplotsRegistry[U])_.log("Plot type "+U+" already registered.");else for(var B in p(R),E.subplotsRegistry[U]=R,E.componentsRegistry)d(B,R.name)}(x.basePlotModule);for(var h={},M=0;M-1&&(a[p[t]].title={text:""});for(t=0;t")!==-1?"":M.html(C).text()});return M.remove(),A}(k)).replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(t,"'"),w.isIE()&&(k=(k=(k=k.replace(/"/gi,"'")).replace(/(\('#)([^']*)('\))/gi,'("#$2")')).replace(/(\\')/gi,'"')),k}},75341:function(D,E,e){var _=e(71828);D.exports=function(w,s){for(var T=0;TA+h||!_(M))}for(var L=0;Lt))return y}return f!==void 0?f:T.dflt},E.coerceColor=function(T,y,f){return w(y).isValid()?y:f!==void 0?f:T.dflt},E.coerceEnumerated=function(T,y,f){return T.coerceNumber&&(y=+y),T.values.indexOf(y)!==-1?y:f!==void 0?f:T.dflt},E.getValue=function(T,y){var f;return Array.isArray(T)?y0?ye+=pe:c<0&&(ye-=pe)}return ye}function Q(fe){var ye=c,pe=fe.b,de=ee(fe);return _.inbox(pe-ye,de-ye,C+(de-ye)/(de-pe)-1)}var X=r[b+"a"],Y=r[d+"a"];g=Math.abs(X.r2c(X.range[1])-X.r2c(X.range[0]));var K=_.getDistanceFunction(a,v,x,function(fe){return(v(fe)+x(fe))/2});if(_.getClosest(m,K,r),r.index!==!1&&m[r.index].p!==l){I||(N=function(fe){return Math.min(R(fe),fe.p-h.bargroupwidth/2)},j=function(fe){return Math.max(U(fe),fe.p+h.bargroupwidth/2)});var te=m[r.index],ae=k.base?te.b+te.s:te.s;r[d+"0"]=r[d+"1"]=Y.c2p(te[d],!0),r[d+"LabelVal"]=ae;var oe=h.extents[h.extents.round(te.p)];r[b+"0"]=X.c2p(M?N(te):oe[0],!0),r[b+"1"]=X.c2p(M?j(te):oe[1],!0);var se=te.orig_p!==void 0;return r[b+"LabelVal"]=se?te.orig_p:te.p,r.labelLabel=f(X,r[b+"LabelVal"],k[b+"hoverformat"]),r.valueLabel=f(Y,r[d+"LabelVal"],k[d+"hoverformat"]),r.baseLabel=f(Y,te.b,k[d+"hoverformat"]),r.spikeDistance=(function(fe){var ye=c,pe=fe.b,de=ee(fe);return _.inbox(pe-ye,de-ye,L+(de-ye)/(de-pe)-1)}(te)+function(fe){return V(R(fe),U(fe),L)}(te))/2,r[b+"Spike"]=X.c2p(te.p,!0),T(te,k,r),r.hovertemplate=k.hovertemplate,r}}function i(r,n){var o=n.mcc||r.marker.color,a=n.mlcc||r.marker.line.color,u=y(r,n);return s.opacity(o)?o:s.opacity(a)&&u?a:void 0}D.exports={hoverPoints:function(r,n,o,a,u){var p=t(r,n,o,a,u);if(p){var c=p.cd,b=c[0].trace,d=c[p.index];return p.color=i(b,d),w.getComponentMethod("errorbars","hoverInfo")(d,b,p),[p]}},hoverOnBars:t,getTraceColor:i}},60822:function(D,E,e){D.exports={attributes:e(1486),layoutAttributes:e(43641),supplyDefaults:e(90769).supplyDefaults,crossTraceDefaults:e(90769).crossTraceDefaults,supplyLayoutDefaults:e(13957),calc:e(92290),crossTraceCalc:e(11661).crossTraceCalc,colorbar:e(4898),arraysToCalcdata:e(75341),plot:e(17295).plot,style:e(16688).style,styleOnSelect:e(16688).styleOnSelect,hoverPoints:e(95423).hoverPoints,eventData:e(58065),selectPoints:e(81974),moduleType:"trace",name:"bar",basePlotModule:e(93612),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}},43641:function(D){D.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},13957:function(D,E,e){var _=e(73972),w=e(89298),s=e(71828),T=e(43641);D.exports=function(y,f,l){function t(b,d){return s.coerce(y,f,T,b,d)}for(var i=!1,r=!1,n=!1,o={},a=t("barmode"),u=0;u0}function M(L){return L==="auto"?0:L}function A(L,O){var I=Math.PI/180*O,R=Math.abs(Math.sin(I)),U=Math.abs(Math.cos(I));return{x:L.width*U+L.height*R,y:L.width*R+L.height*U}}function C(L,O,I,R,U,B){var G=!!B.isHorizontal,N=!!B.constrained,j=B.angle||0,V=B.anchor||"end",H=V==="end",ee=V==="start",Q=((B.leftToRight||0)+1)/2,X=1-Q,Y=U.width,K=U.height,te=Math.abs(O-L),ae=Math.abs(R-I),oe=te>2*v&&ae>2*v?v:0;te-=2*oe,ae-=2*oe;var se=M(j);j!=="auto"||Y<=te&&K<=ae||!(Y>te||K>ae)||(Y>ae||K>te)&&Y.01?Ue:function(be,Se,Ne){return Ne&&be===Se?be:Math.abs(be-Se)>=2?Ue(be):be>Se?Math.ceil(be):Math.floor(be)};Ce=De(Ce,ne,oe),ne=De(ne,Ce,oe),ue=De(ue,me,!oe),me=De(me,ue,!oe)}var je=k(s.ensureSingle(Ae,"path"),j,U,B);if(je.style("vector-effect",V?"none":"non-scaling-stroke").attr("d",isNaN((ne-Ce)*(me-ue))||Te&&L._context.staticPlot?"M0,0Z":"M"+Ce+","+ue+"V"+me+"H"+ne+"V"+ue+"Z").call(f.setClipUrl,O.layerClipId,L),!j.uniformtext.mode&&se){var ge=f.makePointStyleFns(X);f.singlePointStyle(he,je,X,ge,L)}(function(be,Se,Ne,Ye,Ze,st,ot,ft,yt,Et,Tt){var xt,Dt=Se.xaxis,It=Se.yaxis,Ft=be._fullLayout;function qt(Kt,nn,yn){return s.ensureSingle(Kt,"text").text(nn).attr({class:"bartext bartext-"+xt,"text-anchor":"middle","data-notex":1}).call(f.font,yn).call(T.convertToTspans,be)}var Nt=Ye[0].trace,Je=Nt.orientation==="h",Ke=function(Kt,nn,yn,ln,kn){var Wn,wn=nn[0].trace;return Wn=wn.texttemplate?function(on,_n,fn,hn,In){var Cn=_n[0].trace,Nn=s.castOption(Cn,fn,"texttemplate");if(!Nn)return"";var Hn,qn,or,tr,kr=Cn.type==="histogram",gr=Cn.type==="waterfall",ir=Cn.type==="funnel",dr=Cn.orientation==="h";function yr(Zn){return t(tr,tr.c2l(Zn),!0).text}dr?(Hn="y",qn=In,or="x",tr=hn):(Hn="x",qn=hn,or="y",tr=In);var $t,mn=_n[fn],Ln={};Ln.label=mn.p,Ln.labelLabel=Ln[Hn+"Label"]=($t=mn.p,t(qn,qn.c2l($t),!0).text);var En=s.castOption(Cn,mn.i,"text");(En===0||En)&&(Ln.text=En),Ln.value=mn.s,Ln.valueLabel=Ln[or+"Label"]=yr(mn.s);var jn={};d(jn,Cn,mn.i),(kr||jn.x===void 0)&&(jn.x=dr?Ln.value:Ln.label),(kr||jn.y===void 0)&&(jn.y=dr?Ln.label:Ln.value),(kr||jn.xLabel===void 0)&&(jn.xLabel=dr?Ln.valueLabel:Ln.labelLabel),(kr||jn.yLabel===void 0)&&(jn.yLabel=dr?Ln.labelLabel:Ln.valueLabel),gr&&(Ln.delta=+mn.rawS||mn.s,Ln.deltaLabel=yr(Ln.delta),Ln.final=mn.v,Ln.finalLabel=yr(Ln.final),Ln.initial=Ln.final-Ln.delta,Ln.initialLabel=yr(Ln.initial)),ir&&(Ln.value=mn.s,Ln.valueLabel=yr(Ln.value),Ln.percentInitial=mn.begR,Ln.percentInitialLabel=s.formatPercent(mn.begR),Ln.percentPrevious=mn.difR,Ln.percentPreviousLabel=s.formatPercent(mn.difR),Ln.percentTotal=mn.sumR,Ln.percenTotalLabel=s.formatPercent(mn.sumR));var $n=s.castOption(Cn,mn.i,"customdata");return $n&&(Ln.customdata=$n),s.texttemplateString(Nn,Ln,on._d3locale,jn,Ln,Cn._meta||{})}(Kt,nn,yn,ln,kn):wn.textinfo?function(on,_n,fn,hn){var In=on[0].trace,Cn=In.orientation==="h",Nn=In.type==="waterfall",Hn=In.type==="funnel";function qn($n){return t(Cn?fn:hn,+$n,!0).text}var or,tr,kr=In.textinfo,gr=on[_n],ir=kr.split("+"),dr=[],yr=function($n){return ir.indexOf($n)!==-1};if(yr("label")&&dr.push((tr=on[_n].p,t(Cn?hn:fn,tr,!0).text)),yr("text")&&((or=s.castOption(In,gr.i,"text"))===0||or)&&dr.push(or),Nn){var $t=+gr.rawS||gr.s,mn=gr.v,Ln=mn-$t;yr("initial")&&dr.push(qn(Ln)),yr("delta")&&dr.push(qn($t)),yr("final")&&dr.push(qn(mn))}if(Hn){yr("value")&&dr.push(qn(gr.s));var En=0;yr("percent initial")&&En++,yr("percent previous")&&En++,yr("percent total")&&En++;var jn=En>1;yr("percent initial")&&(or=s.formatPercent(gr.begR),jn&&(or+=" of initial"),dr.push(or)),yr("percent previous")&&(or=s.formatPercent(gr.difR),jn&&(or+=" of previous"),dr.push(or)),yr("percent total")&&(or=s.formatPercent(gr.sumR),jn&&(or+=" of total"),dr.push(or))}return dr.join("
")}(nn,yn,ln,kn):a.getValue(wn.text,yn),a.coerceString(c,Wn)}(Ft,Ye,Ze,Dt,It);xt=function(Kt,nn){var yn=a.getValue(Kt.textposition,nn);return a.coerceEnumerated(b,yn)}(Nt,Ze);var Ge=Et.mode==="stack"||Et.mode==="relative",nt=Ye[Ze],ht=!Ge||nt._outmost;if(Ke&&xt!=="none"&&(!nt.isBlank&&st!==ot&&ft!==yt||xt!=="auto"&&xt!=="inside")){var Oe=Ft.font,Be=o.getBarColor(Ye[Ze],Nt),Qe=o.getInsideTextFont(Nt,Ze,Oe,Be),ut=o.getOutsideTextFont(Nt,Ze,Oe),pt=Ne.datum();Je?Dt.type==="log"&&pt.s0<=0&&(st=Dt.range[0]0&&mt>0&&(Ct<=_t&&mt<=Pt||Ct<=Pt&&mt<=_t||(Je?_t>=Ct*(Pt/mt):Pt>=mt*(_t/Ct)))?xt="inside":(xt="outside",bt.remove(),bt=null)):xt="inside"),!bt){var Bt=(bt=qt(Ne,Ke,Ot=s.ensureUniformFontSize(be,xt==="outside"?ut:Qe))).attr("transform");if(bt.attr("transform",""),Ct=(Lt=f.bBox(bt.node())).width,mt=Lt.height,bt.attr("transform",Bt),Ct<=0||mt<=0)return void bt.remove()}var Wt,Gt=Nt.textangle;Wt=xt==="outside"?function(Kt,nn,yn,ln,kn,Wn){var wn,on=!!Wn.isHorizontal,_n=!!Wn.constrained,fn=Wn.angle||0,hn=kn.width,In=kn.height,Cn=Math.abs(nn-Kt),Nn=Math.abs(ln-yn);wn=on?Nn>2*v?v:0:Cn>2*v?v:0;var Hn=1;_n&&(Hn=on?Math.min(1,Nn/In):Math.min(1,Cn/hn));var qn=M(fn),or=A(kn,qn),tr=(on?or.x:or.y)/2,kr=(kn.left+kn.right)/2,gr=(kn.top+kn.bottom)/2,ir=(Kt+nn)/2,dr=(yn+ln)/2,yr=0,$t=0,mn=on?m(nn,Kt):m(yn,ln);return on?(ir=nn-mn*wn,yr=mn*tr):(dr=ln+mn*wn,$t=-mn*tr),{textX:kr,textY:gr,targetX:ir,targetY:dr,anchorX:yr,anchorY:$t,scale:Hn,rotate:qn}}(st,ot,ft,yt,Lt,{isHorizontal:Je,constrained:Nt.constraintext==="both"||Nt.constraintext==="outside",angle:Gt}):C(st,ot,ft,yt,Lt,{isHorizontal:Je,constrained:Nt.constraintext==="both"||Nt.constraintext==="inside",angle:Gt,anchor:Nt.insidetextanchor}),Wt.fontSize=Ot.size,r(Nt.type==="histogram"?"bar":Nt.type,Wt,Ft),nt.transform=Wt;var Xt=k(bt,Ft,Et,Tt);s.setTransormAndDisplay(Xt,Wt)}else Ne.select("text").remove()})(L,O,Ae,ee,xe,Ce,ne,ue,me,U,B),O.layerClipId&&f.hideOutsideRangePoint(he,Ae.select("text"),G,N,X.xcalendar,X.ycalendar)});var de=X.cliponaxis===!1;f.setClipUrl(Q,de?null:O.layerClipId,L)});l.getComponentMethod("errorbars","plot")(L,H,O,U)},toMoveInsideBar:C}},81974:function(D){function E(e,_,w,s,T){var y=_.c2p(s?e.s0:e.p0,!0),f=_.c2p(s?e.s1:e.p1,!0),l=w.c2p(s?e.p0:e.s0,!0),t=w.c2p(s?e.p1:e.s1,!0);return T?[(y+f)/2,(l+t)/2]:s?[f,(l+t)/2]:[(y+f)/2,t]}D.exports=function(e,_){var w,s=e.cd,T=e.xaxis,y=e.yaxis,f=s[0].trace,l=f.type==="funnel",t=f.orientation==="h",i=[];if(_===!1)for(w=0;w1||k.bargap===0&&k.bargroupgap===0&&!h[0].trace.marker.line.width)&&_.select(this).attr("shape-rendering","crispEdges")}),g.selectAll("g.points").each(function(h){o(_.select(this),h[0].trace,x)}),y.getComponentMethod("errorbars","style")(g)},styleTextPoints:a,styleOnSelect:function(x,g,m){var k=g[0].trace;k.selectedpoints?function(h,M,A){s.selectedPointStyle(h.selectAll("path"),M),function(C,L,O){C.each(function(I){var R,U=_.select(this);if(I.selected){R=T.ensureUniformFontSize(O,u(U,I,L,O));var B=L.selected.textfont&&L.selected.textfont.color;B&&(R.color=B),s.font(U,R)}else s.selectedTextStyle(U,L)})}(h.selectAll("text"),M,A)}(m,k,x):(o(m,k,x),y.getComponentMethod("errorbars","style")(m))},getInsideTextFont:c,getOutsideTextFont:b,getBarColor:v,resizeText:f}},98340:function(D,E,e){var _=e(7901),w=e(52075).hasColorscale,s=e(1586),T=e(71828).coercePattern;D.exports=function(y,f,l,t,i){var r=l("marker.color",t),n=w(y,"marker");n&&s(y,f,i,l,{prefix:"marker.",cLetter:"c"}),l("marker.line.color",_.defaultLine),w(y,"marker.line")&&s(y,f,i,l,{prefix:"marker.line.",cLetter:"c"}),l("marker.line.width"),l("marker.opacity"),T(l,"marker.pattern",r,n),l("selected.marker.color"),l("unselected.marker.color")}},72597:function(D,E,e){var _=e(39898),w=e(71828);function s(T){return"_"+T+"Text_minsize"}D.exports={recordMinTextSize:function(T,y,f){if(f.uniformtext.mode){var l=s(T),t=f.uniformtext.minsize,i=y.scale*y.fontSize;y.hide=ia.range[1]&&(x+=Math.PI),_.getClosest(r,function(k){return c(v,x,[k.rp0,k.rp1],[k.thetag0,k.thetag1],p)?b+Math.min(1,Math.abs(k.thetag1-k.thetag0)/d)-1+(k.rp1-v)/(k.rp1-k.rp0)-1:1/0},l),l.index!==!1){var g=r[l.index];l.x0=l.x1=g.ct[0],l.y0=l.y1=g.ct[1];var m=w.extendFlat({},g,{r:g.s,theta:g.p});return T(g,n,l),y(m,n,o,l),l.hovertemplate=n.hovertemplate,l.color=s(n,g),l.xLabelVal=l.yLabelVal=void 0,g.s<0&&(l.idealAlign="left"),[l]}}},23381:function(D,E,e){D.exports={moduleType:"trace",name:"barpolar",basePlotModule:e(23580),categories:["polar","bar","showLegend"],attributes:e(55023),layoutAttributes:e(40151),supplyDefaults:e(6135),supplyLayoutDefaults:e(19860),calc:e(74692).calc,crossTraceCalc:e(74692).crossTraceCalc,plot:e(60173),colorbar:e(4898),formatLabels:e(98608),style:e(16688).style,styleOnSelect:e(16688).styleOnSelect,hoverPoints:e(27379),selectPoints:e(81974),meta:{}}},40151:function(D){D.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}},19860:function(D,E,e){var _=e(71828),w=e(40151);D.exports=function(s,T,y){var f,l={};function t(n,o){return _.coerce(s[f]||{},T[f],w,n,o)}for(var i=0;i0?(k=g,h=m):(k=m,h=g);var M=[y.findEnclosingVertexAngles(k,c.vangles)[0],(k+h)/2,y.findEnclosingVertexAngles(h,c.vangles)[1]];return y.pathPolygonAnnulus(v,x,k,h,M,b,d)}:function(v,x,g,m){return s.pathAnnulus(v,x,g,m,b,d)}}(l),p=l.layers.frontplot.select("g.barlayer");s.makeTraceGroups(p,t,"trace bars").each(function(){var c=_.select(this),b=s.ensureSingle(c,"g","points").selectAll("g.point").data(s.identity);b.enter().append("g").style("vector-effect",i?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),b.exit().remove(),b.each(function(d){var v,x=_.select(this),g=d.rp0=o.c2p(d.s0),m=d.rp1=o.c2p(d.s1),k=d.thetag0=a.c2g(d.p0),h=d.thetag1=a.c2g(d.p1);if(w(g)&&w(m)&&w(k)&&w(h)&&g!==m&&k!==h){var M=o.c2g(d.s1),A=(k+h)/2;d.ct=[r.c2p(M*Math.cos(A)),n.c2p(M*Math.sin(A))],v=u(g,m,k,h)}else v="M0,0Z";s.ensureSingle(x,"path").attr("d",v)}),T.setClipUrl(c,l._hasClipOnAxisFalse?l.clipIds.forTraces:null,f)})}},53522:function(D,E,e){var _=e(82196),w=e(1486),s=e(22399),T=e(12663).axisHoverFormat,y=e(5386).fF,f=e(1426).extendFlat,l=_.marker,t=l.line;D.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:_.xperiod,yperiod:_.yperiod,xperiod0:_.xperiod0,yperiod0:_.yperiod0,xperiodalignment:_.xperiodalignment,yperiodalignment:_.yperiodalignment,xhoverformat:T("x"),yhoverformat:T("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:f({},l.symbol,{arrayOk:!1,editType:"plot"}),opacity:f({},l.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:f({},l.angle,{arrayOk:!1,editType:"calc"}),size:f({},l.size,{arrayOk:!1,editType:"calc"}),color:f({},l.color,{arrayOk:!1,editType:"style"}),line:{color:f({},t.color,{arrayOk:!1,dflt:s.defaultLine,editType:"style"}),width:f({},t.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:_.fillcolor,whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},offsetgroup:w.offsetgroup,alignmentgroup:w.alignmentgroup,selected:{marker:_.selected.marker,editType:"style"},unselected:{marker:_.unselected.marker,editType:"style"},text:f({},_.text,{}),hovertext:f({},_.hovertext,{}),hovertemplate:y({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"}}},48518:function(D,E,e){var _=e(92770),w=e(89298),s=e(42973),T=e(71828),y=e(50606).BADNUM,f=T._;D.exports=function(c,b){var d,v,x,g,m,k,h,M=c._fullLayout,A=w.getFromId(c,b.xaxis||"x"),C=w.getFromId(c,b.yaxis||"y"),L=[],O=b.type==="violin"?"_numViolins":"_numBoxes";b.orientation==="h"?(x=A,g="x",m=C,k="y",h=!!b.yperiodalignment):(x=C,g="y",m=A,k="x",h=!!b.xperiodalignment);var I,R,U,B,G,N,j=function(Se,Ne,Ye,Ze){var st,ot=Ne+"0"in Se;if(Ne in Se||ot&&"d"+Ne in Se){var ft=Ye.makeCalcdata(Se,Ne);return[s(Se,Ye,Ne,ft).vals,ft]}st=ot?Se[Ne+"0"]:"name"in Se&&(Ye.type==="category"||_(Se.name)&&["linear","log"].indexOf(Ye.type)!==-1||T.isDateTime(Se.name)&&Ye.type==="date")?Se.name:Ze;for(var yt=Ye.type==="multicategory"?Ye.r2c_just_indices(st):Ye.d2c(st,0,Se[Ne+"calendar"]),Et=Se._length,Tt=new Array(Et),xt=0;xtI.uf};if(b._hasPreCompStats){var K=b[g],te=function(Se){return x.d2c((b[Se]||[])[d])},ae=1/0,oe=-1/0;for(d=0;d=I.q1&&I.q3>=I.med){var fe=te("lowerfence");I.lf=fe!==y&&fe<=I.q1?fe:n(I,U,B);var ye=te("upperfence");I.uf=ye!==y&&ye>=I.q3?ye:o(I,U,B);var pe=te("mean");I.mean=pe!==y?pe:B?T.mean(U,B):(I.q1+I.q3)/2;var de=te("sd");I.sd=pe!==y&&de>=0?de:B?T.stdev(U,B,I.mean):I.q3-I.q1,I.lo=a(I),I.uo=u(I);var he=te("notchspan");he=he!==y&&he>0?he:p(I,B),I.ln=I.med-he,I.un=I.med+he;var xe=I.lf,Re=I.uf;b.boxpoints&&U.length&&(xe=Math.min(xe,U[0]),Re=Math.max(Re,U[B-1])),b.notched&&(xe=Math.min(xe,I.ln),Re=Math.max(Re,I.un)),I.min=xe,I.max=Re}else{var we;T.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+I.q1,"median = "+I.med,"q3 = "+I.q3].join(` +`)),we=I.med!==y?I.med:I.q1!==y?I.q3!==y?(I.q1+I.q3)/2:I.q1:I.q3!==y?I.q3:0,I.med=we,I.q1=I.q3=we,I.lf=I.uf=we,I.mean=I.sd=we,I.ln=I.un=we,I.min=I.max=we}ae=Math.min(ae,I.min),oe=Math.max(oe,I.max),I.pts2=R.filter(Y),L.push(I)}}b._extremes[x._id]=w.findExtremes(x,[ae,oe],{padded:!0})}else{var Ae=x.makeCalcdata(b,g),Me=function(Se,Ne){for(var Ye=Se.length,Ze=new Array(Ye+1),st=0;st=0&&ue0){var je,ge;(I={}).pos=I[k]=Q[d],R=I.pts=ne[d].sort(i),B=(U=I[g]=R.map(r)).length,I.min=U[0],I.max=U[B-1],I.mean=T.mean(U,B),I.sd=T.stdev(U,B,I.mean),I.med=T.interp(U,.5),B%2&&(Ue||De)?(Ue?(je=U.slice(0,B/2),ge=U.slice(B/2+1)):De&&(je=U.slice(0,B/2+1),ge=U.slice(B/2)),I.q1=T.interp(je,.5),I.q3=T.interp(ge,.5)):(I.q1=T.interp(U,.25),I.q3=T.interp(U,.75)),I.lf=n(I,U,B),I.uf=o(I,U,B),I.lo=a(I),I.uo=u(I);var be=p(I,B);I.ln=I.med-be,I.un=I.med+be,me=Math.min(me,I.ln),Te=Math.max(Te,I.un),I.pts2=R.filter(Y),L.push(I)}b._extremes[x._id]=w.findExtremes(x,b.notched?Ae.concat([me,Te]):Ae,{padded:!0})}return function(Se,Ne){if(T.isArrayOrTypedArray(Ne.selectedpoints))for(var Ye=0;Ye0?(L[0].t={num:M[O],dPos:X,posLetter:k,valLetter:g,labels:{med:f(c,"median:"),min:f(c,"min:"),q1:f(c,"q1:"),q3:f(c,"q3:"),max:f(c,"max:"),mean:b.boxmean==="sd"?f(c,"mean ± σ:"):f(c,"mean:"),lf:f(c,"lower fence:"),uf:f(c,"upper fence:")}},M[O]++,L):[{t:{empty:!0}}]};var l={text:"tx",hovertext:"htx"};function t(c,b,d){for(var v in l)T.isArrayOrTypedArray(b[v])&&(Array.isArray(d)?T.isArrayOrTypedArray(b[v][d[0]])&&(c[l[v]]=b[v][d[0]][d[1]]):c[l[v]]=b[v][d])}function i(c,b){return c.v-b.v}function r(c){return c.v}function n(c,b,d){return d===0?c.q1:Math.min(c.q1,b[Math.min(T.findBin(2.5*c.q1-1.5*c.q3,b,!0)+1,d-1)])}function o(c,b,d){return d===0?c.q3:Math.max(c.q3,b[Math.max(T.findBin(2.5*c.q3-1.5*c.q1,b),0)])}function a(c){return 4*c.q1-3*c.q3}function u(c){return 4*c.q3-3*c.q1}function p(c,b){return b===0?0:1.57*(c.q3-c.q1)/Math.sqrt(b)}},37188:function(D,E,e){var _=e(89298),w=e(71828),s=e(99082).getAxisGroup,T=["v","h"];function y(f,l,t,i){var r,n,o,a=l.calcdata,u=l._fullLayout,p=i._id,c=p.charAt(0),b=[],d=0;for(r=0;r1,k=1-u[f+"gap"],h=1-u[f+"groupgap"];for(r=0;r0){var se=R.pointpos,fe=R.jitter,ye=R.marker.size/2,pe=0;se+fe>=0&&((pe=ae*(se+fe))>O?(oe=!0,K=ye,X=pe):pe>ee&&(K=ye,X=O)),pe<=O&&(X=O);var de=0;se-fe<=0&&((de=-ae*(se-fe))>I?(oe=!0,te=ye,Y=de):de>Q&&(te=ye,Y=I)),de<=I&&(Y=I)}else X=O,Y=I;var he=new Array(o.length);for(n=0;n0?(m="v",k=M>0?Math.min(C,A):Math.min(A)):M>0?(m="h",k=Math.min(C)):k=0;if(k){n._length=k;var B=o("orientation",m);n._hasPreCompStats?B==="v"&&M===0?(o("x0",0),o("dx",1)):B==="h"&&h===0&&(o("y0",0),o("dy",1)):B==="v"&&M===0?o("x0"):B==="h"&&h===0&&o("y0"),w.getComponentMethod("calendars","handleTraceDefaults")(r,n,["x","y"],a)}else n.visible=!1}function i(r,n,o,a){var u=a.prefix,p=_.coerce2(r,n,l,"marker.outliercolor"),c=o("marker.line.outliercolor"),b="outliers";n._hasPreCompStats?b="all":(p||c)&&(b="suspectedoutliers");var d=o(u+"points",b);d?(o("jitter",d==="all"?.3:0),o("pointpos",d==="all"?-1.5:0),o("marker.symbol"),o("marker.opacity"),o("marker.size"),o("marker.angle"),o("marker.color",n.line.color),o("marker.line.color"),o("marker.line.width"),d==="suspectedoutliers"&&(o("marker.line.outliercolor",n.marker.color),o("marker.line.outlierwidth")),o("selected.marker.color"),o("unselected.marker.color"),o("selected.marker.size"),o("unselected.marker.size"),o("text"),o("hovertext")):delete n.marker;var v=o("hoveron");v!=="all"&&v.indexOf("points")===-1||o("hovertemplate"),_.coerceSelectionMarkerOpacity(n,o)}D.exports={supplyDefaults:function(r,n,o,a){function u(g,m){return _.coerce(r,n,l,g,m)}if(t(r,n,u,a),n.visible!==!1){T(r,n,a,u),u("xhoverformat"),u("yhoverformat");var p=n._hasPreCompStats;p&&(u("lowerfence"),u("upperfence")),u("line.color",(r.marker||{}).color||o),u("line.width"),u("fillcolor",s.addOpacity(n.line.color,.5));var c=!1;if(p){var b=u("mean"),d=u("sd");b&&b.length&&(c=!0,d&&d.length&&(c="sd"))}u("boxmean",c),u("whiskerwidth"),u("width"),u("quartilemethod");var v=!1;if(p){var x=u("notchspan");x&&x.length&&(v=!0)}else _.validate(r.notchwidth,l.notchwidth)&&(v=!0);u("notched",v)&&u("notchwidth"),i(r,n,u,{prefix:"box"})}},crossTraceDefaults:function(r,n){var o,a;function u(b){return _.coerce(a._input,a,l,b)}for(var p=0;pd.lo&&(U.so=!0)}return g});b.enter().append("path").classed("point",!0),b.exit().remove(),b.call(s.translatePoints,n,o)}function f(l,t,i,r){var n,o,a=t.val,u=t.pos,p=!!u.rangebreaks,c=r.bPos,b=r.bPosPxOffset||0,d=i.boxmean||(i.meanline||{}).visible;Array.isArray(r.bdPos)?(n=r.bdPos[0],o=r.bdPos[1]):(n=r.bdPos,o=r.bdPos);var v=l.selectAll("path.mean").data(i.type==="box"&&i.boxmean||i.type==="violin"&&i.box.visible&&i.meanline.visible?w.identity:[]);v.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),v.exit().remove(),v.each(function(x){var g=u.c2l(x.pos+c,!0),m=u.l2p(g-n)+b,k=u.l2p(g+o)+b,h=p?(m+k)/2:u.l2p(g)+b,M=a.c2p(x.mean,!0),A=a.c2p(x.mean-x.sd,!0),C=a.c2p(x.mean+x.sd,!0);i.orientation==="h"?_.select(this).attr("d","M"+M+","+m+"V"+k+(d==="sd"?"m0,0L"+A+","+h+"L"+M+","+m+"L"+C+","+h+"Z":"")):_.select(this).attr("d","M"+m+","+M+"H"+k+(d==="sd"?"m0,0L"+h+","+A+"L"+m+","+M+"L"+h+","+C+"Z":""))})}D.exports={plot:function(l,t,i,r){var n=l._context.staticPlot,o=t.xaxis,a=t.yaxis;w.makeTraceGroups(r,i,"trace boxes").each(function(u){var p,c,b=_.select(this),d=u[0],v=d.t,x=d.trace;v.wdPos=v.bdPos*x.whiskerwidth,x.visible!==!0||v.empty?b.remove():(x.orientation==="h"?(p=a,c=o):(p=o,c=a),T(b,{pos:p,val:c},x,v,n),y(b,{x:o,y:a},x,v),f(b,{pos:p,val:c},x,v))})},plotBoxAndWhiskers:T,plotPoints:y,plotBoxMean:f}},24626:function(D){D.exports=function(E,e){var _,w,s=E.cd,T=E.xaxis,y=E.yaxis,f=[];if(e===!1)for(_=0;_=10)return null;for(var y=1/0,f=-1/0,l=s.length,t=0;t0?Math.floor:Math.ceil,B=I>0?Math.ceil:Math.floor,G=I>0?Math.min:Math.max,N=I>0?Math.max:Math.min,j=U(L+R),V=B(O-R),H=[[o=C(L)]];for(f=j;f*I=0;s--)T[i-s]=E[r][s],y[i-s]=e[r][s];for(f.push({x:T,y,bicubic:l}),s=r,T=[],y=[];s>=0;s--)T[r-s]=E[s][0],y[r-s]=e[s][0];return f.push({x:T,y,bicubic:t}),f}},20347:function(D,E,e){var _=e(89298),w=e(1426).extendFlat;D.exports=function(s,T,y){var f,l,t,i,r,n,o,a,u,p,c,b,d,v,x=s["_"+T],g=s[T+"axis"],m=g._gridlines=[],k=g._minorgridlines=[],h=g._boundarylines=[],M=s["_"+y],A=s[y+"axis"];g.tickmode==="array"&&(g.tickvals=x.slice());var C=s._xctrl,L=s._yctrl,O=C[0].length,I=C.length,R=s._a.length,U=s._b.length;_.prepTicks(g),g.tickmode==="array"&&delete g.tickvals;var B=g.smoothing?3:1;function G(j){var V,H,ee,Q,X,Y,K,te,ae,oe,se,fe,ye=[],pe=[],de={};if(T==="b")for(H=s.b2j(j),ee=Math.floor(Math.max(0,Math.min(U-2,H))),Q=H-ee,de.length=U,de.crossLength=R,de.xy=function(he){return s.evalxy([],he,H)},de.dxy=function(he,xe){return s.dxydi([],he,ee,xe,Q)},V=0;V0&&(ae=s.dxydi([],V-1,ee,0,Q),ye.push(X[0]+ae[0]/3),pe.push(X[1]+ae[1]/3),oe=s.dxydi([],V-1,ee,1,Q),ye.push(te[0]-oe[0]/3),pe.push(te[1]-oe[1]/3)),ye.push(te[0]),pe.push(te[1]),X=te;else for(V=s.a2i(j),Y=Math.floor(Math.max(0,Math.min(R-2,V))),K=V-Y,de.length=R,de.crossLength=U,de.xy=function(he){return s.evalxy([],V,he)},de.dxy=function(he,xe){return s.dxydj([],Y,he,K,xe)},H=0;H0&&(se=s.dxydj([],Y,H-1,K,0),ye.push(X[0]+se[0]/3),pe.push(X[1]+se[1]/3),fe=s.dxydj([],Y,H-1,K,1),ye.push(te[0]-fe[0]/3),pe.push(te[1]-fe[1]/3)),ye.push(te[0]),pe.push(te[1]),X=te;return de.axisLetter=T,de.axis=g,de.crossAxis=A,de.value=j,de.constvar=y,de.index=a,de.x=ye,de.y=pe,de.smoothing=A.smoothing,de}function N(j){var V,H,ee,Q,X,Y=[],K=[],te={};if(te.length=x.length,te.crossLength=M.length,T==="b")for(ee=Math.max(0,Math.min(U-2,j)),X=Math.min(1,Math.max(0,j-ee)),te.xy=function(ae){return s.evalxy([],ae,j)},te.dxy=function(ae,oe){return s.dxydi([],ae,ee,oe,X)},V=0;Vx.length-1||m.push(w(N(l),{color:g.gridcolor,width:g.gridwidth,dash:g.griddash}));for(a=n;ax.length-1||c<0||c>x.length-1))for(b=x[t],d=x[c],f=0;fx[x.length-1]||k.push(w(G(p),{color:g.minorgridcolor,width:g.minorgridwidth,dash:g.minorgriddash}));g.startline&&h.push(w(N(0),{color:g.startlinecolor,width:g.startlinewidth})),g.endline&&h.push(w(N(x.length-1),{color:g.endlinecolor,width:g.endlinewidth}))}else{for(i=5e-15,n=(r=[Math.floor((x[x.length-1]-g.tick0)/g.dtick*(1+i)),Math.ceil((x[0]-g.tick0)/g.dtick/(1+i))].sort(function(j,V){return j-V}))[0],o=r[1],a=n;a<=o;a++)u=g.tick0+g.dtick*a,m.push(w(G(u),{color:g.gridcolor,width:g.gridwidth,dash:g.griddash}));for(a=n-1;ax[x.length-1]||k.push(w(G(p),{color:g.minorgridcolor,width:g.minorgridwidth,dash:g.minorgriddash}));g.startline&&h.push(w(G(x[0]),{color:g.startlinecolor,width:g.startlinewidth})),g.endline&&h.push(w(G(x[x.length-1]),{color:g.endlinecolor,width:g.endlinewidth}))}}},83311:function(D,E,e){var _=e(89298),w=e(1426).extendFlat;D.exports=function(s,T){var y,f,l,t=T._labels=[],i=T._gridlines;for(y=0;ys.length&&(w=w.slice(0,s.length)):w=[],y=0;y90&&(o-=180,l=-l),{angle:o,flip:l,p:E.c2p(w,e,_),offsetMultplier:t}}},89740:function(D,E,e){var _=e(39898),w=e(91424),s=e(27669),T=e(67961),y=e(11651),f=e(63893),l=e(71828),t=l.strRotate,i=l.strTranslate,r=e(18783);function n(c,b,d,v,x,g,m){var k="const-"+x+"-lines",h=d.selectAll("."+k).data(g);h.enter().append("path").classed(k,!0).style("vector-effect",m?"none":"non-scaling-stroke"),h.each(function(M){var A=M,C=A.x,L=A.y,O=s([],C,c.c2p),I=s([],L,b.c2p),R="M"+T(O,I,A.smoothing);_.select(this).attr("d",R).style("stroke-width",A.width).style("stroke",A.color).style("stroke-dasharray",w.dashStyle(A.dash,A.width)).style("fill","none")}),h.exit().remove()}function o(c,b,d,v,x,g,m,k){var h=g.selectAll("text."+k).data(m);h.enter().append("text").classed(k,!0);var M=0,A={};return h.each(function(C,L){var O;if(C.axis.tickangle==="auto")O=y(v,b,d,C.xy,C.dxy);else{var I=(C.axis.tickangle+180)*Math.PI/180;O=y(v,b,d,C.xy,[Math.cos(I),Math.sin(I)])}L||(A={angle:O.angle,flip:O.flip});var R=(C.endAnchor?-1:1)*O.flip,U=_.select(this).attr({"text-anchor":R>0?"start":"end","data-notex":1}).call(w.font,C.font).text(C.text).call(f.convertToTspans,c),B=w.bBox(this);U.attr("transform",i(O.p[0],O.p[1])+t(O.angle)+i(C.axis.labelpadding*R,.3*B.height)),M=Math.max(M,B.width+C.axis.labelpadding)}),h.exit().remove(),A.maxExtent=M,A}D.exports=function(c,b,d,v){var x=c._context.staticPlot,g=b.xaxis,m=b.yaxis,k=c._fullLayout._clips;l.makeTraceGroups(v,d,"trace").each(function(h){var M=_.select(this),A=h[0],C=A.trace,L=C.aaxis,O=C.baxis,I=l.ensureSingle(M,"g","minorlayer"),R=l.ensureSingle(M,"g","majorlayer"),U=l.ensureSingle(M,"g","boundarylayer"),B=l.ensureSingle(M,"g","labellayer");M.style("opacity",C.opacity),n(g,m,R,0,"a",L._gridlines,!0),n(g,m,R,0,"b",O._gridlines,!0),n(g,m,I,0,"a",L._minorgridlines,!0),n(g,m,I,0,"b",O._minorgridlines,!0),n(g,m,U,0,"a-boundary",L._boundarylines,x),n(g,m,U,0,"b-boundary",O._boundarylines,x);var G=o(c,g,m,C,0,B,L._labels,"a-label"),N=o(c,g,m,C,0,B,O._labels,"b-label");(function(j,V,H,ee,Q,X,Y,K){var te,ae,oe,se,fe=l.aggNums(Math.min,null,H.a),ye=l.aggNums(Math.max,null,H.a),pe=l.aggNums(Math.min,null,H.b),de=l.aggNums(Math.max,null,H.b);te=.5*(fe+ye),ae=pe,oe=H.ab2xy(te,ae,!0),se=H.dxyda_rough(te,ae),Y.angle===void 0&&l.extendFlat(Y,y(H,Q,X,oe,H.dxydb_rough(te,ae))),p(j,V,H,0,oe,se,H.aaxis,Q,X,Y,"a-title"),te=fe,ae=.5*(pe+de),oe=H.ab2xy(te,ae,!0),se=H.dxydb_rough(te,ae),K.angle===void 0&&l.extendFlat(K,y(H,Q,X,oe,H.dxyda_rough(te,ae))),p(j,V,H,0,oe,se,H.baxis,Q,X,K,"b-title")})(c,B,C,0,g,m,G,N),function(j,V,H,ee,Q){var X,Y,K,te,ae=H.select("#"+j._clipPathId);ae.size()||(ae=H.append("clipPath").classed("carpetclip",!0));var oe=l.ensureSingle(ae,"path","carpetboundary"),se=V.clipsegments,fe=[];for(te=0;te90&&U<270,G=_.select(this);G.text(m.title.text).call(f.convertToTspans,c),B&&(O=(-f.lineCount(G)+u)*a*R-O),G.attr("transform",i(I.p[0],I.p[1])+t(I.angle)+i(0,O)).attr("text-anchor","middle").call(w.font,m.title.font)}),L.exit().remove()}},11435:function(D,E,e){var _=e(35509),w=e(65888).findBin,s=e(45664),T=e(20349),y=e(54495),f=e(73057);D.exports=function(l){var t=l._a,i=l._b,r=t.length,n=i.length,o=l.aaxis,a=l.baxis,u=t[0],p=t[r-1],c=i[0],b=i[n-1],d=t[t.length-1]-t[0],v=i[i.length-1]-i[0],x=d*_.RELATIVE_CULL_TOLERANCE,g=v*_.RELATIVE_CULL_TOLERANCE;u-=x,p+=x,c-=g,b+=g,l.isVisible=function(m,k){return m>u&&mc&&kp||kb},l.setScale=function(){var m=l._x,k=l._y,h=s(l._xctrl,l._yctrl,m,k,o.smoothing,a.smoothing);l._xctrl=h[0],l._yctrl=h[1],l.evalxy=T([l._xctrl,l._yctrl],r,n,o.smoothing,a.smoothing),l.dxydi=y([l._xctrl,l._yctrl],o.smoothing,a.smoothing),l.dxydj=f([l._xctrl,l._yctrl],o.smoothing,a.smoothing)},l.i2a=function(m){var k=Math.max(0,Math.floor(m[0]),r-2),h=m[0]-k;return(1-h)*t[k]+h*t[k+1]},l.j2b=function(m){var k=Math.max(0,Math.floor(m[1]),r-2),h=m[1]-k;return(1-h)*i[k]+h*i[k+1]},l.ij2ab=function(m){return[l.i2a(m[0]),l.j2b(m[1])]},l.a2i=function(m){var k=Math.max(0,Math.min(w(m,t),r-2)),h=t[k],M=t[k+1];return Math.max(0,Math.min(r-1,k+(m-h)/(M-h)))},l.b2j=function(m){var k=Math.max(0,Math.min(w(m,i),n-2)),h=i[k],M=i[k+1];return Math.max(0,Math.min(n-1,k+(m-h)/(M-h)))},l.ab2ij=function(m){return[l.a2i(m[0]),l.b2j(m[1])]},l.i2c=function(m,k){return l.evalxy([],m,k)},l.ab2xy=function(m,k,h){if(!h&&(mt[r-1]|ki[n-1]))return[!1,!1];var M=l.a2i(m),A=l.b2j(k),C=l.evalxy([],M,A);if(h){var L,O,I,R,U=0,B=0,G=[];mt[r-1]?(L=r-2,O=1,U=(m-t[r-1])/(t[r-1]-t[r-2])):O=M-(L=Math.max(0,Math.min(r-2,Math.floor(M)))),ki[n-1]?(I=n-2,R=1,B=(k-i[n-1])/(i[n-1]-i[n-2])):R=A-(I=Math.max(0,Math.min(n-2,Math.floor(A)))),U&&(l.dxydi(G,L,I,O,R),C[0]+=G[0]*U,C[1]+=G[1]*U),B&&(l.dxydj(G,L,I,O,R),C[0]+=G[0]*B,C[1]+=G[1]*B)}return C},l.c2p=function(m,k,h){return[k.c2p(m[0]),h.c2p(m[1])]},l.p2x=function(m,k,h){return[k.p2c(m[0]),h.p2c(m[1])]},l.dadi=function(m){var k=Math.max(0,Math.min(t.length-2,m));return t[k+1]-t[k]},l.dbdj=function(m){var k=Math.max(0,Math.min(i.length-2,m));return i[k+1]-i[k]},l.dxyda=function(m,k,h,M){var A=l.dxydi(null,m,k,h,M),C=l.dadi(m,h);return[A[0]/C,A[1]/C]},l.dxydb=function(m,k,h,M){var A=l.dxydj(null,m,k,h,M),C=l.dbdj(k,M);return[A[0]/C,A[1]/C]},l.dxyda_rough=function(m,k,h){var M=d*(h||.1),A=l.ab2xy(m+M,k,!0),C=l.ab2xy(m-M,k,!0);return[.5*(A[0]-C[0])/M,.5*(A[1]-C[1])/M]},l.dxydb_rough=function(m,k,h){var M=v*(h||.1),A=l.ab2xy(m,k+M,!0),C=l.ab2xy(m,k-M,!0);return[.5*(A[0]-C[0])/M,.5*(A[1]-C[1])/M]},l.dpdx=function(m){return m._m},l.dpdy=function(m){return m._m}}},72505:function(D,E,e){var _=e(71828);D.exports=function(w,s,T){var y,f,l,t=[],i=[],r=w[0].length,n=w.length;function o(j,V){var H,ee=0,Q=0;return j>0&&(H=w[V][j-1])!==void 0&&(Q++,ee+=H),j0&&(H=w[V-1][j])!==void 0&&(Q++,ee+=H),V0&&f0&&y1e-5);return _.log("Smoother converged to",M,"after",A,"iterations"),w}},19237:function(D,E,e){var _=e(71828).isArray1D;D.exports=function(w,s,T){var y=T("x"),f=y&&y.length,l=T("y"),t=l&&l.length;if(!f&&!t)return!1;if(s._cheater=!y,f&&!_(y)||t&&!_(l))s._length=null;else{var i=f?y.length:1/0;t&&(i=Math.min(i,l.length)),s.a&&s.a.length&&(i=Math.min(i,s.a.length)),s.b&&s.b.length&&(i=Math.min(i,s.b.length)),s._length=i}return!0}},69568:function(D,E,e){var _=e(5386).fF,w=e(19316),s=e(50693),T=e(9012),y=e(22399).defaultLine,f=e(1426).extendFlat,l=w.marker.line;D.exports=f({locations:{valType:"data_array",editType:"calc"},locationmode:w.locationmode,z:{valType:"data_array",editType:"calc"},geojson:f({},w.geojson,{}),featureidkey:w.featureidkey,text:f({},w.text,{}),hovertext:f({},w.hovertext,{}),marker:{line:{color:f({},l.color,{dflt:y}),width:f({},l.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:w.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:w.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:f({},T.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:_(),showlegend:f({},T.showlegend,{dflt:!1})},s("",{cLetter:"z",editTypeOverride:"calc"}))},38675:function(D,E,e){var _=e(92770),w=e(50606).BADNUM,s=e(78803),T=e(75225),y=e(66279);function f(l){return l&&typeof l=="string"}D.exports=function(l,t){var i,r=t._length,n=new Array(r);i=t.geojson?function(c){return f(c)||_(c)}:f;for(var o=0;o")}}(T,o,l),[T]}},51319:function(D,E,e){D.exports={attributes:e(69568),supplyDefaults:e(61869),colorbar:e(61243),calc:e(38675),calcGeoJSON:e(99841).calcGeoJSON,plot:e(99841).plot,style:e(99636).style,styleOnSelect:e(99636).styleOnSelect,hoverPoints:e(42300),eventData:e(92069),selectPoints:e(81253),moduleType:"trace",name:"choropleth",basePlotModule:e(44622),categories:["geo","noOpacity","showLegend"],meta:{}}},99841:function(D,E,e){var _=e(39898),w=e(71828),s=e(41327),T=e(90973).getTopojsonFeatures,y=e(71739).findExtremes,f=e(99636).style;D.exports={calcGeoJSON:function(l,t){for(var i=l[0].trace,r=t[i.geo],n=r._subplot,o=i.locationmode,a=i._length,u=o==="geojson-id"?s.extractTraceFeature(l):T(i,n.topojson),p=[],c=[],b=0;b=0;T--){var y=s[T].id;if(typeof y=="string"&&y.indexOf("water")===0){for(var f=T+1;f=0;t--)f.removeLayer(l[t][1])},y.dispose=function(){var f=this.subplot.map;this._removeLayers(),f.removeSource(this.sourceId)},D.exports=function(f,l){var t=l[0].trace,i=new T(f,t.uid),r=i.sourceId,n=_(l),o=i.below=f.belowLookup["trace-"+t.uid];return f.map.addSource(r,{type:"geojson",data:n.geojson}),i._addLayers(n,o),l[0].trace._glTrace=i,i}},12674:function(D,E,e){var _=e(50693),w=e(12663).axisHoverFormat,s=e(5386).fF,T=e(2418),y=e(9012),f=e(1426).extendFlat,l={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:s({editType:"calc"},{keys:["norm"]}),uhoverformat:w("u",1),vhoverformat:w("v",1),whoverformat:w("w",1),xhoverformat:w("x"),yhoverformat:w("y"),zhoverformat:w("z"),showlegend:f({},y.showlegend,{dflt:!1})};f(l,_("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"})),["opacity","lightposition","lighting"].forEach(function(t){l[t]=T[t]}),l.hoverinfo=f({},y.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"}),l.transforms=void 0,D.exports=l},31371:function(D,E,e){var _=e(78803);D.exports=function(w,s){for(var T=s.u,y=s.v,f=s.w,l=Math.min(s.x.length,s.y.length,s.z.length,T.length,y.length,f.length),t=-1/0,i=1/0,r=0;ry.level||y.starts.length&&T===y.level)}break;case"constraint":if(w.prefixBoundary=!1,w.edgepaths.length)return;var f=w.x.length,l=w.y.length,t=-1/0,i=1/0;for(_=0;_":o>t&&(w.prefixBoundary=!0);break;case"<":(ot||w.starts.length&&n===i)&&(w.prefixBoundary=!0);break;case"][":r=Math.min(o[0],o[1]),n=Math.max(o[0],o[1]),rt&&(w.prefixBoundary=!0)}}}},90654:function(D,E,e){var _=e(21081),w=e(86068),s=e(53572);D.exports={min:"zmin",max:"zmax",calc:function(T,y,f){var l=y.contours,t=y.line,i=l.size||1,r=l.coloring,n=w(y,{isColorbar:!0});if(r==="heatmap"){var o=_.extractOpts(y);f._fillgradient=o.reversescale?_.flipScale(o.colorscale):o.colorscale,f._zrange=[o.min,o.max]}else r==="fill"&&(f._fillcolor=n);f._line={color:r==="lines"?n:t.color,width:l.showlines!==!1?t.width:0,dash:t.dash},f._levels={start:l.start,end:s(l),size:i}}}},36914:function(D){D.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},83179:function(D,E,e){var _=e(92770),w=e(14523),s=e(7901),T=s.addOpacity,y=s.opacity,f=e(74808),l=f.CONSTRAINT_REDUCTION,t=f.COMPARISON_OPS2;D.exports=function(i,r,n,o,a,u){var p,c,b,d=r.contours,v=n("contours.operation");d._operation=l[v],function(x,g){var m;t.indexOf(g.operation)===-1?(x("contours.value",[0,1]),Array.isArray(g.value)?g.value.length>2?g.value=g.value.slice(2):g.length===0?g.value=[0,1]:g.length<2?(m=parseFloat(g.value[0]),g.value=[m,m+1]):g.value=[parseFloat(g.value[0]),parseFloat(g.value[1])]:_(g.value)&&(m=parseFloat(g.value),g.value=[m,m+1])):(x("contours.value",0),_(g.value)||(Array.isArray(g.value)?g.value=parseFloat(g.value[0]):g.value=0))}(n,d),v==="="?p=d.showlines=!0:(p=n("contours.showlines"),b=n("fillcolor",T((i.line||{}).color||a,.5))),p&&(c=n("line.color",b&&y(b)?T(r.fillcolor,1):a),n("line.width",2),n("line.dash")),n("line.smoothing"),w(n,o,c,u)}},64237:function(D,E,e){var _=e(74808),w=e(92770);function s(f,l){var t,i=Array.isArray(l);function r(n){return w(n)?+n:null}return _.COMPARISON_OPS2.indexOf(f)!==-1?t=r(i?l[0]:l):_.INTERVAL_OPS.indexOf(f)!==-1?t=i?[r(l[0]),r(l[1])]:[r(l),r(l)]:_.SET_OPS.indexOf(f)!==-1&&(t=i?l.map(r):[r(l)]),t}function T(f){return function(l){l=s(f,l);var t=Math.min(l[0],l[1]),i=Math.max(l[0],l[1]);return{start:t,end:i,size:i-t}}}function y(f){return function(l){return{start:l=s(f,l),end:1/0,size:1/0}}}D.exports={"[]":T("[]"),"][":T("]["),">":y(">"),"<":y("<"),"=":y("=")}},67217:function(D){D.exports=function(E,e,_,w){var s=w("contours.start"),T=w("contours.end"),y=s===!1||T===!1,f=_("contours.size");!(y?e.autocontour=!0:_("autocontour",!1))&&f||_("ncontours")}},84857:function(D,E,e){var _=e(71828);function w(s){return _.extendFlat({},s,{edgepaths:_.extendDeep([],s.edgepaths),paths:_.extendDeep([],s.paths),starts:_.extendDeep([],s.starts)})}D.exports=function(s,T){var y,f,l,t=function(n){return n.reverse()},i=function(n){return n};switch(T){case"=":case"<":return s;case">":for(s.length!==1&&_.warn("Contour data invalid for the specified inequality operation."),f=s[0],y=0;y1e3){_.warn("Too many contours, clipping at 1000",T);break}return i}},53572:function(D){D.exports=function(E){return E.end+E.size/1e6}},81696:function(D,E,e){var _=e(71828),w=e(36914);function s(f,l,t,i){return Math.abs(f[0]-l[0])20&&oe?ae===208||ae===1114?fe=se[0]===0?1:-1:ye=se[1]===0?1:-1:w.BOTTOMSTART.indexOf(ae)!==-1?ye=1:w.LEFTSTART.indexOf(ae)!==-1?fe=1:w.TOPSTART.indexOf(ae)!==-1?ye=-1:fe=-1,[fe,ye]}(a,t,l),p=[y(f,l,[-u[0],-u[1]])],c=f.z.length,b=f.z[0].length,d=l.slice(),v=u.slice();for(n=0;n<1e4;n++){if(a>20?(a=w.CHOOSESADDLE[a][(u[0]||u[1])<0?0:1],f.crossings[o]=w.SADDLEREMAINDER[a]):delete f.crossings[o],!(u=w.NEWDELTA[a])){_.log("Found bad marching index:",a,l,f.level);break}p.push(y(f,l,u)),l[0]+=u[0],l[1]+=u[1],o=l.join(","),s(p[p.length-1],p[p.length-2],i,r)&&p.pop();var x=u[0]&&(l[0]<0||l[0]>b-2)||u[1]&&(l[1]<0||l[1]>c-2);if(l[0]===d[0]&&l[1]===d[1]&&u[0]===v[0]&&u[1]===v[1]||t&&x)break;a=f.crossings[o]}n===1e4&&_.log("Infinite loop in contour?");var g,m,k,h,M,A,C,L,O,I,R,U,B,G,N,j=s(p[0],p[p.length-1],i,r),V=0,H=.2*f.smoothing,ee=[],Q=0;for(n=1;n=Q;n--)if((g=ee[n])=Q&&g+ee[m]L&&O--,f.edgepaths[O]=R.concat(p,I));break}te||(f.edgepaths[L]=p.concat(I))}for(L=0;Ls?0:1)+(T[0][1]>s?0:2)+(T[1][1]>s?0:4)+(T[1][0]>s?0:8);return y===5||y===10?s>(T[0][0]+T[0][1]+T[1][0]+T[1][1])/4?y===5?713:1114:y===5?104:208:y===15?0:y}D.exports=function(s){var T,y,f,l,t,i,r,n,o,a=s[0].z,u=a.length,p=a[0].length,c=u===2||p===2;for(y=0;y=0&&(m=N,h=M):Math.abs(g[1]-m[1])<.01?Math.abs(g[1]-N[1])<.01&&(N[0]-g[0])*(m[0]-N[0])>=0&&(m=N,h=M):w.log("endpt to newendpt is not vert. or horz.",g,m,N)}if(g=m,h>=0)break;L+="L"+m}if(h===v.edgepaths.length){w.log("unclosed perimeter path");break}O=h,(R=I.indexOf(O)===-1)&&(O=I[0],L+="Z")}for(O=0;Om.center?m.right-M:M-m.left)/(L+Math.abs(Math.sin(C)*h)),R=(A>m.middle?m.bottom-A:A-m.top)/(Math.abs(O)+Math.cos(C)*h);if(I<1||R<1)return 1/0;var U=p.EDGECOST*(1/(I-1)+1/(R-1));U+=p.ANGLECOST*C*C;for(var B=M-L,G=A-O,N=M+L,j=A+O,V=0;V2*p.MAXCOST)break;R&&(M/=2),A=(h=C-M/2)+1.5*M}if(I<=p.MAXCOST)return L},E.addLabelData=function(v,x,g,m){var k=x.fontSize,h=x.width+k/3,M=Math.max(0,x.height-k/3),A=v.x,C=v.y,L=v.theta,O=Math.sin(L),I=Math.cos(L),R=function(B,G){return[A+B*I-G*O,C+B*O+G*I]},U=[R(-h/2,-M/2),R(-h/2,M/2),R(h/2,M/2),R(h/2,-M/2)];g.push({text:x.text,x:A,y:C,dy:x.dy,theta:L,level:x.level,width:h,height:M}),m.push(U)},E.drawLabels=function(v,x,g,m,k){var h=v.selectAll("text").data(x,function(C){return C.text+","+C.x+","+C.y+","+C.theta});if(h.exit().remove(),h.enter().append("text").attr({"data-notex":1,"text-anchor":"middle"}).each(function(C){var L=C.x+Math.sin(C.theta)*C.dy,O=C.y-Math.cos(C.theta)*C.dy;_.select(this).text(C.text).attr({x:L,y:O,transform:"rotate("+180*C.theta/Math.PI+" "+L+" "+O+")"}).call(y.convertToTspans,g)}),k){for(var M="",A=0;Af.end&&(f.start=f.end=(f.start+f.end)/2),T._input.contours||(T._input.contours={}),w.extendFlat(T._input.contours,{start:f.start,end:f.end,size:f.size}),T._input.autocontour=!0}else if(f.type!=="constraint"){var r,n=f.start,o=f.end,a=T._input.contours;n>o&&(f.start=a.start=o,o=f.end=a.end=n,n=f.start),f.size>0||(r=n===o?1:s(n,o,T.ncontours).dtick,a.size=f.size=r)}}},84426:function(D,E,e){var _=e(39898),w=e(91424),s=e(70035),T=e(86068);D.exports=function(y){var f=_.select(y).selectAll("g.contour");f.style("opacity",function(l){return l[0].trace.opacity}),f.each(function(l){var t=_.select(this),i=l[0].trace,r=i.contours,n=i.line,o=r.size||1,a=r.start,u=r.type==="constraint",p=!u&&r.coloring==="lines",c=!u&&r.coloring==="fill",b=p||c?T(i):null;t.selectAll("g.contourlevel").each(function(x){_.select(this).selectAll("path").call(w.lineGroupStyle,n.width,p?b(x.level):n.color,n.dash)});var d=r.labelfont;if(t.selectAll("g.contourlabels text").each(function(x){w.font(_.select(this),{family:d.family,size:d.size,color:d.color||(p?b(x.level):n.color)})}),u)t.selectAll("g.contourfill path").style("fill",i.fillcolor);else if(c){var v;t.selectAll("g.contourfill path").style("fill",function(x){return v===void 0&&(v=x.level),b(x.level+.5*o)}),v===void 0&&(v=a),t.selectAll("g.contourbg path").style("fill",b(v-.5*o))}}),s(y)}},8724:function(D,E,e){var _=e(1586),w=e(14523);D.exports=function(s,T,y,f,l){var t,i=y("contours.coloring"),r="";i==="fill"&&(t=y("contours.showlines")),t!==!1&&(i!=="lines"&&(r=y("line.color","#000")),y("line.width",.5),y("line.dash")),i!=="none"&&(s.showlegend!==!0&&(T.showlegend=!1),T._dfltShowLegend=!1,_(s,T,f,y,{prefix:"",cLetter:"z"})),y("line.smoothing"),w(y,f,r,l)}},88085:function(D,E,e){var _=e(21606),w=e(70600),s=e(50693),T=e(1426).extendFlat,y=w.contours;D.exports=T({carpet:{valType:"string",editType:"calc"},z:_.z,a:_.x,a0:_.x0,da:_.dx,b:_.y,b0:_.y0,db:_.dy,text:_.text,hovertext:_.hovertext,transpose:_.transpose,atype:_.xtype,btype:_.ytype,fillcolor:w.fillcolor,autocontour:w.autocontour,ncontours:w.ncontours,contours:{type:y.type,start:y.start,end:y.end,size:y.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:y.showlines,showlabels:y.showlabels,labelfont:y.labelfont,labelformat:y.labelformat,operation:y.operation,value:y.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:w.line.color,width:w.line.width,dash:w.line.dash,smoothing:w.line.smoothing,editType:"plot"},transforms:void 0},s("",{cLetter:"z",autoColorDflt:!1}))},59885:function(D,E,e){var _=e(78803),w=e(71828),s=e(68296),T=e(4742),y=e(824),f=e(43907),l=e(70769),t=e(75005),i=e(22882),r=e(18670);D.exports=function(n,o){var a=o._carpetTrace=i(n,o);if(a&&a.visible&&a.visible!=="legendonly"){if(!o.a||!o.b){var u=n.data[a.index],p=n.data[o.index];p.a||(p.a=u.a),p.b||(p.b=u.b),t(p,o,o._defaultColor,n._fullLayout)}var c=function(b,d){var v,x,g,m,k,h,M,A=d._carpetTrace,C=A.aaxis,L=A.baxis;C._minDtick=0,L._minDtick=0,w.isArray1D(d.z)&&s(d,C,L,"a","b",["z"]),v=d._a=d._a||d.a,m=d._b=d._b||d.b,v=v?C.makeCalcdata(d,"_a"):[],m=m?L.makeCalcdata(d,"_b"):[],x=d.a0||0,g=d.da||1,k=d.b0||0,h=d.db||1,M=d._z=T(d._z||d.z,d.transpose),d._emptypoints=f(M),y(M,d._emptypoints);var O=w.maxRowLength(M),I=d.xtype==="scaled"?"":v,R=l(d,I,x,g,O,C),U=d.ytype==="scaled"?"":m,B={a:R,b:l(d,U,k,h,M.length,L),z:M};return d.contours.type==="levels"&&d.contours.coloring!=="none"&&_(b,d,{vals:M,containerStr:"",cLetter:"z"}),[B]}(n,o);return r(o,o._z),c}}},75005:function(D,E,e){var _=e(71828),w=e(67684),s=e(88085),T=e(83179),y=e(67217),f=e(8724);D.exports=function(l,t,i,r){function n(o,a){return _.coerce(l,t,s,o,a)}if(n("carpet"),l.a&&l.b){if(!w(l,t,n,r,"a","b"))return void(t.visible=!1);n("text"),n("contours.type")==="constraint"?T(l,t,n,r,i,{hasHover:!1}):(y(l,t,n,function(o){return _.coerce2(l,t,s,o)}),f(l,t,n,r,{hasHover:!1}))}else t._defaultColor=i,t._length=null}},93740:function(D,E,e){D.exports={attributes:e(88085),supplyDefaults:e(75005),colorbar:e(90654),calc:e(59885),plot:e(51048),style:e(84426),moduleType:"trace",name:"contourcarpet",basePlotModule:e(93612),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}},51048:function(D,E,e){var _=e(39898),w=e(27669),s=e(67961),T=e(91424),y=e(71828),f=e(87678),l=e(81696),t=e(29854),i=e(36914),r=e(84857),n=e(87558),o=e(20083),a=e(22882),u=e(4536);function p(d,v,x){var g=d.getPointAtLength(v),m=d.getPointAtLength(x),k=m.x-g.x,h=m.y-g.y,M=Math.sqrt(k*k+h*h);return[k/M,h/M]}function c(d){var v=Math.sqrt(d[0]*d[0]+d[1]*d[1]);return[d[0]/v,d[1]/v]}function b(d,v){var x=Math.abs(d[0]*v[0]+d[1]*v[1]);return Math.sqrt(1-x*x)/x}D.exports=function(d,v,x,g){var m=v.xaxis,k=v.yaxis;y.makeTraceGroups(g,x,"contour").each(function(h){var M=_.select(this),A=h[0],C=A.trace,L=C._carpetTrace=a(d,C),O=d.calcdata[L.index][0];if(L.visible&&L.visible!=="legendonly"){var I=A.a,R=A.b,U=C.contours,B=n(U,v,A),G=U.type==="constraint",N=U._operation,j=G?N==="="?"lines":"fill":U.coloring,V=[[I[0],R[R.length-1]],[I[I.length-1],R[R.length-1]],[I[I.length-1],R[0]],[I[0],R[0]]];f(B);var H=1e-8*(I[I.length-1]-I[0]),ee=1e-8*(R[R.length-1]-R[0]);l(B,H,ee);var Q,X,Y,K,te=B;U.type==="constraint"&&(te=r(B,N)),function(fe,ye){var pe,de,he,xe,Re,we,Ae,Me,Ce;for(pe=0;pe=0;K--)Q=O.clipsegments[K],X=w([],Q.x,m.c2p),Y=w([],Q.y,k.c2p),X.reverse(),Y.reverse(),ae.push(s(X,Y,Q.bicubic));var oe="M"+ae.join("L")+"Z";(function(fe,ye,pe,de,he,xe){var Re,we,Ae,Me,Ce=y.ensureSingle(fe,"g","contourbg").selectAll("path").data(xe!=="fill"||he?[]:[0]);Ce.enter().append("path"),Ce.exit().remove();var ne=[];for(Me=0;Me=0&&(st=ht,ft=yt):Math.abs(Ze[1]-st[1])=0&&(st=ht,ft=yt):y.log("endpt to newendpt is not vert. or horz.",Ze,st,ht)}if(ft>=0)break;Tt+=Ge(Ze,st),Ze=st}if(ft===Ue.edgepaths.length){y.log("unclosed perimeter path");break}Ye=ft,(Dt=xt.indexOf(Ye)===-1)&&(Ye=xt[0],Tt+=Ge(Ze,st)+"Z",Ze=null)}for(Ye=0;YeCt&&(Je.max=Ct),Je.len=Je.max-Je.min}function mt(Ot,_t){var Pt,Bt=0,Wt=.1;return(Math.abs(Ot[0]-Oe)0?+u[n]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var g=T.extractOpts(t),m=g.reversescale?T.flipScale(g.colorscale):g.colorscale,k=m[0][1],h=["interpolate",["linear"],["heatmap-density"],0,s.opacity(k)<1?k:s.addOpacity(k,0)];for(n=1;n=0;l--)y.removeLayer(f[l][1])},T.dispose=function(){var y=this.subplot.map;this._removeLayers(),y.removeSource(this.sourceId)},D.exports=function(y,f){var l=f[0].trace,t=new s(y,l.uid),i=t.sourceId,r=_(f),n=t.below=y.belowLookup["trace-"+l.uid];return y.map.addSource(i,{type:"geojson",data:r.geojson}),t._addLayers(r,n),t}},49789:function(D,E,e){var _=e(71828);D.exports=function(w,s){for(var T=0;T"),i.color=function(v,x){var g=v.marker,m=x.mc||g.color,k=x.mlc||g.line.color,h=x.mlw||g.line.width;return _(m)?m:_(k)&&h?k:void 0}(n,a),[i]}}},51759:function(D,E,e){D.exports={attributes:e(1285),layoutAttributes:e(10440),supplyDefaults:e(26199).supplyDefaults,crossTraceDefaults:e(26199).crossTraceDefaults,supplyLayoutDefaults:e(93138),calc:e(9532),crossTraceCalc:e(8984),plot:e(80461),style:e(68266).style,hoverPoints:e(63341),eventData:e(34598),selectPoints:e(81974),moduleType:"trace",name:"funnel",basePlotModule:e(93612),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},10440:function(D){D.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},93138:function(D,E,e){var _=e(71828),w=e(10440);D.exports=function(s,T,y){var f=!1;function l(r,n){return _.coerce(s,T,w,r,n)}for(var t=0;t path").each(function(p){if(!p.isBlank){var c=u.marker;_.select(this).call(s.fill,p.mc||c.color).call(s.stroke,p.mlc||c.line.color).call(w.dashLine,c.line.dash,p.mlw||c.line.width).style("opacity",u.selectedpoints&&!p.selected?T:1)}}),l(a,u,t),a.selectAll(".regions").each(function(){_.select(this).selectAll("path").style("stroke-width",0).call(s.fill,u.connector.fillcolor)}),a.selectAll(".lines").each(function(){var p=u.connector.line;w.lineGroupStyle(_.select(this).selectAll("path"),p.width,p.color,p.dash)})})}}},86807:function(D,E,e){var _=e(34e3),w=e(9012),s=e(27670).Y,T=e(5386).fF,y=e(5386).si,f=e(1426).extendFlat;D.exports={labels:_.labels,label0:_.label0,dlabel:_.dlabel,values:_.values,marker:{colors:_.marker.colors,line:{color:f({},_.marker.line.color,{dflt:null}),width:f({},_.marker.line.width,{dflt:1}),editType:"calc"},editType:"calc"},text:_.text,hovertext:_.hovertext,scalegroup:f({},_.scalegroup,{}),textinfo:f({},_.textinfo,{flags:["label","text","value","percent"]}),texttemplate:y({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:f({},w.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:T({},{keys:["label","color","value","text","percent"]}),textposition:f({},_.textposition,{values:["inside","none"],dflt:"inside"}),textfont:_.textfont,insidetextfont:_.insidetextfont,title:{text:_.title.text,font:_.title.font,position:f({},_.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:s({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}},6452:function(D,E,e){var _=e(74875);E.name="funnelarea",E.plot=function(w,s,T,y){_.plotBasePlot(E.name,w,s,T,y)},E.clean=function(w,s,T,y){_.cleanBasePlot(E.name,w,s,T,y)}},89574:function(D,E,e){var _=e(32354);D.exports={calc:function(w,s){return _.calc(w,s)},crossTraceCalc:function(w){_.crossTraceCalc(w,{type:"funnelarea"})}}},86282:function(D,E,e){var _=e(71828),w=e(86807),s=e(27670).c,T=e(90769).handleText,y=e(37434).handleLabelsAndValues;D.exports=function(f,l,t,i){function r(v,x){return _.coerce(f,l,w,v,x)}var n=r("labels"),o=r("values"),a=y(n,o),u=a.len;if(l._hasLabels=a.hasLabels,l._hasValues=a.hasValues,!l._hasLabels&&l._hasValues&&(r("label0"),r("dlabel")),u){l._length=u,r("marker.line.width")&&r("marker.line.color",i.paper_bgcolor),r("marker.colors"),r("scalegroup");var p,c=r("text"),b=r("texttemplate");if(b||(p=r("textinfo",Array.isArray(c)?"text+percent":"percent")),r("hovertext"),r("hovertemplate"),b||p&&p!=="none"){var d=r("textposition");T(f,l,i,r,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}s(l,i,r),r("title.text")&&(r("title.position"),_.coerceFont(r,"title.font",i.font)),r("aspectratio"),r("baseratio")}else l.visible=!1}},10421:function(D,E,e){D.exports={moduleType:"trace",name:"funnelarea",basePlotModule:e(6452),categories:["pie-like","funnelarea","showLegend"],attributes:e(86807),layoutAttributes:e(80097),supplyDefaults:e(86282),supplyLayoutDefaults:e(57402),calc:e(89574).calc,crossTraceCalc:e(89574).crossTraceCalc,plot:e(79187),style:e(71858),styleOne:e(63463),meta:{}}},80097:function(D,E,e){var _=e(92774).hiddenlabels;D.exports={hiddenlabels:_,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}},57402:function(D,E,e){var _=e(71828),w=e(80097);D.exports=function(s,T){function y(f,l){return _.coerce(s,T,w,f,l)}y("hiddenlabels"),y("funnelareacolorway",T.colorway),y("extendfunnelareacolors")}},79187:function(D,E,e){var _=e(39898),w=e(91424),s=e(71828),T=s.strScale,y=s.strTranslate,f=e(63893),l=e(17295).toMoveInsideBar,t=e(72597),i=t.recordMinTextSize,r=t.clearMinTextSize,n=e(53581),o=e(14575),a=o.attachFxHandlers,u=o.determineInsideTextFont,p=o.layoutAreas,c=o.prerenderTitles,b=o.positionTitleOutside,d=o.formatSliceLabel;function v(x,g){return"l"+(g[0]-x[0])+","+(g[1]-x[1])}D.exports=function(x,g){var m=x._context.staticPlot,k=x._fullLayout;r("funnelarea",k),c(g,x),p(g,k._size),s.makeTraceGroups(k._funnelarealayer,g,"trace").each(function(h){var M=_.select(this),A=h[0],C=A.trace;(function(L){if(L.length){var O=L[0],I=O.trace,R=I.aspectratio,U=I.baseratio;U>.999&&(U=.999);var B,G,N,j=Math.pow(U,2),V=O.vTotal,H=V,ee=V*j/(1-j)/V,Q=[];for(Q.push(Ae()),G=L.length-1;G>-1;G--)if(!(N=L[G]).hidden){var X=N.v/H;ee+=X,Q.push(Ae())}var Y=1/0,K=-1/0;for(G=0;G-1;G--)if(!(N=L[G]).hidden){var Re=Q[xe+=1][0],we=Q[xe][1];N.TL=[-Re,we],N.TR=[Re,we],N.BL=de,N.BR=he,N.pxmid=(ye=N.TR,pe=N.BR,[.5*(ye[0]+pe[0]),.5*(ye[1]+pe[1])]),de=N.TL,he=N.TR}}function Ae(){var Me,Ce={x:Me=Math.sqrt(ee),y:-Me};return[Ce.x,Ce.y]}})(h),M.each(function(){var L=_.select(this).selectAll("g.slice").data(h);L.enter().append("g").classed("slice",!0),L.exit().remove(),L.each(function(I,R){if(I.hidden)_.select(this).selectAll("path,g").remove();else{I.pointNumber=I.i,I.curveNumber=C.index;var U=A.cx,B=A.cy,G=_.select(this),N=G.selectAll("path.surface").data([I]);N.enter().append("path").classed("surface",!0).style({"pointer-events":m?"none":"all"}),G.call(a,x,h);var j="M"+(U+I.TR[0])+","+(B+I.TR[1])+v(I.TR,I.BR)+v(I.BR,I.BL)+v(I.BL,I.TL)+"Z";N.attr("d",j),d(x,I,A);var V=n.castOption(C.textposition,I.pts),H=G.selectAll("g.slicetext").data(I.text&&V!=="none"?[0]:[]);H.enter().append("g").classed("slicetext",!0),H.exit().remove(),H.each(function(){var ee=s.ensureSingle(_.select(this),"text","",function(se){se.attr("data-notex",1)}),Q=s.ensureUniformFontSize(x,u(C,I,k.font));ee.text(I.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(w.font,Q).call(f.convertToTspans,x);var X,Y,K,te=w.bBox(ee.node()),ae=Math.min(I.BL[1],I.BR[1])+B,oe=Math.max(I.TL[1],I.TR[1])+B;Y=Math.max(I.TL[0],I.BL[0])+U,K=Math.min(I.TR[0],I.BR[0])+U,(X=l(Y,K,ae,oe,te,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"})).fontSize=Q.size,i(C.type,X,k),h[R].transform=X,s.setTransormAndDisplay(ee,X)})}});var O=_.select(this).selectAll("g.titletext").data(C.title.text?[0]:[]);O.enter().append("g").classed("titletext",!0),O.exit().remove(),O.each(function(){var I=s.ensureSingle(_.select(this),"text","",function(B){B.attr("data-notex",1)}),R=C.title.text;C._meta&&(R=s.templateString(R,C._meta)),I.text(R).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(w.font,C.title.font).call(f.convertToTspans,x);var U=b(A,k._size);I.attr("transform",y(U.x,U.y)+T(Math.min(1,U.scale))+y(U.tx,U.ty))})})})}},71858:function(D,E,e){var _=e(39898),w=e(63463),s=e(72597).resizeText;D.exports=function(T){var y=T._fullLayout._funnelarealayer.selectAll(".trace");s(T,y,"funnelarea"),y.each(function(f){var l=f[0].trace,t=_.select(this);t.style({opacity:l.opacity}),t.selectAll("path.surface").each(function(i){_.select(this).call(w,i,l)})})}},21606:function(D,E,e){var _=e(82196),w=e(9012),s=e(41940),T=e(12663).axisHoverFormat,y=e(5386).fF,f=e(5386).si,l=e(50693),t=e(1426).extendFlat;D.exports=t({z:{valType:"data_array",editType:"calc"},x:t({},_.x,{impliedEdits:{xtype:"array"}}),x0:t({},_.x0,{impliedEdits:{xtype:"scaled"}}),dx:t({},_.dx,{impliedEdits:{xtype:"scaled"}}),y:t({},_.y,{impliedEdits:{ytype:"array"}}),y0:t({},_.y0,{impliedEdits:{ytype:"scaled"}}),dy:t({},_.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:t({},_.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:t({},_.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:t({},_.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:t({},_.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:t({},_.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:t({},_.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:T("x"),yhoverformat:T("y"),zhoverformat:T("z",1),hovertemplate:y(),texttemplate:f({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:s({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:t({},w.showlegend,{dflt:!1})},{transforms:void 0},l("",{cLetter:"z",autoColorDflt:!1}))},90757:function(D,E,e){var _=e(73972),w=e(71828),s=e(89298),T=e(42973),y=e(17562),f=e(78803),l=e(68296),t=e(4742),i=e(824),r=e(43907),n=e(70769),o=e(50606).BADNUM;function a(u){for(var p=[],c=u.length,b=0;bj){G("x scale is not linear");break}}if(x.length&&U==="fast"){var V=(x[x.length-1]-x[0])/(x.length-1),H=Math.abs(V/100);for(M=0;MH){G("y scale is not linear");break}}}}var ee=w.maxRowLength(h),Q=p.xtype==="scaled"?"":c,X=n(p,Q,b,d,ee,C),Y=p.ytype==="scaled"?"":x,K=n(p,Y,g,m,h.length,L);R||(p._extremes[C._id]=s.findExtremes(C,X),p._extremes[L._id]=s.findExtremes(L,K));var te={x:X,y:K,z:h,text:p._text||p.text,hovertext:p._hovertext||p.hovertext};if(p.xperiodalignment&&v&&(te.orig_x=v),p.yperiodalignment&&k&&(te.orig_y=k),Q&&Q.length===X.length-1&&(te.xCenter=Q),Y&&Y.length===K.length-1&&(te.yCenter=Y),I&&(te.xRanges=A.xRanges,te.yRanges=A.yRanges,te.pts=A.pts),O||f(u,p,{vals:h,cLetter:"z"}),O&&p.contours&&p.contours.coloring==="heatmap"){var ae={type:p.type==="contour"?"heatmap":"histogram2d",xcalendar:p.xcalendar,ycalendar:p.ycalendar};te.xfill=n(ae,Q,b,d,ee,C),te.yfill=n(ae,Y,g,m,h.length,L)}return[te]}},4742:function(D,E,e){var _=e(92770),w=e(71828),s=e(50606).BADNUM;D.exports=function(T,y,f,l){var t,i,r,n,o,a;function u(x){if(_(x))return+x}if(y&&y.transpose){for(t=0,o=0;o=0;l--)(t=((o[[(T=(f=a[l])[0])-1,y=f[1]]]||c)[2]+(o[[T+1,y]]||c)[2]+(o[[T,y-1]]||c)[2]+(o[[T,y+1]]||c)[2])/20)&&(i[f]=[T,y,t],a.splice(l,1),r=!0);if(!r)throw"findEmpties iterated with no new neighbors";for(f in i)o[f]=i[f],n.push(i[f])}return n.sort(function(d,v){return v[2]-d[2]})}},46248:function(D,E,e){var _=e(30211),w=e(71828),s=e(89298),T=e(21081).extractOpts;D.exports=function(y,f,l,t,i){i||(i={});var r,n,o,a,u=i.isContour,p=y.cd[0],c=p.trace,b=y.xa,d=y.ya,v=p.x,x=p.y,g=p.z,m=p.xCenter,k=p.yCenter,h=p.zmask,M=c.zhoverformat,A=v,C=x;if(y.index!==!1){try{o=Math.round(y.index[1]),a=Math.round(y.index[0])}catch{return void w.error("Error hovering on heatmap, pointNumber must be [row,col], found:",y.index)}if(o<0||o>=g[0].length||a<0||a>g.length)return}else{if(_.inbox(f-v[0],f-v[v.length-1],0)>0||_.inbox(l-x[0],l-x[x.length-1],0)>0)return;if(u){var L;for(A=[2*v[0]-v[1]],L=1;Lv&&(g=Math.max(g,Math.abs(y[i][r]-d)/(x-v))))}return g}D.exports=function(y,f){var l,t=1;for(T(y,f),l=0;l.01;l++)t=T(y,f,s(t));return t>.01&&_.log("interp2d didn't converge quickly",t),y}},58623:function(D,E,e){var _=e(71828);D.exports=function(w,s){w("texttemplate");var T=_.extendFlat({},s.font,{color:"auto",size:"auto"});_.coerceFont(w,"textfont",T)}},70769:function(D,E,e){var _=e(73972),w=e(71828).isArrayOrTypedArray;D.exports=function(s,T,y,f,l,t){var i,r,n,o=[],a=_.traceIs(s,"contour"),u=_.traceIs(s,"histogram"),p=_.traceIs(s,"gl2d");if(w(T)&&T.length>1&&!u&&t.type!=="category"){var c=T.length;if(!(c<=l))return a?T.slice(0,l):T.slice(0,l+1);if(a||p)o=T.slice(0,l);else if(l===1)o=[T[0]-.5,T[0]+.5];else{for(o=[1.5*T[0]-.5*T[1]],n=1;n0;)L=h.c2p(X[U]),U--;for(L0;)R=M.c2p(Y[U]),U--;if(RGt||Gt>M._length))for(B=_t;BKt||Kt>h._length)){var nn=t({x:Xt,y:Wt},V,x._fullLayout);nn.x=Xt,nn.y=Wt;var yn=j.z[U][B];yn===void 0?(nn.z="",nn.zLabel=""):(nn.z=yn,nn.zLabel=y.tickText(Lt,yn,"hover").text);var ln=j.text&&j.text[U]&&j.text[U][B];ln!==void 0&&ln!==!1||(ln=""),nn.text=ln;var kn=f.texttemplateString(pt,nn,x._fullLayout._d3locale,nn,V._meta||{});if(kn){var Wn=kn.split("
"),wn=Wn.length,on=0;for(G=0;G0&&(v=!0);for(var m=0;mf){var l=f-T[w];return T[w]=f,l}}return 0},max:function(w,s,T,y){var f=y[s];if(_(f)){if(f=Number(f),!_(T[w]))return T[w]=f,f;if(T[w]l?a>T?a>1.1*w?w:a>1.1*s?s:T:a>y?y:a>f?f:l:Math.pow(10,Math.floor(Math.log(a)/Math.LN10))}function n(a,u,p,c,b,d){if(c&&a>T){var v=o(u,b,d),x=o(p,b,d),g=a===w?0:1;return v[g]!==x[g]}return Math.floor(p/a)-Math.floor(u/a)>.1}function o(a,u,p){var c=u.c2d(a,w,p).split("-");return c[0]===""&&(c.unshift(),c[0]="-"+c[0]),c}D.exports=function(a,u,p,c,b){var d,v,x=-1.1*u,g=-.1*u,m=a-g,k=p[0],h=p[1],M=Math.min(i(k+g,k+m,c,b),i(h+g,h+m,c,b)),A=Math.min(i(k+x,k+g,c,b),i(h+x,h+g,c,b));if(M>A&&AT){var C=d===w?1:6,L=d===w?"M12":"M1";return function(O,I){var R=c.c2d(O,w,b),U=R.indexOf("-",C);U>0&&(R=R.substr(0,U));var B=c.d2c(R,0,b);if(Ba.r2l(te)&&(oe=T.tickIncrement(oe,A.size,!0,v)),Q.start=a.l2r(oe),K||w.nestedProperty(o,k+".start").set(Q.start)}var se=A.end,fe=a.r2l(ee.end),ye=fe!==void 0;if((A.endFound||ye)&&fe!==a.r2l(se)){var pe=ye?fe:w.aggNums(Math.max,null,x);Q.end=a.l2r(pe),ye||w.nestedProperty(o,k+".start").set(Q.end)}var de="autobin"+u;return o._input[de]===!1&&(o._input[k]=w.extendFlat({},o[k]||{}),delete o._input[de],delete o[de]),[Q,x]}D.exports={calc:function(n,o){var a,u,p,c,b=[],d=[],v=o.orientation==="h",x=T.getFromId(n,v?o.yaxis:o.xaxis),g=v?"y":"x",m={x:"y",y:"x"}[g],k=o[g+"calendar"],h=o.cumulative,M=r(n,o,x,g),A=M[0],C=M[1],L=typeof A.size=="string",O=[],I=L?O:A,R=[],U=[],B=[],G=0,N=o.histnorm,j=o.histfunc,V=N.indexOf("density")!==-1;h.enabled&&V&&(N=N.replace(/ ?density$/,""),V=!1);var H,ee=j==="max"||j==="min"?null:0,Q=f.count,X=l[N],Y=!1,K=function(Ce){return x.r2c(Ce,0,k)};for(w.isArrayOrTypedArray(o[m])&&j!=="count"&&(H=o[m],Y=j==="avg",Q=f[j]),a=K(A.start),p=K(A.end)+(a-T.tickIncrement(a,A.size,!1,k))/1e6;a=0&&c=0;me--)De(me);else if(ne==="increasing"){for(me=1;me=0;me--)Ce[me]+=Ce[me+1];ue==="exclude"&&(Ce.push(0),Ce.shift())}}(d,h.direction,h.currentbin);var xe=Math.min(b.length,d.length),Re=[],we=0,Ae=xe-1;for(a=0;a=we;a--)if(d[a]){Ae=a;break}for(a=we;a<=Ae;a++)if(_(b[a])&&_(d[a])){var Me={p:b[a],s:d[a],b:0};h.enabled||(Me.pts=B[a],fe?Me.ph0=Me.ph1=B[a].length?C[B[a][0]]:b[a]:(o._computePh=!0,Me.ph0=oe(O[a]),Me.ph1=oe(O[a+1],!0))),Re.push(Me)}return Re.length===1&&(Re[0].width1=T.tickIncrement(Re[0].p,A.size,!1,k)-Re[0].p),y(Re,o),w.isArrayOrTypedArray(o.selectedpoints)&&w.tagSelected(Re,o,de),Re},calcAllAutoBins:r}},72406:function(D){D.exports={eventDataKeys:["binNumber"]}},82222:function(D,E,e){var _=e(71828),w=e(41675),s=e(73972).traceIs,T=e(26125),y=_.nestedProperty,f=e(99082).getAxisGroup,l=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],t=["x","y"];D.exports=function(i,r){var n,o,a,u,p,c,b,d=r._histogramBinOpts={},v=[],x={},g=[];function m(V,H){return _.coerce(n._input,n,n._module.attributes,V,H)}function k(V){return V.orientation==="v"?"x":"y"}function h(V,H,ee){var Q=V.uid+"__"+ee;H||(H=Q);var X=function(ae,oe){return w.getFromTrace({_fullLayout:r},ae,oe).type}(V,ee),Y=V[ee+"calendar"]||"",K=d[H],te=!0;K&&(X===K.axType&&Y===K.calendar?(te=!1,K.traces.push(V),K.dirs.push(ee)):(H=Q,X!==K.axType&&_.warn(["Attempted to group the bins of trace",V.index,"set on a","type:"+X,"axis","with bins on","type:"+K.axType,"axis."].join(" ")),Y!==K.calendar&&_.warn(["Attempted to group the bins of trace",V.index,"set with a",Y,"calendar","with bins",K.calendar?"on a "+K.calendar+" calendar":"w/o a set calendar"].join(" ")))),te&&(d[H]={traces:[V],dirs:[ee],axType:X,calendar:V[ee+"calendar"]||""}),V["_"+ee+"bingroup"]=H}for(p=0;pO&&M.splice(O,M.length-O),L.length>O&&L.splice(O,L.length-O);var I=[],R=[],U=[],B=typeof h.size=="string",G=typeof C.size=="string",N=[],j=[],V=B?N:h,H=G?j:C,ee=0,Q=[],X=[],Y=o.histnorm,K=o.histfunc,te=Y.indexOf("density")!==-1,ae=K==="max"||K==="min"?null:0,oe=s.count,se=T[Y],fe=!1,ye=[],pe=[],de="z"in o?o.z:"marker"in o&&Array.isArray(o.marker.color)?o.marker.color:"";de&&K!=="count"&&(fe=K==="avg",oe=s[K]);var he=h.size,xe=g(h.start),Re=g(h.end)+(xe-w.tickIncrement(xe,he,!1,v))/1e6;for(a=xe;a=0&&p=0&&c-1,flipY:R.tiling.flip.indexOf("y")>-1,orientation:R.tiling.orientation,pad:{inner:R.tiling.pad},maxDepth:R._maxDepth}).descendants(),j=1/0,V=-1/0;N.forEach(function(Y){var K=Y.depth;K>=R._maxDepth?(Y.x0=Y.x1=(Y.x0+Y.x1)/2,Y.y0=Y.y1=(Y.y0+Y.y1)/2):(j=Math.min(j,K),V=Math.max(V,K))}),p=p.data(N,t.getPtId),R._maxVisibleLayers=isFinite(V)?V-j+1:0,p.enter().append("g").classed("slice",!0),M(p,n,{},[b,d],g),p.order();var H=null;if(h&&L){var ee=t.getPtId(L);p.each(function(Y){H===null&&t.getPtId(Y)===ee&&(H={x0:Y.x0,x1:Y.x1,y0:Y.y0,y1:Y.y1})})}var Q=function(){return H||{x0:0,x1:b,y0:0,y1:d}},X=p;return h&&(X=X.transition().each("end",function(){var Y=_.select(this);t.setSliceCursor(Y,o,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),X.each(function(Y){Y._x0=v(Y.x0),Y._x1=v(Y.x1),Y._y0=x(Y.y0),Y._y1=x(Y.y1),Y._hoverX=v(Y.x1-R.tiling.pad),Y._hoverY=x(G?Y.y1-R.tiling.pad/2:Y.y0+R.tiling.pad/2);var K=_.select(this),te=w.ensureSingle(K,"path","surface",function(fe){fe.style("pointer-events",O?"none":"all")});h?te.transition().attrTween("d",function(fe){var ye=A(fe,n,Q(),[b,d],{orientation:R.tiling.orientation,flipX:R.tiling.flip.indexOf("x")>-1,flipY:R.tiling.flip.indexOf("y")>-1});return function(pe){return g(ye(pe))}}):te.attr("d",g),K.call(i,u,o,a,{styleOne:f,eventDataKeys:l.eventDataKeys,transitionTime:l.CLICK_TRANSITION_TIME,transitionEasing:l.CLICK_TRANSITION_EASING}).call(t.setSliceCursor,o,{isTransitioning:o._transitioning}),te.call(f,Y,R,{hovered:!1}),Y.x0===Y.x1||Y.y0===Y.y1?Y._text="":Y._text=r(Y,u,R,a,I)||"";var ae=w.ensureSingle(K,"g","slicetext"),oe=w.ensureSingle(ae,"text","",function(fe){fe.attr("data-notex",1)}),se=w.ensureUniformFontSize(o,t.determineTextFont(R,Y,I.font));oe.text(Y._text||" ").classed("slicetext",!0).attr("text-anchor",B?"end":U?"start":"middle").call(s.font,se).call(T.convertToTspans,o),Y.textBB=s.bBox(oe.node()),Y.transform=m(Y,{fontSize:se.size}),Y.transform.fontSize=se.size,h?oe.transition().attrTween("transform",function(fe){var ye=C(fe,n,Q(),[b,d]);return function(pe){return k(ye(pe))}}):oe.attr("transform",k(Y))}),H}},69816:function(D,E,e){D.exports={moduleType:"trace",name:"icicle",basePlotModule:e(96346),categories:[],animatable:!0,attributes:e(46291),layoutAttributes:e(92894),supplyDefaults:e(56524),supplyLayoutDefaults:e(21070),calc:e(46584).y,crossTraceCalc:e(46584).T,plot:e(85596),style:e(82454).style,colorbar:e(4898),meta:{}}},92894:function(D){D.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}},21070:function(D,E,e){var _=e(71828),w=e(92894);D.exports=function(s,T){function y(f,l){return _.coerce(s,T,w,f,l)}y("iciclecolorway",T.colorway),y("extendiciclecolors")}},21538:function(D,E,e){var _=e(674),w=e(14102);D.exports=function(s,T,y){var f=y.flipX,l=y.flipY,t=y.orientation==="h",i=y.maxDepth,r=T[0],n=T[1];i&&(r=(s.height+1)*T[0]/Math.min(s.height+1,i),n=(s.height+1)*T[1]/Math.min(s.height+1,i));var o=_.partition().padding(y.pad.inner).size(t?[T[1],r]:[T[0],n])(s);return(t||f||l)&&w(o,T,{swapXY:t,flipX:f,flipY:l}),o}},85596:function(D,E,e){var _=e(80694),w=e(90666);D.exports=function(s,T,y,f){return _(s,T,y,f,{type:"icicle",drawDescendants:w})}},82454:function(D,E,e){var _=e(39898),w=e(7901),s=e(71828),T=e(72597).resizeText;function y(f,l,t){var i=l.data.data,r=!l.children,n=i.i,o=s.castOption(t,n,"marker.line.color")||w.defaultLine,a=s.castOption(t,n,"marker.line.width")||0;f.style("stroke-width",a).call(w.fill,i.color).call(w.stroke,o).style("opacity",r?t.leaf.opacity:null)}D.exports={style:function(f){var l=f._fullLayout._iciclelayer.selectAll(".trace");T(f,l,"icicle"),l.each(function(t){var i=_.select(this),r=t[0].trace;i.style("opacity",r.opacity),i.selectAll("path.surface").each(function(n){_.select(this).call(y,n,r)})})},styleOne:y}},17230:function(D,E,e){for(var _=e(9012),w=e(5386).fF,s=e(1426).extendFlat,T=e(51877).colormodel,y=["rgb","rgba","rgba256","hsl","hsla"],f=[],l=[],t=0;t0||_.inbox(f-l.y0,f-(l.y0+l.h*t.dy),0)>0)){var n,o=Math.floor((y-l.x0)/t.dx),a=Math.floor(Math.abs(f-l.y0)/t.dy);if(t._hasZ?n=l.z[a][o]:t._hasSource&&(n=t._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(o,a,1,1).data),n){var u,p=l.hi||t.hoverinfo;if(p){var c=p.split("+");c.indexOf("all")!==-1&&(c=["color"]),c.indexOf("color")!==-1&&(u=!0)}var b,d=s.colormodel[t.colormodel],v=d.colormodel||t.colormodel,x=v.length,g=t._scaler(n),m=d.suffix,k=[];(t.hovertemplate||u)&&(k.push("["+[g[0]+m[0],g[1]+m[1],g[2]+m[2]].join(", ")),x===4&&k.push(", "+g[3]+m[3]),k.push("]"),k=k.join(""),T.extraText=v.toUpperCase()+": "+k),Array.isArray(t.hovertext)&&Array.isArray(t.hovertext[a])?b=t.hovertext[a][o]:Array.isArray(t.text)&&Array.isArray(t.text[a])&&(b=t.text[a][o]);var h=r.c2p(l.y0+(a+.5)*t.dy),M=l.x0+(o+.5)*t.dx,A=l.y0+(a+.5)*t.dy,C="["+n.slice(0,t.colormodel.length).join(", ")+"]";return[w.extendFlat(T,{index:[a,o],x0:i.c2p(l.x0+o*t.dx),x1:i.c2p(l.x0+(o+1)*t.dx),y0:h,y1:h,color:g,xVal:M,xLabelVal:M,yVal:A,yLabelVal:A,zLabelVal:C,text:b,hovertemplateLabels:{zLabel:C,colorLabel:k,"color[0]Label":g[0]+m[0],"color[1]Label":g[1]+m[1],"color[2]Label":g[2]+m[2],"color[3]Label":g[3]+m[3]}})]}}}},94507:function(D,E,e){D.exports={attributes:e(17230),supplyDefaults:e(13245),calc:e(71113),plot:e(60775),style:e(12826),hoverPoints:e(28749),eventData:e(30835),moduleType:"trace",name:"image",basePlotModule:e(93612),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}},60775:function(D,E,e){var _=e(39898),w=e(71828),s=w.strTranslate,T=e(77922),y=e(51877),f=w.isIOS()||w.isSafari()||w.isIE();D.exports=function(l,t,i,r){var n=t.xaxis,o=t.yaxis,a=!(f||l._context._exportedPlot);w.makeTraceGroups(r,i,"im").each(function(u){var p=_.select(this),c=u[0],b=c.trace,d=(b.zsmooth==="fast"||b.zsmooth===!1&&a)&&!b._hasZ&&b._hasSource&&n.type==="linear"&&o.type==="linear";b._realImage=d;var v,x,g,m,k,h,M=c.z,A=c.x0,C=c.y0,L=c.w,O=c.h,I=b.dx,R=b.dy;for(h=0;v===void 0&&h0;)x=n.c2p(A+h*I),h--;for(h=0;m===void 0&&h0;)k=o.c2p(C+h*R),h--;xV[0];if(H||ee){var Q=v+U/2,X=m+B/2;N+="transform:"+s(Q+"px",X+"px")+"scale("+(H?-1:1)+","+(ee?-1:1)+")"+s(-Q+"px",-X+"px")+";"}}G.attr("style",N);var Y=new Promise(function(te){if(b._hasZ)te();else if(b._hasSource)if(b._canvas&&b._canvas.el.width===L&&b._canvas.el.height===O&&b._canvas.source===b.source)te();else{var ae=document.createElement("canvas");ae.width=L,ae.height=O;var oe=ae.getContext("2d",{willReadFrequently:!0});b._image=b._image||new Image;var se=b._image;se.onload=function(){oe.drawImage(se,0,0),b._canvas={el:ae,source:b.source},te()},se.setAttribute("src",b.source)}}).then(function(){var te,ae;if(b._hasZ)ae=K(function(se,fe){return M[fe][se]}),te=ae.toDataURL("image/png");else if(b._hasSource)if(d)te=b.source;else{var oe=b._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,L,O).data;ae=K(function(se,fe){var ye=4*(fe*L+se);return[oe[ye],oe[ye+1],oe[ye+2],oe[ye+3]]}),te=ae.toDataURL("image/png")}G.attr({"xlink:href":te,height:B,width:U,x:v,y:m})});l._promises.push(Y)}function K(te){var ae=document.createElement("canvas");ae.width=U,ae.height=B;var oe,se=ae.getContext("2d",{willReadFrequently:!0}),fe=function(Ce){return w.constrain(Math.round(n.c2p(A+Ce*I)-v),0,U)},ye=function(Ce){return w.constrain(Math.round(o.c2p(C+Ce*R)-m),0,B)},pe=y.colormodel[b.colormodel],de=pe.colormodel||b.colormodel,he=pe.fmt;for(h=0;h0}function g(A){A.each(function(C){c.stroke(_.select(this),C.line.color)}).each(function(C){c.fill(_.select(this),C.color)}).style("stroke-width",function(C){return C.line.width})}function m(A,C,L){var O=A._fullLayout,I=T.extendFlat({type:"linear",ticks:"outside",range:L,showline:!0},C),R={type:"linear",_id:"x"+C._id},U={letter:"x",font:O.font,noHover:!0,noTickson:!0};function B(G,N){return T.coerce(I,R,p,G,N)}return a(I,R,B,U,O),u(I,R,B,U),R}function k(A,C,L){return[Math.min(C/A.width,L/A.height),A,C+"x"+L]}function h(A,C,L,O){var I=document.createElementNS("http://www.w3.org/2000/svg","text"),R=_.select(I);return R.text(A).attr("x",0).attr("y",0).attr("text-anchor",L).attr("data-unformatted",A).call(n.convertToTspans,O).call(i.font,C),i.bBox(R.node())}function M(A,C,L,O,I,R){var U="_cache"+C;A[U]&&A[U].key===I||(A[U]={key:I,value:L});var B=T.aggNums(R,null,[A[U].value,O],2);return A[U].value=B,B}D.exports=function(A,C,L,O){var I,R=A._fullLayout;x(L)&&O&&(I=O()),T.makeTraceGroups(R._indicatorlayer,C,"trace").each(function(U){var B,G,N,j,V,H=U[0].trace,ee=_.select(this),Q=H._hasGauge,X=H._isAngular,Y=H._isBullet,K=H.domain,te={w:R._size.w*(K.x[1]-K.x[0]),h:R._size.h*(K.y[1]-K.y[0]),l:R._size.l+R._size.w*K.x[0],r:R._size.r+R._size.w*(1-K.x[1]),t:R._size.t+R._size.h*(1-K.y[1]),b:R._size.b+R._size.h*K.y[0]},ae=te.l+te.w/2,oe=te.t+te.h/2,se=Math.min(te.w/2,te.h),fe=r.innerRadius*se,ye=H.align||"center";if(G=oe,Q){if(X&&(B=ae,G=oe+se/2,N=function(Me){return function(Ce,ne){return[ne/Math.sqrt(Ce.width/2*(Ce.width/2)+Ce.height*Ce.height),Ce,ne]}(Me,.9*fe)}),Y){var pe=r.bulletPadding,de=1-r.bulletNumberDomainSize+pe;B=te.l+(de+(1-de)*d[ye])*te.w,N=function(Me){return k(Me,(r.bulletNumberDomainSize-pe)*te.w,te.h)}}}else B=te.l+d[ye]*te.w,N=function(Me){return k(Me,te.w,te.h)};(function(Me,Ce,ne,ue){var me,Te,Ee,Ue=ne[0].trace,De=ue.numbersX,je=ue.numbersY,ge=Ue.align||"center",be=b[ge],Se=ue.transitionOpts,Ne=ue.onComplete,Ye=T.ensureSingle(Ce,"g","numbers"),Ze=[];Ue._hasNumber&&Ze.push("number"),Ue._hasDelta&&(Ze.push("delta"),Ue.delta.position==="left"&&Ze.reverse());var st=Ye.selectAll("text").data(Ze);function ot(Ft,qt,Nt,Je){if(!Ft.match("s")||Nt>=0==Je>=0||qt(Nt).slice(-1).match(v)||qt(Je).slice(-1).match(v))return qt;var Ke=Ft.slice().replace("s","f").replace(/\d+/,function(nt){return parseInt(nt)-1}),Ge=m(Me,{tickformat:Ke});return function(nt){return Math.abs(nt)<1?o.tickText(Ge,nt).text:qt(nt)}}st.enter().append("text"),st.attr("text-anchor",function(){return be}).attr("class",function(Ft){return Ft}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),st.exit().remove();var ft,yt=Ue.mode+Ue.align;if(Ue._hasDelta&&(ft=function(){var Ft=m(Me,{tickformat:Ue.delta.valueformat},Ue._range);Ft.setScale(),o.prepTicks(Ft);var qt=function(Be){return o.tickText(Ft,Be).text},Nt=Ue.delta.suffix,Je=Ue.delta.prefix,Ke=function(Be){return Ue.delta.relative?Be.relativeDelta:Be.delta},Ge=function(Be,Qe){return Be===0||typeof Be!="number"||isNaN(Be)?"-":(Be>0?Ue.delta.increasing.symbol:Ue.delta.decreasing.symbol)+Je+Qe(Be)+Nt},nt=function(Be){return Be.delta>=0?Ue.delta.increasing.color:Ue.delta.decreasing.color};Ue._deltaLastValue===void 0&&(Ue._deltaLastValue=Ke(ne[0]));var ht=Ye.select("text.delta");function Oe(){ht.text(Ge(Ke(ne[0]),qt)).call(c.fill,nt(ne[0])).call(n.convertToTspans,Me)}return ht.call(i.font,Ue.delta.font).call(c.fill,nt({delta:Ue._deltaLastValue})),x(Se)?ht.transition().duration(Se.duration).ease(Se.easing).tween("text",function(){var Be=_.select(this),Qe=Ke(ne[0]),ut=Ue._deltaLastValue,pt=ot(Ue.delta.valueformat,qt,ut,Qe),bt=s(ut,Qe);return Ue._deltaLastValue=Qe,function(Lt){Be.text(Ge(bt(Lt),pt)),Be.call(c.fill,nt({delta:bt(Lt)}))}}).each("end",function(){Oe(),Ne&&Ne()}).each("interrupt",function(){Oe(),Ne&&Ne()}):Oe(),Te=h(Ge(Ke(ne[0]),qt),Ue.delta.font,be,Me),ht}(),yt+=Ue.delta.position+Ue.delta.font.size+Ue.delta.font.family+Ue.delta.valueformat,yt+=Ue.delta.increasing.symbol+Ue.delta.decreasing.symbol,Ee=Te),Ue._hasNumber&&(function(){var Ft=m(Me,{tickformat:Ue.number.valueformat},Ue._range);Ft.setScale(),o.prepTicks(Ft);var qt=function(nt){return o.tickText(Ft,nt).text},Nt=Ue.number.suffix,Je=Ue.number.prefix,Ke=Ye.select("text.number");function Ge(){var nt=typeof ne[0].y=="number"?Je+qt(ne[0].y)+Nt:"-";Ke.text(nt).call(i.font,Ue.number.font).call(n.convertToTspans,Me)}x(Se)?Ke.transition().duration(Se.duration).ease(Se.easing).each("end",function(){Ge(),Ne&&Ne()}).each("interrupt",function(){Ge(),Ne&&Ne()}).attrTween("text",function(){var nt=_.select(this),ht=s(ne[0].lastY,ne[0].y);Ue._lastValue=ne[0].y;var Oe=ot(Ue.number.valueformat,qt,ne[0].lastY,ne[0].y);return function(Be){nt.text(Je+Oe(ht(Be))+Nt)}}):Ge(),me=h(Je+qt(ne[0].y)+Nt,Ue.number.font,be,Me)}(),yt+=Ue.number.font.size+Ue.number.font.family+Ue.number.valueformat+Ue.number.suffix+Ue.number.prefix,Ee=me),Ue._hasDelta&&Ue._hasNumber){var Et,Tt,xt=[(me.left+me.right)/2,(me.top+me.bottom)/2],Dt=[(Te.left+Te.right)/2,(Te.top+Te.bottom)/2],It=.75*Ue.delta.font.size;Ue.delta.position==="left"&&(Et=M(Ue,"deltaPos",0,-1*(me.width*d[Ue.align]+Te.width*(1-d[Ue.align])+It),yt,Math.min),Tt=xt[1]-Dt[1],Ee={width:me.width+Te.width+It,height:Math.max(me.height,Te.height),left:Te.left+Et,right:me.right,top:Math.min(me.top,Te.top+Tt),bottom:Math.max(me.bottom,Te.bottom+Tt)}),Ue.delta.position==="right"&&(Et=M(Ue,"deltaPos",0,me.width*(1-d[Ue.align])+Te.width*d[Ue.align]+It,yt,Math.max),Tt=xt[1]-Dt[1],Ee={width:me.width+Te.width+It,height:Math.max(me.height,Te.height),left:me.left,right:Te.right+Et,top:Math.min(me.top,Te.top+Tt),bottom:Math.max(me.bottom,Te.bottom+Tt)}),Ue.delta.position==="bottom"&&(Et=null,Tt=Te.height,Ee={width:Math.max(me.width,Te.width),height:me.height+Te.height,left:Math.min(me.left,Te.left),right:Math.max(me.right,Te.right),top:me.bottom-me.height,bottom:me.bottom+Te.height}),Ue.delta.position==="top"&&(Et=null,Tt=me.top,Ee={width:Math.max(me.width,Te.width),height:me.height+Te.height,left:Math.min(me.left,Te.left),right:Math.max(me.right,Te.right),top:me.bottom-me.height-Te.height,bottom:me.bottom}),ft.attr({dx:Et,dy:Tt})}(Ue._hasNumber||Ue._hasDelta)&&Ye.attr("transform",function(){var Ft=ue.numbersScaler(Ee);yt+=Ft[2];var qt,Nt=M(Ue,"numbersScale",1,Ft[0],yt,Math.min);Ue._scaleNumbers||(Nt=1),qt=Ue._isAngular?je-Nt*Ee.bottom:je-Nt*(Ee.top+Ee.bottom)/2,Ue._numbersTop=Nt*Ee.top+qt;var Je=Ee[ge];ge==="center"&&(Je=(Ee.left+Ee.right)/2);var Ke=De-Nt*Je;return Ke=M(Ue,"numbersTranslate",0,Ke,yt,Math.max),f(Ke,qt)+y(Nt)})})(A,ee,U,{numbersX:B,numbersY:G,numbersScaler:N,transitionOpts:L,onComplete:I}),Q&&(j={range:H.gauge.axis.range,color:H.gauge.bgcolor,line:{color:H.gauge.bordercolor,width:0},thickness:1},V={range:H.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:H.gauge.bordercolor,width:H.gauge.borderwidth},thickness:1});var he=ee.selectAll("g.angular").data(X?U:[]);he.exit().remove();var xe=ee.selectAll("g.angularaxis").data(X?U:[]);xe.exit().remove(),X&&function(Me,Ce,ne,ue){var me,Te,Ee,Ue,De=ne[0].trace,je=ue.size,ge=ue.radius,be=ue.innerRadius,Se=ue.gaugeBg,Ne=ue.gaugeOutline,Ye=[je.l+je.w/2,je.t+je.h/2+ge/2],Ze=ue.gauge,st=ue.layer,ot=ue.transitionOpts,ft=ue.onComplete,yt=Math.PI/2;function Et(Lt){var Ct=De.gauge.axis.range[0],mt=(Lt-Ct)/(De.gauge.axis.range[1]-Ct)*Math.PI-yt;return mt<-yt?-yt:mt>yt?yt:mt}function Tt(Lt){return _.svg.arc().innerRadius((be+ge)/2-Lt/2*(ge-be)).outerRadius((be+ge)/2+Lt/2*(ge-be)).startAngle(-yt)}function xt(Lt){Lt.attr("d",function(Ct){return Tt(Ct.thickness).startAngle(Et(Ct.range[0])).endAngle(Et(Ct.range[1]))()})}Ze.enter().append("g").classed("angular",!0),Ze.attr("transform",f(Ye[0],Ye[1])),st.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),st.selectAll("g.xangularaxistick,path,text").remove(),(me=m(Me,De.gauge.axis)).type="linear",me.range=De.gauge.axis.range,me._id="xangularaxis",me.ticklabeloverflow="allow",me.setScale();var Dt=function(Lt){return(me.range[0]-Lt.x)/(me.range[1]-me.range[0])*Math.PI+Math.PI},It={},Ft=o.makeLabelFns(me,0).labelStandoff;It.xFn=function(Lt){var Ct=Dt(Lt);return Math.cos(Ct)*Ft},It.yFn=function(Lt){var Ct=Dt(Lt),mt=Math.sin(Ct)>0?.2:1;return-Math.sin(Ct)*(Ft+Lt.fontSize*mt)+Math.abs(Math.cos(Ct))*(Lt.fontSize*t)},It.anchorFn=function(Lt){var Ct=Dt(Lt),mt=Math.cos(Ct);return Math.abs(mt)<.1?"middle":mt>0?"start":"end"},It.heightFn=function(Lt,Ct,mt){var Ot=Dt(Lt);return-.5*(1+Math.sin(Ot))*mt};var qt=function(Lt){return f(Ye[0]+ge*Math.cos(Lt),Ye[1]-ge*Math.sin(Lt))};if(Ee=function(Lt){return qt(Dt(Lt))},Te=o.calcTicks(me),Ue=o.getTickSigns(me)[2],me.visible){Ue=me.ticks==="inside"?-1:1;var Nt=(me.linewidth||1)/2;o.drawTicks(Me,me,{vals:Te,layer:st,path:"M"+Ue*Nt+",0h"+Ue*me.ticklen,transFn:function(Lt){var Ct=Dt(Lt);return qt(Ct)+"rotate("+-l(Ct)+")"}}),o.drawLabels(Me,me,{vals:Te,layer:st,transFn:Ee,labelFns:It})}var Je=[Se].concat(De.gauge.steps),Ke=Ze.selectAll("g.bg-arc").data(Je);Ke.enter().append("g").classed("bg-arc",!0).append("path"),Ke.select("path").call(xt).call(g),Ke.exit().remove();var Ge=Tt(De.gauge.bar.thickness),nt=Ze.selectAll("g.value-arc").data([De.gauge.bar]);nt.enter().append("g").classed("value-arc",!0).append("path");var ht,Oe,Be,Qe=nt.select("path");x(ot)?(Qe.transition().duration(ot.duration).ease(ot.easing).each("end",function(){ft&&ft()}).each("interrupt",function(){ft&&ft()}).attrTween("d",(ht=Ge,Oe=Et(ne[0].lastY),Be=Et(ne[0].y),function(){var Lt=w(Oe,Be);return function(Ct){return ht.endAngle(Lt(Ct))()}})),De._lastValue=ne[0].y):Qe.attr("d",typeof ne[0].y=="number"?Ge.endAngle(Et(ne[0].y)):"M0,0Z"),Qe.call(g),nt.exit().remove(),Je=[];var ut=De.gauge.threshold.value;(ut||ut===0)&&Je.push({range:[ut,ut],color:De.gauge.threshold.color,line:{color:De.gauge.threshold.line.color,width:De.gauge.threshold.line.width},thickness:De.gauge.threshold.thickness});var pt=Ze.selectAll("g.threshold-arc").data(Je);pt.enter().append("g").classed("threshold-arc",!0).append("path"),pt.select("path").call(xt).call(g),pt.exit().remove();var bt=Ze.selectAll("g.gauge-outline").data([Ne]);bt.enter().append("g").classed("gauge-outline",!0).append("path"),bt.select("path").call(xt).call(g),bt.exit().remove()}(A,0,U,{radius:se,innerRadius:fe,gauge:he,layer:xe,size:te,gaugeBg:j,gaugeOutline:V,transitionOpts:L,onComplete:I});var Re=ee.selectAll("g.bullet").data(Y?U:[]);Re.exit().remove();var we=ee.selectAll("g.bulletaxis").data(Y?U:[]);we.exit().remove(),Y&&function(Me,Ce,ne,ue){var me,Te,Ee,Ue,De,je=ne[0].trace,ge=ue.gauge,be=ue.layer,Se=ue.gaugeBg,Ne=ue.gaugeOutline,Ye=ue.size,Ze=je.domain,st=ue.transitionOpts,ot=ue.onComplete;ge.enter().append("g").classed("bullet",!0),ge.attr("transform",f(Ye.l,Ye.t)),be.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),be.selectAll("g.xbulletaxistick,path,text").remove();var ft=Ye.h,yt=je.gauge.bar.thickness*ft,Et=Ze.x[0],Tt=Ze.x[0]+(Ze.x[1]-Ze.x[0])*(je._hasNumber||je._hasDelta?1-r.bulletNumberDomainSize:1);function xt(Ke){Ke.attr("width",function(Ge){return Math.max(0,me.c2p(Ge.range[1])-me.c2p(Ge.range[0]))}).attr("x",function(Ge){return me.c2p(Ge.range[0])}).attr("y",function(Ge){return .5*(1-Ge.thickness)*ft}).attr("height",function(Ge){return Ge.thickness*ft})}(me=m(Me,je.gauge.axis))._id="xbulletaxis",me.domain=[Et,Tt],me.setScale(),Te=o.calcTicks(me),Ee=o.makeTransTickFn(me),Ue=o.getTickSigns(me)[2],De=Ye.t+Ye.h,me.visible&&(o.drawTicks(Me,me,{vals:me.ticks==="inside"?o.clipEnds(me,Te):Te,layer:be,path:o.makeTickPath(me,De,Ue),transFn:Ee}),o.drawLabels(Me,me,{vals:Te,layer:be,transFn:Ee,labelFns:o.makeLabelFns(me,De)}));var Dt=[Se].concat(je.gauge.steps),It=ge.selectAll("g.bg-bullet").data(Dt);It.enter().append("g").classed("bg-bullet",!0).append("rect"),It.select("rect").call(xt).call(g),It.exit().remove();var Ft=ge.selectAll("g.value-bullet").data([je.gauge.bar]);Ft.enter().append("g").classed("value-bullet",!0).append("rect"),Ft.select("rect").attr("height",yt).attr("y",(ft-yt)/2).call(g),x(st)?Ft.select("rect").transition().duration(st.duration).ease(st.easing).each("end",function(){ot&&ot()}).each("interrupt",function(){ot&&ot()}).attr("width",Math.max(0,me.c2p(Math.min(je.gauge.axis.range[1],ne[0].y)))):Ft.select("rect").attr("width",typeof ne[0].y=="number"?Math.max(0,me.c2p(Math.min(je.gauge.axis.range[1],ne[0].y))):0),Ft.exit().remove();var qt=ne.filter(function(){return je.gauge.threshold.value||je.gauge.threshold.value===0}),Nt=ge.selectAll("g.threshold-bullet").data(qt);Nt.enter().append("g").classed("threshold-bullet",!0).append("line"),Nt.select("line").attr("x1",me.c2p(je.gauge.threshold.value)).attr("x2",me.c2p(je.gauge.threshold.value)).attr("y1",(1-je.gauge.threshold.thickness)/2*ft).attr("y2",(1-(1-je.gauge.threshold.thickness)/2)*ft).call(c.stroke,je.gauge.threshold.line.color).style("stroke-width",je.gauge.threshold.line.width),Nt.exit().remove();var Je=ge.selectAll("g.gauge-outline").data([Ne]);Je.enter().append("g").classed("gauge-outline",!0).append("rect"),Je.select("rect").call(xt).call(g),Je.exit().remove()}(A,0,U,{gauge:Re,layer:we,size:te,gaugeBg:j,gaugeOutline:V,transitionOpts:L,onComplete:I});var Ae=ee.selectAll("text.title").data(U);Ae.exit().remove(),Ae.enter().append("text").classed("title",!0),Ae.attr("text-anchor",function(){return Y?b.right:b[H.title.align]}).text(H.title.text).call(i.font,H.title.font).call(n.convertToTspans,A),Ae.attr("transform",function(){var Me,Ce=te.l+te.w*d[H.title.align],ne=r.titlePadding,ue=i.bBox(Ae.node());return Q?(X&&(Me=H.gauge.axis.visible?i.bBox(xe.node()).top-ne-ue.bottom:te.t+te.h/2-se/2-ue.bottom-ne),Y&&(Me=G-(ue.top+ue.bottom)/2,Ce=te.l-r.bulletPadding*te.w)):Me=H._numbersTop-ne-ue.bottom,f(Ce,Me)})})}},16249:function(D,E,e){var _=e(50693),w=e(12663).axisHoverFormat,s=e(5386).fF,T=e(2418),y=e(9012),f=e(1426).extendFlat,l=e(30962).overrideAll,t=D.exports=l(f({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}},y:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}},z:{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}},caps:{x:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}},y:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}},z:{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:s(),xhoverformat:w("x"),yhoverformat:w("y"),zhoverformat:w("z"),valuehoverformat:w("value",1),showlegend:f({},y.showlegend,{dflt:!1})},_("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:T.opacity,lightposition:T.lightposition,lighting:T.lighting,flatshading:T.flatshading,contour:T.contour,hoverinfo:f({},y.hoverinfo)}),"calc","nested");t.flatshading.dflt=!0,t.lighting.facenormalsepsilon.dflt=0,t.x.editType=t.y.editType=t.z.editType=t.value.editType="calc+clearAxisTypes",t.transforms=void 0},56959:function(D,E,e){var _=e(78803),w=e(88489).processGrid,s=e(88489).filter;D.exports=function(T,y){y._len=Math.min(y.x.length,y.y.length,y.z.length,y.value.length),y._x=s(y.x,y._len),y._y=s(y.y,y._len),y._z=s(y.z,y._len),y._value=s(y.value,y._len);var f=w(y);y._gridFill=f.fill,y._Xs=f.Xs,y._Ys=f.Ys,y._Zs=f.Zs,y._len=f.len;for(var l=1/0,t=-1/0,i=0;i0;a--){var u=Math.min(o[a],o[a-1]),p=Math.max(o[a],o[a-1]);if(p>u&&u-1}function ae(je,ge){return je===null?ge:je}function oe(je,ge,be){ee();var Se,Ne,Ye,Ze=[ge],st=[be];if(d>=1)Ze=[ge],st=[be];else if(d>0){var ot=function(qt,Nt){var Je=qt[0],Ke=qt[1],Ge=qt[2],nt=function(Lt,Ct,mt){for(var Ot=[],_t=0;_t-1?be[Et]:H(Tt,xt,Dt);yt[Et]=Ft>-1?Ft:X(Tt,xt,Dt,ae(je,It))}Se=yt[0],Ne=yt[1],Ye=yt[2],n._meshI.push(Se),n._meshJ.push(Ne),n._meshK.push(Ye),++M}}function se(je,ge,be,Se){var Ne=je[3];NeSe&&(Ne=Se);for(var Ye=(je[3]-Ne)/(je[3]-ge[3]+1e-9),Ze=[],st=0;st<4;st++)Ze[st]=(1-Ye)*je[st]+Ye*ge[st];return Ze}function fe(je,ge,be){return je>=ge&&je<=be}function ye(je){var ge=.001*(V-j);return je>=j-ge&&je<=V+ge}function pe(je){for(var ge=[],be=0;be<4;be++){var Se=je[be];ge.push([n._x[Se],n._y[Se],n._z[Se],n._value[Se]])}return ge}function de(je,ge,be,Se,Ne,Ye){Ye||(Ye=1),be=[-1,-1,-1];var Ze=!1,st=[fe(ge[0][3],Se,Ne),fe(ge[1][3],Se,Ne),fe(ge[2][3],Se,Ne)];if(!st[0]&&!st[1]&&!st[2])return!1;var ot=function(yt,Et,Tt){return ye(Et[0][3])&&ye(Et[1][3])&&ye(Et[2][3])?(oe(yt,Et,Tt),!0):Ye<3&&de(yt,Et,Tt,j,V,++Ye)};if(st[0]&&st[1]&&st[2])return ot(je,ge,be)||Ze;var ft=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach(function(yt){if(st[yt[0]]&&st[yt[1]]&&!st[yt[2]]){var Et=ge[yt[0]],Tt=ge[yt[1]],xt=ge[yt[2]],Dt=se(xt,Et,Se,Ne),It=se(xt,Tt,Se,Ne);Ze=ot(je,[It,Dt,Et],[-1,-1,be[yt[0]]])||Ze,Ze=ot(je,[Et,Tt,It],[be[yt[0]],be[yt[1]],-1])||Ze,ft=!0}}),ft||[[0,1,2],[1,2,0],[2,0,1]].forEach(function(yt){if(st[yt[0]]&&!st[yt[1]]&&!st[yt[2]]){var Et=ge[yt[0]],Tt=ge[yt[1]],xt=ge[yt[2]],Dt=se(Tt,Et,Se,Ne),It=se(xt,Et,Se,Ne);Ze=ot(je,[It,Dt,Et],[-1,-1,be[yt[0]]])||Ze,ft=!0}}),Ze}function he(je,ge,be,Se){var Ne=!1,Ye=pe(ge),Ze=[fe(Ye[0][3],be,Se),fe(Ye[1][3],be,Se),fe(Ye[2][3],be,Se),fe(Ye[3][3],be,Se)];if(!(Ze[0]||Ze[1]||Ze[2]||Ze[3]))return Ne;if(Ze[0]&&Ze[1]&&Ze[2]&&Ze[3])return h&&(Ne=function(ot,ft,yt){var Et=function(Tt,xt,Dt){oe(ot,[ft[Tt],ft[xt],ft[Dt]],[yt[Tt],yt[xt],yt[Dt]])};Et(0,1,2),Et(3,0,1),Et(2,3,0),Et(1,2,3)}(je,Ye,ge)||Ne),Ne;var st=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach(function(ot){if(Ze[ot[0]]&&Ze[ot[1]]&&Ze[ot[2]]&&!Ze[ot[3]]){var ft=Ye[ot[0]],yt=Ye[ot[1]],Et=Ye[ot[2]],Tt=Ye[ot[3]];if(h)Ne=oe(je,[ft,yt,Et],[ge[ot[0]],ge[ot[1]],ge[ot[2]]])||Ne;else{var xt=se(Tt,ft,be,Se),Dt=se(Tt,yt,be,Se),It=se(Tt,Et,be,Se);Ne=oe(null,[xt,Dt,It],[-1,-1,-1])||Ne}st=!0}}),st||([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach(function(ot){if(Ze[ot[0]]&&Ze[ot[1]]&&!Ze[ot[2]]&&!Ze[ot[3]]){var ft=Ye[ot[0]],yt=Ye[ot[1]],Et=Ye[ot[2]],Tt=Ye[ot[3]],xt=se(Et,ft,be,Se),Dt=se(Et,yt,be,Se),It=se(Tt,yt,be,Se),Ft=se(Tt,ft,be,Se);h?(Ne=oe(je,[ft,Ft,xt],[ge[ot[0]],-1,-1])||Ne,Ne=oe(je,[yt,Dt,It],[ge[ot[1]],-1,-1])||Ne):Ne=function(qt,Nt,Je){var Ke=function(Ge,nt,ht){oe(null,[Nt[Ge],Nt[nt],Nt[ht]],[Je[Ge],Je[nt],Je[ht]])};Ke(0,1,2),Ke(2,3,0)}(0,[xt,Dt,It,Ft],[-1,-1,-1,-1])||Ne,st=!0}}),st||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach(function(ot){if(Ze[ot[0]]&&!Ze[ot[1]]&&!Ze[ot[2]]&&!Ze[ot[3]]){var ft=Ye[ot[0]],yt=Ye[ot[1]],Et=Ye[ot[2]],Tt=Ye[ot[3]],xt=se(yt,ft,be,Se),Dt=se(Et,ft,be,Se),It=se(Tt,ft,be,Se);h?(Ne=oe(je,[ft,xt,Dt],[ge[ot[0]],-1,-1])||Ne,Ne=oe(je,[ft,Dt,It],[ge[ot[0]],-1,-1])||Ne,Ne=oe(je,[ft,It,xt],[ge[ot[0]],-1,-1])||Ne):Ne=oe(null,[xt,Dt,It],[-1,-1,-1])||Ne,st=!0}})),Ne}function xe(je,ge,be,Se,Ne,Ye,Ze,st,ot,ft,yt){var Et=!1;return k&&(te(je,"A")&&(Et=he(null,[ge,be,Se,Ye],ft,yt)||Et),te(je,"B")&&(Et=he(null,[be,Se,Ne,ot],ft,yt)||Et),te(je,"C")&&(Et=he(null,[be,Ye,Ze,ot],ft,yt)||Et),te(je,"D")&&(Et=he(null,[Se,Ye,st,ot],ft,yt)||Et),te(je,"E")&&(Et=he(null,[be,Se,Ye,ot],ft,yt)||Et)),h&&(Et=he(je,[be,Se,Ye,ot],ft,yt)||Et),Et}function Re(je,ge,be,Se,Ne,Ye,Ze,st){return[st[0]===!0||de(je,pe([ge,be,Se]),[ge,be,Se],Ye,Ze),st[1]===!0||de(je,pe([Se,Ne,ge]),[Se,Ne,ge],Ye,Ze)]}function we(je,ge,be,Se,Ne,Ye,Ze,st,ot){return st?Re(je,ge,be,Ne,Se,Ye,Ze,ot):Re(je,be,Ne,Se,ge,Ye,Ze,ot)}function Ae(je,ge,be,Se,Ne,Ye,Ze){var st,ot,ft,yt,Et=!1,Tt=function(){Et=de(je,[st,ot,ft],[-1,-1,-1],Ne,Ye)||Et,Et=de(je,[ft,yt,st],[-1,-1,-1],Ne,Ye)||Et},xt=Ze[0],Dt=Ze[1],It=Ze[2];return xt&&(st=Y(pe([B(ge,be-0,Se-0)])[0],pe([B(ge-1,be-0,Se-0)])[0],xt),ot=Y(pe([B(ge,be-0,Se-1)])[0],pe([B(ge-1,be-0,Se-1)])[0],xt),ft=Y(pe([B(ge,be-1,Se-1)])[0],pe([B(ge-1,be-1,Se-1)])[0],xt),yt=Y(pe([B(ge,be-1,Se-0)])[0],pe([B(ge-1,be-1,Se-0)])[0],xt),Tt()),Dt&&(st=Y(pe([B(ge-0,be,Se-0)])[0],pe([B(ge-0,be-1,Se-0)])[0],Dt),ot=Y(pe([B(ge-0,be,Se-1)])[0],pe([B(ge-0,be-1,Se-1)])[0],Dt),ft=Y(pe([B(ge-1,be,Se-1)])[0],pe([B(ge-1,be-1,Se-1)])[0],Dt),yt=Y(pe([B(ge-1,be,Se-0)])[0],pe([B(ge-1,be-1,Se-0)])[0],Dt),Tt()),It&&(st=Y(pe([B(ge-0,be-0,Se)])[0],pe([B(ge-0,be-0,Se-1)])[0],It),ot=Y(pe([B(ge-0,be-1,Se)])[0],pe([B(ge-0,be-1,Se-1)])[0],It),ft=Y(pe([B(ge-1,be-1,Se)])[0],pe([B(ge-1,be-1,Se-1)])[0],It),yt=Y(pe([B(ge-1,be-0,Se)])[0],pe([B(ge-1,be-0,Se-1)])[0],It),Tt()),Et}function Me(je,ge,be,Se,Ne,Ye,Ze,st,ot,ft,yt,Et){var Tt=je;return Et?(k&&je==="even"&&(Tt=null),xe(Tt,ge,be,Se,Ne,Ye,Ze,st,ot,ft,yt)):(k&&je==="odd"&&(Tt=null),xe(Tt,ot,st,Ze,Ye,Ne,Se,be,ge,ft,yt))}function Ce(je,ge,be,Se,Ne){for(var Ye=[],Ze=0,st=0;stMath.abs(Ye-N)?[G,Ye]:[Ye,N];k=!0,me(ge,Ze[0],Ze[1]),k=!1}}var st=[[Math.min(j,N),Math.max(j,N)],[Math.min(G,V),Math.max(G,V)]];["x","y","z"].forEach(function(ot){for(var ft=[],yt=0;yt0&&(Ft.push(Je.id),ot==="x"?qt.push([Je.distRatio,0,0]):ot==="y"?qt.push([0,Je.distRatio,0]):qt.push([0,0,Je.distRatio]))}else It=De(1,ot==="x"?O-1:ot==="y"?I-1:R-1);Ft.length>0&&(ft[Et]=ot==="x"?Te(je,Ft,Tt,xt,qt,ft[Et]):ot==="y"?Ee(je,Ft,Tt,xt,qt,ft[Et]):Ue(je,Ft,Tt,xt,qt,ft[Et]),Et++),It.length>0&&(ft[Et]=ot==="x"?Ce(je,It,Tt,xt,ft[Et]):ot==="y"?ne(je,It,Tt,xt,ft[Et]):ue(je,It,Tt,xt,ft[Et]),Et++)}var Ke=n.caps[ot];Ke.show&&Ke.fill&&(K(Ke.fill),ft[Et]=ot==="x"?Ce(je,[0,O-1],Tt,xt,ft[Et]):ot==="y"?ne(je,[0,I-1],Tt,xt,ft[Et]):ue(je,[0,R-1],Tt,xt,ft[Et]),Et++)}}),M===0&&Q(),n._meshX=u,n._meshY=p,n._meshZ=c,n._meshIntensity=b,n._Xs=A,n._Ys=C,n._Zs=L}(),n}D.exports={findNearestOnAxis:f,generateIsoMeshes:r,createIsosurfaceTrace:function(n,o){var a=n.glplot.gl,u=_({gl:a}),p=new l(n,u,o.uid);return u._trace=p,p.update(o),n.glplot.add(u),p}}},82738:function(D,E,e){var _=e(71828),w=e(73972),s=e(16249),T=e(1586);function y(f,l,t,i,r){var n=r("isomin"),o=r("isomax");o!=null&&n!=null&&n>o&&(l.isomin=null,l.isomax=null);var a=r("x"),u=r("y"),p=r("z"),c=r("value");a&&a.length&&u&&u.length&&p&&p.length&&c&&c.length?(w.getComponentMethod("calendars","handleTraceDefaults")(f,l,["x","y","z"],i),r("valuehoverformat"),["x","y","z"].forEach(function(b){r(b+"hoverformat");var d="caps."+b;r(d+".show")&&r(d+".fill");var v="slices."+b;r(v+".show")&&(r(v+".fill"),r(v+".locations"))}),r("spaceframe.show")&&r("spaceframe.fill"),r("surface.show")&&(r("surface.count"),r("surface.fill"),r("surface.pattern")),r("contour.show")&&(r("contour.color"),r("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(b){r(b)}),T(f,l,i,r,{prefix:"",cLetter:"c"}),l._length=null):l.visible=!1}D.exports={supplyDefaults:function(f,l,t,i){y(f,l,0,i,function(r,n){return _.coerce(f,l,s,r,n)})},supplyIsoDefaults:y}},64943:function(D,E,e){D.exports={attributes:e(16249),supplyDefaults:e(82738).supplyDefaults,calc:e(56959),colorbar:{min:"cmin",max:"cmax"},plot:e(22674).createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:e(58547),categories:["gl3d","showLegend"],meta:{}}},2418:function(D,E,e){var _=e(50693),w=e(12663).axisHoverFormat,s=e(5386).fF,T=e(54532),y=e(9012),f=e(1426).extendFlat;D.exports=f({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:s({editType:"calc"}),xhoverformat:w("x"),yhoverformat:w("y"),zhoverformat:w("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"},transforms:void 0},_("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:T.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:f({},T.contours.x.show,{}),color:T.contours.x.color,width:T.contours.x.width,editType:"calc"},lightposition:{x:f({},T.lightposition.x,{dflt:1e5}),y:f({},T.lightposition.y,{dflt:1e5}),z:f({},T.lightposition.z,{dflt:0}),editType:"calc"},lighting:f({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},T.lighting),hoverinfo:f({},y.hoverinfo,{editType:"calc"}),showlegend:f({},y.showlegend,{dflt:!1})})},82932:function(D,E,e){var _=e(78803);D.exports=function(w,s){s.intensity&&_(w,s,{vals:s.intensity,containerStr:"",cLetter:"c"})}},91134:function(D,E,e){var _=e(9330).gl_mesh3d,w=e(9330).delaunay_triangulate,s=e(9330).alpha_shape,T=e(9330).convex_hull,y=e(81697).parseColorScale,f=e(78614),l=e(21081).extractOpts,t=e(90060);function i(p,c,b){this.scene=p,this.uid=b,this.mesh=c,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var r=i.prototype;function n(p){for(var c=[],b=p.length,d=0;d=c-.5)return!1;return!0}r.handlePick=function(p){if(p.object===this.mesh){var c=p.index=p.data.index;p.data._cellCenter?p.traceCoordinate=p.data.dataCoordinate:p.traceCoordinate=[this.data.x[c],this.data.y[c],this.data.z[c]];var b=this.data.hovertext||this.data.text;return Array.isArray(b)&&b[c]!==void 0?p.textLabel=b[c]:b&&(p.textLabel=b),!0}},r.update=function(p){var c=this.scene,b=c.fullSceneLayout;this.data=p;var d,v=p.x.length,x=t(o(b.xaxis,p.x,c.dataScale[0],p.xcalendar),o(b.yaxis,p.y,c.dataScale[1],p.ycalendar),o(b.zaxis,p.z,c.dataScale[2],p.zcalendar));if(p.i&&p.j&&p.k){if(p.i.length!==p.j.length||p.j.length!==p.k.length||!u(p.i,v)||!u(p.j,v)||!u(p.k,v))return;d=t(a(p.i),a(p.j),a(p.k))}else d=p.alphahull===0?T(x):p.alphahull>0?s(p.alphahull,x):function(h,M){for(var A=["x","y","z"].indexOf(h),C=[],L=M.length,O=0;Og):x=O>A,g=O;var I=a(A,C,L,O);I.pos=M,I.yc=(A+O)/2,I.i=h,I.dir=x?"increasing":"decreasing",I.x=I.pos,I.y=[L,C],m&&(I.orig_p=r[h]),d&&(I.tx=i.text[h]),v&&(I.htx=i.hovertext[h]),k.push(I)}else k.push({pos:M,empty:!0})}return i._extremes[o._id]=s.findExtremes(o,_.concat(c,p),{padded:!0}),k.length&&(k[0].t={labels:{open:w(t,"open:")+" ",high:w(t,"high:")+" ",low:w(t,"low:")+" ",close:w(t,"close:")+" "}}),k}D.exports={calc:function(t,i){var r=s.getFromId(t,i.xaxis),n=s.getFromId(t,i.yaxis),o=function(b,d,v){var x=v._minDiff;if(!x){var g,m=b._fullData,k=[];for(x=1/0,g=0;g"+d.labels[C]+_.hoverLabelText(c,L,b.yhoverformat):((A=w.extendFlat({},x)).y0=A.y1=O,A.yLabelVal=L,A.yLabel=d.labels[C]+_.hoverLabelText(c,L,b.yhoverformat),A.name="",v.push(A),h[L]=A)}return v}function r(n,o,a,u){var p=n.cd,c=n.ya,b=p[0].trace,d=p[0].t,v=t(n,o,a,u);if(!v)return[];var x=p[v.index],g=v.index=x.i,m=x.dir;function k(I){return d.labels[I]+_.hoverLabelText(c,b[I][g],b.yhoverformat)}var h=x.hi||b.hoverinfo,M=h.split("+"),A=h==="all",C=A||M.indexOf("y")!==-1,L=A||M.indexOf("text")!==-1,O=C?[k("open"),k("high"),k("low"),k("close")+" "+l[m]]:[];return L&&y(x,b,O),v.extraText=O.join("
"),v.y0=v.y1=c.c2p(x.yc,!0),[v]}D.exports={hoverPoints:function(n,o,a,u){return n.cd[0].trace.hoverlabel.split?i(n,o,a,u):r(n,o,a,u)},hoverSplit:i,hoverOnPoints:r}},54186:function(D,E,e){D.exports={moduleType:"trace",name:"ohlc",basePlotModule:e(93612),categories:["cartesian","svg","showLegend"],meta:{},attributes:e(2522),supplyDefaults:e(16169),calc:e(3485).calc,plot:e(72314),style:e(53101),hoverPoints:e(66449).hoverPoints,selectPoints:e(67324)}},14555:function(D,E,e){var _=e(73972),w=e(71828);D.exports=function(s,T,y,f){var l=y("x"),t=y("open"),i=y("high"),r=y("low"),n=y("close");if(y("hoverlabel.split"),_.getComponentMethod("calendars","handleTraceDefaults")(s,T,["x"],f),t&&i&&r&&n){var o=Math.min(t.length,i.length,r.length,n.length);return l&&(o=Math.min(o,w.minRowLength(l))),T._length=o,o}}},72314:function(D,E,e){var _=e(39898),w=e(71828);D.exports=function(s,T,y,f){var l=T.yaxis,t=T.xaxis,i=!!t.rangebreaks;w.makeTraceGroups(f,y,"trace ohlc").each(function(r){var n=_.select(this),o=r[0],a=o.t;if(o.trace.visible!==!0||a.empty)n.remove();else{var u=a.tickLen,p=n.selectAll("path").data(w.identity);p.enter().append("path"),p.exit().remove(),p.attr("d",function(c){if(c.empty)return"M0,0Z";var b=t.c2p(c.pos-u,!0),d=t.c2p(c.pos+u,!0),v=i?(b+d)/2:t.c2p(c.pos,!0);return"M"+b+","+l.c2p(c.o,!0)+"H"+v+"M"+v+","+l.c2p(c.h,!0)+"V"+l.c2p(c.l,!0)+"M"+d+","+l.c2p(c.c,!0)+"H"+v})}})}},67324:function(D){D.exports=function(E,e){var _,w=E.cd,s=E.xaxis,T=E.yaxis,y=[],f=w[0].t.bPos||0;if(e===!1)for(_=0;_=X.length||Y[X[K]]!==void 0)return!1;Y[X[K]]=!0}return!0}(Q))for(ee=0;ee0;c&&(u="array");var b=n("categoryorder",u);b==="array"?(n("categoryarray"),n("ticktext")):(delete i.categoryarray,delete i.ticktext),c||b!=="array"||(r.categoryorder="trace")}}D.exports=function(i,r,n,o){function a(d,v){return _.coerce(i,r,f,d,v)}var u=y(i,r,{name:"dimensions",handleItemDefaults:t}),p=function(d,v,x,g,m){m("line.shape"),m("line.hovertemplate");var k=m("line.color",g.colorway[0]);if(w(d,"line")&&_.isArrayOrTypedArray(k)){if(k.length)return m("line.colorscale"),s(d,v,g,m,{prefix:"line.",cLetter:"c"}),k.length;v.line.color=x}return 1/0}(i,r,n,o,a);T(r,o,a),Array.isArray(u)&&u.length||(r.visible=!1),l(r,u,"values",p),a("hoveron"),a("hovertemplate"),a("arrangement"),a("bundlecolors"),a("sortpaths"),a("counts");var c={family:o.font.family,size:Math.round(o.font.size),color:o.font.color};_.coerceFont(a,"labelfont",c);var b={family:o.font.family,size:Math.round(o.font.size/1.2),color:o.font.color};_.coerceFont(a,"tickfont",b)}},94873:function(D,E,e){D.exports={attributes:e(99506),supplyDefaults:e(14647),calc:e(28699),plot:e(45784),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:e(27677),categories:["noOpacity"],meta:{}}},45460:function(D,E,e){var _=e(39898),w=e(81684).k4,s=e(72391),T=e(30211),y=e(71828),f=y.strTranslate,l=e(91424),t=e(84267),i=e(63893);function r(Q,X,Y,K){var te=X._context.staticPlot,ae=Q.map(N.bind(0,X,Y)),oe=K.selectAll("g.parcatslayer").data([null]);oe.enter().append("g").attr("class","parcatslayer").style("pointer-events",te?"none":"all");var se=oe.selectAll("g.trace.parcats").data(ae,n),fe=se.enter().append("g").attr("class","trace parcats");se.attr("transform",function(Me){return f(Me.x,Me.y)}),fe.append("g").attr("class","paths");var ye=se.select("g.paths").selectAll("path.path").data(function(Me){return Me.paths},n);ye.attr("fill",function(Me){return Me.model.color});var pe=ye.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(Me){return Me.model.color}).attr("fill-opacity",0);v(pe),ye.attr("d",function(Me){return Me.svgD}),pe.empty()||ye.sort(a),ye.exit().remove(),ye.on("mouseover",u).on("mouseout",p).on("click",d),fe.append("g").attr("class","dimensions");var de=se.select("g.dimensions").selectAll("g.dimension").data(function(Me){return Me.dimensions},n);de.enter().append("g").attr("class","dimension"),de.attr("transform",function(Me){return f(Me.x,0)}),de.exit().remove();var he=de.selectAll("g.category").data(function(Me){return Me.categories},n),xe=he.enter().append("g").attr("class","category");he.attr("transform",function(Me){return f(0,Me.y)}),xe.append("rect").attr("class","catrect").attr("pointer-events","none"),he.select("rect.catrect").attr("fill","none").attr("width",function(Me){return Me.width}).attr("height",function(Me){return Me.height}),g(xe);var Re=he.selectAll("rect.bandrect").data(function(Me){return Me.bands},n);Re.each(function(){y.raiseToTop(this)}),Re.attr("fill",function(Me){return Me.color});var we=Re.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(Me){return Me.color}).attr("fill-opacity",0);Re.attr("fill",function(Me){return Me.color}).attr("width",function(Me){return Me.width}).attr("height",function(Me){return Me.height}).attr("y",function(Me){return Me.y}).attr("cursor",function(Me){return Me.parcatsViewModel.arrangement==="fixed"?"default":Me.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),m(we),Re.exit().remove(),xe.append("text").attr("class","catlabel").attr("pointer-events","none");var Ae=X._fullLayout.paper_bgcolor;he.select("text.catlabel").attr("text-anchor",function(Me){return o(Me)?"start":"end"}).attr("alignment-baseline","middle").style("text-shadow",i.makeTextShadow(Ae)).style("fill","rgb(0, 0, 0)").attr("x",function(Me){return o(Me)?Me.width+5:-5}).attr("y",function(Me){return Me.height/2}).text(function(Me){return Me.model.categoryLabel}).each(function(Me){l.font(_.select(this),Me.parcatsViewModel.categorylabelfont),i.convertToTspans(_.select(this),X)}),xe.append("text").attr("class","dimlabel"),he.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(Me){return Me.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(Me){return Me.width/2}).attr("y",-5).text(function(Me,Ce){return Ce===0?Me.parcatsViewModel.model.dimensions[Me.model.dimensionInd].dimensionLabel:null}).each(function(Me){l.font(_.select(this),Me.parcatsViewModel.labelfont)}),he.selectAll("rect.bandrect").on("mouseover",C).on("mouseout",L),he.exit().remove(),de.call(_.behavior.drag().origin(function(Me){return{x:Me.x,y:0}}).on("dragstart",O).on("drag",I).on("dragend",R)),se.each(function(Me){Me.traceSelection=_.select(this),Me.pathSelection=_.select(this).selectAll("g.paths").selectAll("path.path"),Me.dimensionSelection=_.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),se.exit().remove()}function n(Q){return Q.key}function o(Q){var X=Q.parcatsViewModel.dimensions.length,Y=Q.parcatsViewModel.dimensions[X-1].model.dimensionInd;return Q.model.dimensionInd===Y}function a(Q,X){return Q.model.rawColor>X.model.rawColor?1:Q.model.rawColor"),Te=_.mouse(se)[0];T.loneHover({trace:fe,x:Re-pe.left+de.left,y:we-pe.top+de.top,text:me,color:Q.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:Ae,idealAlign:Te1&&de.displayInd===pe.dimensions.length-1?(K=fe.left,te="left"):(K=fe.left+fe.width,te="right");var Re=ye.model.count,we=ye.model.categoryLabel,Ae=Re/ye.parcatsViewModel.model.count,Me={countLabel:Re,categoryLabel:we,probabilityLabel:Ae.toFixed(3)},Ce=[];ye.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&Ce.push(["Count:",Me.countLabel].join(" ")),ye.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&Ce.push(["P("+Me.categoryLabel+"):",Me.probabilityLabel].join(" "));var ne=Ce.join("
");return{trace:he,x:ae*(K-X.left),y:oe*(xe-X.top),text:ne,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:te,hovertemplate:he.hovertemplate,hovertemplateLabels:Me,eventData:[{data:he._input,fullData:he,count:Re,category:we,probability:Ae}]}}function C(Q){if(!Q.parcatsViewModel.dragDimension&&Q.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){if(_.mouse(this)[1]<-1)return;var X,Y=Q.parcatsViewModel.graphDiv,K=Y._fullLayout,te=K._paperdiv.node().getBoundingClientRect(),ae=Q.parcatsViewModel.hoveron,oe=this;ae==="color"?(function(se){var fe=_.select(se).datum(),ye=k(fe);x(ye),ye.each(function(){y.raiseToTop(this)}),_.select(se.parentNode).selectAll("rect.bandrect").filter(function(pe){return pe.color===fe.color}).each(function(){y.raiseToTop(this),_.select(this).attr("stroke","black").attr("stroke-width",1.5)})}(oe),M(oe,"plotly_hover",_.event)):(function(se){_.select(se.parentNode).selectAll("rect.bandrect").each(function(fe){var ye=k(fe);x(ye),ye.each(function(){y.raiseToTop(this)})}),_.select(se.parentNode).select("rect.catrect").attr("stroke","black").attr("stroke-width",2.5)}(oe),h(oe,"plotly_hover",_.event)),Q.parcatsViewModel.hoverinfoItems.indexOf("none")===-1&&(ae==="category"?X=A(Y,te,oe):ae==="color"?X=function(se,fe,ye){se._fullLayout._calcInverseTransform(se);var pe,de,he=se._fullLayout._invScaleX,xe=se._fullLayout._invScaleY,Re=ye.getBoundingClientRect(),we=_.select(ye).datum(),Ae=we.categoryViewModel,Me=Ae.parcatsViewModel,Ce=Me.model.dimensions[Ae.model.dimensionInd],ne=Me.trace,ue=Re.y+Re.height/2;Me.dimensions.length>1&&Ce.displayInd===Me.dimensions.length-1?(pe=Re.left,de="left"):(pe=Re.left+Re.width,de="right");var me=Ae.model.categoryLabel,Te=we.parcatsViewModel.model.count,Ee=0;we.categoryViewModel.bands.forEach(function(st){st.color===we.color&&(Ee+=st.count)});var Ue=Ae.model.count,De=0;Me.pathSelection.each(function(st){st.model.color===we.color&&(De+=st.model.count)});var je=Ee/Te,ge=Ee/De,be=Ee/Ue,Se={countLabel:Te,categoryLabel:me,probabilityLabel:je.toFixed(3)},Ne=[];Ae.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&Ne.push(["Count:",Se.countLabel].join(" ")),Ae.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(Ne.push("P(color ∩ "+me+"): "+Se.probabilityLabel),Ne.push("P("+me+" | color): "+ge.toFixed(3)),Ne.push("P(color | "+me+"): "+be.toFixed(3)));var Ye=Ne.join("
"),Ze=t.mostReadable(we.color,["black","white"]);return{trace:ne,x:he*(pe-fe.left),y:xe*(ue-fe.top),text:Ye,color:we.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:Ze,fontSize:10,idealAlign:de,hovertemplate:ne.hovertemplate,hovertemplateLabels:Se,eventData:[{data:ne._input,fullData:ne,category:me,count:Te,probability:je,categorycount:Ue,colorcount:De,bandcolorcount:Ee}]}}(Y,te,oe):ae==="dimension"&&(X=function(se,fe,ye){var pe=[];return _.select(ye.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){pe.push(A(se,fe,this))}),pe}(Y,te,oe)),X&&T.loneHover(X,{container:K._hoverlayer.node(),outerContainer:K._paper.node(),gd:Y}))}}function L(Q){var X=Q.parcatsViewModel;X.dragDimension||(v(X.pathSelection),g(X.dimensionSelection.selectAll("g.category")),m(X.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),T.loneUnhover(X.graphDiv._fullLayout._hoverlayer.node()),X.pathSelection.sort(a),X.hoverinfoItems.indexOf("skip")!==-1)||(Q.parcatsViewModel.hoveron==="color"?M(this,"plotly_unhover",_.event):h(this,"plotly_unhover",_.event))}function O(Q){Q.parcatsViewModel.arrangement!=="fixed"&&(Q.dragDimensionDisplayInd=Q.model.displayInd,Q.initialDragDimensionDisplayInds=Q.parcatsViewModel.model.dimensions.map(function(X){return X.displayInd}),Q.dragHasMoved=!1,Q.dragCategoryDisplayInd=null,_.select(this).selectAll("g.category").select("rect.catrect").each(function(X){var Y=_.mouse(this)[0],K=_.mouse(this)[1];-2<=Y&&Y<=X.width+2&&-2<=K&&K<=X.height+2&&(Q.dragCategoryDisplayInd=X.model.displayInd,Q.initialDragCategoryDisplayInds=Q.model.categories.map(function(te){return te.displayInd}),X.model.dragY=X.y,y.raiseToTop(this.parentNode),_.select(this.parentNode).selectAll("rect.bandrect").each(function(te){te.ype.y+pe.height/2&&(ae.model.displayInd=pe.model.displayInd,pe.model.displayInd=se),Q.dragCategoryDisplayInd=ae.model.displayInd}if(Q.dragCategoryDisplayInd===null||Q.parcatsViewModel.arrangement==="freeform"){te.model.dragX=_.event.x;var de=Q.parcatsViewModel.dimensions[Y],he=Q.parcatsViewModel.dimensions[K];de!==void 0&&te.model.dragXhe.x&&(te.model.displayInd=he.model.displayInd,he.model.displayInd=Q.dragDimensionDisplayInd),Q.dragDimensionDisplayInd=te.model.displayInd}H(Q.parcatsViewModel),V(Q.parcatsViewModel),G(Q.parcatsViewModel),B(Q.parcatsViewModel)}}function R(Q){if(Q.parcatsViewModel.arrangement!=="fixed"&&Q.dragDimensionDisplayInd!==null){_.select(this).selectAll("text").attr("font-weight","normal");var X={},Y=U(Q.parcatsViewModel),K=Q.parcatsViewModel.model.dimensions.map(function(pe){return pe.displayInd}),te=Q.initialDragDimensionDisplayInds.some(function(pe,de){return pe!==K[de]});te&&K.forEach(function(pe,de){var he=Q.parcatsViewModel.model.dimensions[de].containerInd;X["dimensions["+he+"].displayindex"]=pe});var ae=!1;if(Q.dragCategoryDisplayInd!==null){var oe=Q.model.categories.map(function(pe){return pe.displayInd});if(ae=Q.initialDragCategoryDisplayInds.some(function(pe,de){return pe!==oe[de]})){var se=Q.model.categories.slice().sort(function(pe,de){return pe.displayInd-de.displayInd}),fe=se.map(function(pe){return pe.categoryValue}),ye=se.map(function(pe){return pe.categoryLabel});X["dimensions["+Q.model.containerInd+"].categoryarray"]=[fe],X["dimensions["+Q.model.containerInd+"].ticktext"]=[ye],X["dimensions["+Q.model.containerInd+"].categoryorder"]="array"}}Q.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!Q.dragHasMoved&&Q.potentialClickBand&&(Q.parcatsViewModel.hoveron==="color"?M(Q.potentialClickBand,"plotly_click",_.event.sourceEvent):h(Q.potentialClickBand,"plotly_click",_.event.sourceEvent)),Q.model.dragX=null,Q.dragCategoryDisplayInd!==null&&(Q.parcatsViewModel.dimensions[Q.dragDimensionDisplayInd].categories[Q.dragCategoryDisplayInd].model.dragY=null,Q.dragCategoryDisplayInd=null),Q.dragDimensionDisplayInd=null,Q.parcatsViewModel.dragDimension=null,Q.dragHasMoved=null,Q.potentialClickBand=null,H(Q.parcatsViewModel),V(Q.parcatsViewModel),_.transition().duration(300).ease("cubic-in-out").each(function(){G(Q.parcatsViewModel,!0),B(Q.parcatsViewModel,!0)}).each("end",function(){(te||ae)&&s.restyle(Q.parcatsViewModel.graphDiv,X,[Y])})}}function U(Q){for(var X,Y=Q.graphDiv._fullData,K=0;K=0;oe--)ye+="C"+fe[oe]+","+(X[oe+1]+K)+" "+se[oe]+","+(X[oe]+K)+" "+(Q[oe]+Y[oe])+","+(X[oe]+K),ye+="l-"+Y[oe]+",0 ";return ye+"Z"}function V(Q){var X=Q.dimensions,Y=Q.model,K=X.map(function(Se){return Se.categories.map(function(Ne){return Ne.y})}),te=Q.model.dimensions.map(function(Se){return Se.categories.map(function(Ne){return Ne.displayInd})}),ae=Q.model.dimensions.map(function(Se){return Se.displayInd}),oe=Q.dimensions.map(function(Se){return Se.model.dimensionInd}),se=X.map(function(Se){return Se.x}),fe=X.map(function(Se){return Se.width}),ye=[];for(var pe in Y.paths)Y.paths.hasOwnProperty(pe)&&ye.push(Y.paths[pe]);function de(Se){var Ne=Se.categoryInds.map(function(Ye,Ze){return te[Ze][Ye]});return oe.map(function(Ye){return Ne[Ye]})}ye.sort(function(Se,Ne){var Ye=de(Se),Ze=de(Ne);return Q.sortpaths==="backward"&&(Ye.reverse(),Ze.reverse()),Ye.push(Se.valueInds[0]),Ze.push(Ne.valueInds[0]),Q.bundlecolors&&(Ye.unshift(Se.rawColor),Ze.unshift(Ne.rawColor)),YeZe?1:0});for(var he=new Array(ye.length),xe=X[0].model.count,Re=X[0].categories.map(function(Se){return Se.height}).reduce(function(Se,Ne){return Se+Ne}),we=0;we0?Re*(Me.count/xe):0;for(var Ce,ne=new Array(K.length),ue=0;ue1?(Q.width-80-16)/(K-1):0)*te;var ae,oe,se,fe,ye,pe=[],de=Q.model.maxCats,he=X.categories.length,xe=X.count,Re=Q.height-8*(de-1),we=8*(de-he)/2,Ae=X.categories.map(function(Me){return{displayInd:Me.displayInd,categoryInd:Me.categoryInd}});for(Ae.sort(function(Me,Ce){return Me.displayInd-Ce.displayInd}),ye=0;ye0?oe.count/xe*Re:0,se={key:oe.valueInds[0],model:oe,width:16,height:ae,y:oe.dragY!==null?oe.dragY:we,bands:[],parcatsViewModel:Q},we=we+ae+8,pe.push(se);return{key:X.dimensionInd,x:X.dragX!==null?X.dragX:Y,y:0,width:16,model:X,categories:pe,parcatsViewModel:Q,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}D.exports=function(Q,X,Y,K){r(Y,Q,K,X)}},45784:function(D,E,e){var _=e(45460);D.exports=function(w,s,T,y){var f=w._fullLayout,l=f._paper,t=f._size;_(w,l,s,{width:t.w,height:t.h,margin:{t:t.t,r:t.r,b:t.b,l:t.l}},T,y)}},73362:function(D,E,e){var _=e(50693),w=e(13838),s=e(41940),T=e(27670).Y,y=e(1426).extendFlat,f=e(44467).templatedArray;D.exports={domain:T({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:s({editType:"plot"}),tickfont:s({editType:"plot"}),rangefont:s({editType:"plot"}),dimensions:f("dimension",{label:{valType:"string",editType:"plot"},tickvals:y({},w.tickvals,{editType:"plot"}),ticktext:y({},w.ticktext,{editType:"plot"}),tickformat:y({},w.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:y({editType:"calc"},_("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}},57920:function(D,E,e){var _=e(25706),w=e(39898),s=e(28984).keyFun,T=e(28984).repeat,y=e(71828).sorterAsc,f=e(71828).strTranslate,l=_.bar.snapRatio;function t(A,C){return A*(1-l)+C*l}var i=_.bar.snapClose;function r(A,C){return A*(1-i)+C*i}function n(A,C,L,O){if(function(ee,Q){for(var X=0;X=Q[X][0]&&ee<=Q[X][1])return!0;return!1}(L,O))return L;var I=A?-1:1,R=0,U=C.length-1;if(I<0){var B=R;R=U,U=B}for(var G=C[R],N=G,j=R;I*jC){V=L;break}}if(I=N,isNaN(I)&&(I=isNaN(j)||isNaN(V)?isNaN(j)?V:j:C-G[j][1]te[1]+oe||ae=.9*te[1]+.1*te[0]?"n":ae<=.9*te[0]+.1*te[1]?"s":"ns"}(ee,C);Q&&(R.interval=B[I],R.intervalPix=ee,R.region=Q)}}if(A.ordinal&&!R.region){var X=A.unitTickvals,Y=A.unitToPaddedPx.invert(C);for(L=0;L=K[0]&&Y<=K[1]){R.clickableOrdinalRange=K;break}}}return R}function x(A,C){w.event.sourceEvent.stopPropagation();var L=C.height-w.mouse(A)[1]-2*_.verticalPadding,O=C.brush.svgBrush;O.wasDragged=!0,O._dragging=!0,O.grabbingBar?O.newExtent=[L-O.grabPoint,L+O.barLength-O.grabPoint].map(C.unitToPaddedPx.invert):O.newExtent=[O.startExtent,C.unitToPaddedPx.invert(L)].sort(y),C.brush.filterSpecified=!0,O.extent=O.stayingIntervals.concat([O.newExtent]),O.brushCallback(C),d(A.parentNode)}function g(A,C){var L=v(C,C.height-w.mouse(A)[1]-2*_.verticalPadding),O="crosshair";L.clickableOrdinalRange?O="pointer":L.region&&(O=L.region+"-resize"),w.select(document.body).style("cursor",O)}function m(A){A.on("mousemove",function(C){w.event.preventDefault(),C.parent.inBrushDrag||g(this,C)}).on("mouseleave",function(C){C.parent.inBrushDrag||c()}).call(w.behavior.drag().on("dragstart",function(C){(function(L,O){w.event.sourceEvent.stopPropagation();var I=O.height-w.mouse(L)[1]-2*_.verticalPadding,R=O.unitToPaddedPx.invert(I),U=O.brush,B=v(O,I),G=B.interval,N=U.svgBrush;if(N.wasDragged=!1,N.grabbingBar=B.region==="ns",N.grabbingBar){var j=G.map(O.unitToPaddedPx);N.grabPoint=I-j[0]-_.verticalPadding,N.barLength=j[1]-j[0]}N.clickableOrdinalRange=B.clickableOrdinalRange,N.stayingIntervals=O.multiselect&&U.filterSpecified?U.filter.getConsolidated():[],G&&(N.stayingIntervals=N.stayingIntervals.filter(function(V){return V[0]!==G[0]&&V[1]!==G[1]})),N.startExtent=B.region?G[B.region==="s"?1:0]:R,O.parent.inBrushDrag=!0,N.brushStartCallback()})(this,C)}).on("drag",function(C){x(this,C)}).on("dragend",function(C){(function(L,O){var I=O.brush,R=I.filter,U=I.svgBrush;U._dragging||(g(L,O),x(L,O),O.brush.svgBrush.wasDragged=!1),U._dragging=!1,w.event.sourceEvent.stopPropagation();var B=U.grabbingBar;if(U.grabbingBar=!1,U.grabLocation=void 0,O.parent.inBrushDrag=!1,c(),!U.wasDragged)return U.wasDragged=void 0,U.clickableOrdinalRange?I.filterSpecified&&O.multiselect?U.extent.push(U.clickableOrdinalRange):(U.extent=[U.clickableOrdinalRange],I.filterSpecified=!0):B?(U.extent=U.stayingIntervals,U.extent.length===0&&h(I)):h(I),U.brushCallback(O),d(L.parentNode),void U.brushEndCallback(I.filterSpecified?R.getConsolidated():[]);var G=function(){R.set(R.getConsolidated())};if(O.ordinal){var N=O.unitTickvals;N[N.length-1]U.newExtent[0];U.extent=U.stayingIntervals.concat(j?[U.newExtent]:[]),U.extent.length||h(I),U.brushCallback(O),j?d(L.parentNode,G):(G(),d(L.parentNode))}else G();U.brushEndCallback(I.filterSpecified?R.getConsolidated():[])})(this,C)}))}function k(A,C){return A[0]-C[0]}function h(A){A.filterSpecified=!1,A.svgBrush.extent=[[-1/0,1/0]]}function M(A){for(var C,L=A.slice(),O=[],I=L.shift();I;){for(C=I.slice();(I=L.shift())&&I[0]<=C[1];)C[1]=Math.max(C[1],I[1]);O.push(C)}return O.length===1&&O[0][0]>O[0][1]&&(O=[]),O}D.exports={makeBrush:function(A,C,L,O,I,R){var U,B=function(){var G,N,j=[];return{set:function(V){(j=V.map(function(H){return H.slice().sort(y)}).sort(k)).length===1&&j[0][0]===-1/0&&j[0][1]===1/0&&(j=[[0,-1]]),G=M(j),N=j.reduce(function(H,ee){return[Math.min(H[0],ee[0]),Math.max(H[1],ee[1])]},[1/0,-1/0])},get:function(){return j.slice()},getConsolidated:function(){return G},getBounds:function(){return N}}}();return B.set(L),{filter:B,filterSpecified:C,svgBrush:{extent:[],brushStartCallback:O,brushCallback:(U=I,function(G){var N=G.brush,j=function(H){return H.svgBrush.extent.map(function(ee){return ee.slice()})}(N),V=j.slice();N.filter.set(V),U()}),brushEndCallback:R}}},ensureAxisBrush:function(A,C,L){var O=A.selectAll("."+_.cn.axisBrush).data(T,s);O.enter().append("g").classed(_.cn.axisBrush,!0),function(I,R,U){var B=U._context.staticPlot,G=I.selectAll(".background").data(T);G.enter().append("rect").classed("background",!0).call(o).call(a).style("pointer-events",B?"none":"auto").attr("transform",f(0,_.verticalPadding)),G.call(m).attr("height",function(V){return V.height-_.verticalPadding});var N=I.selectAll(".highlight-shadow").data(T);N.enter().append("line").classed("highlight-shadow",!0).attr("x",-_.bar.width/2).attr("stroke-width",_.bar.width+_.bar.strokeWidth).attr("stroke",R).attr("opacity",_.bar.strokeOpacity).attr("stroke-linecap","butt"),N.attr("y1",function(V){return V.height}).call(b);var j=I.selectAll(".highlight").data(T);j.enter().append("line").classed("highlight",!0).attr("x",-_.bar.width/2).attr("stroke-width",_.bar.width-_.bar.strokeWidth).attr("stroke",_.bar.fillColor).attr("opacity",_.bar.fillOpacity).attr("stroke-linecap","butt"),j.attr("y1",function(V){return V.height}).call(b)}(O,C,L)},cleanRanges:function(A,C){if(Array.isArray(A[0])?(A=A.map(function(O){return O.sort(y)}),A=C.multiselect?M(A.sort(k)):[A[0]]):A=[A.sort(y)],C.tickvals){var L=C.tickvals.slice().sort(y);if(!(A=A.map(function(O){var I=[n(0,L,O[0],[]),n(1,L,O[1],[])];if(I[1]>I[0])return I}).filter(function(O){return O})).length)return}return A.length>1?A:A[0]}}},71791:function(D,E,e){D.exports={attributes:e(73362),supplyDefaults:e(3633),calc:e(24639),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:e(49351),categories:["gl","regl","noOpacity","noHover"],meta:{}}},49351:function(D,E,e){var _=e(39898),w=e(27659).a0,s=e(21341),T=e(77922);E.name="parcoords",E.plot=function(y){var f=w(y.calcdata,"parcoords")[0];f.length&&s(y,f)},E.clean=function(y,f,l,t){var i=t._has&&t._has("parcoords"),r=f._has&&f._has("parcoords");i&&!r&&(t._paperdiv.selectAll(".parcoords").remove(),t._glimages.selectAll("*").remove())},E.toSVG=function(y){var f=y._fullLayout._glimages,l=_.select(y).selectAll(".svg-container");l.filter(function(t,i){return i===l.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus").each(function(){var t=this,i=t.toDataURL("image/png");f.append("svg:image").attr({xmlns:T.svg,"xlink:href":i,preserveAspectRatio:"none",x:0,y:0,width:t.style.width,height:t.style.height})}),window.setTimeout(function(){_.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}},24639:function(D,E,e){var _=e(71828).isArrayOrTypedArray,w=e(21081),s=e(28984).wrap;D.exports=function(T,y){var f,l;return w.hasColorscale(y,"line")&&_(y.line.color)?(f=y.line.color,l=w.extractOpts(y.line).colorscale,w.calc(T,y,{vals:f,containerStr:"line",cLetter:"c"})):(f=function(t){for(var i=new Array(t),r=0;ri&&(_.log("parcoords traces support up to "+i+" dimensions at the moment"),b.splice(i));var d=y(o,a,{name:"dimensions",layout:p,handleItemDefaults:n}),v=function(g,m,k,h,M){var A=M("line.color",k);if(w(g,"line")&&_.isArrayOrTypedArray(A)){if(A.length)return M("line.colorscale"),s(g,m,h,M,{prefix:"line.",cLetter:"c"}),A.length;m.line.color=k}return 1/0}(o,a,u,p,c);T(a,p,c),Array.isArray(d)&&d.length||(a.visible=!1),r(a,d,"values",v);var x={family:p.font.family,size:Math.round(p.font.size/1.2),color:p.font.color};_.coerceFont(c,"labelfont",x),_.coerceFont(c,"tickfont",x),_.coerceFont(c,"rangefont",x),c("labelangle"),c("labelside"),c("unselected.line.color"),c("unselected.line.opacity")}},1602:function(D,E,e){var _=e(71828).isTypedArray;E.convertTypedArray=function(w){return _(w)?Array.prototype.slice.call(w):w},E.isOrdinal=function(w){return!!w.tickvals},E.isVisible=function(w){return w.visible||!("visible"in w)}},67618:function(D,E,e){var _=e(71791);_.plot=e(21341),D.exports=_},83398:function(D,E,e){var _=e(56068),w=_([`precision highp float; +#define GLSLIFY 1 + +varying vec4 fragColor; + +attribute vec4 p01_04, p05_08, p09_12, p13_16, + p17_20, p21_24, p25_28, p29_32, + p33_36, p37_40, p41_44, p45_48, + p49_52, p53_56, p57_60, colors; + +uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D, + loA, hiA, loB, hiB, loC, hiC, loD, hiD; + +uniform vec2 resolution, viewBoxPos, viewBoxSize; +uniform float maskHeight; +uniform float drwLayer; // 0: context, 1: focus, 2: pick +uniform vec4 contextColor; +uniform sampler2D maskTexture, palette; + +bool isPick = (drwLayer > 1.5); +bool isContext = (drwLayer < 0.5); + +const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0); +const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0); + +float val(mat4 p, mat4 v) { + return dot(matrixCompMult(p, v) * UNITS, UNITS); +} + +float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) { + float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D); + float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D); + return y1 * (1.0 - ratio) + y2 * ratio; +} + +int iMod(int a, int b) { + return a - b * (a / b); +} + +bool fOutside(float p, float lo, float hi) { + return (lo < hi) && (lo > p || p > hi); +} + +bool vOutside(vec4 p, vec4 lo, vec4 hi) { + return ( + fOutside(p[0], lo[0], hi[0]) || + fOutside(p[1], lo[1], hi[1]) || + fOutside(p[2], lo[2], hi[2]) || + fOutside(p[3], lo[3], hi[3]) + ); +} + +bool mOutside(mat4 p, mat4 lo, mat4 hi) { + return ( + vOutside(p[0], lo[0], hi[0]) || + vOutside(p[1], lo[1], hi[1]) || + vOutside(p[2], lo[2], hi[2]) || + vOutside(p[3], lo[3], hi[3]) + ); +} + +bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) { + return mOutside(A, loA, hiA) || + mOutside(B, loB, hiB) || + mOutside(C, loC, hiC) || + mOutside(D, loD, hiD); +} + +bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) { + mat4 pnts[4]; + pnts[0] = A; + pnts[1] = B; + pnts[2] = C; + pnts[3] = D; + + for(int i = 0; i < 4; ++i) { + for(int j = 0; j < 4; ++j) { + for(int k = 0; k < 4; ++k) { + if(0 == iMod( + int(255.0 * texture2D(maskTexture, + vec2( + (float(i * 2 + j / 2) + 0.5) / 8.0, + (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight + ))[3] + ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))), + 2 + )) return true; + } } - }, 20); - + } + return false; +} + +vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) { + float x = 0.5 * sign(v) + 0.5; + float y = axisY(x, A, B, C, D); + float z = 1.0 - abs(v); + + z += isContext ? 0.0 : 2.0 * float( + outsideBoundingBox(A, B, C, D) || + outsideRasterMask(A, B, C, D) + ); + + return vec4( + 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0, + z, + 1.0 + ); +} + +void main() { + mat4 A = mat4(p01_04, p05_08, p09_12, p13_16); + mat4 B = mat4(p17_20, p21_24, p25_28, p29_32); + mat4 C = mat4(p33_36, p37_40, p41_44, p45_48); + mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS); + + float v = colors[3]; + + gl_Position = position(isContext, v, A, B, C, D); + + fragColor = + isContext ? vec4(contextColor) : + isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5)); +} +`]),s=_([`precision highp float; +#define GLSLIFY 1 + +varying vec4 fragColor; + +void main() { + gl_FragColor = fragColor; +} +`]),T=e(25706).maxDimensionCount,y=e(71828),f=new Uint8Array(4),l=new Uint8Array(4),t={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function i(d,v,x,g,m){var k=d._gl;k.enable(k.SCISSOR_TEST),k.scissor(v,x,g,m),d.clear({color:[0,0,0,0],depth:1})}function r(d,v,x,g,m,k){var h=k.key;x.drawCompleted||(function(M){M.read({x:0,y:0,width:1,height:1,data:f})}(d),x.drawCompleted=!0),function M(A){var C=Math.min(g,m-A*g);A===0&&(window.cancelAnimationFrame(x.currentRafs[h]),delete x.currentRafs[h],i(d,k.scissorX,k.scissorY,k.scissorWidth,k.viewBoxSize[1])),x.clearOnly||(k.count=2*C,k.offset=2*A*g,v(k),A*g+C>>8*v)%256/255}function a(d,v,x){for(var g=new Array(8*v),m=0,k=0;kae&&(ae=V[Q].dim1.canvasX,Y=Q);K===0&&i(C,0,0,x.canvasWidth,x.canvasHeight);var oe=function(Ae){var Me,Ce,ne,ue=[[],[]];for(ne=0;ne<64;ne++){var me=!Ae&&neoe._length&&(Re=Re.slice(0,oe._length));var we,Ae=oe.tickvals;function Me(Te,Ee){return{val:Te,text:we[Ee]}}function Ce(Te,Ee){return Te.val-Ee.val}if(Array.isArray(Ae)&&Ae.length){we=oe.ticktext,Array.isArray(we)&&we.length?we.length>Ae.length?we=we.slice(0,Ae.length):Ae.length>we.length&&(Ae=Ae.slice(0,we.length)):we=Ae.map(s(oe.tickformat));for(var ne=1;ne=Ue||be>=De)return;var Se=Te.lineLayer.readPixel(ge,De-1-be),Ne=Se[3]!==0,Ye=Ne?Se[2]+256*(Se[1]+256*Se[0]):null,Ze={x:ge,y:be,clientX:Ee.clientX,clientY:Ee.clientY,dataIndex:Te.model.key,curveNumber:Ye};Ye!==ye&&(Ne?V.hover(Ze):V.unhover&&V.unhover(Ze),ye=Ye)}}),fe.style("opacity",function(Te){return Te.pick?0:1}),Q.style("background","rgba(255, 255, 255, 0)");var pe=Q.selectAll("."+c.cn.parcoords).data(se,o);pe.exit().remove(),pe.enter().append("g").classed(c.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),pe.attr("transform",function(Te){return l(Te.model.translateX,Te.model.translateY)});var de=pe.selectAll("."+c.cn.parcoordsControlView).data(a,o);de.enter().append("g").classed(c.cn.parcoordsControlView,!0),de.attr("transform",function(Te){return l(Te.model.pad.l,Te.model.pad.t)});var he=de.selectAll("."+c.cn.yAxis).data(function(Te){return Te.dimensions},o);he.enter().append("g").classed(c.cn.yAxis,!0),de.each(function(Te){R(he,Te,Y)}),fe.each(function(Te){if(Te.viewModel){!Te.lineLayer||V?Te.lineLayer=d(this,Te):Te.lineLayer.update(Te),(Te.key||Te.key===0)&&(Te.viewModel[Te.key]=Te.lineLayer);var Ee=!Te.context||V;Te.lineLayer.render(Te.viewModel.panels,Ee)}}),he.attr("transform",function(Te){return l(Te.xScale(Te.xIndex),0)}),he.call(_.behavior.drag().origin(function(Te){return Te}).on("drag",function(Te){var Ee=Te.parent;oe.linePickActive(!1),Te.x=Math.max(-c.overdrag,Math.min(Te.model.width+c.overdrag,_.event.x)),Te.canvasX=Te.x*Te.model.canvasPixelRatio,he.sort(function(Ue,De){return Ue.x-De.x}).each(function(Ue,De){Ue.xIndex=De,Ue.x=Te===Ue?Ue.x:Ue.xScale(Ue.xIndex),Ue.canvasX=Ue.x*Ue.model.canvasPixelRatio}),R(he,Ee,Y),he.filter(function(Ue){return Math.abs(Te.xIndex-Ue.xIndex)!==0}).attr("transform",function(Ue){return l(Ue.xScale(Ue.xIndex),0)}),_.select(this).attr("transform",l(Te.x,0)),he.each(function(Ue,De,je){je===Te.parent.key&&(Ee.dimensions[De]=Ue)}),Ee.contextLayer&&Ee.contextLayer.render(Ee.panels,!1,!A(Ee)),Ee.focusLayer.render&&Ee.focusLayer.render(Ee.panels)}).on("dragend",function(Te){var Ee=Te.parent;Te.x=Te.xScale(Te.xIndex),Te.canvasX=Te.x*Te.model.canvasPixelRatio,R(he,Ee,Y),_.select(this).attr("transform",function(Ue){return l(Ue.x,0)}),Ee.contextLayer&&Ee.contextLayer.render(Ee.panels,!1,!A(Ee)),Ee.focusLayer&&Ee.focusLayer.render(Ee.panels),Ee.pickLayer&&Ee.pickLayer.render(Ee.panels,!0),oe.linePickActive(!0),V&&V.axesMoved&&V.axesMoved(Ee.key,Ee.dimensions.map(function(Ue){return Ue.crossfilterDimensionIndex}))})),he.exit().remove();var xe=he.selectAll("."+c.cn.axisOverlays).data(a,o);xe.enter().append("g").classed(c.cn.axisOverlays,!0),xe.selectAll("."+c.cn.axis).remove();var Re=xe.selectAll("."+c.cn.axis).data(a,o);Re.enter().append("g").classed(c.cn.axis,!0),Re.each(function(Te){var Ee=Te.model.height/Te.model.tickDistance,Ue=Te.domainScale,De=Ue.domain();_.select(this).call(_.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(Ee,Te.tickFormat).tickValues(Te.ordinal?De:null).tickFormat(function(je){return p.isOrdinal(Te)?je:U(Te.model.dimensions[Te.visibleIndex],je)}).scale(Ue)),i.font(Re.selectAll("text"),Te.model.tickFont)}),Re.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),Re.selectAll("text").style("text-shadow",t.makeTextShadow(K)).style("cursor","default");var we=xe.selectAll("."+c.cn.axisHeading).data(a,o);we.enter().append("g").classed(c.cn.axisHeading,!0);var Ae=we.selectAll("."+c.cn.axisTitle).data(a,o);Ae.enter().append("text").classed(c.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",H?"none":"auto"),Ae.text(function(Te){return Te.label}).each(function(Te){var Ee=_.select(this);i.font(Ee,Te.model.labelFont),t.convertToTspans(Ee,G)}).attr("transform",function(Te){var Ee=I(Te.model.labelAngle,Te.model.labelSide),Ue=c.axisTitleOffset;return(Ee.dir>0?"":l(0,2*Ue+Te.model.height))+f(Ee.degrees)+l(-Ue*Ee.dx,-Ue*Ee.dy)}).attr("text-anchor",function(Te){var Ee=I(Te.model.labelAngle,Te.model.labelSide);return 2*Math.abs(Ee.dx)>Math.abs(Ee.dy)?Ee.dir*Ee.dx<0?"start":"end":"middle"});var Me=xe.selectAll("."+c.cn.axisExtent).data(a,o);Me.enter().append("g").classed(c.cn.axisExtent,!0);var Ce=Me.selectAll("."+c.cn.axisExtentTop).data(a,o);Ce.enter().append("g").classed(c.cn.axisExtentTop,!0),Ce.attr("transform",l(0,-c.axisExtentOffset));var ne=Ce.selectAll("."+c.cn.axisExtentTopText).data(a,o);ne.enter().append("text").classed(c.cn.axisExtentTopText,!0).call(O),ne.text(function(Te){return B(Te,!0)}).each(function(Te){i.font(_.select(this),Te.model.rangeFont)});var ue=Me.selectAll("."+c.cn.axisExtentBottom).data(a,o);ue.enter().append("g").classed(c.cn.axisExtentBottom,!0),ue.attr("transform",function(Te){return l(0,Te.model.height+c.axisExtentOffset)});var me=ue.selectAll("."+c.cn.axisExtentBottomText).data(a,o);me.enter().append("text").classed(c.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(O),me.text(function(Te){return B(Te,!1)}).each(function(Te){i.font(_.select(this),Te.model.rangeFont)}),b.ensureAxisBrush(xe,K,G)}},21341:function(D,E,e){var _=e(17171),w=e(79749),s=e(1602).isVisible,T={};function y(f,l,t){var i=l.indexOf(t),r=f.indexOf(i);return r===-1&&(r+=l.length),r}(D.exports=function(f,l){var t=f._fullLayout;if(w(f,[],T)){var i={},r={},n={},o={},a=t._size;l.forEach(function(u,p){var c=u[0].trace;n[p]=c.index;var b=o[p]=c._fullInput.index;i[p]=f.data[b].dimensions,r[p]=f.data[b].dimensions.slice()}),_(f,l,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},{filterChanged:function(u,p,c){var b=r[u][p],d=c.map(function(h){return h.slice()}),v="dimensions["+p+"].constraintrange",x=t._tracePreGUI[f._fullData[n[u]]._fullInput.uid];if(x[v]===void 0){var g=b.constraintrange;x[v]=g||null}var m=f._fullData[n[u]].dimensions[p];d.length?(d.length===1&&(d=d[0]),b.constraintrange=d,m.constraintrange=d.slice(),d=[d]):(delete b.constraintrange,delete m.constraintrange,d=null);var k={};k[v]=d,f.emit("plotly_restyle",[k,[o[u]]])},hover:function(u){f.emit("plotly_hover",u)},unhover:function(u){f.emit("plotly_unhover",u)},axesMoved:function(u,p){var c=function(b,d){return function(v,x){return y(b,d,v)-y(b,d,x)}}(p,r[u].filter(s));i[u].sort(c),r[u].filter(function(b){return!s(b)}).sort(function(b){return r[u].indexOf(b)}).forEach(function(b){i[u].splice(i[u].indexOf(b),1),i[u].splice(r[u].indexOf(b),0,b)}),f.emit("plotly_restyle",[{dimensions:[i[u]]},[o[u]]])}})}}).reglPrecompiled=T},34e3:function(D,E,e){var _=e(9012),w=e(27670).Y,s=e(41940),T=e(22399),y=e(5386).fF,f=e(5386).si,l=e(1426).extendFlat,t=s({editType:"plot",arrayOk:!0,colorEditType:"plot"});D.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:T.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:l({},_.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:y({},{keys:["label","color","value","percent","text"]}),texttemplate:f({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:l({},t,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:l({},t,{}),outsidetextfont:l({},t,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:l({},t,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:w({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"},_deprecated:{title:{valType:"string",dflt:"",editType:"calc"},titlefont:l({},t,{}),titleposition:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"calc"}}}},13584:function(D,E,e){var _=e(74875);E.name="pie",E.plot=function(w,s,T,y){_.plotBasePlot(E.name,w,s,T,y)},E.clean=function(w,s,T,y){_.cleanBasePlot(E.name,w,s,T,y)}},32354:function(D,E,e){var _=e(92770),w=e(84267),s=e(7901),T={};function y(l){return function(t,i){return!!t&&!!(t=w(t)).isValid()&&(t=s.addOpacity(t,t.getAlpha()),l[i]||(l[i]=t),t)}}function f(l,t){var i,r=JSON.stringify(l),n=t[r];if(!n){for(n=l.slice(),i=0;i=0}),(t.type==="funnelarea"?m:t.sort)&&n.sort(function(C,L){return L.v-C.v}),n[0]&&(n[0].vTotal=g),n},crossTraceCalc:function(l,t){var i=(t||{}).type;i||(i="pie");var r=l._fullLayout,n=l.calcdata,o=r[i+"colorway"],a=r["_"+i+"colormap"];r["extend"+i+"colors"]&&(o=f(o,T));for(var u=0,p=0;p0){o=!0;break}}o||(n=0)}return{hasLabels:i,hasValues:r,len:n}}D.exports={handleLabelsAndValues:f,supplyDefaults:function(l,t,i,r){function n(x,g){return w.coerce(l,t,s,x,g)}var o=f(n("labels"),n("values")),a=o.len;if(t._hasLabels=o.hasLabels,t._hasValues=o.hasValues,!t._hasLabels&&t._hasValues&&(n("label0"),n("dlabel")),a){t._length=a,n("marker.line.width")&&n("marker.line.color"),n("marker.colors"),n("scalegroup");var u,p=n("text"),c=n("texttemplate");if(c||(u=n("textinfo",Array.isArray(p)?"text+percent":"percent")),n("hovertext"),n("hovertemplate"),c||u&&u!=="none"){var b=n("textposition");y(l,t,r,n,b,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(b)||b==="auto"||b==="outside")&&n("automargin"),(b==="inside"||b==="auto"||Array.isArray(b))&&n("insidetextorientation")}T(t,r,n);var d=n("hole");if(n("title.text")){var v=n("title.position",d?"middle center":"top center");d||v!=="middle center"||(t.title.position="top center"),w.coerceFont(n,"title.font",r.font)}n("sort"),n("direction"),n("rotation"),n("pull")}else t.visible=!1}}},20007:function(D,E,e){var _=e(23469).appendArrayMultiPointValues;D.exports=function(w,s){var T={curveNumber:s.index,pointNumbers:w.pts,data:s._input,fullData:s,label:w.label,color:w.color,value:w.v,percent:w.percent,text:w.text,bbox:w.bbox,v:w.v};return w.pts.length===1&&(T.pointNumber=T.i=w.pts[0]),_(T,s,w.pts),s.type==="funnelarea"&&(delete T.v,delete T.i),T}},53581:function(D,E,e){var _=e(71828);function w(s){return s.indexOf("e")!==-1?s.replace(/[.]?0+e/,"e"):s.indexOf(".")!==-1?s.replace(/[.]?0+$/,""):s}E.formatPiePercent=function(s,T){var y=w((100*s).toPrecision(3));return _.numSeparate(y,T)+"%"},E.formatPieValue=function(s,T){var y=w(s.toPrecision(10));return _.numSeparate(y,T)},E.getFirstFilled=function(s,T){if(Array.isArray(s))for(var y=0;y"),name:ae.hovertemplate||oe.indexOf("name")!==-1?ae.name:void 0,idealAlign:K.pxmid[0]<0?"left":"right",color:u.castOption(xe.bgcolor,K.pts)||K.color,borderColor:u.castOption(xe.bordercolor,K.pts),fontFamily:u.castOption(Re.family,K.pts),fontSize:u.castOption(Re.size,K.pts),fontColor:u.castOption(Re.color,K.pts),nameLength:u.castOption(xe.namelength,K.pts),textAlign:u.castOption(xe.align,K.pts),hovertemplate:u.castOption(ae.hovertemplate,K.pts),hovertemplateLabels:K,eventData:[p(K,ae)]},{container:te._hoverlayer.node(),outerContainer:te._paper.node(),gd:j,inOut_bbox:we}),K.bbox=we[0],X._hasHoverLabel=!0}X._hasHoverEvent=!0,j.emit("plotly_hover",{points:[p(K,ae)],event:_.event})}}),N.on("mouseout",function(K){var te=j._fullLayout,ae=j._fullData[X.index],oe=_.select(this).datum();X._hasHoverEvent&&(K.originalEvent=_.event,j.emit("plotly_unhover",{points:[p(oe,ae)],event:_.event}),X._hasHoverEvent=!1),X._hasHoverLabel&&(s.loneUnhover(te._hoverlayer.node()),X._hasHoverLabel=!1)}),N.on("click",function(K){var te=j._fullLayout,ae=j._fullData[X.index];j._dragging||te.hovermode===!1||(j._hoverdata=[p(K,ae)],s.click(j,_.event))})}function d(N,j,V){var H=u.castOption(N.insidetextfont.color,j.pts);!H&&N._input.textfont&&(H=u.castOption(N._input.textfont.color,j.pts));var ee=u.castOption(N.insidetextfont.family,j.pts)||u.castOption(N.textfont.family,j.pts)||V.family,Q=u.castOption(N.insidetextfont.size,j.pts)||u.castOption(N.textfont.size,j.pts)||V.size;return{color:H||T.contrast(j.color),family:ee,size:Q}}function v(N,j){for(var V,H,ee=0;eeUe&&Ue>je||De=-4;de-=2)he(Math.PI*de,"tan");for(de=4;de>=-4;de-=2)he(Math.PI*(de+1),"tan")}if(oe||fe){for(de=4;de>=-4;de-=2)he(Math.PI*(de+1.5),"rad");for(de=4;de>=-4;de-=2)he(Math.PI*(de+.5),"rad")}}if(Y||ye||oe){var xe=Math.sqrt(N.width*N.width+N.height*N.height);if((Q={scale:ee*H*2/xe,rCenter:1-ee,rotate:0}).textPosAngle=(j.startangle+j.stopangle)/2,Q.scale>=1)return Q;pe.push(Q)}(ye||fe)&&((Q=g(N,H,X,K,te)).textPosAngle=(j.startangle+j.stopangle)/2,pe.push(Q)),(ye||se)&&((Q=m(N,H,X,K,te)).textPosAngle=(j.startangle+j.stopangle)/2,pe.push(Q));for(var Re=0,we=0,Ae=0;Ae=1)break}return pe[Re]}function g(N,j,V,H,ee){j=Math.max(0,j-2*a);var Q=N.width/N.height,X=M(Q,H,j,V);return{scale:2*X/N.height,rCenter:k(Q,X/j),rotate:h(ee)}}function m(N,j,V,H,ee){j=Math.max(0,j-2*a);var Q=N.height/N.width,X=M(Q,H,j,V);return{scale:2*X/N.width,rCenter:k(Q,X/j),rotate:h(ee+Math.PI/2)}}function k(N,j){return Math.cos(j)-N*j}function h(N){return(180/Math.PI*N+720)%180-90}function M(N,j,V,H){var ee=N+1/(2*Math.tan(j));return V*Math.min(1/(Math.sqrt(ee*ee+.5)+ee),H/(Math.sqrt(N*N+H/2)+N))}function A(N,j){return N.v!==j.vTotal||j.trace.hole?Math.min(1/(1+1/Math.sin(N.halfangle)),N.ring/2):1}function C(N,j){var V=j.pxmid[0],H=j.pxmid[1],ee=N.width/2,Q=N.height/2;return V<0&&(ee*=-1),H<0&&(Q*=-1),{scale:1,rCenter:1,rotate:0,x:ee+Math.abs(Q)*(ee>0?1:-1)/2,y:Q/(1+V*V/(H*H)),outside:!0}}function L(N,j){var V,H,ee,Q=N.trace,X={x:N.cx,y:N.cy},Y={tx:0,ty:0};Y.ty+=Q.title.font.size,ee=I(Q),Q.title.position.indexOf("top")!==-1?(X.y-=(1+ee)*N.r,Y.ty-=N.titleBox.height):Q.title.position.indexOf("bottom")!==-1&&(X.y+=(1+ee)*N.r);var K,te=N.r/((K=N.trace.aspectratio)===void 0?1:K),ae=j.w*(Q.domain.x[1]-Q.domain.x[0])/2;return Q.title.position.indexOf("left")!==-1?(ae+=te,X.x-=(1+ee)*te,Y.tx+=N.titleBox.width/2):Q.title.position.indexOf("center")!==-1?ae*=2:Q.title.position.indexOf("right")!==-1&&(ae+=te,X.x+=(1+ee)*te,Y.tx-=N.titleBox.width/2),V=ae/N.titleBox.width,H=O(N,j)/N.titleBox.height,{x:X.x,y:X.y,scale:Math.min(V,H),tx:Y.tx,ty:Y.ty}}function O(N,j){var V=N.trace,H=j.h*(V.domain.y[1]-V.domain.y[0]);return Math.min(N.titleBox.height,H/2)}function I(N){var j,V=N.pull;if(!V)return 0;if(Array.isArray(V))for(V=0,j=0;jV&&(V=N.pull[j]);return V}function R(N,j){for(var V=[],H=0;H1?Ae=(we=fe.r)/pe.aspectratio:we=(Ae=fe.r)*pe.aspectratio,Re=(we*=(1+pe.baseratio)/2)*Ae}he=Math.min(he,Re/fe.vTotal)}for(ye=0;ye")}if(Q){var de=f.castOption(ee,j.i,"texttemplate");if(de){var he=function(Re){return{label:Re.label,value:Re.v,valueLabel:u.formatPieValue(Re.v,H.separators),percent:Re.v/V.vTotal,percentLabel:u.formatPiePercent(Re.v/V.vTotal,H.separators),color:Re.color,text:Re.text,customdata:f.castOption(ee,Re.i,"customdata")}}(j),xe=u.getFirstFilled(ee.text,j.pts);(c(xe)||xe==="")&&(he.text=xe),j.text=f.texttemplateString(de,he,N._fullLayout._d3locale,he,ee._meta||{})}else j.text=""}}function G(N,j){var V=N.rotate*Math.PI/180,H=Math.cos(V),ee=Math.sin(V),Q=(j.left+j.right)/2,X=(j.top+j.bottom)/2;N.textX=Q*H-X*ee,N.textY=Q*ee+X*H,N.noCenter=!0}D.exports={plot:function(N,j){var V=N._context.staticPlot,H=N._fullLayout,ee=H._size;o("pie",H),v(j,N),R(j,ee);var Q=f.makeTraceGroups(H._pielayer,j,"trace").each(function(X){var Y=_.select(this),K=X[0],te=K.trace;(function(ae){var oe,se,fe,ye=ae[0],pe=ye.r,de=ye.trace,he=u.getRotationAngle(de.rotation),xe=2*Math.PI/ye.vTotal,Re="px0",we="px1";if(de.direction==="counterclockwise"){for(oe=0;oeye.vTotal/2?1:0,se.halfangle=Math.PI*Math.min(se.v/ye.vTotal,.5),se.ring=1-de.hole,se.rInscribed=A(se,ye))})(X),Y.attr("stroke-linejoin","round"),Y.each(function(){var ae=_.select(this).selectAll("g.slice").data(X);ae.enter().append("g").classed("slice",!0),ae.exit().remove();var oe=[[[],[]],[[],[]]],se=!1;ae.each(function(we,Ae){if(we.hidden)_.select(this).selectAll("path,g").remove();else{we.pointNumber=we.i,we.curveNumber=te.index,oe[we.pxmid[1]<0?0:1][we.pxmid[0]<0?0:1].push(we);var Me=K.cx,Ce=K.cy,ne=_.select(this),ue=ne.selectAll("path.surface").data([we]);if(ue.enter().append("path").classed("surface",!0).style({"pointer-events":V?"none":"all"}),ne.call(b,N,X),te.pull){var me=+u.castOption(te.pull,we.pts)||0;me>0&&(Me+=me*we.pxmid[0],Ce+=me*we.pxmid[1])}we.cxFinal=Me,we.cyFinal=Ce;var Te=te.hole;if(we.v===K.vTotal){var Ee="M"+(Me+we.px0[0])+","+(Ce+we.px0[1])+be(we.px0,we.pxmid,!0,1)+be(we.pxmid,we.px0,!0,1)+"Z";Te?ue.attr("d","M"+(Me+Te*we.px0[0])+","+(Ce+Te*we.px0[1])+be(we.px0,we.pxmid,!1,Te)+be(we.pxmid,we.px0,!1,Te)+"Z"+Ee):ue.attr("d",Ee)}else{var Ue=be(we.px0,we.px1,!0,1);if(Te){var De=1-Te;ue.attr("d","M"+(Me+Te*we.px1[0])+","+(Ce+Te*we.px1[1])+be(we.px1,we.px0,!1,Te)+"l"+De*we.px0[0]+","+De*we.px0[1]+Ue+"Z")}else ue.attr("d","M"+Me+","+Ce+"l"+we.px0[0]+","+we.px0[1]+Ue+"Z")}B(N,we,K);var je=u.castOption(te.textposition,we.pts),ge=ne.selectAll("g.slicetext").data(we.text&&je!=="none"?[0]:[]);ge.enter().append("g").classed("slicetext",!0),ge.exit().remove(),ge.each(function(){var Se=f.ensureSingle(_.select(this),"text","",function(Et){Et.attr("data-notex",1)}),Ne=f.ensureUniformFontSize(N,je==="outside"?function(Et,Tt,xt){return{color:u.castOption(Et.outsidetextfont.color,Tt.pts)||u.castOption(Et.textfont.color,Tt.pts)||xt.color,family:u.castOption(Et.outsidetextfont.family,Tt.pts)||u.castOption(Et.textfont.family,Tt.pts)||xt.family,size:u.castOption(Et.outsidetextfont.size,Tt.pts)||u.castOption(Et.textfont.size,Tt.pts)||xt.size}}(te,we,H.font):d(te,we,H.font));Se.text(we.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(y.font,Ne).call(i.convertToTspans,N);var Ye,Ze=y.bBox(Se.node());if(je==="outside")Ye=C(Ze,we);else if(Ye=x(Ze,we,K),je==="auto"&&Ye.scale<1){var st=f.ensureUniformFontSize(N,te.outsidetextfont);Se.call(y.font,st),Ye=C(Ze=y.bBox(Se.node()),we)}var ot=Ye.textPosAngle,ft=ot===void 0?we.pxmid:U(K.r,ot);if(Ye.targetX=Me+ft[0]*Ye.rCenter+(Ye.x||0),Ye.targetY=Ce+ft[1]*Ye.rCenter+(Ye.y||0),G(Ye,Ze),Ye.outside){var yt=Ye.targetY;we.yLabelMin=yt-Ze.height/2,we.yLabelMid=yt,we.yLabelMax=yt+Ze.height/2,we.labelExtraX=0,we.labelExtraY=0,se=!0}Ye.fontSize=Ne.size,n(te.type,Ye,H),X[Ae].transform=Ye,f.setTransormAndDisplay(Se,Ye)})}function be(Se,Ne,Ye,Ze){var st=Ze*(Ne[0]-Se[0]),ot=Ze*(Ne[1]-Se[1]);return"a"+Ze*K.r+","+Ze*K.r+" 0 "+we.largeArc+(Ye?" 1 ":" 0 ")+st+","+ot}});var fe=_.select(this).selectAll("g.titletext").data(te.title.text?[0]:[]);if(fe.enter().append("g").classed("titletext",!0),fe.exit().remove(),fe.each(function(){var we,Ae=f.ensureSingle(_.select(this),"text","",function(Ce){Ce.attr("data-notex",1)}),Me=te.title.text;te._meta&&(Me=f.templateString(Me,te._meta)),Ae.text(Me).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(y.font,te.title.font).call(i.convertToTspans,N),we=te.title.position==="middle center"?function(Ce){var ne=Math.sqrt(Ce.titleBox.width*Ce.titleBox.width+Ce.titleBox.height*Ce.titleBox.height);return{x:Ce.cx,y:Ce.cy,scale:Ce.trace.hole*Ce.r*2/ne,tx:0,ty:-Ce.titleBox.height/2+Ce.trace.title.font.size}}(K):L(K,ee),Ae.attr("transform",t(we.x,we.y)+l(Math.min(1,we.scale))+t(we.tx,we.ty))}),se&&function(we,Ae){var Me,Ce,ne,ue,me,Te,Ee,Ue,De,je,ge,be,Se;function Ne(ot,ft){return ot.pxmid[1]-ft.pxmid[1]}function Ye(ot,ft){return ft.pxmid[1]-ot.pxmid[1]}function Ze(ot,ft){ft||(ft={});var yt,Et,Tt,xt,Dt=ft.labelExtraY+(Ce?ft.yLabelMax:ft.yLabelMin),It=Ce?ot.yLabelMin:ot.yLabelMax,Ft=Ce?ot.yLabelMax:ot.yLabelMin,qt=ot.cyFinal+me(ot.px0[1],ot.px1[1]),Nt=Dt-It;if(Nt*Ee>0&&(ot.labelExtraY=Nt),Array.isArray(Ae.pull))for(Et=0;Et=(u.castOption(Ae.pull,Tt.pts)||0)||((ot.pxmid[1]-Tt.pxmid[1])*Ee>0?(Nt=Tt.cyFinal+me(Tt.px0[1],Tt.px1[1])-It-ot.labelExtraY)*Ee>0&&(ot.labelExtraY+=Nt):(Ft+ot.labelExtraY-qt)*Ee>0&&(yt=3*Te*Math.abs(Et-je.indexOf(ot)),(xt=Tt.cxFinal+ue(Tt.px0[0],Tt.px1[0])+yt-(ot.cxFinal+ot.pxmid[0])-ot.labelExtraX)*Te>0&&(ot.labelExtraX+=xt)))}for(Ce=0;Ce<2;Ce++)for(ne=Ce?Ne:Ye,me=Ce?Math.max:Math.min,Ee=Ce?1:-1,Me=0;Me<2;Me++){for(ue=Me?Math.max:Math.min,Te=Me?1:-1,(Ue=we[Ce][Me]).sort(ne),De=we[1-Ce][Me],je=De.concat(Ue),be=[],ge=0;geMath.abs(Ue)?me+="l"+Ue*Me.pxmid[0]/Me.pxmid[1]+","+Ue+"H"+(ue+Me.labelExtraX+Te):me+="l"+Me.labelExtraX+","+Ee+"v"+(Ue-Ee)+"h"+Te}else me+="V"+(Me.yLabelMid+Me.labelExtraY)+"h"+Te;f.ensureSingle(Ce,"path","textline").call(T.stroke,Ae.outsidetextfont.color).attr({"stroke-width":Math.min(2,Ae.outsidetextfont.size/8),d:me,fill:"none"})}else Ce.select("path.textline").remove()})}(ae,te),se&&te.automargin){var ye=y.bBox(Y.node()),pe=te.domain,de=ee.w*(pe.x[1]-pe.x[0]),he=ee.h*(pe.y[1]-pe.y[0]),xe=(.5*de-K.r)/ee.w,Re=(.5*he-K.r)/ee.h;w.autoMargin(N,"pie."+te.uid+".automargin",{xl:pe.x[0]-xe,xr:pe.x[1]+xe,yb:pe.y[0]-Re,yt:pe.y[1]+Re,l:Math.max(K.cx-K.r-ye.left,0),r:Math.max(ye.right-(K.cx+K.r),0),b:Math.max(ye.bottom-(K.cy+K.r),0),t:Math.max(K.cy-K.r-ye.top,0),pad:5})}})});setTimeout(function(){Q.selectAll("tspan").each(function(){var X=_.select(this);X.attr("dy")&&X.attr("dy",X.attr("dy"))})},0)},formatSliceLabel:B,transformInsideText:x,determineInsideTextFont:d,positionTitleOutside:L,prerenderTitles:v,layoutAreas:R,attachFxHandlers:b,computeTransform:G}},68357:function(D,E,e){var _=e(39898),w=e(63463),s=e(72597).resizeText;D.exports=function(T){var y=T._fullLayout._pielayer.selectAll(".trace");s(T,y,"pie"),y.each(function(f){var l=f[0].trace,t=_.select(this);t.style({opacity:l.opacity}),t.selectAll("path.surface").each(function(i){_.select(this).call(w,i,l)})})}},63463:function(D,E,e){var _=e(7901),w=e(53581).castOption;D.exports=function(s,T,y){var f=y.marker.line,l=w(f.color,T.pts)||_.defaultLine,t=w(f.width,T.pts)||0;s.style("stroke-width",t).call(_.fill,T.color).call(_.stroke,l)}},10959:function(D,E,e){var _=e(82196);D.exports={x:_.x,y:_.y,xy:{valType:"data_array",editType:"calc"},indices:{valType:"data_array",editType:"calc"},xbounds:{valType:"data_array",editType:"calc"},ybounds:{valType:"data_array",editType:"calc"},text:_.text,marker:{color:{valType:"color",arrayOk:!1,editType:"calc"},opacity:{valType:"number",min:0,max:1,dflt:1,arrayOk:!1,editType:"calc"},blend:{valType:"boolean",dflt:null,editType:"calc"},sizemin:{valType:"number",min:.1,max:2,dflt:.5,editType:"calc"},sizemax:{valType:"number",min:.1,dflt:20,editType:"calc"},border:{color:{valType:"color",arrayOk:!1,editType:"calc"},arearatio:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},editType:"calc"},editType:"calc"},transforms:void 0}},42743:function(D,E,e){var _=e(9330).gl_pointcloud2d,w=e(78614),s=e(71739).findExtremes,T=e(34603);function y(l,t){this.scene=l,this.uid=t,this.type="pointcloud",this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color="rgb(0, 0, 0)",this.name="",this.hoverinfo="all",this.idToIndex=new Int32Array(0),this.bounds=[0,0,0,0],this.pointcloudOptions={positions:new Float32Array(0),idToIndex:this.idToIndex,sizemin:.5,sizemax:12,color:[0,0,0,1],areaRatio:1,borderColor:[0,0,0,1]},this.pointcloud=_(l.glplot,this.pointcloudOptions),this.pointcloud._trace=this}var f=y.prototype;f.handlePick=function(l){var t=this.idToIndex[l.pointId];return{trace:this,dataCoord:l.dataCoord,traceCoord:this.pickXYData?[this.pickXYData[2*t],this.pickXYData[2*t+1]]:[this.pickXData[t],this.pickYData[t]],textLabel:Array.isArray(this.textLabels)?this.textLabels[t]:this.textLabels,color:this.color,name:this.name,pointIndex:t,hoverinfo:this.hoverinfo}},f.update=function(l){this.index=l.index,this.textLabels=l.text,this.name=l.name,this.hoverinfo=l.hoverinfo,this.bounds=[1/0,1/0,-1/0,-1/0],this.updateFast(l),this.color=T(l,{})},f.updateFast=function(l){var t,i,r,n,o,a,u=this.xData=this.pickXData=l.x,p=this.yData=this.pickYData=l.y,c=this.pickXYData=l.xy,b=l.xbounds&&l.ybounds,d=l.indices,v=this.bounds;if(c){if(r=c,t=c.length>>>1,b)v[0]=l.xbounds[0],v[2]=l.xbounds[1],v[1]=l.ybounds[0],v[3]=l.ybounds[1];else for(a=0;av[2]&&(v[2]=n),ov[3]&&(v[3]=o);if(d)i=d;else for(i=new Int32Array(t),a=0;av[2]&&(v[2]=n),ov[3]&&(v[3]=o);this.idToIndex=i,this.pointcloudOptions.idToIndex=i,this.pointcloudOptions.positions=r;var x=w(l.marker.color),g=w(l.marker.border.color),m=l.opacity*l.marker.opacity;x[3]*=m,this.pointcloudOptions.color=x;var k=l.marker.blend;k===null&&(k=u.length<100||p.length<100),this.pointcloudOptions.blend=k,g[3]*=m,this.pointcloudOptions.borderColor=g;var h=l.marker.sizemin,M=Math.max(l.marker.sizemax,l.marker.sizemin);this.pointcloudOptions.sizeMin=h,this.pointcloudOptions.sizeMax=M,this.pointcloudOptions.areaRatio=l.marker.border.arearatio,this.pointcloud.update(this.pointcloudOptions);var A=this.scene.xaxis,C=this.scene.yaxis,L=M/2||.5;l._extremes[A._id]=s(A,[v[0],v[2]],{ppad:L}),l._extremes[C._id]=s(C,[v[1],v[3]],{ppad:L})},f.dispose=function(){this.pointcloud.dispose()},D.exports=function(l,t){var i=new y(l,t.uid);return i.update(t),i}},33876:function(D,E,e){var _=e(71828),w=e(10959);D.exports=function(s,T,y){function f(l,t){return _.coerce(s,T,w,l,t)}f("x"),f("y"),f("xbounds"),f("ybounds"),s.xy&&s.xy instanceof Float32Array&&(T.xy=s.xy),s.indices&&s.indices instanceof Int32Array&&(T.indices=s.indices),f("text"),f("marker.color",y),f("marker.opacity"),f("marker.blend"),f("marker.sizemin"),f("marker.sizemax"),f("marker.border.color",y),f("marker.border.arearatio"),T._length=null}},20593:function(D,E,e){D.exports={attributes:e(10959),supplyDefaults:e(33876),calc:e(36563),plot:e(42743),moduleType:"trace",name:"pointcloud",basePlotModule:e(4796),categories:["gl","gl2d","showLegend"],meta:{}}},39953:function(D,E,e){var _=e(41940),w=e(9012),s=e(22399),T=e(77914),y=e(27670).Y,f=e(5386).fF,l=e(50693),t=e(44467).templatedArray,i=e(12663).descriptionOnlyNumbers,r=e(1426).extendFlat,n=e(30962).overrideAll;(D.exports=n({hoverinfo:r({},w.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:T.hoverlabel,domain:y({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:i("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:_({}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:s.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:T.hoverlabel,hovertemplate:f({},{keys:["value","label"]})},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:s.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:T.hoverlabel,hovertemplate:f({},{keys:["value","label"]}),colorscales:t("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:r(l().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")).transforms=void 0},75536:function(D,E,e){var _=e(30962).overrideAll,w=e(27659).a0,s=e(60436),T=e(528),y=e(6964),f=e(28569),l=e(47322).prepSelect,t=e(71828),i=e(73972),r="sankey";function n(o,a){var u=o._fullData[a],p=o._fullLayout,c=p.dragmode,b=p.dragmode==="pan"?"move":"crosshair",d=u._bgRect;if(d&&c!=="pan"&&c!=="zoom"){y(d,b);var v={_id:"x",c2p:t.identity,_offset:u._sankey.translateX,_length:u._sankey.width},x={_id:"y",c2p:t.identity,_offset:u._sankey.translateY,_length:u._sankey.height},g={gd:o,element:d.node(),plotinfo:{id:a,xaxis:v,yaxis:x,fillRangeItems:t.noop},subplot:a,xaxes:[v],yaxes:[x],doneFnCompleted:function(m){var k,h=o._fullData[a],M=h.node.groups.slice(),A=[];function C(R){for(var U=h._sankey.graph.nodes,B=0;Bk&&(k=a.source[n]),a.target[n]>k&&(k=a.target[n]);var h,M=k+1;r.node._count=M;var A=r.node.groups,C={};for(n=0;n0&&y(B,M)&&y(G,M)&&(!C.hasOwnProperty(B)||!C.hasOwnProperty(G)||C[B]!==C[G])){C.hasOwnProperty(G)&&(G=C[G]),C.hasOwnProperty(B)&&(B=C[B]),G=+G,b[B=+B]=b[G]=!0;var N="";a.label&&a.label[n]&&(N=a.label[n]);var j=null;N&&d.hasOwnProperty(N)&&(j=d[N]),u.push({pointNumber:n,label:N,color:p?a.color[n]:a.color,customdata:c?a.customdata[n]:a.customdata,concentrationscale:j,source:B,target:G,value:+U}),R.source.push(B),R.target.push(G)}}var V=M+A.length,H=T(o.color),ee=T(o.customdata),Q=[];for(n=0;nM-1,childrenNodes:[],pointNumber:n,label:X,color:H?o.color[n]:o.color,customdata:ee?o.customdata[n]:o.customdata})}var Y=!1;return function(K,te,ae){for(var oe=w.init2dArray(K,0),se=0;se1})}(V,R.source,R.target)&&(Y=!0),{circular:Y,links:u,nodes:Q,groups:A,groupLookup:C}}(t);return s({circular:i.circular,_nodes:i.nodes,_links:i.links,_groups:i.groups,_groupLookup:i.groupLookup})}},85247:function(D){D.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}},26857:function(D,E,e){var _=e(71828),w=e(39953),s=e(7901),T=e(84267),y=e(27670).c,f=e(38048),l=e(44467),t=e(85501);function i(r,n){function o(a,u){return _.coerce(r,n,w.link.colorscales,a,u)}o("label"),o("cmin"),o("cmax"),o("colorscale")}D.exports=function(r,n,o,a){function u(M,A){return _.coerce(r,n,w,M,A)}var p=_.extendDeep(a.hoverlabel,r.hoverlabel),c=r.node,b=l.newContainer(n,"node");function d(M,A){return _.coerce(c,b,w.node,M,A)}d("label"),d("groups"),d("x"),d("y"),d("pad"),d("thickness"),d("line.color"),d("line.width"),d("hoverinfo",r.hoverinfo),f(c,b,d,p),d("hovertemplate");var v=a.colorway;d("color",b.label.map(function(M,A){return s.addOpacity(function(C){return v[C%v.length]}(A),.8)})),d("customdata");var x=r.link||{},g=l.newContainer(n,"link");function m(M,A){return _.coerce(x,g,w.link,M,A)}m("label"),m("arrowlen"),m("source"),m("target"),m("value"),m("line.color"),m("line.width"),m("hoverinfo",r.hoverinfo),f(x,g,m,p),m("hovertemplate");var k,h=T(a.paper_bgcolor).getLuminance()<.333?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)";m("color",_.repeat(h,g.value.length)),m("customdata"),t(x,g,{name:"colorscales",handleItemDefaults:i}),y(n,a,u),u("orientation"),u("valueformat"),u("valuesuffix"),b.x.length&&b.y.length&&(k="freeform"),u("arrangement",k),_.coerceFont(u,"textfont",_.extendFlat({},a.font)),n._length=null}},29396:function(D,E,e){D.exports={attributes:e(39953),supplyDefaults:e(26857),calc:e(92930),plot:e(60436),moduleType:"trace",name:"sankey",basePlotModule:e(75536),selectPoints:e(84564),categories:["noOpacity"],meta:{}}},60436:function(D,E,e){var _=e(39898),w=e(71828),s=w.numberFormat,T=e(3393),y=e(30211),f=e(7901),l=e(85247).cn,t=w._;function i(x){return x!==""}function r(x,g){return x.filter(function(m){return m.key===g.traceId})}function n(x,g){_.select(x).select("path").style("fill-opacity",g),_.select(x).select("rect").style("fill-opacity",g)}function o(x){_.select(x).select("text.name").style("fill","black")}function a(x){return function(g){return x.node.sourceLinks.indexOf(g.link)!==-1||x.node.targetLinks.indexOf(g.link)!==-1}}function u(x){return function(g){return g.node.sourceLinks.indexOf(x.link)!==-1||g.node.targetLinks.indexOf(x.link)!==-1}}function p(x,g,m){g&&m&&r(m,g).selectAll("."+l.sankeyLink).filter(a(g)).call(b.bind(0,g,m,!1))}function c(x,g,m){g&&m&&r(m,g).selectAll("."+l.sankeyLink).filter(a(g)).call(d.bind(0,g,m,!1))}function b(x,g,m,k){var h=k.datum().link.label;k.style("fill-opacity",function(M){if(!M.link.concentrationscale)return .4}),h&&r(g,x).selectAll("."+l.sankeyLink).filter(function(M){return M.link.label===h}).style("fill-opacity",function(M){if(!M.link.concentrationscale)return .4}),m&&r(g,x).selectAll("."+l.sankeyNode).filter(u(x)).call(p)}function d(x,g,m,k){var h=k.datum().link.label;k.style("fill-opacity",function(M){return M.tinyColorAlpha}),h&&r(g,x).selectAll("."+l.sankeyLink).filter(function(M){return M.link.label===h}).style("fill-opacity",function(M){return M.tinyColorAlpha}),m&&r(g,x).selectAll(l.sankeyNode).filter(u(x)).call(c)}function v(x,g){var m=x.hoverlabel||{},k=w.nestedProperty(m,g).get();return!Array.isArray(k)&&k}D.exports=function(x,g){for(var m=x._fullLayout,k=m._paper,h=m._size,M=0;M"),color:v(G,"bgcolor")||f.addOpacity(H.color,1),borderColor:v(G,"bordercolor"),fontFamily:v(G,"font.family"),fontSize:v(G,"font.size"),fontColor:v(G,"font.color"),nameLength:v(G,"namelength"),textAlign:v(G,"align"),idealAlign:_.event.x"),color:v(G,"bgcolor")||B.tinyColorHue,borderColor:v(G,"bordercolor"),fontFamily:v(G,"font.family"),fontSize:v(G,"font.size"),fontColor:v(G,"font.color"),nameLength:v(G,"namelength"),textAlign:v(G,"align"),idealAlign:"left",hovertemplate:G.hovertemplate,hovertemplateLabels:X,eventData:[B.node]},{container:m._hoverlayer.node(),outerContainer:m._paper.node(),gd:x});n(te,.85),o(te)}}},unhover:function(U,B,G){x._fullLayout.hovermode!==!1&&(_.select(U).call(c,B,G),B.node.trace.node.hoverinfo!=="skip"&&(B.node.fullData=B.node.trace,x.emit("plotly_unhover",{event:_.event,points:[B.node]})),y.loneUnhover(m._hoverlayer.node()))},select:function(U,B,G){var N=B.node;N.originalEvent=_.event,x._hoverdata=[N],_.select(U).call(c,B,G),y.click(x,{target:!0})}}})}},3393:function(D,E,e){var _=e(49887),w=e(81684).k4,s=e(39898),T=e(30838),y=e(86781),f=e(85247),l=e(84267),t=e(7901),i=e(91424),r=e(71828),n=r.strTranslate,o=r.strRotate,a=e(28984),u=a.keyFun,p=a.repeat,c=a.unwrap,b=e(63893),d=e(73972),v=e(18783),x=v.CAP_SHIFT,g=v.LINE_SPACING;function m(V,H,ee){var Q,X=c(H),Y=X.trace,K=Y.domain,te=Y.orientation==="h",ae=Y.node.pad,oe=Y.node.thickness,se=V.width*(K.x[1]-K.x[0]),fe=V.height*(K.y[1]-K.y[0]),ye=X._nodes,pe=X._links,de=X.circular;(Q=de?y.sankeyCircular().circularLinkGap(0):T.sankey()).iterations(f.sankeyIterations).size(te?[se,fe]:[fe,se]).nodeWidth(oe).nodePadding(ae).nodeId(function(Te){return Te.pointNumber}).nodes(ye).links(pe);var he,xe,Re,we=Q();for(var Ae in Q.nodePadding()be+oe&&(ge+=1,Ee=Se.x0),be=Se.x0,je[ge]||(je[ge]=[]),je[ge].push(Se),Ue=Ee-Se.x0,Se.x0+=Ue,Se.x1+=Ue}return je}(ye=we.nodes).forEach(function(Te){var Ee,Ue,De,je=0,ge=Te.length;for(Te.sort(function(be,Se){return be.y0-Se.y0}),De=0;De=je||(Ue=je-Ee.y0)>1e-6&&(Ee.y0+=Ue,Ee.y1+=Ue),je=Ee.y1+ae}),Q.update(we)}return{circular:de,key:ee,trace:Y,guid:r.randstr(),horizontal:te,width:se,height:fe,nodePad:Y.node.pad,nodeLineColor:Y.node.line.color,nodeLineWidth:Y.node.line.width,linkLineColor:Y.link.line.color,linkLineWidth:Y.link.line.width,linkArrowLength:Y.link.arrowlen,valueFormat:Y.valueformat,valueSuffix:Y.valuesuffix,textFont:Y.textfont,translateX:K.x[0]*V.width+V.margin.l,translateY:V.height-K.y[1]*V.height+V.margin.t,dragParallel:te?fe:se,dragPerpendicular:te?se:fe,arrangement:Y.arrangement,sankey:Q,graph:we,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function k(V,H,ee){var Q=l(H.color),X=H.source.label+"|"+H.target.label+"__"+ee;return H.trace=V.trace,H.curveNumber=V.trace.index,{circular:V.circular,key:X,traceId:V.key,pointNumber:H.pointNumber,link:H,tinyColorHue:t.tinyRGB(Q),tinyColorAlpha:Q.getAlpha(),linkPath:h,linkLineColor:V.linkLineColor,linkLineWidth:V.linkLineWidth,linkArrowLength:V.linkArrowLength,valueFormat:V.valueFormat,valueSuffix:V.valueSuffix,sankey:V.sankey,parent:V,interactionState:V.interactionState,flow:H.flow}}function h(){return function(V){var H=V.linkArrowLength;if(V.link.circular)return function(xe,Re){var we=xe.width/2,Ae=xe.circularPathData;return xe.circularLinkType==="top"?"M "+(Ae.targetX-Re)+" "+(Ae.targetY+we)+" L"+(Ae.rightInnerExtent-Re)+" "+(Ae.targetY+we)+"A"+(Ae.rightLargeArcRadius+we)+" "+(Ae.rightSmallArcRadius+we)+" 0 0 1 "+(Ae.rightFullExtent-we-Re)+" "+(Ae.targetY-Ae.rightSmallArcRadius)+"L"+(Ae.rightFullExtent-we-Re)+" "+Ae.verticalRightInnerExtent+"A"+(Ae.rightLargeArcRadius+we)+" "+(Ae.rightLargeArcRadius+we)+" 0 0 1 "+(Ae.rightInnerExtent-Re)+" "+(Ae.verticalFullExtent-we)+"L"+Ae.leftInnerExtent+" "+(Ae.verticalFullExtent-we)+"A"+(Ae.leftLargeArcRadius+we)+" "+(Ae.leftLargeArcRadius+we)+" 0 0 1 "+(Ae.leftFullExtent+we)+" "+Ae.verticalLeftInnerExtent+"L"+(Ae.leftFullExtent+we)+" "+(Ae.sourceY-Ae.leftSmallArcRadius)+"A"+(Ae.leftLargeArcRadius+we)+" "+(Ae.leftSmallArcRadius+we)+" 0 0 1 "+Ae.leftInnerExtent+" "+(Ae.sourceY+we)+"L"+Ae.sourceX+" "+(Ae.sourceY+we)+"L"+Ae.sourceX+" "+(Ae.sourceY-we)+"L"+Ae.leftInnerExtent+" "+(Ae.sourceY-we)+"A"+(Ae.leftLargeArcRadius-we)+" "+(Ae.leftSmallArcRadius-we)+" 0 0 0 "+(Ae.leftFullExtent-we)+" "+(Ae.sourceY-Ae.leftSmallArcRadius)+"L"+(Ae.leftFullExtent-we)+" "+Ae.verticalLeftInnerExtent+"A"+(Ae.leftLargeArcRadius-we)+" "+(Ae.leftLargeArcRadius-we)+" 0 0 0 "+Ae.leftInnerExtent+" "+(Ae.verticalFullExtent+we)+"L"+(Ae.rightInnerExtent-Re)+" "+(Ae.verticalFullExtent+we)+"A"+(Ae.rightLargeArcRadius-we)+" "+(Ae.rightLargeArcRadius-we)+" 0 0 0 "+(Ae.rightFullExtent+we-Re)+" "+Ae.verticalRightInnerExtent+"L"+(Ae.rightFullExtent+we-Re)+" "+(Ae.targetY-Ae.rightSmallArcRadius)+"A"+(Ae.rightLargeArcRadius-we)+" "+(Ae.rightSmallArcRadius-we)+" 0 0 0 "+(Ae.rightInnerExtent-Re)+" "+(Ae.targetY-we)+"L"+(Ae.targetX-Re)+" "+(Ae.targetY-we)+(Re>0?"L"+Ae.targetX+" "+Ae.targetY:"")+"Z":"M "+(Ae.targetX-Re)+" "+(Ae.targetY-we)+" L"+(Ae.rightInnerExtent-Re)+" "+(Ae.targetY-we)+"A"+(Ae.rightLargeArcRadius+we)+" "+(Ae.rightSmallArcRadius+we)+" 0 0 0 "+(Ae.rightFullExtent-we-Re)+" "+(Ae.targetY+Ae.rightSmallArcRadius)+"L"+(Ae.rightFullExtent-we-Re)+" "+Ae.verticalRightInnerExtent+"A"+(Ae.rightLargeArcRadius+we)+" "+(Ae.rightLargeArcRadius+we)+" 0 0 0 "+(Ae.rightInnerExtent-Re)+" "+(Ae.verticalFullExtent+we)+"L"+Ae.leftInnerExtent+" "+(Ae.verticalFullExtent+we)+"A"+(Ae.leftLargeArcRadius+we)+" "+(Ae.leftLargeArcRadius+we)+" 0 0 0 "+(Ae.leftFullExtent+we)+" "+Ae.verticalLeftInnerExtent+"L"+(Ae.leftFullExtent+we)+" "+(Ae.sourceY+Ae.leftSmallArcRadius)+"A"+(Ae.leftLargeArcRadius+we)+" "+(Ae.leftSmallArcRadius+we)+" 0 0 0 "+Ae.leftInnerExtent+" "+(Ae.sourceY-we)+"L"+Ae.sourceX+" "+(Ae.sourceY-we)+"L"+Ae.sourceX+" "+(Ae.sourceY+we)+"L"+Ae.leftInnerExtent+" "+(Ae.sourceY+we)+"A"+(Ae.leftLargeArcRadius-we)+" "+(Ae.leftSmallArcRadius-we)+" 0 0 1 "+(Ae.leftFullExtent-we)+" "+(Ae.sourceY+Ae.leftSmallArcRadius)+"L"+(Ae.leftFullExtent-we)+" "+Ae.verticalLeftInnerExtent+"A"+(Ae.leftLargeArcRadius-we)+" "+(Ae.leftLargeArcRadius-we)+" 0 0 1 "+Ae.leftInnerExtent+" "+(Ae.verticalFullExtent-we)+"L"+(Ae.rightInnerExtent-Re)+" "+(Ae.verticalFullExtent-we)+"A"+(Ae.rightLargeArcRadius-we)+" "+(Ae.rightLargeArcRadius-we)+" 0 0 1 "+(Ae.rightFullExtent+we-Re)+" "+Ae.verticalRightInnerExtent+"L"+(Ae.rightFullExtent+we-Re)+" "+(Ae.targetY+Ae.rightSmallArcRadius)+"A"+(Ae.rightLargeArcRadius-we)+" "+(Ae.rightSmallArcRadius-we)+" 0 0 1 "+(Ae.rightInnerExtent-Re)+" "+(Ae.targetY+we)+"L"+(Ae.targetX-Re)+" "+(Ae.targetY+we)+(Re>0?"L"+Ae.targetX+" "+Ae.targetY:"")+"Z"}(V.link,H);var ee=Math.abs((V.link.target.x0-V.link.source.x1)/2);H>ee&&(H=ee);var Q=V.link.source.x1,X=V.link.target.x0-H,Y=w(Q,X),K=Y(.5),te=Y(.5),ae=V.link.y0-V.link.width/2,oe=V.link.y0+V.link.width/2,se=V.link.y1-V.link.width/2,fe=V.link.y1+V.link.width/2,ye="M"+Q+","+ae,pe="C"+K+","+ae+" "+te+","+se+" "+X+","+se,de="C"+te+","+fe+" "+K+","+oe+" "+Q+","+oe,he=H>0?"L"+(X+H)+","+(se+V.link.width/2):"";return ye+pe+(he+="L"+X+","+fe)+de+"Z"}}function M(V,H){var ee=l(H.color),Q=f.nodePadAcross,X=V.nodePad/2;H.dx=H.x1-H.x0,H.dy=H.y1-H.y0;var Y=H.dx,K=Math.max(.5,H.dy),te="node_"+H.pointNumber;return H.group&&(te=r.randstr()),H.trace=V.trace,H.curveNumber=V.trace.index,{index:H.pointNumber,key:te,partOfGroup:H.partOfGroup||!1,group:H.group,traceId:V.key,trace:V.trace,node:H,nodePad:V.nodePad,nodeLineColor:V.nodeLineColor,nodeLineWidth:V.nodeLineWidth,textFont:V.textFont,size:V.horizontal?V.height:V.width,visibleWidth:Math.ceil(Y),visibleHeight:K,zoneX:-Q,zoneY:-X,zoneWidth:Y+2*Q,zoneHeight:K+2*X,labelY:V.horizontal?H.dy/2+1:H.dx/2+1,left:H.originalLayer===1,sizeAcross:V.width,forceLayouts:V.forceLayouts,horizontal:V.horizontal,darkBackground:ee.getBrightness()<=128,tinyColorHue:t.tinyRGB(ee),tinyColorAlpha:ee.getAlpha(),valueFormat:V.valueFormat,valueSuffix:V.valueSuffix,sankey:V.sankey,graph:V.graph,arrangement:V.arrangement,uniqueNodeLabelPathId:[V.guid,V.key,te].join("_"),interactionState:V.interactionState,figure:V}}function A(V){V.attr("transform",function(H){return n(H.node.x0.toFixed(3),H.node.y0.toFixed(3))})}function C(V){V.call(A)}function L(V,H){V.call(C),H.attr("d",h())}function O(V){V.attr("width",function(H){return H.node.x1-H.node.x0}).attr("height",function(H){return H.visibleHeight})}function I(V){return V.link.width>1||V.linkLineWidth>0}function R(V){return n(V.translateX,V.translateY)+(V.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function U(V,H,ee){V.on(".basic",null).on("mouseover.basic",function(Q){Q.interactionState.dragInProgress||Q.partOfGroup||(ee.hover(this,Q,H),Q.interactionState.hovered=[this,Q])}).on("mousemove.basic",function(Q){Q.interactionState.dragInProgress||Q.partOfGroup||(ee.follow(this,Q),Q.interactionState.hovered=[this,Q])}).on("mouseout.basic",function(Q){Q.interactionState.dragInProgress||Q.partOfGroup||(ee.unhover(this,Q,H),Q.interactionState.hovered=!1)}).on("click.basic",function(Q){Q.interactionState.hovered&&(ee.unhover(this,Q,H),Q.interactionState.hovered=!1),Q.interactionState.dragInProgress||Q.partOfGroup||ee.select(this,Q,H)})}function B(V,H,ee,Q){var X=s.behavior.drag().origin(function(Y){return{x:Y.node.x0+Y.visibleWidth/2,y:Y.node.y0+Y.visibleHeight/2}}).on("dragstart",function(Y){if(Y.arrangement!=="fixed"&&(r.ensureSingle(Q._fullLayout._infolayer,"g","dragcover",function(te){Q._fullLayout._dragCover=te}),r.raiseToTop(this),Y.interactionState.dragInProgress=Y.node,N(Y.node),Y.interactionState.hovered&&(ee.nodeEvents.unhover.apply(0,Y.interactionState.hovered),Y.interactionState.hovered=!1),Y.arrangement==="snap")){var K=Y.traceId+"|"+Y.key;Y.forceLayouts[K]?Y.forceLayouts[K].alpha(1):function(te,ae,oe,se){(function(ye){for(var pe=0;pe0&&he.forceLayouts[pe].alpha(0)}}(0,ae,fe,oe)).stop()}(0,K,Y),function(te,ae,oe,se,fe){window.requestAnimationFrame(function ye(){var pe;for(pe=0;pe0)window.requestAnimationFrame(ye);else{var de=oe.node.originalX;oe.node.x0=de-oe.visibleWidth/2,oe.node.x1=de+oe.visibleWidth/2,G(oe,fe)}})}(V,H,Y,K,Q)}}).on("drag",function(Y){if(Y.arrangement!=="fixed"){var K=s.event.x,te=s.event.y;Y.arrangement==="snap"?(Y.node.x0=K-Y.visibleWidth/2,Y.node.x1=K+Y.visibleWidth/2,Y.node.y0=te-Y.visibleHeight/2,Y.node.y1=te+Y.visibleHeight/2):(Y.arrangement==="freeform"&&(Y.node.x0=K-Y.visibleWidth/2,Y.node.x1=K+Y.visibleWidth/2),te=Math.max(0,Math.min(Y.size-Y.visibleHeight/2,te)),Y.node.y0=te-Y.visibleHeight/2,Y.node.y1=te+Y.visibleHeight/2),N(Y.node),Y.arrangement!=="snap"&&(Y.sankey.update(Y.graph),L(V.filter(j(Y)),H))}}).on("dragend",function(Y){if(Y.arrangement!=="fixed"){Y.interactionState.dragInProgress=!1;for(var K=0;Kd&&B[x].gap;)x--;for(m=B[x].s,v=B.length-1;v>x;v--)B[v].s=m;for(;dL[o]&&o=0;o--){var a=T[o];if(a.type==="scatter"&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}}}}},17438:function(D,E,e){var _=e(71828),w=e(73972),s=e(82196),T=e(47581),y=e(34098),f=e(67513),l=e(73927),t=e(565),i=e(49508),r=e(11058),n=e(94039),o=e(82410),a=e(28908),u=e(71828).coercePattern;D.exports=function(p,c,b,d){function v(C,L){return _.coerce(p,c,s,C,L)}var x=f(p,c,d,v);if(x||(c.visible=!1),c.visible){l(p,c,d,v),v("xhoverformat"),v("yhoverformat");var g=t(p,c,d,v);d.scattermode==="group"&&c.orientation===void 0&&v("orientation","v");var m=!g&&x=Math.min(de,he)&&p<=Math.max(de,he)?0:1/0}var xe=Math.max(3,pe.mrc||0),Re=1-1/xe,we=Math.abs(a.c2p(pe.x)-p);return we=Math.min(de,he)&&c<=Math.max(de,he)?0:1/0}var xe=Math.max(3,pe.mrc||0),Re=1-1/xe,we=Math.abs(u.c2p(pe.y)-c);return wefe!=(Q=N[B][1])>=fe&&(V=N[B-1][0],H=N[B][0],Q-ee&&(j=V+(H-V)*(fe-ee)/(Q-ee),te=Math.min(te,j),ae=Math.max(ae,j)));te=Math.max(te,0),ae=Math.min(ae,a._length);var ye=y.defaultLine;return y.opacity(o.fillcolor)?ye=o.fillcolor:y.opacity((o.line||{}).color)&&(ye=o.line.color),_.extendFlat(l,{distance:l.maxHoverDistance,x0:te,x1:ae,y0:fe,y1:fe,color:ye,hovertemplate:!1}),delete l.index,o.text&&!Array.isArray(o.text)?l.text=String(o.text):l.text=o.name,[l]}}}},67368:function(D,E,e){var _=e(34098);D.exports={hasLines:_.hasLines,hasMarkers:_.hasMarkers,hasText:_.hasText,isBubble:_.isBubble,attributes:e(82196),layoutAttributes:e(21479),supplyDefaults:e(17438),crossTraceDefaults:e(34936),supplyLayoutDefaults:e(79334),calc:e(47761).calc,crossTraceCalc:e(72626),arraysToCalcdata:e(75225),plot:e(32663),colorbar:e(4898),formatLabels:e(8225),style:e(16296).style,styleOnSelect:e(16296).styleOnSelect,hoverPoints:e(33720),selectPoints:e(98002),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:e(93612),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}},21479:function(D){D.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}},79334:function(D,E,e){var _=e(71828),w=e(21479);D.exports=function(s,T){var y,f=T.barmode==="group";T.scattermode==="group"&&(y=f?T.bargap:.2,_.coerce(s,T,w,"scattergap",y))}},11058:function(D,E,e){var _=e(71828).isArrayOrTypedArray,w=e(52075).hasColorscale,s=e(1586);D.exports=function(T,y,f,l,t,i){i||(i={});var r=(T.marker||{}).color;t("line.color",f),w(T,"line")?s(T,y,l,t,{prefix:"line.",cLetter:"c"}):t("line.color",!_(r)&&r||f),t("line.width"),i.noDash||t("line.dash"),i.backoff&&t("line.backoff")}},34621:function(D,E,e){var _=e(91424),w=e(50606),s=w.BADNUM,T=w.LOG_CLIP,y=T+.5,f=T-.5,l=e(71828),t=l.segmentsIntersect,i=l.constrain,r=e(47581);D.exports=function(n,o){var a,u,p,c,b,d,v,x,g,m,k,h,M,A,C,L,O,I,R=o.trace||{},U=o.xaxis,B=o.yaxis,G=U.type==="log",N=B.type==="log",j=U._length,V=B._length,H=o.backoff,ee=R.marker,Q=o.connectGaps,X=o.baseTolerance,Y=o.shape,K=Y==="linear",te=R.fill&&R.fill!=="none",ae=[],oe=r.minTolerance,se=n.length,fe=new Array(se),ye=0;function pe(Nt){var Je=n[Nt];if(!Je)return!1;var Ke=o.linearized?U.l2p(Je.x):U.c2p(Je.x),Ge=o.linearized?B.l2p(Je.y):B.c2p(Je.y);if(Ke===s){if(G&&(Ke=U.c2p(Je.x,!0)),Ke===s)return!1;N&&Ge===s&&(Ke*=Math.abs(U._m*V*(U._m>0?y:f)/(B._m*j*(B._m>0?y:f)))),Ke*=1e3}if(Ge===s){if(N&&(Ge=B.c2p(Je.y,!0)),Ge===s)return!1;Ge*=1e3}return[Ke,Ge]}function de(Nt,Je,Ke,Ge){var nt=Ke-Nt,ht=Ge-Je,Oe=.5-Nt,Be=.5-Je,Qe=nt*nt+ht*ht,ut=nt*Oe+ht*Be;if(ut>0&&utEe||Nt[1]De)return[i(Nt[0],Te,Ee),i(Nt[1],Ue,De)]}function be(Nt,Je){return Nt[0]===Je[0]&&(Nt[0]===Te||Nt[0]===Ee)||Nt[1]===Je[1]&&(Nt[1]===Ue||Nt[1]===De)||void 0}function Se(Nt,Je,Ke){return function(Ge,nt){var ht=ge(Ge),Oe=ge(nt),Be=[];if(ht&&Oe&&be(ht,Oe))return Be;ht&&Be.push(ht),Oe&&Be.push(Oe);var Qe=2*l.constrain((Ge[Nt]+nt[Nt])/2,Je,Ke)-((ht||Ge)[Nt]+(Oe||nt)[Nt]);return Qe&&((ht&&Oe?Qe>0==ht[Nt]>Oe[Nt]?ht:Oe:ht||Oe)[Nt]+=Qe),Be}}function Ne(Nt){var Je=Nt[0],Ke=Nt[1],Ge=Je===fe[ye-1][0],nt=Ke===fe[ye-1][1];if(!Ge||!nt)if(ye>1){var ht=Je===fe[ye-2][0],Oe=Ke===fe[ye-2][1];Ge&&(Je===Te||Je===Ee)&&ht?Oe?ye--:fe[ye-1]=Nt:nt&&(Ke===Ue||Ke===De)&&Oe?ht?ye--:fe[ye-1]=Nt:fe[ye++]=Nt}else fe[ye++]=Nt}function Ye(Nt){fe[ye-1][0]!==Nt[0]&&fe[ye-1][1]!==Nt[1]&&Ne([Ae,Me]),Ne(Nt),Ce=null,Ae=Me=0}Y==="linear"||Y==="spline"?ue=function(Nt,Je){for(var Ke=[],Ge=0,nt=0;nt<4;nt++){var ht=je[nt],Oe=t(Nt[0],Nt[1],Je[0],Je[1],ht[0],ht[1],ht[2],ht[3]);Oe&&(!Ge||Math.abs(Oe.x-Ke[0][0])>1||Math.abs(Oe.y-Ke[0][1])>1)&&(Oe=[Oe.x,Oe.y],Ge&&xe(Oe,Nt)Ee?Ee:0,we=Nt[1]De?De:0,Re||we){if(ye)if(Ce){var Je=ue(Ce,Nt);Je.length>1&&(Ye(Je[0]),fe[ye++]=Je[1])}else ne=ue(fe[ye-1],Nt)[0],fe[ye++]=ne;else fe[ye++]=[Re||Nt[0],we||Nt[1]];var Ke=fe[ye-1];Re&&we&&(Ke[0]!==Re||Ke[1]!==we)?(Ce&&(Ae!==Re&&Me!==we?Ne(Ae&&Me?(Ge=Ce,ht=(nt=Nt)[0]-Ge[0],Oe=(nt[1]-Ge[1])/ht,(Ge[1]*nt[0]-nt[1]*Ge[0])/ht>0?[Oe>0?Te:Ee,De]:[Oe>0?Ee:Te,Ue]):[Ae||Re,Me||we]):Ae&&Me&&Ne([Ae,Me])),Ne([Re,we])):Ae-Re&&Me-we&&Ne([Re||Ae,we||Me]),Ce=Nt,Ae=Re,Me=we}else Ce&&Ye(ue(Ce,Nt)[0]),fe[ye++]=Nt;var Ge,nt,ht,Oe}for(a=0;ahe(d,ot))break;p=d,(M=g[0]*x[0]+g[1]*x[1])>k?(k=M,c=d,v=!1):M=n.length||!d)break;st(d),u=d}}else st(c)}Ce&&Ne([Ae||Ce[0],Me||Ce[1]]),ae.push(fe.slice(0,ye))}var ft=Y.slice(Y.length-1);if(H&&ft!=="h"&&ft!=="v"){for(var yt=!1,Et=-1,Tt=[],xt=0;xt=0?l=o:(l=o=n,n++),l0?Math.max(i,f):0}}},4898:function(D){D.exports={container:"marker",min:"cmin",max:"cmax"}},49508:function(D,E,e){var _=e(7901),w=e(52075).hasColorscale,s=e(1586),T=e(34098);D.exports=function(y,f,l,t,i,r){var n=T.isBubble(y),o=(y.line||{}).color;r=r||{},o&&(l=o),i("marker.symbol"),i("marker.opacity",n?.7:1),i("marker.size"),r.noAngle||(i("marker.angle"),r.noAngleRef||i("marker.angleref"),r.noStandOff||i("marker.standoff")),i("marker.color",l),w(y,"marker")&&s(y,f,t,i,{prefix:"marker.",cLetter:"c"}),r.noSelect||(i("selected.marker.color"),i("unselected.marker.color"),i("selected.marker.size"),i("unselected.marker.size")),r.noLine||(i("marker.line.color",o&&!Array.isArray(o)&&f.marker.color!==o?o:n?_.background:_.defaultLine),w(y,"marker.line")&&s(y,f,t,i,{prefix:"marker.line.",cLetter:"c"}),i("marker.line.width",n?1:0)),n&&(i("marker.sizeref"),i("marker.sizemin"),i("marker.sizemode")),r.gradient&&i("marker.gradient.type")!=="none"&&i("marker.gradient.color")}},73927:function(D,E,e){var _=e(71828).dateTick0,w=e(50606).ONEWEEK;function s(T,y){return _(y,T%w==0?1:0)}D.exports=function(T,y,f,l,t){if(t||(t={x:!0,y:!0}),t.x){var i=l("xperiod");i&&(l("xperiod0",s(i,y.xcalendar)),l("xperiodalignment"))}if(t.y){var r=l("yperiod");r&&(l("yperiod0",s(r,y.ycalendar)),l("yperiodalignment"))}}},32663:function(D,E,e){var _=e(39898),w=e(73972),s=e(71828),T=s.ensureSingle,y=s.identity,f=e(91424),l=e(34098),t=e(34621),i=e(68687),r=e(61082).tester;function n(o,a,u,p,c,b,d){var v,x=o._context.staticPlot;(function(ue,me,Te,Ee,Ue){var De=Te.xaxis,je=Te.yaxis,ge=_.extent(s.simpleMap(De.range,De.r2c)),be=_.extent(s.simpleMap(je.range,je.r2c)),Se=Ee[0].trace;if(l.hasMarkers(Se)){var Ne=Se.marker.maxdisplayed;if(Ne!==0){var Ye=Ee.filter(function(ft){return ft.x>=ge[0]&&ft.x<=ge[1]&&ft.y>=be[0]&&ft.y<=be[1]}),Ze=Math.ceil(Ye.length/Ne),st=0;Ue.forEach(function(ft,yt){var Et=ft[0].trace;l.hasMarkers(Et)&&Et.marker.maxdisplayed>0&&yt0;function m(ue){return g?ue.transition():ue}var k=u.xaxis,h=u.yaxis,M=p[0].trace,A=M.line,C=_.select(b),L=T(C,"g","errorbars"),O=T(C,"g","lines"),I=T(C,"g","points"),R=T(C,"g","text");if(w.getComponentMethod("errorbars","plot")(o,L,u,d),M.visible===!0){var U,B;m(C).style("opacity",M.opacity);var G=M.fill.charAt(M.fill.length-1);G!=="x"&&G!=="y"&&(G=""),p[0][u.isRangePlot?"nodeRangePlot3":"node3"]=C;var N,j,V="",H=[],ee=M._prevtrace;ee&&(V=ee._prevRevpath||"",B=ee._nextFill,H=ee._polygons);var Q,X,Y,K,te,ae,oe,se="",fe="",ye=[],pe=s.noop;if(U=M._ownFill,l.hasLines(M)||M.fill!=="none"){for(B&&B.datum(p),["hv","vh","hvh","vhv"].indexOf(A.shape)!==-1?(Q=f.steps(A.shape),X=f.steps(A.shape.split("").reverse().join(""))):Q=X=A.shape==="spline"?function(ue){var me=ue[ue.length-1];return ue.length>1&&ue[0][0]===me[0]&&ue[0][1]===me[1]?f.smoothclosed(ue.slice(1),A.smoothing):f.smoothopen(ue,A.smoothing)}:function(ue){return"M"+ue.join("L")},Y=function(ue){return X(ue.reverse())},ye=t(p,{xaxis:k,yaxis:h,trace:M,connectGaps:M.connectgaps,baseTolerance:Math.max(A.width||1,3)/4,shape:A.shape,backoff:A.backoff,simplify:A.simplify,fill:M.fill}),oe=M._polygons=new Array(ye.length),v=0;v0,m=i(o,a,u);(d=p.selectAll("g.trace").data(m,function(k){return k[0].trace.uid})).enter().append("g").attr("class",function(k){return"trace scatter trace"+k[0].trace.uid}).style("stroke-miterlimit",2),d.order(),function(k,h,M){h.each(function(A){var C=T(_.select(this),"g","fills");f.setClipUrl(C,M.layerClipId,k);var L=A[0].trace,O=[];L._ownfill&&O.push("_ownFill"),L._nexttrace&&O.push("_nextFill");var I=C.selectAll("g").data(O,y);I.enter().append("g"),I.exit().each(function(R){L[R]=null}).remove(),I.order().each(function(R){L[R]=T(_.select(this),"path","js-fill")})})}(o,d,a),g?(b&&(v=b()),_.transition().duration(c.duration).ease(c.easing).each("end",function(){v&&v()}).each("interrupt",function(){v&&v()}).each(function(){p.selectAll("g.trace").each(function(k,h){n(o,h,a,k,m,this,c)})})):d.each(function(k,h){n(o,h,a,k,m,this,c)}),x&&d.exit().remove(),p.selectAll("path:not([d])").remove()}},98002:function(D,E,e){var _=e(34098);D.exports=function(w,s){var T,y,f,l,t=w.cd,i=w.xaxis,r=w.yaxis,n=[],o=t[0].trace;if(!_.hasMarkers(o)&&!_.hasText(o))return[];if(s===!1)for(T=0;T0){var u=f.c2l(o);f._lowerLogErrorBound||(f._lowerLogErrorBound=u),f._lowerErrorBound=Math.min(f._lowerLogErrorBound,u)}}else t[i]=[-r[0]*y,r[1]*y]}return t}D.exports=function(s,T,y){var f=[w(s.x,s.error_x,T[0],y.xaxis),w(s.y,s.error_y,T[1],y.yaxis),w(s.z,s.error_z,T[2],y.zaxis)],l=function(a){for(var u=0;u-1?-1:h.indexOf("right")>-1?1:0}function d(h){return h==null?0:h.indexOf("top")>-1?-1:h.indexOf("bottom")>-1?1:0}function v(h,M){return M(4*h)}function x(h){return n[h]}function g(h,M,A,C,L){var O=null;if(f.isArrayOrTypedArray(h)){O=[];for(var I=0;I=0){var B=function(G,N,j){var V,H=(j+1)%3,ee=(j+2)%3,Q=[],X=[];for(V=0;V=0&&o("surfacecolor",u||p);for(var c=["x","y","z"],b=0;b<3;++b){var d="projection."+c[b];o(d+".show")&&(o(d+".opacity"),o(d+".scale"))}var v=_.getComponentMethod("errorbars","supplyDefaults");v(t,i,u||p||r,{axis:"z"}),v(t,i,u||p||r,{axis:"y",inherit:"z"}),v(t,i,u||p||r,{axis:"x",inherit:"z"})}else i.visible=!1}},13551:function(D,E,e){D.exports={plot:e(58925),attributes:e(44542),markerSymbols:e(87381),supplyDefaults:e(21428),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:e(36563),moduleType:"trace",name:"scatter3d",basePlotModule:e(58547),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}},97001:function(D,E,e){var _=e(82196),w=e(9012),s=e(5386).fF,T=e(5386).si,y=e(50693),f=e(1426).extendFlat,l=_.marker,t=_.line,i=l.line;D.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:f({},_.mode,{dflt:"markers"}),text:f({},_.text,{}),texttemplate:T({editType:"plot"},{keys:["a","b","text"]}),hovertext:f({},_.hovertext,{}),line:{color:t.color,width:t.width,dash:t.dash,backoff:t.backoff,shape:f({},t.shape,{values:["linear","spline"]}),smoothing:t.smoothing,editType:"calc"},connectgaps:_.connectgaps,fill:f({},_.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:_.fillcolor,marker:f({symbol:l.symbol,opacity:l.opacity,maxdisplayed:l.maxdisplayed,angle:l.angle,angleref:l.angleref,standoff:l.standoff,size:l.size,sizeref:l.sizeref,sizemin:l.sizemin,sizemode:l.sizemode,line:f({width:i.width,editType:"calc"},y("marker.line")),gradient:l.gradient,editType:"calc"},y("marker")),textfont:_.textfont,textposition:_.textposition,selected:_.selected,unselected:_.unselected,hoverinfo:f({},w.hoverinfo,{flags:["a","b","text","name"]}),hoveron:_.hoveron,hovertemplate:s()}},34618:function(D,E,e){var _=e(92770),w=e(36922),s=e(75225),T=e(66279),y=e(47761).calcMarkerSize,f=e(22882);D.exports=function(l,t){var i=t._carpetTrace=f(l,t);if(i&&i.visible&&i.visible!=="legendonly"){var r;t.xaxis=i.xaxis,t.yaxis=i.yaxis;var n,o,a=t._length,u=new Array(a),p=!1;for(r=0;r")}return l}function v(x,g){var m;m=x.labelprefix&&x.labelprefix.length>0?x.labelprefix.replace(/ = $/,""):x._hovertitle,b.push(m+": "+g.toFixed(3)+x.labelsuffix)}}},46858:function(D,E,e){D.exports={attributes:e(97001),supplyDefaults:e(98965),colorbar:e(4898),formatLabels:e(48953),calc:e(34618),plot:e(1913),style:e(16296).style,styleOnSelect:e(16296).styleOnSelect,hoverPoints:e(22931),selectPoints:e(98002),eventData:e(16165),moduleType:"trace",name:"scattercarpet",basePlotModule:e(93612),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}},1913:function(D,E,e){var _=e(32663),w=e(89298),s=e(91424);D.exports=function(T,y,f,l){var t,i,r,n=f[0][0].carpet,o=w.getFromId(T,n.xaxis||"x"),a=w.getFromId(T,n.yaxis||"y"),u={xaxis:o,yaxis:a,plot:y.plot};for(t=0;t")}function B(G){return G+"°"}}(r,c,f,i[0].t.labels),f.hovertemplate=r.hovertemplate,[f]}}},17988:function(D,E,e){D.exports={attributes:e(19316),supplyDefaults:e(10659),colorbar:e(4898),formatLabels:e(82719),calc:e(84622),calcGeoJSON:e(89171).calcGeoJSON,plot:e(89171).plot,style:e(33095),styleOnSelect:e(16296).styleOnSelect,hoverPoints:e(14977),eventData:e(84084),selectPoints:e(20548),moduleType:"trace",name:"scattergeo",basePlotModule:e(44622),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}},89171:function(D,E,e){var _=e(39898),w=e(71828),s=e(90973).getTopojsonFeatures,T=e(18214),y=e(41327),f=e(71739).findExtremes,l=e(50606).BADNUM,t=e(47761).calcMarkerSize,i=e(34098),r=e(33095);D.exports={calcGeoJSON:function(n,o){var a,u,p=n[0].trace,c=o[p.geo],b=c._subplot,d=p._length;if(Array.isArray(p.locations)){var v=p.locationmode,x=v==="geojson-id"?y.extractTraceFeature(n):s(p,b.topojson);for(a=0;a=u,M=2*k,A={},C=x.makeCalcdata(b,"x"),L=g.makeCalcdata(b,"y"),O=y(b,x,"x",C),I=y(b,g,"y",L),R=O.vals,U=I.vals;b._x=R,b._y=U,b.xperiodalignment&&(b._origX=C,b._xStarts=O.starts,b._xEnds=O.ends),b.yperiodalignment&&(b._origY=L,b._yStarts=I.starts,b._yEnds=I.ends);var B=new Array(M),G=new Array(k);for(d=0;d1&&w.extendFlat(te.line,n.linePositions(H,Q,X)),te.errorX||te.errorY){var ae=n.errorBarPositions(H,Q,X,Y,K);te.errorX&&w.extendFlat(te.errorX,ae.x),te.errorY&&w.extendFlat(te.errorY,ae.y)}return te.text&&(w.extendFlat(te.text,{positions:X},n.textPosition(H,Q,te.text,te.marker)),w.extendFlat(te.textSel,{positions:X},n.textPosition(H,Q,te.text,te.markerSel)),w.extendFlat(te.textUnsel,{positions:X},n.textPosition(H,Q,te.text,te.markerUnsel))),te}(c,0,b,B,R,U),V=o(c,m);return i(v,b),h?j.marker&&(N=j.marker.sizeAvg||Math.max(j.marker.size,3)):N=l(b,k),t(c,b,x,g,R,U,N),j.errorX&&p(b,x,j.errorX),j.errorY&&p(b,g,j.errorY),j.fill&&!V.fill2d&&(V.fill2d=!0),j.marker&&!V.scatter2d&&(V.scatter2d=!0),j.line&&!V.line2d&&(V.line2d=!0),!j.errorX&&!j.errorY||V.error2d||(V.error2d=!0),j.text&&!V.glText&&(V.glText=!0),j.marker&&(j.marker.snap=k),V.lineOptions.push(j.line),V.errorXOptions.push(j.errorX),V.errorYOptions.push(j.errorY),V.fillOptions.push(j.fill),V.markerOptions.push(j.marker),V.markerSelectedOptions.push(j.markerSel),V.markerUnselectedOptions.push(j.markerUnsel),V.textOptions.push(j.text),V.textSelectedOptions.push(j.textSel),V.textUnselectedOptions.push(j.textUnsel),V.selectBatch.push([]),V.unselectBatch.push([]),A._scene=V,A.index=V.count,A.x=R,A.y=U,A.positions=B,V.count++,[{x:!1,y:!1,t:A,trace:b}]}},78232:function(D){D.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},19635:function(D,E,e){var _=e(92770),w=e(82019),s=e(25075),T=e(73972),y=e(71828),f=e(91424),l=e(41675),t=e(81697).formatColor,i=e(34098),r=e(39984),n=e(68645),o=e(78232),a=e(37822).DESELECTDIM,u={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},p=e(23469).appendArrayPointValue;function c(C,L){var O,I=C._fullLayout,R=L._length,U=L.textfont,B=L.textposition,G=Array.isArray(B)?B:[B],N=U.color,j=U.size,V=U.family,H={},ee=C._context.plotGlPixelRatio,Q=L.texttemplate;if(Q){H.text=[];var X=I._d3locale,Y=Array.isArray(Q),K=Y?Math.min(Q.length,R):R,te=Y?function(de){return Q[de]}:function(){return Q};for(O=0;Oo.TOO_MANY_POINTS||i.hasMarkers(L)?"rect":"round";if(j&&L.connectgaps){var H=I[0],ee=I[1];for(R=0;R1?N[R]:N[0]:N,Q=Array.isArray(j)?j.length>1?j[R]:j[0]:j,X=u[ee],Y=u[Q],K=V?V/.8+1:0,te=-Y*K-.5*Y;B.offset[R]=[X*K/H,te/H]}}return B}}},47148:function(D,E,e){var _=e(71828),w=e(73972),s=e(68645),T=e(42341),y=e(47581),f=e(34098),l=e(67513),t=e(73927),i=e(49508),r=e(11058),n=e(28908),o=e(82410);D.exports=function(a,u,p,c){function b(M,A){return _.coerce(a,u,T,M,A)}var d=!!a.marker&&s.isOpenSymbol(a.marker.symbol),v=f.isBubble(a),x=l(a,u,c,b);if(x){t(a,u,c,b),b("xhoverformat"),b("yhoverformat");var g=x100},E.isDotSymbol=function(w){return typeof w=="string"?_.DOT_RE.test(w):w>200}},20794:function(D,E,e){var _=e(73972),w=e(71828),s=e(34603);function T(y,f,l,t){var i=y.xa,r=y.ya,n=y.distance,o=y.dxy,a=y.index,u={pointNumber:a,x:f[a],y:l[a]};u.tx=Array.isArray(t.text)?t.text[a]:t.text,u.htx=Array.isArray(t.hovertext)?t.hovertext[a]:t.hovertext,u.data=Array.isArray(t.customdata)?t.customdata[a]:t.customdata,u.tp=Array.isArray(t.textposition)?t.textposition[a]:t.textposition;var p=t.textfont;p&&(u.ts=w.isArrayOrTypedArray(p.size)?p.size[a]:p.size,u.tc=Array.isArray(p.color)?p.color[a]:p.color,u.tf=Array.isArray(p.family)?p.family[a]:p.family);var c=t.marker;c&&(u.ms=w.isArrayOrTypedArray(c.size)?c.size[a]:c.size,u.mo=w.isArrayOrTypedArray(c.opacity)?c.opacity[a]:c.opacity,u.mx=w.isArrayOrTypedArray(c.symbol)?c.symbol[a]:c.symbol,u.ma=w.isArrayOrTypedArray(c.angle)?c.angle[a]:c.angle,u.mc=w.isArrayOrTypedArray(c.color)?c.color[a]:c.color);var b=c&&c.line;b&&(u.mlc=Array.isArray(b.color)?b.color[a]:b.color,u.mlw=w.isArrayOrTypedArray(b.width)?b.width[a]:b.width);var d=c&&c.gradient;d&&d.type!=="none"&&(u.mgt=Array.isArray(d.type)?d.type[a]:d.type,u.mgc=Array.isArray(d.color)?d.color[a]:d.color);var v=i.c2p(u.x,!0),x=r.c2p(u.y,!0),g=u.mrc||1,m=t.hoverlabel;m&&(u.hbg=Array.isArray(m.bgcolor)?m.bgcolor[a]:m.bgcolor,u.hbc=Array.isArray(m.bordercolor)?m.bordercolor[a]:m.bordercolor,u.hts=w.isArrayOrTypedArray(m.font.size)?m.font.size[a]:m.font.size,u.htc=Array.isArray(m.font.color)?m.font.color[a]:m.font.color,u.htf=Array.isArray(m.font.family)?m.font.family[a]:m.font.family,u.hnl=w.isArrayOrTypedArray(m.namelength)?m.namelength[a]:m.namelength);var k=t.hoverinfo;k&&(u.hi=Array.isArray(k)?k[a]:k);var h=t.hovertemplate;h&&(u.ht=Array.isArray(h)?h[a]:h);var M={};M[y.index]=u;var A=t._origX,C=t._origY,L=w.extendFlat({},y,{color:s(t,u),x0:v-g,x1:v+g,xLabelVal:A?A[a]:u.x,y0:x-g,y1:x+g,yLabelVal:C?C[a]:u.y,cd:M,distance:n,spikeDistance:o,hovertemplate:u.ht});return u.htx?L.text=u.htx:u.tx?L.text=u.tx:t.text&&(L.text=t.text),w.fillText(u,t,L),_.getComponentMethod("errorbars","hoverInfo")(u,t,L),L}D.exports={hoverPoints:function(y,f,l,t){var i,r,n,o,a,u,p,c,b,d,v=y.cd,x=v[0].t,g=v[0].trace,m=y.xa,k=y.ya,h=x.x,M=x.y,A=m.c2p(f),C=k.c2p(l),L=y.distance;if(x.tree){var O=m.p2c(A-L),I=m.p2c(A+L),R=k.p2c(C-L),U=k.p2c(C+L);i=t==="x"?x.tree.range(Math.min(O,I),Math.min(k._rl[0],k._rl[1]),Math.max(O,I),Math.max(k._rl[0],k._rl[1])):x.tree.range(Math.min(O,I),Math.min(R,U),Math.max(O,I),Math.max(R,U))}else i=x.ids;var B=L;if(t==="x"){var G=!!g.xperiodalignment,N=!!g.yperiodalignment;for(u=0;u=Math.min(j,V)&&A<=Math.max(j,V)?0:1/0}if(p=Math.min(H,ee)&&C<=Math.max(H,ee)?0:1/0}d=Math.sqrt(p*p+c*c),n=i[u]}}}else for(u=i.length-1;u>-1;u--)o=h[r=i[u]],a=M[r],p=m.c2p(o)-A,c=k.c2p(a)-C,(b=Math.sqrt(p*p+c*c))v.glText.length){var h=m-v.glText.length;for(c=0;cse&&(isNaN(oe[fe])||isNaN(oe[fe+1]));)fe-=2;ae.positions=oe.slice(se,fe+2)}return ae}),v.line2d.update(v.lineOptions)),v.error2d){var A=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(A)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=y.repeat(null,m),v.fill2d&&(v.fillOptions=v.fillOptions.map(function(ae,oe){var se=p[oe];if(ae&&se&&se[0]&&se[0].trace){var fe,ye,pe=se[0],de=pe.trace,he=pe.t,xe=v.lineOptions[oe],Re=[];de._ownfill&&Re.push(oe),de._nexttrace&&Re.push(oe+1),Re.length&&(v.fillOrder[oe]=Re);var we,Ae,Me=[],Ce=xe&&xe.positions||he.positions;if(de.fill==="tozeroy"){for(we=0;wewe&&isNaN(Ce[Ae+1]);)Ae-=2;Ce[we+1]!==0&&(Me=[Ce[we],0]),Me=Me.concat(Ce.slice(we,Ae+2)),Ce[Ae+1]!==0&&(Me=Me.concat([Ce[Ae],0]))}else if(de.fill==="tozerox"){for(we=0;wewe&&isNaN(Ce[Ae]);)Ae-=2;Ce[we]!==0&&(Me=[0,Ce[we+1]]),Me=Me.concat(Ce.slice(we,Ae+2)),Ce[Ae]!==0&&(Me=Me.concat([0,Ce[Ae+1]]))}else if(de.fill==="toself"||de.fill==="tonext"){for(Me=[],fe=0,ae.splitNull=!0,ye=0;ye-1;for(c=0;c")}function b(d){return d+"°"}}D.exports={hoverPoints:function(t,i,r){var n=t.cd,o=n[0].trace,a=t.xa,u=t.ya,p=t.subplot,c=[],b=f+o.uid+"-circle",d=o.cluster&&o.cluster.enabled;if(d){var v=p.map.queryRenderedFeatures(null,{layers:[b]});c=v.map(function(I){return I.id})}var x=360*(i>=0?Math.floor((i+180)/360):Math.ceil((i-180)/360)),g=i-x;if(_.getClosest(n,function(I){var R=I.lonlat;if(R[0]===y||d&&c.indexOf(I.i+1)===-1)return 1/0;var U=w.modHalf(R[0],360),B=R[1],G=p.project([U,B]),N=G.x-a.c2p([g,B]),j=G.y-u.c2p([U,r]),V=Math.max(3,I.mrc||0);return Math.max(Math.sqrt(N*N+j*j)-V,1-3/V)},t),t.index!==!1){var m=n[t.index],k=m.lonlat,h=[w.modHalf(k[0],360)+x,k[1]],M=a.c2p(h),A=u.c2p(h),C=m.mrc||1;t.x0=M-C,t.x1=M+C,t.y0=A-C,t.y1=A+C;var L={};L[o.subplot]={_subplot:p};var O=o._module.formatLabels(m,o,L);return t.lonLabel=O.lonLabel,t.latLabel=O.latLabel,t.color=s(o,m),t.extraText=l(o,m,n[0].t.labels),t.hovertemplate=o.hovertemplate,[t]}},getExtraText:l}},20467:function(D,E,e){D.exports={attributes:e(99181),supplyDefaults:e(76645),colorbar:e(4898),formatLabels:e(15636),calc:e(84622),plot:e(86951),hoverPoints:e(28178).hoverPoints,eventData:e(53353),selectPoints:e(86387),styleOnSelect:function(_,w){w&&w[0].trace._glTrace.update(w)},moduleType:"trace",name:"scattermapbox",basePlotModule:e(50101),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}},86951:function(D,E,e){var _=e(71828),w=e(15790),s=e(77734).traceLayerPrefix,T={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function y(l,t,i,r){this.type="scattermapbox",this.subplot=l,this.uid=t,this.clusterEnabled=i,this.isHidden=r,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:s+t+"-fill",line:s+t+"-line",circle:s+t+"-circle",symbol:s+t+"-symbol",cluster:s+t+"-cluster",clusterCount:s+t+"-cluster-count"},this.below=null}var f=y.prototype;f.addSource=function(l,t,i){var r={type:"geojson",data:t.geojson};i&&i.enabled&&_.extendFlat(r,{cluster:!0,clusterMaxZoom:i.maxzoom});var n=this.subplot.map.getSource(this.sourceIds[l]);n?n.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[l],r)},f.setSourceData=function(l,t){this.subplot.map.getSource(this.sourceIds[l]).setData(t.geojson)},f.addLayer=function(l,t,i){var r={type:t.type,id:this.layerIds[l],source:this.sourceIds[l],layout:t.layout,paint:t.paint};t.filter&&(r.filter=t.filter);for(var n,o=this.layerIds[l],a=this.subplot.getMapLayers(),u=0;u=0;h--){var M=k[h];r.removeLayer(p.layerIds[M])}m||r.removeSource(p.sourceIds.circle)}(g):function(m){for(var k=T.nonCluster,h=k.length-1;h>=0;h--){var M=k[h];r.removeLayer(p.layerIds[M]),m||r.removeSource(p.sourceIds[M])}}(g)}function b(g){a?function(m){m||p.addSource("circle",n.circle,t.cluster);for(var k=T.cluster,h=0;h=0;i--){var r=t[i];l.removeLayer(this.layerIds[r]),l.removeSource(this.sourceIds[r])}},D.exports=function(l,t){var i,r,n,o=t[0].trace,a=o.cluster&&o.cluster.enabled,u=o.visible!==!0,p=new y(l,o.uid,a,u),c=w(l.gd,t),b=p.below=l.belowLookup["trace-"+o.uid];if(a)for(p.addSource("circle",c.circle,o.cluster),i=0;i")}}D.exports={hoverPoints:function(s,T,y,f){var l=_(s,T,y,f);if(l&&l[0].index!==!1){var t=l[0];if(t.index===void 0)return l;var i=s.subplot,r=t.cd[t.index],n=t.trace;if(i.isPtInside(r))return t.xLabelVal=void 0,t.yLabelVal=void 0,w(r,n,i,t),t.hovertemplate=n.hovertemplate,l}},makeHoverPointText:w}},91271:function(D,E,e){D.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:e(23580),categories:["polar","symbols","showLegend","scatter-like"],attributes:e(81245),supplyDefaults:e(22184).supplyDefaults,colorbar:e(4898),formatLabels:e(98608),calc:e(26442),plot:e(45162),style:e(16296).style,styleOnSelect:e(16296).styleOnSelect,hoverPoints:e(59150).hoverPoints,selectPoints:e(98002),meta:{}}},45162:function(D,E,e){var _=e(32663),w=e(50606).BADNUM;D.exports=function(s,T,y){for(var f=T.layers.frontplot.select("g.scatterlayer"),l=T.xaxis,t=T.yaxis,i={xaxis:l,yaxis:t,plot:T.framework,layerClipId:T._hasClipOnAxisFalse?T.clipIds.forTraces:null},r=T.radialAxis,n=T.angularAxis,o=0;o=l&&(m.marker.cluster=d.tree),m.marker&&(m.markerSel.positions=m.markerUnsel.positions=m.marker.positions=M),m.line&&M.length>1&&f.extendFlat(m.line,y.linePositions(t,b,M)),m.text&&(f.extendFlat(m.text,{positions:M},y.textPosition(t,b,m.text,m.marker)),f.extendFlat(m.textSel,{positions:M},y.textPosition(t,b,m.text,m.markerSel)),f.extendFlat(m.textUnsel,{positions:M},y.textPosition(t,b,m.text,m.markerUnsel))),m.fill&&!a.fill2d&&(a.fill2d=!0),m.marker&&!a.scatter2d&&(a.scatter2d=!0),m.line&&!a.line2d&&(a.line2d=!0),m.text&&!a.glText&&(a.glText=!0),a.lineOptions.push(m.line),a.fillOptions.push(m.fill),a.markerOptions.push(m.marker),a.markerSelectedOptions.push(m.markerSel),a.markerUnselectedOptions.push(m.markerUnsel),a.textOptions.push(m.text),a.textSelectedOptions.push(m.textSel),a.textUnselectedOptions.push(m.textUnsel),a.selectBatch.push([]),a.unselectBatch.push([]),d.x=A,d.y=C,d.rawx=A,d.rawy=C,d.r=x,d.theta=g,d.positions=M,d._scene=a,d.index=a.count,a.count++}}),s(t,i,r)}},D.exports.reglPrecompiled={}},48300:function(D,E,e){var _=e(5386).fF,w=e(5386).si,s=e(1426).extendFlat,T=e(82196),y=e(9012),f=T.line;D.exports={mode:T.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:T.text,texttemplate:w({editType:"plot"},{keys:["real","imag","text"]}),hovertext:T.hovertext,line:{color:f.color,width:f.width,dash:f.dash,backoff:f.backoff,shape:s({},f.shape,{values:["linear","spline"]}),smoothing:f.smoothing,editType:"calc"},connectgaps:T.connectgaps,marker:T.marker,cliponaxis:s({},T.cliponaxis,{dflt:!1}),textposition:T.textposition,textfont:T.textfont,fill:s({},T.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:T.fillcolor,hoverinfo:s({},y.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:T.hoveron,hovertemplate:_(),selected:T.selected,unselected:T.unselected}},30621:function(D,E,e){var _=e(92770),w=e(50606).BADNUM,s=e(36922),T=e(75225),y=e(66279),f=e(47761).calcMarkerSize;D.exports=function(l,t){for(var i=l._fullLayout,r=t.subplot,n=i[r].realaxis,o=i[r].imaginaryaxis,a=n.makeCalcdata(t,"real"),u=o.makeCalcdata(t,"imag"),p=t._length,c=new Array(p),b=0;b")}}D.exports={hoverPoints:function(s,T,y,f){var l=_(s,T,y,f);if(l&&l[0].index!==!1){var t=l[0];if(t.index===void 0)return l;var i=s.subplot,r=t.cd[t.index],n=t.trace;if(i.isPtInside(r))return t.xLabelVal=void 0,t.yLabelVal=void 0,w(r,n,i,t),t.hovertemplate=n.hovertemplate,l}},makeHoverPointText:w}},85956:function(D,E,e){D.exports={moduleType:"trace",name:"scattersmith",basePlotModule:e(7504),categories:["smith","symbols","showLegend","scatter-like"],attributes:e(48300),supplyDefaults:e(65269),colorbar:e(4898),formatLabels:e(62047),calc:e(30621),plot:e(12480),style:e(16296).style,styleOnSelect:e(16296).styleOnSelect,hoverPoints:e(11350).hoverPoints,selectPoints:e(98002),meta:{}}},12480:function(D,E,e){var _=e(32663),w=e(50606).BADNUM,s=e(23893).smith;D.exports=function(T,y,f){for(var l=y.layers.frontplot.select("g.scatterlayer"),t=y.xaxis,i=y.yaxis,r={xaxis:t,yaxis:i,plot:y.framework,layerClipId:y._hasClipOnAxisFalse?y.clipIds.forTraces:null},n=0;n"),l.hovertemplate=a.hovertemplate,f}function x(g,m){d.push(g._hovertitle+": "+m)}}},52979:function(D,E,e){D.exports={attributes:e(50413),supplyDefaults:e(46008),colorbar:e(4898),formatLabels:e(93645),calc:e(54337),plot:e(7507),style:e(16296).style,styleOnSelect:e(16296).styleOnSelect,hoverPoints:e(47250),selectPoints:e(98002),eventData:e(4524),moduleType:"trace",name:"scatterternary",basePlotModule:e(61639),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}},7507:function(D,E,e){var _=e(32663);D.exports=function(w,s,T){var y=s.plotContainer;y.select(".scatterlayer").selectAll("*").remove();for(var f=s.xaxis,l=s.yaxis,t={xaxis:f,yaxis:l,plot:y,layerClipId:s._hasClipOnAxisFalse?s.clipIdRelative:null},i=s.layers.frontplot.select("g.scatterlayer"),r=0;rr?g.sizeAvg||Math.max(g.size,3):s(o,x),u=0;uM&&L||h-1,B=!0;if(T(g)||p.selectedpoints||U){var G=p._length;if(p.selectedpoints){b.selectBatch=p.selectedpoints;var N=p.selectedpoints,j={};for(r=0;r1&&(u=v[m-1],c=x[m-1],d=g[m-1]),l=0;lu?"-":"+")+"x")).replace("y",(p>c?"-":"+")+"y")).replace("z",(b>d?"-":"+")+"z");var B=function(){m=0,I=[],R=[],U=[]};(!m||m2?a.slice(1,u-1):u===2?[(a[0]+a[1])/2]:a}function n(a){var u=a.length;return u===1?[.5,.5]:[a[1]-a[0],a[u-1]-a[u-2]]}function o(a,u){var p=a.fullSceneLayout,c=a.dataScale,b=u._len,d={};function v(Q,X){var Y=p[X],K=c[l[X]];return s.simpleMap(Q,function(te){return Y.d2l(te)*K})}if(d.vectors=f(v(u._u,"xaxis"),v(u._v,"yaxis"),v(u._w,"zaxis"),b),!b)return{positions:[],cells:[]};var x=v(u._Xs,"xaxis"),g=v(u._Ys,"yaxis"),m=v(u._Zs,"zaxis");if(d.meshgrid=[x,g,m],d.gridFill=u._gridFill,u._slen)d.startingPositions=f(v(u._startsX,"xaxis"),v(u._startsY,"yaxis"),v(u._startsZ,"zaxis"));else{for(var k=g[0],h=r(x),M=r(m),A=new Array(h.length*M.length),C=0,L=0;L=0};k?(p=Math.min(m.length,M.length),c=function(se){return R(m[se])&&U(se)},b=function(se){return String(m[se])}):(p=Math.min(h.length,M.length),c=function(se){return R(h[se])&&U(se)},b=function(se){return String(h[se])}),C&&(p=Math.min(p,A.length));for(var B=0;B1){for(var V=s.randstr(),H=0;H"),name:I||ee("name")?k.name:void 0,color:O("hoverlabel.bgcolor")||h.color,borderColor:O("hoverlabel.bordercolor"),fontFamily:O("hoverlabel.font.family"),fontSize:O("hoverlabel.font.size"),fontColor:O("hoverlabel.font.color"),nameLength:O("hoverlabel.namelength"),textAlign:O("hoverlabel.align"),hovertemplate:I,hovertemplateLabels:j,eventData:m};d&&(Y.x0=B-x.rInscribed*x.rpx1,Y.x1=B+x.rInscribed*x.rpx1,Y.idealAlign=x.pxmid[0]<0?"left":"right"),v&&(Y.x=B,Y.idealAlign=B<0?"left":"right");var K=[];T.loneHover(Y,{container:g._hoverlayer.node(),outerContainer:g._paper.node(),gd:o,inOut_bbox:K}),m[0].bbox=K[0],c._hasHoverLabel=!0}if(v){var te=r.select("path.surface");u.styleOne(te,x,k,{hovered:!0})}c._hasHoverEvent=!0,o.emit("plotly_hover",{points:m||[i(x,k,u.eventDataKeys)],event:_.event})}}),r.on("mouseout",function(x){var g=o._fullLayout,m=o._fullData[c.index],k=_.select(this).datum();if(c._hasHoverEvent&&(x.originalEvent=_.event,o.emit("plotly_unhover",{points:[i(k,m,u.eventDataKeys)],event:_.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(T.loneUnhover(g._hoverlayer.node()),c._hasHoverLabel=!1),v){var h=r.select("path.surface");u.styleOne(h,k,m,{hovered:!1})}}),r.on("click",function(x){var g=o._fullLayout,m=o._fullData[c.index],k=d&&(l.isHierarchyRoot(x)||l.isLeaf(x)),h=l.getPtId(x),M=l.isEntry(x)?l.findEntryWithChild(b,h):l.findEntryWithLevel(b,h),A=l.getPtId(M),C={points:[i(x,m,u.eventDataKeys)],event:_.event};k||(C.nextLevel=A);var L=f.triggerHandler(o,"plotly_"+c.type+"click",C);if(L!==!1&&g.hovermode&&(o._hoverdata=[i(x,m,u.eventDataKeys)],T.click(o,_.event)),!k&&L!==!1&&!o._dragging&&!o._transitioning){w.call("_storeDirectGUIEdit",m,g._tracePreGUI[m.uid],{level:m.level});var O={data:[{level:A}],traces:[c.index]},I={frame:{redraw:!1,duration:u.transitionTime},transition:{duration:u.transitionTime,easing:u.transitionEasing},mode:"immediate",fromcurrent:!0};T.loneUnhover(g._hoverlayer.node()),w.call("animate",o,O,I)}})}},2791:function(D,E,e){var _=e(71828),w=e(7901),s=e(6964),T=e(53581);function y(f){return f.data.data.pid}E.findEntryWithLevel=function(f,l){var t;return l&&f.eachAfter(function(i){if(E.getPtId(i)===l)return t=i.copy()}),t||f},E.findEntryWithChild=function(f,l){var t;return f.eachAfter(function(i){for(var r=i.children||[],n=0;n0)},E.getMaxDepth=function(f){return f.maxdepth>=0?f.maxdepth:1/0},E.isHeader=function(f,l){return!(E.isLeaf(f)||f.depth===l._maxDepth-1)},E.getParent=function(f,l){return E.findEntryWithLevel(f,y(l))},E.listPath=function(f,l){var t=f.parent;if(!t)return[];var i=l?[t.data[l]]:[t];return E.listPath(t,l).concat(i)},E.getPath=function(f){return E.listPath(f,"label").join("/")+"/"},E.formatValue=T.formatPieValue,E.formatPercent=function(f,l){var t=_.formatPercent(f,0);return t==="0%"&&(t=T.formatPiePercent(f,l)),t}},87619:function(D,E,e){D.exports={moduleType:"trace",name:"sunburst",basePlotModule:e(66888),categories:[],animatable:!0,attributes:e(57564),layoutAttributes:e(2654),supplyDefaults:e(17094),supplyLayoutDefaults:e(57034),calc:e(52147).calc,crossTraceCalc:e(52147).crossTraceCalc,plot:e(24714).plot,style:e(29969).style,colorbar:e(4898),meta:{}}},2654:function(D){D.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}},57034:function(D,E,e){var _=e(71828),w=e(2654);D.exports=function(s,T){function y(f,l){return _.coerce(s,T,w,f,l)}y("sunburstcolorway",T.colorway),y("extendsunburstcolors")}},24714:function(D,E,e){var _=e(39898),w=e(674),s=e(81684).sX,T=e(91424),y=e(71828),f=e(63893),l=e(72597),t=l.recordMinTextSize,i=l.clearMinTextSize,r=e(14575),n=e(53581).getRotationAngle,o=r.computeTransform,a=r.transformInsideText,u=e(29969).styleOne,p=e(16688).resizeText,c=e(83523),b=e(7055),d=e(2791);function v(g,m,k,h){var M=g._context.staticPlot,A=g._fullLayout,C=!A.uniformtext.mode&&d.hasTransition(h),L=_.select(k).selectAll("g.slice"),O=m[0],I=O.trace,R=O.hierarchy,U=d.findEntryWithLevel(R,I.level),B=d.getMaxDepth(I),G=A._size,N=I.domain,j=G.w*(N.x[1]-N.x[0]),V=G.h*(N.y[1]-N.y[0]),H=.5*Math.min(j,V),ee=O.cx=G.l+G.w*(N.x[1]+N.x[0])/2,Q=O.cy=G.t+G.h*(1-N.y[0])-V/2;if(!U)return L.remove();var X=null,Y={};C&&L.each(function(Ce){Y[d.getPtId(Ce)]={rpx0:Ce.rpx0,rpx1:Ce.rpx1,x0:Ce.x0,x1:Ce.x1,transform:Ce.transform},!X&&d.isEntry(Ce)&&(X=Ce)});var K=function(Ce){return w.partition().size([2*Math.PI,Ce.height+1])(Ce)}(U).descendants(),te=U.height+1,ae=0,oe=B;O.hasMultipleRoots&&d.isHierarchyRoot(U)&&(K=K.slice(1),te-=1,ae=1,oe+=1),K=K.filter(function(Ce){return Ce.y1<=oe});var se=n(I.rotation);se&&K.forEach(function(Ce){Ce.x0+=se,Ce.x1+=se});var fe=Math.min(te,B),ye=function(Ce){return(Ce-ae)/fe*H},pe=function(Ce,ne){return[Ce*Math.cos(ne),-Ce*Math.sin(ne)]},de=function(Ce){return y.pathAnnulus(Ce.rpx0,Ce.rpx1,Ce.x0,Ce.x1,ee,Q)},he=function(Ce){return ee+x(Ce)[0]*(Ce.transform.rCenter||0)+(Ce.transform.x||0)},xe=function(Ce){return Q+x(Ce)[1]*(Ce.transform.rCenter||0)+(Ce.transform.y||0)};(L=L.data(K,d.getPtId)).enter().append("g").classed("slice",!0),C?L.exit().transition().each(function(){var Ce=_.select(this);Ce.select("path.surface").transition().attrTween("d",function(ne){var ue=function(me){var Te,Ee=d.getPtId(me),Ue=Y[Ee],De=Y[d.getPtId(U)];if(De){var je=(me.x1>De.x1?2*Math.PI:0)+se;Te=me.rpx1Re?2*Math.PI:0)+se;Se={x0:Ze,x1:Ze}}else Se={rpx0:H,rpx1:H},y.extendFlat(Se,Me(be));else Se={rpx0:0,rpx1:0};else Se={x0:se,x1:se};return s(Se,Ye)}(je);return function(be){return de(ge(be))}}):ue.attr("d",de),ne.call(c,U,g,m,{eventDataKeys:b.eventDataKeys,transitionTime:b.CLICK_TRANSITION_TIME,transitionEasing:b.CLICK_TRANSITION_EASING}).call(d.setSliceCursor,g,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:g._transitioning}),ue.call(u,Ce,I);var me=y.ensureSingle(ne,"g","slicetext"),Te=y.ensureSingle(me,"text","",function(je){je.attr("data-notex",1)}),Ee=y.ensureUniformFontSize(g,d.determineTextFont(I,Ce,A.font));Te.text(E.formatSliceLabel(Ce,U,I,m,A)).classed("slicetext",!0).attr("text-anchor","middle").call(T.font,Ee).call(f.convertToTspans,g);var Ue=T.bBox(Te.node());Ce.transform=a(Ue,Ce,O),Ce.transform.targetX=he(Ce),Ce.transform.targetY=xe(Ce);var De=function(je,ge){var be=je.transform;return o(be,ge),be.fontSize=Ee.size,t(I.type,be,A),y.getTextTransform(be)};C?Te.transition().attrTween("transform",function(je){var ge=function(be){var Se,Ne=Y[d.getPtId(be)],Ye=be.transform;if(Ne)Se=Ne;else if(Se={rpx1:be.rpx1,transform:{textPosAngle:Ye.textPosAngle,scale:0,rotate:Ye.rotate,rCenter:Ye.rCenter,x:Ye.x,y:Ye.y}},X)if(be.parent)if(Re){var Ze=be.x1>Re?2*Math.PI:0;Se.x0=Se.x1=Ze}else y.extendFlat(Se,Me(be));else Se.x0=Se.x1=se;else Se.x0=Se.x1=se;var st=s(Se.transform.textPosAngle,be.transform.textPosAngle),ot=s(Se.rpx1,be.rpx1),ft=s(Se.x0,be.x0),yt=s(Se.x1,be.x1),Et=s(Se.transform.scale,Ye.scale),Tt=s(Se.transform.rotate,Ye.rotate),xt=Ye.rCenter===0?3:Se.transform.rCenter===0?1/3:1,Dt=s(Se.transform.rCenter,Ye.rCenter);return function(It){var Ft=ot(It),qt=ft(It),Nt=yt(It),Je=function(Ge){return Dt(Math.pow(Ge,xt))}(It),Ke={pxmid:pe(Ft,(qt+Nt)/2),rpx1:Ft,transform:{textPosAngle:st(It),rCenter:Je,x:Ye.x,y:Ye.y}};return t(I.type,Ye,A),{transform:{targetX:he(Ke),targetY:xe(Ke),scale:Et(It),rotate:Tt(It),rCenter:Je}}}}(je);return function(be){return De(ge(be),Ue)}}):Te.attr("transform",De(Ce,Ue))})}function x(g){return m=g.rpx1,k=g.transform.textPosAngle,[m*Math.sin(k),-m*Math.cos(k)];var m,k}E.plot=function(g,m,k,h){var M,A,C=g._fullLayout,L=C._sunburstlayer,O=!k,I=!C.uniformtext.mode&&d.hasTransition(k);i("sunburst",C),(M=L.selectAll("g.trace.sunburst").data(m,function(R){return R[0].trace.uid})).enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),M.order(),I?(h&&(A=h()),_.transition().duration(k.duration).ease(k.easing).each("end",function(){A&&A()}).each("interrupt",function(){A&&A()}).each(function(){L.selectAll("g.trace").each(function(R){v(g,R,this,k)})})):(M.each(function(R){v(g,R,this,k)}),C.uniformtext.mode&&p(g,C._sunburstlayer.selectAll(".trace"),"sunburst")),O&&M.exit().remove()},E.formatSliceLabel=function(g,m,k,h,M){var A=k.texttemplate,C=k.textinfo;if(!(A||C&&C!=="none"))return"";var L=M.separators,O=h[0],I=g.data.data,R=O.hierarchy,U=d.isHierarchyRoot(g),B=d.getParent(R,g),G=d.getValue(g);if(!A){var N,j=C.split("+"),V=function(oe){return j.indexOf(oe)!==-1},H=[];if(V("label")&&I.label&&H.push(I.label),I.hasOwnProperty("v")&&V("value")&&H.push(d.formatValue(I.v,L)),!U){V("current path")&&H.push(d.getPath(g.data));var ee=0;V("percent parent")&&ee++,V("percent entry")&&ee++,V("percent root")&&ee++;var Q=ee>1;if(ee){var X,Y=function(oe){N=d.formatPercent(X,L),Q&&(N+=" of "+oe),H.push(N)};V("percent parent")&&!U&&(X=G/d.getValue(B),Y("parent")),V("percent entry")&&(X=G/d.getValue(m),Y("entry")),V("percent root")&&(X=G/d.getValue(R),Y("root"))}}return V("text")&&(N=y.castOption(k,I.i,"text"),y.isValidTextValue(N)&&H.push(N)),H.join("
")}var K=y.castOption(k,I.i,"texttemplate");if(!K)return"";var te={};I.label&&(te.label=I.label),I.hasOwnProperty("v")&&(te.value=I.v,te.valueLabel=d.formatValue(I.v,L)),te.currentPath=d.getPath(g.data),U||(te.percentParent=G/d.getValue(B),te.percentParentLabel=d.formatPercent(te.percentParent,L),te.parent=d.getPtLabel(B)),te.percentEntry=G/d.getValue(m),te.percentEntryLabel=d.formatPercent(te.percentEntry,L),te.entry=d.getPtLabel(m),te.percentRoot=G/d.getValue(R),te.percentRootLabel=d.formatPercent(te.percentRoot,L),te.root=d.getPtLabel(R),I.hasOwnProperty("color")&&(te.color=I.color);var ae=y.castOption(k,I.i,"text");return(y.isValidTextValue(ae)||ae==="")&&(te.text=ae),te.customdata=y.castOption(k,I.i,"customdata"),y.texttemplateString(K,te,M._d3locale,te,k._meta||{})}},29969:function(D,E,e){var _=e(39898),w=e(7901),s=e(71828),T=e(72597).resizeText;function y(f,l,t){var i=l.data.data,r=!l.children,n=i.i,o=s.castOption(t,n,"marker.line.color")||w.defaultLine,a=s.castOption(t,n,"marker.line.width")||0;f.style("stroke-width",a).call(w.fill,i.color).call(w.stroke,o).style("opacity",r?t.leaf.opacity:null)}D.exports={style:function(f){var l=f._fullLayout._sunburstlayer.selectAll(".trace");T(f,l,"sunburst"),l.each(function(t){var i=_.select(this),r=t[0].trace;i.style("opacity",r.opacity),i.selectAll("path.surface").each(function(n){_.select(this).call(y,n,r)})})},styleOne:y}},54532:function(D,E,e){var _=e(7901),w=e(50693),s=e(12663).axisHoverFormat,T=e(5386).fF,y=e(9012),f=e(1426).extendFlat,l=e(30962).overrideAll;function t(r){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:{valType:"boolean",dflt:!1},y:{valType:"boolean",dflt:!1},z:{valType:"boolean",dflt:!1}},color:{valType:"color",dflt:_.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:_.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var i=D.exports=l(f({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:T(),xhoverformat:s("x"),yhoverformat:s("y"),zhoverformat:s("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},w("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:t(),y:t(),z:t()},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},_deprecated:{zauto:f({},w.zauto,{}),zmin:f({},w.zmin,{}),zmax:f({},w.zmax,{})},hoverinfo:f({},y.hoverinfo),showlegend:f({},y.showlegend,{dflt:!1})}),"calc","nested");i.x.editType=i.y.editType=i.z.editType="calc+clearAxisTypes",i.transforms=void 0},18396:function(D,E,e){var _=e(78803);D.exports=function(w,s){s.surfacecolor?_(w,s,{vals:s.surfacecolor,containerStr:"",cLetter:"c"}):_(w,s,{vals:s.z,containerStr:"",cLetter:"c"})}},43768:function(D,E,e){var _=e(9330).gl_surface3d,w=e(9330).ndarray,s=e(9330).ndarray_linear_interpolate.d2,T=e(824),y=e(43907),f=e(71828).isArrayOrTypedArray,l=e(81697).parseColorScale,t=e(78614),i=e(21081).extractOpts;function r(k,h,M){this.scene=k,this.uid=M,this.surface=h,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var n=r.prototype;n.getXat=function(k,h,M,A){var C=f(this.data.x)?f(this.data.x[0])?this.data.x[h][k]:this.data.x[k]:k;return M===void 0?C:A.d2l(C,0,M)},n.getYat=function(k,h,M,A){var C=f(this.data.y)?f(this.data.y[0])?this.data.y[h][k]:this.data.y[h]:h;return M===void 0?C:A.d2l(C,0,M)},n.getZat=function(k,h,M,A){var C=this.data.z[h][k];return C===null&&this.data.connectgaps&&this.data._interpolatedZ&&(C=this.data._interpolatedZ[h][k]),M===void 0?C:A.d2l(C,0,M)},n.handlePick=function(k){if(k.object===this.surface){var h=(k.data.index[0]-1)/this.dataScaleX-1,M=(k.data.index[1]-1)/this.dataScaleY-1,A=Math.max(Math.min(Math.round(h),this.data.z[0].length-1),0),C=Math.max(Math.min(Math.round(M),this.data._ylength-1),0);k.index=[A,C],k.traceCoordinate=[this.getXat(A,C),this.getYat(A,C),this.getZat(A,C)],k.dataCoordinate=[this.getXat(A,C,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(A,C,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(A,C,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var L=0;L<3;L++)k.dataCoordinate[L]!=null&&(k.dataCoordinate[L]*=this.scene.dataScale[L]);var O=this.data.hovertext||this.data.text;return Array.isArray(O)&&O[C]&&O[C][A]!==void 0?k.textLabel=O[C][A]:k.textLabel=O||"",k.data.dataCoordinate=k.dataCoordinate.slice(),this.surface.highlight(k.data),this.scene.glplot.spikes.position=k.dataCoordinate,!0}};var o=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function a(k,h){if(k0){M=o[A];break}return M}function c(k,h){if(!(k<1||h<1)){for(var M=u(k),A=u(h),C=1,L=0;Lv;)M--,M/=p(M),++M1?A:1},n.refineCoords=function(k){for(var h=this.dataScaleX,M=this.dataScaleY,A=k[0].shape[0],C=k[0].shape[1],L=0|Math.floor(k[0].shape[0]*h+1),O=0|Math.floor(k[0].shape[1]*M+1),I=1+A+1,R=1+C+1,U=w(new Float32Array(I*R),[I,R]),B=[1/h,0,0,0,1/M,0,0,0,1],G=0;G0&&this.contourStart[k]!==null&&this.contourEnd[k]!==null&&this.contourEnd[k]>this.contourStart[k]))for(C[k]=!0,h=this.contourStart[k];hC&&(this.minValues[h]=C),this.maxValues[h]",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}},51018:function(D,E,e){var _=e(49850),w=e(1426).extendFlat,s=e(92770);function T(n){if(Array.isArray(n)){for(var o=0,a=0;a=o||x===n.length-1)&&(u[p]=b,b.key=v++,b.firstRowIndex=d,b.lastRowIndex=x,b={firstRowIndex:null,lastRowIndex:null,rows:[]},p+=c,d=x+1,c=0);return u}D.exports=function(n,o){var a=f(o.cells.values),u=function(U){return U.slice(o.header.values.length,U.length)},p=f(o.header.values);p.length&&!p[0].length&&(p[0]=[""],p=f(p));var c=p.concat(u(a).map(function(){return l((p[0]||[""]).length)})),b=o.domain,d=Math.floor(n._fullLayout._size.w*(b.x[1]-b.x[0])),v=Math.floor(n._fullLayout._size.h*(b.y[1]-b.y[0])),x=o.header.values.length?c[0].map(function(){return o.header.height}):[_.emptyHeaderHeight],g=a.length?a[0].map(function(){return o.cells.height}):[],m=x.reduce(y,0),k=r(g,v-m+_.uplift),h=i(r(x,m),[]),M=i(k,h),A={},C=o._fullInput.columnorder.concat(u(a.map(function(U,B){return B}))),L=c.map(function(U,B){var G=Array.isArray(o.columnwidth)?o.columnwidth[Math.min(B,o.columnwidth.length-1)]:o.columnwidth;return s(G)?Number(G):1}),O=L.reduce(y,0);L=L.map(function(U){return U/O*d});var I=Math.max(T(o.header.line.width),T(o.cells.line.width)),R={key:o.uid+n._context.staticPlot,translateX:b.x[0]*n._fullLayout._size.w,translateY:n._fullLayout._size.h*(1-b.y[1]),size:n._fullLayout._size,width:d,maxLineWidth:I,height:v,columnOrder:C,groupHeight:v,rowBlocks:M,headerRowBlocks:h,scrollY:0,cells:w({},o.cells,{values:a}),headerCells:w({},o.header,{values:c}),gdColumns:c.map(function(U){return U[0]}),gdColumnsOriginalOrder:c.map(function(U){return U[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:c.map(function(U,B){var G=A[U];return A[U]=(G||0)+1,{key:U+"__"+A[U],label:U,specIndex:B,xIndex:C[B],xScale:t,x:void 0,calcdata:void 0,columnWidth:L[B]}})};return R.columns.forEach(function(U){U.calcdata=R,U.x=t(U)}),R}},56269:function(D,E,e){var _=e(1426).extendFlat;E.splitToPanels=function(w){var s=[0,0],T=_({},w,{key:"header",type:"header",page:0,prevPages:s,currentRepaint:[null,null],dragHandle:!0,values:w.calcdata.headerCells.values[w.specIndex],rowBlocks:w.calcdata.headerRowBlocks,calcdata:_({},w.calcdata,{cells:w.calcdata.headerCells})});return[_({},w,{key:"cells1",type:"cells",page:0,prevPages:s,currentRepaint:[null,null],dragHandle:!1,values:w.calcdata.cells.values[w.specIndex],rowBlocks:w.calcdata.rowBlocks}),_({},w,{key:"cells2",type:"cells",page:1,prevPages:s,currentRepaint:[null,null],dragHandle:!1,values:w.calcdata.cells.values[w.specIndex],rowBlocks:w.calcdata.rowBlocks}),T]},E.splitToCells=function(w){var s=function(T){var y=T.rowBlocks[T.page],f=y?y.rows[0].rowIndex:0;return[f,y?f+y.rows.length:0]}(w);return(w.values||[]).slice(s[0],s[1]).map(function(T,y){return{keyWithinBlock:y+(typeof T=="string"&&T.match(/[<$&> ]/)?"_keybuster_"+Math.random():""),key:s[0]+y,column:w,calcdata:w.calcdata,page:w.page,rowBlocks:w.rowBlocks,value:T}})}},39754:function(D,E,e){var _=e(71828),w=e(44464),s=e(27670).c;D.exports=function(T,y,f,l){function t(i,r){return _.coerce(T,y,w,i,r)}s(y,l,t),t("columnwidth"),t("header.values"),t("header.format"),t("header.align"),t("header.prefix"),t("header.suffix"),t("header.height"),t("header.line.width"),t("header.line.color"),t("header.fill.color"),_.coerceFont(t,"header.font",_.extendFlat({},l.font)),function(i,r){for(var n=i.columnorder||[],o=i.header.values.length,a=n.slice(0,o),u=a.slice().sort(function(b,d){return b-d}),p=a.map(function(b){return u.indexOf(b)}),c=p.length;c/i),se=!ae||oe;X.mayHaveMarkup=ae&&te.match(/[<&>]/);var fe,ye=typeof(fe=te)=="string"&&fe.match(_.latexCheck);X.latex=ye;var pe,de,he=ye?"":g(X.calcdata.cells.prefix,Y,K)||"",xe=ye?"":g(X.calcdata.cells.suffix,Y,K)||"",Re=ye?null:g(X.calcdata.cells.format,Y,K)||null,we=he+(Re?s(Re)(X.value):X.value)+xe;if(X.wrappingNeeded=!X.wrapped&&!se&&!ye&&(pe=x(we)),X.cellHeightMayIncrease=oe||ye||X.mayHaveMarkup||(pe===void 0?x(we):pe),X.needsConvertToTspans=X.mayHaveMarkup||X.wrappingNeeded||X.latex,X.wrappingNeeded){var Ae=(_.wrapSplitCharacter===" "?we.replace(/de&&pe.push(he),de+=we}return pe}(X,ae,te);oe.length===1&&(oe[0]===X.length-1?oe.unshift(oe[0]-1):oe.push(oe[0]+1)),oe[0]%2&&oe.reverse(),H.each(function(se,fe){se.page=oe[fe],se.scrollY=ae}),H.attr("transform",function(se){var fe=B(se.rowBlocks,se.page)-se.scrollY;return t(0,fe)}),V&&(L(V,ee,H,oe,Q.prevPages,Q,0),L(V,ee,H,oe,Q.prevPages,Q,1),b(ee,V))}}function C(V,H,ee,Q){return function(X){var Y=X.calcdata?X.calcdata:X,K=H.filter(function(se){return Y.key===se.key}),te=ee||Y.scrollbarState.dragMultiplier,ae=Y.scrollY;Y.scrollY=Q===void 0?Y.scrollY+te*w.event.dy:Q;var oe=K.selectAll("."+_.cn.yColumn).selectAll("."+_.cn.columnBlock).filter(k);return A(V,oe,K),Y.scrollY===ae}}function L(V,H,ee,Q,X,Y,K){Q[K]!==X[K]&&(clearTimeout(Y.currentRepaint[K]),Y.currentRepaint[K]=setTimeout(function(){var te=ee.filter(function(ae,oe){return oe===K&&Q[oe]!==X[oe]});d(V,H,te,ee),X[K]=Q[K]}))}function O(V,H,ee,Q){return function(){var X=w.select(H.parentNode);X.each(function(Y){var K=Y.fragments;X.selectAll("tspan.line").each(function(de,he){K[he].width=this.getComputedTextLength()});var te,ae,oe=K[K.length-1].width,se=K.slice(0,-1),fe=[],ye=0,pe=Y.column.columnWidth-2*_.cellPad;for(Y.value="";se.length;)ye+(ae=(te=se.shift()).width+oe)>pe&&(Y.value+=fe.join(_.wrapSpacer)+_.lineBreaker,fe=[],ye=0),fe.push(te.text),ye+=ae;ye&&(Y.value+=fe.join(_.wrapSpacer)),Y.wrapped=!0}),X.selectAll("tspan.line").remove(),v(X.select("."+_.cn.cellText),ee,V,Q),w.select(H.parentNode.parentNode).call(U)}}function I(V,H,ee,Q,X){return function(){if(!X.settledY){var Y=w.select(H.parentNode),K=j(X),te=X.key-K.firstRowIndex,ae=K.rows[te].rowHeight,oe=X.cellHeightMayIncrease?H.parentNode.getBoundingClientRect().height+2*_.cellPad:ae,se=Math.max(oe,ae);se-K.rows[te].rowHeight&&(K.rows[te].rowHeight=se,V.selectAll("."+_.cn.columnCell).call(U),A(null,V.filter(k),0),b(ee,Q,!0)),Y.attr("transform",function(){var fe=this,ye=fe.parentNode.getBoundingClientRect(),pe=w.select(fe.parentNode).select("."+_.cn.cellRect).node().getBoundingClientRect(),de=fe.transform.baseVal.consolidate(),he=pe.top-ye.top+(de?de.matrix.f:_.cellPad);return t(R(X,w.select(fe.parentNode).select("."+_.cn.cellTextHolder).node().getBoundingClientRect().width),he)}),X.settledY=!0}}}function R(V,H){switch(V.align){case"left":default:return _.cellPad;case"right":return V.column.columnWidth-(H||0)-_.cellPad;case"center":return(V.column.columnWidth-(H||0))/2}}function U(V){V.attr("transform",function(H){var ee=H.rowBlocks[0].auxiliaryBlocks.reduce(function(X,Y){return X+G(Y,1/0)},0),Q=G(j(H),H.key);return t(0,Q+ee)}).selectAll("."+_.cn.cellRect).attr("height",function(H){return(ee=j(H),Q=H.key,ee.rows[Q-ee.firstRowIndex]).rowHeight;var ee,Q})}function B(V,H){for(var ee=0,Q=H-1;Q>=0;Q--)ee+=N(V[Q]);return ee}function G(V,H){for(var ee=0,Q=0;Q","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:t({},y.textfont,{}),editType:"calc"},text:y.text,textinfo:f.textinfo,texttemplate:w({editType:"plot"},{keys:l.eventDataKeys.concat(["label","value"])}),hovertext:y.hovertext,hoverinfo:f.hoverinfo,hovertemplate:_({},{keys:l.eventDataKeys}),textfont:y.textfont,insidetextfont:y.insidetextfont,outsidetextfont:t({},y.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:y.sort,root:f.root,domain:T({name:"treemap",trace:!0,editType:"calc"})}},78018:function(D,E,e){var _=e(74875);E.name="treemap",E.plot=function(w,s,T,y){_.plotBasePlot(E.name,w,s,T,y)},E.clean=function(w,s,T,y){_.cleanBasePlot(E.name,w,s,T,y)}},65039:function(D,E,e){var _=e(52147);E.y=function(w,s){return _.calc(w,s)},E.T=function(w){return _._runCrossTraceCalc("treemap",w)}},43473:function(D){D.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}},91174:function(D,E,e){var _=e(71828),w=e(45802),s=e(7901),T=e(27670).c,y=e(90769).handleText,f=e(97313).TEXTPAD,l=e(21081),t=l.hasColorscale,i=l.handleDefaults;D.exports=function(r,n,o,a){function u(k,h){return _.coerce(r,n,w,k,h)}var p=u("labels"),c=u("parents");if(p&&p.length&&c&&c.length){var b=u("values");b&&b.length?u("branchvalues"):u("count"),u("level"),u("maxdepth"),u("tiling.packing")==="squarify"&&u("tiling.squarifyratio"),u("tiling.flip"),u("tiling.pad");var d=u("text");u("texttemplate"),n.texttemplate||u("textinfo",Array.isArray(d)?"text+label":"label"),u("hovertext"),u("hovertemplate");var v=u("pathbar.visible");y(r,n,a,u,"auto",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),u("textposition");var x=n.textposition.indexOf("bottom")!==-1;u("marker.line.width")&&u("marker.line.color",a.paper_bgcolor);var g=u("marker.colors");(n._hasColorscale=t(r,"marker","colors")||(r.marker||{}).coloraxis)?i(r,n,a,u,{prefix:"marker.",cLetter:"c"}):u("marker.depthfade",!(g||[]).length);var m=2*n.textfont.size;u("marker.pad.t",x?m/4:m),u("marker.pad.l",m/4),u("marker.pad.r",m/4),u("marker.pad.b",x?m:m/4),u("marker.cornerradius"),n._hovered={marker:{line:{width:2,color:s.contrast(a.paper_bgcolor)}}},v&&(u("pathbar.thickness",n.pathbar.textfont.size+2*f),u("pathbar.side"),u("pathbar.edgeshape")),u("sort"),u("root.color"),T(n,a,u),n._length=null}else n.visible=!1}},80694:function(D,E,e){var _=e(39898),w=e(2791),s=e(72597).clearMinTextSize,T=e(16688).resizeText,y=e(46650);D.exports=function(f,l,t,i,r){var n,o,a=r.type,u=r.drawDescendants,p=f._fullLayout,c=p["_"+a+"layer"],b=!t;s(a,p),(n=c.selectAll("g.trace."+a).data(l,function(d){return d[0].trace.uid})).enter().append("g").classed("trace",!0).classed(a,!0),n.order(),!p.uniformtext.mode&&w.hasTransition(t)?(i&&(o=i()),_.transition().duration(t.duration).ease(t.easing).each("end",function(){o&&o()}).each("interrupt",function(){o&&o()}).each(function(){c.selectAll("g.trace").each(function(d){y(f,d,this,t,u)})})):(n.each(function(d){y(f,d,this,t,u)}),p.uniformtext.mode&&T(f,c.selectAll(".trace"),a)),b&&n.exit().remove()}},66209:function(D,E,e){var _=e(39898),w=e(71828),s=e(91424),T=e(63893),y=e(37210),f=e(96362).styleOne,l=e(43473),t=e(2791),i=e(83523),r=!0;D.exports=function(n,o,a,u,p){var c=p.barDifY,b=p.width,d=p.height,v=p.viewX,x=p.viewY,g=p.pathSlice,m=p.toMoveInsideSlice,k=p.strTransform,h=p.hasTransition,M=p.handleSlicesExit,A=p.makeUpdateSliceInterpolator,C=p.makeUpdateTextInterpolator,L={},O=n._context.staticPlot,I=n._fullLayout,R=o[0],U=R.trace,B=R.hierarchy,G=b/U._entryDepth,N=t.listPath(a.data,"id"),j=y(B.copy(),[b,d],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();(j=j.filter(function(H){var ee=N.indexOf(H.data.id);return ee!==-1&&(H.x0=G*ee,H.x1=G*(ee+1),H.y0=c,H.y1=c+d,H.onPathbar=!0,!0)})).reverse(),(u=u.data(j,t.getPtId)).enter().append("g").classed("pathbar",!0),M(u,r,L,[b,d],g),u.order();var V=u;h&&(V=V.transition().each("end",function(){var H=_.select(this);t.setSliceCursor(H,n,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),V.each(function(H){H._x0=v(H.x0),H._x1=v(H.x1),H._y0=x(H.y0),H._y1=x(H.y1),H._hoverX=v(H.x1-Math.min(b,d)/2),H._hoverY=x(H.y1-d/2);var ee=_.select(this),Q=w.ensureSingle(ee,"path","surface",function(te){te.style("pointer-events",O?"none":"all")});h?Q.transition().attrTween("d",function(te){var ae=A(te,r,L,[b,d]);return function(oe){return g(ae(oe))}}):Q.attr("d",g),ee.call(i,a,n,o,{styleOne:f,eventDataKeys:l.eventDataKeys,transitionTime:l.CLICK_TRANSITION_TIME,transitionEasing:l.CLICK_TRANSITION_EASING}).call(t.setSliceCursor,n,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:n._transitioning}),Q.call(f,H,U,{hovered:!1}),H._text=(t.getPtLabel(H)||"").split("
").join(" ")||"";var X=w.ensureSingle(ee,"g","slicetext"),Y=w.ensureSingle(X,"text","",function(te){te.attr("data-notex",1)}),K=w.ensureUniformFontSize(n,t.determineTextFont(U,H,I.font,{onPathbar:!0}));Y.text(H._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(s.font,K).call(T.convertToTspans,n),H.textBB=s.bBox(Y.node()),H.transform=m(H,{fontSize:K.size,onPathbar:!0}),H.transform.fontSize=K.size,h?Y.transition().attrTween("transform",function(te){var ae=C(te,r,L,[b,d]);return function(oe){return k(ae(oe))}}):Y.attr("transform",k(H))})}},52583:function(D,E,e){var _=e(39898),w=e(71828),s=e(91424),T=e(63893),y=e(37210),f=e(96362).styleOne,l=e(43473),t=e(2791),i=e(83523),r=e(24714).formatSliceLabel,n=!1;D.exports=function(o,a,u,p,c){var b=c.width,d=c.height,v=c.viewX,x=c.viewY,g=c.pathSlice,m=c.toMoveInsideSlice,k=c.strTransform,h=c.hasTransition,M=c.handleSlicesExit,A=c.makeUpdateSliceInterpolator,C=c.makeUpdateTextInterpolator,L=c.prevEntry,O=o._context.staticPlot,I=o._fullLayout,R=a[0].trace,U=R.textposition.indexOf("left")!==-1,B=R.textposition.indexOf("right")!==-1,G=R.textposition.indexOf("bottom")!==-1,N=!G&&!R.marker.pad.t||G&&!R.marker.pad.b,j=y(u,[b,d],{packing:R.tiling.packing,squarifyratio:R.tiling.squarifyratio,flipX:R.tiling.flip.indexOf("x")>-1,flipY:R.tiling.flip.indexOf("y")>-1,pad:{inner:R.tiling.pad,top:R.marker.pad.t,left:R.marker.pad.l,right:R.marker.pad.r,bottom:R.marker.pad.b}}).descendants(),V=1/0,H=-1/0;j.forEach(function(K){var te=K.depth;te>=R._maxDepth?(K.x0=K.x1=(K.x0+K.x1)/2,K.y0=K.y1=(K.y0+K.y1)/2):(V=Math.min(V,te),H=Math.max(H,te))}),p=p.data(j,t.getPtId),R._maxVisibleLayers=isFinite(H)?H-V+1:0,p.enter().append("g").classed("slice",!0),M(p,n,{},[b,d],g),p.order();var ee=null;if(h&&L){var Q=t.getPtId(L);p.each(function(K){ee===null&&t.getPtId(K)===Q&&(ee={x0:K.x0,x1:K.x1,y0:K.y0,y1:K.y1})})}var X=function(){return ee||{x0:0,x1:b,y0:0,y1:d}},Y=p;return h&&(Y=Y.transition().each("end",function(){var K=_.select(this);t.setSliceCursor(K,o,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),Y.each(function(K){var te=t.isHeader(K,R);K._x0=v(K.x0),K._x1=v(K.x1),K._y0=x(K.y0),K._y1=x(K.y1),K._hoverX=v(K.x1-R.marker.pad.r),K._hoverY=x(G?K.y1-R.marker.pad.b/2:K.y0+R.marker.pad.t/2);var ae=_.select(this),oe=w.ensureSingle(ae,"path","surface",function(pe){pe.style("pointer-events",O?"none":"all")});h?oe.transition().attrTween("d",function(pe){var de=A(pe,n,X(),[b,d]);return function(he){return g(de(he))}}):oe.attr("d",g),ae.call(i,u,o,a,{styleOne:f,eventDataKeys:l.eventDataKeys,transitionTime:l.CLICK_TRANSITION_TIME,transitionEasing:l.CLICK_TRANSITION_EASING}).call(t.setSliceCursor,o,{isTransitioning:o._transitioning}),oe.call(f,K,R,{hovered:!1}),K.x0===K.x1||K.y0===K.y1?K._text="":K._text=te?N?"":t.getPtLabel(K)||"":r(K,u,R,a,I)||"";var se=w.ensureSingle(ae,"g","slicetext"),fe=w.ensureSingle(se,"text","",function(pe){pe.attr("data-notex",1)}),ye=w.ensureUniformFontSize(o,t.determineTextFont(R,K,I.font));fe.text(K._text||" ").classed("slicetext",!0).attr("text-anchor",B?"end":U||te?"start":"middle").call(s.font,ye).call(T.convertToTspans,o),K.textBB=s.bBox(fe.node()),K.transform=m(K,{fontSize:ye.size,isHeader:te}),K.transform.fontSize=ye.size,h?fe.transition().attrTween("transform",function(pe){var de=C(pe,n,X(),[b,d]);return function(he){return k(de(he))}}):fe.attr("transform",k(K))}),ee}},14102:function(D){D.exports=function E(e,_,w){var s;w.swapXY&&(s=e.x0,e.x0=e.y0,e.y0=s,s=e.x1,e.x1=e.y1,e.y1=s),w.flipX&&(s=e.x0,e.x0=_[0]-e.x1,e.x1=_[0]-s),w.flipY&&(s=e.y0,e.y0=_[1]-e.y1,e.y1=_[1]-s);var T=e.children;if(T)for(var y=0;y-1?R+G:-(B+G):0,j={x0:U,x1:U,y0:N,y1:N+B},V=function(ge,be,Se){var Ne=d.tiling.pad,Ye=function(ft){return ft-Ne<=be.x0},Ze=function(ft){return ft+Ne>=be.x1},st=function(ft){return ft-Ne<=be.y0},ot=function(ft){return ft+Ne>=be.y1};return ge.x0===be.x0&&ge.x1===be.x1&&ge.y0===be.y0&&ge.y1===be.y1?{x0:ge.x0,x1:ge.x1,y0:ge.y0,y1:ge.y1}:{x0:Ye(ge.x0-Ne)?0:Ze(ge.x0-Ne)?Se[0]:ge.x0,x1:Ye(ge.x1+Ne)?0:Ze(ge.x1+Ne)?Se[0]:ge.x1,y0:st(ge.y0-Ne)?0:ot(ge.y0-Ne)?Se[1]:ge.y0,y1:st(ge.y1+Ne)?0:ot(ge.y1+Ne)?Se[1]:ge.y1}},H=null,ee={},Q={},X=null,Y=function(ge,be){return be?ee[r(ge)]:Q[r(ge)]};b.hasMultipleRoots&&M&&C++,d._maxDepth=C,d._backgroundColor=c.paper_bgcolor,d._entryDepth=g.data.depth,d._atRootLevel=M;var K=-I/2+L.l+L.w*(O.x[1]+O.x[0])/2,te=-R/2+L.t+L.h*(1-(O.y[1]+O.y[0])/2),ae=function(ge){return K+ge},oe=function(ge){return te+ge},se=oe(0),fe=ae(0),ye=function(ge){return fe+ge},pe=function(ge){return se+ge};function de(ge,be){return ge+","+be}var he=ye(0),xe=function(ge){ge.x=Math.max(he,ge.x)},Re=d.pathbar.edgeshape,we=d[v?"tiling":"marker"].pad,Ae=function(ge){return d.textposition.indexOf(ge)!==-1},Me=Ae("top"),Ce=Ae("left"),ne=Ae("right"),ue=Ae("bottom"),me=function(ge,be){var Se=ge.x0,Ne=ge.x1,Ye=ge.y0,Ze=ge.y1,st=ge.textBB,ot=Me||be.isHeader&&!ue?"start":ue?"end":"middle",ft=Ae("right"),yt=Ae("left")||be.onPathbar?-1:ft?1:0;if(be.isHeader){if((Se+=(v?we:we.l)-y)>=(Ne-=(v?we:we.r)-y)){var Et=(Se+Ne)/2;Se=Et,Ne=Et}var Tt;ue?Ye<(Tt=Ze-(v?we:we.b))&&Tt"?(ft.x-=Ze,yt.x-=Ze,Et.x-=Ze,Tt.x-=Ze):Re==="/"?(Et.x-=Ze,Tt.x-=Ze,st.x-=Ze/2,ot.x-=Ze/2):Re==="\\"?(ft.x-=Ze,yt.x-=Ze,st.x-=Ze/2,ot.x-=Ze/2):Re==="<"&&(st.x-=Ze,ot.x-=Ze),xe(ft),xe(Tt),xe(st),xe(yt),xe(Et),xe(ot),"M"+de(ft.x,ft.y)+"L"+de(yt.x,yt.y)+"L"+de(ot.x,ot.y)+"L"+de(Et.x,Et.y)+"L"+de(Tt.x,Tt.y)+"L"+de(st.x,st.y)+"Z"},toMoveInsideSlice:me,makeUpdateSliceInterpolator:Ee,makeUpdateTextInterpolator:Ue,handleSlicesExit:De,hasTransition:A,strTransform:je}):k.remove()}},96362:function(D,E,e){var _=e(39898),w=e(7901),s=e(71828),T=e(2791),y=e(72597).resizeText;function f(l,t,i,r){var n,o,a=(r||{}).hovered,u=t.data.data,p=u.i,c=u.color,b=T.isHierarchyRoot(t),d=1;if(a)n=i._hovered.marker.line.color,o=i._hovered.marker.line.width;else if(b&&c===i.root.color)d=100,n="rgba(0,0,0,0)",o=0;else if(n=s.castOption(i,p,"marker.line.color")||w.defaultLine,o=s.castOption(i,p,"marker.line.width")||0,!i._hasColorscale&&!t.onPathbar){var v=i.marker.depthfade;if(v){var x,g=w.combine(w.addOpacity(i._backgroundColor,.75),c);if(v===!0){var m=T.getMaxDepth(i);x=isFinite(m)?T.isLeaf(t)?0:i._maxVisibleLayers-(t.data.depth-i._entryDepth):t.data.height+1}else x=t.data.depth-i._entryDepth,i._atRootLevel||x++;if(x>0)for(var k=0;k0){var g,m,k,h,M,A=f.xa,C=f.ya;p.orientation==="h"?(M=l,g="y",k=C,m="x",h=A):(M=t,g="x",k=A,m="y",h=C);var L=u[f.index];if(M>=L.span[0]&&M<=L.span[1]){var O=w.extendFlat({},f),I=h.c2p(M,!0),R=y.getKdeValue(L,p,M),U=y.getPositionOnKdePath(L,p,I),B=k._offset,G=k._length;O[g+"0"]=U[0],O[g+"1"]=U[1],O[m+"0"]=O[m+"1"]=I,O[m+"Label"]=m+": "+s.hoverLabelText(h,M,p[m+"hoverformat"])+", "+u[0].t.labels.kde+" "+R.toFixed(3);for(var N=0,j=0;j")),o.color=function(C,L){var O=C[L.dir].marker,I=O.color,R=O.line.color,U=O.line.width;return w(I)?I:w(R)&&U?R:void 0}(u,d),[o]}function A(C){return _(b,C,u[c+"hoverformat"])}}},19990:function(D,E,e){D.exports={attributes:e(43037),layoutAttributes:e(13494),supplyDefaults:e(83266).supplyDefaults,crossTraceDefaults:e(83266).crossTraceDefaults,supplyLayoutDefaults:e(5176),calc:e(52752),crossTraceCalc:e(70766),plot:e(30436),style:e(55750).style,hoverPoints:e(61326),eventData:e(58593),selectPoints:e(81974),moduleType:"trace",name:"waterfall",basePlotModule:e(93612),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}},13494:function(D){D.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}},5176:function(D,E,e){var _=e(71828),w=e(13494);D.exports=function(s,T,y){var f=!1;function l(r,n){return _.coerce(s,T,w,r,n)}for(var t=0;t0&&(R+=m?"M"+O[0]+","+I[1]+"V"+I[0]:"M"+O[1]+","+I[0]+"H"+O[0]),k!=="between"&&(A.isSum||C path").each(function(p){if(!p.isBlank){var c=u[p.dir].marker;_.select(this).call(s.fill,c.color).call(s.stroke,c.line.color).call(w.dashLine,c.line.dash,c.line.width).style("opacity",u.selectedpoints&&!p.selected?T:1)}}),l(a,u,t),a.selectAll(".lines").each(function(){var p=u.connector.line;w.lineGroupStyle(_.select(this).selectAll("path"),p.width,p.color,p.dash)})})}}},82887:function(D,E,e){var _=e(89298),w=e(71828),s=e(86281),T=e(79344).p,y=e(50606).BADNUM;E.moduleType="transform",E.name="aggregate";var f=E.attributes={enabled:{valType:"boolean",dflt:!0,editType:"calc"},groups:{valType:"string",strict:!0,noBlank:!0,arrayOk:!0,dflt:"x",editType:"calc"},aggregations:{_isLinkedToArray:"aggregation",target:{valType:"string",editType:"calc"},func:{valType:"enumerated",values:["count","sum","avg","median","mode","rms","stddev","min","max","first","last","change","range"],dflt:"first",editType:"calc"},funcmode:{valType:"enumerated",values:["sample","population"],dflt:"sample",editType:"calc"},enabled:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},editType:"calc"},l=f.aggregations;function t(o,a,u,p){if(p.enabled){for(var c=p.target,b=w.nestedProperty(a,c),d=b.get(),v=function(m,k){var h=m.func,M=k.d2c,A=k.c2d;switch(h){case"count":return i;case"first":return r;case"last":return n;case"sum":return function(C,L){for(var O=0,I=0;II&&(I=G,R=B)}}return I?A(R):y};case"rms":return function(C,L){for(var O=0,I=0,R=0;R":return function(H){return V(H)>N};case">=":return function(H){return V(H)>=N};case"[]":return function(H){var ee=V(H);return ee>=N[0]&&ee<=N[1]};case"()":return function(H){var ee=V(H);return ee>N[0]&&ee=N[0]&&eeN[0]&&ee<=N[1]};case"][":return function(H){var ee=V(H);return ee<=N[0]||ee>=N[1]};case")(":return function(H){var ee=V(H);return eeN[1]};case"](":return function(H){var ee=V(H);return ee<=N[0]||ee>N[1]};case")[":return function(H){var ee=V(H);return ee=N[1]};case"{}":return function(H){return N.indexOf(V(H))!==-1};case"}{":return function(H){return N.indexOf(V(H))===-1}}}(n,s.getDataToCoordFunc(i,r,a,o),p),m={},k={},h=0;b?(v=function(L){m[L.astr]=_.extendDeep([],L.get()),L.set(new Array(u))},x=function(L,O){var I=m[L.astr][O];L.get()[O]=I}):(v=function(L){m[L.astr]=_.extendDeep([],L.get()),L.set([])},x=function(L,O){var I=m[L.astr][O];L.get().push(I)}),C(v);for(var M=T(r.transforms,n),A=0;A1?"%{group} (%{trace})":"%{group}");var o=f.styles,a=r.styles=[];if(o)for(i=0;iv)throw new RangeError('The value "'+ge+'" is invalid for option "size"');var be=new Uint8Array(ge);return Object.setPrototypeOf(be,g.prototype),be}function g(ge,be,Se){if(typeof ge=="number"){if(typeof be=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return h(ge)}return m(ge,be,Se)}function m(ge,be,Se){if(typeof ge=="string")return function(Ze,st){if(typeof st=="string"&&st!==""||(st="utf8"),!g.isEncoding(st))throw new TypeError("Unknown encoding: "+st);var ot=0|L(Ze,st),ft=x(ot),yt=ft.write(Ze,st);return yt!==ot&&(ft=ft.slice(0,yt)),ft}(ge,be);if(ArrayBuffer.isView(ge))return function(Ze){if(Te(Ze,Uint8Array)){var st=new Uint8Array(Ze);return A(st.buffer,st.byteOffset,st.byteLength)}return M(Ze)}(ge);if(ge==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+p(ge));if(Te(ge,ArrayBuffer)||ge&&Te(ge.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Te(ge,SharedArrayBuffer)||ge&&Te(ge.buffer,SharedArrayBuffer)))return A(ge,be,Se);if(typeof ge=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var Ne=ge.valueOf&&ge.valueOf();if(Ne!=null&&Ne!==ge)return g.from(Ne,be,Se);var Ye=function(Ze){if(g.isBuffer(Ze)){var st=0|C(Ze.length),ot=x(st);return ot.length===0||Ze.copy(ot,0,0,st),ot}return Ze.length!==void 0?typeof Ze.length!="number"||Ee(Ze.length)?x(0):M(Ze):Ze.type==="Buffer"&&Array.isArray(Ze.data)?M(Ze.data):void 0}(ge);if(Ye)return Ye;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ge[Symbol.toPrimitive]=="function")return g.from(ge[Symbol.toPrimitive]("string"),be,Se);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+p(ge))}function k(ge){if(typeof ge!="number")throw new TypeError('"size" argument must be of type number');if(ge<0)throw new RangeError('The value "'+ge+'" is invalid for option "size"')}function h(ge){return k(ge),x(ge<0?0:0|C(ge))}function M(ge){for(var be=ge.length<0?0:0|C(ge.length),Se=x(be),Ne=0;Ne=v)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+v.toString(16)+" bytes");return 0|ge}function L(ge,be){if(g.isBuffer(ge))return ge.length;if(ArrayBuffer.isView(ge)||Te(ge,ArrayBuffer))return ge.byteLength;if(typeof ge!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+p(ge));var Se=ge.length,Ne=arguments.length>2&&arguments[2]===!0;if(!Ne&&Se===0)return 0;for(var Ye=!1;;)switch(be){case"ascii":case"latin1":case"binary":return Se;case"utf8":case"utf-8":return ne(ge).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*Se;case"hex":return Se>>>1;case"base64":return ue(ge).length;default:if(Ye)return Ne?-1:ne(ge).length;be=(""+be).toLowerCase(),Ye=!0}}function O(ge,be,Se){var Ne=!1;if((be===void 0||be<0)&&(be=0),be>this.length||((Se===void 0||Se>this.length)&&(Se=this.length),Se<=0)||(Se>>>=0)<=(be>>>=0))return"";for(ge||(ge="utf8");;)switch(ge){case"hex":return K(this,be,Se);case"utf8":case"utf-8":return ee(this,be,Se);case"ascii":return X(this,be,Se);case"latin1":case"binary":return Y(this,be,Se);case"base64":return H(this,be,Se);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return te(this,be,Se);default:if(Ne)throw new TypeError("Unknown encoding: "+ge);ge=(ge+"").toLowerCase(),Ne=!0}}function I(ge,be,Se){var Ne=ge[be];ge[be]=ge[Se],ge[Se]=Ne}function R(ge,be,Se,Ne,Ye){if(ge.length===0)return-1;if(typeof Se=="string"?(Ne=Se,Se=0):Se>2147483647?Se=2147483647:Se<-2147483648&&(Se=-2147483648),Ee(Se=+Se)&&(Se=Ye?0:ge.length-1),Se<0&&(Se=ge.length+Se),Se>=ge.length){if(Ye)return-1;Se=ge.length-1}else if(Se<0){if(!Ye)return-1;Se=0}if(typeof be=="string"&&(be=g.from(be,Ne)),g.isBuffer(be))return be.length===0?-1:U(ge,be,Se,Ne,Ye);if(typeof be=="number")return be&=255,typeof Uint8Array.prototype.indexOf=="function"?Ye?Uint8Array.prototype.indexOf.call(ge,be,Se):Uint8Array.prototype.lastIndexOf.call(ge,be,Se):U(ge,[be],Se,Ne,Ye);throw new TypeError("val must be string, number or Buffer")}function U(ge,be,Se,Ne,Ye){var Ze,st=1,ot=ge.length,ft=be.length;if(Ne!==void 0&&((Ne=String(Ne).toLowerCase())==="ucs2"||Ne==="ucs-2"||Ne==="utf16le"||Ne==="utf-16le")){if(ge.length<2||be.length<2)return-1;st=2,ot/=2,ft/=2,Se/=2}function yt(Dt,It){return st===1?Dt[It]:Dt.readUInt16BE(It*st)}if(Ye){var Et=-1;for(Ze=Se;Zeot&&(Se=ot-ft),Ze=Se;Ze>=0;Ze--){for(var Tt=!0,xt=0;xtYe&&(Ne=Ye):Ne=Ye;var Ze,st=be.length;for(Ne>st/2&&(Ne=st/2),Ze=0;Ze>8,ft=st%256,yt.push(ft),yt.push(ot);return yt}(be,ge.length-Se),ge,Se,Ne)}function H(ge,be,Se){return be===0&&Se===ge.length?c.fromByteArray(ge):c.fromByteArray(ge.slice(be,Se))}function ee(ge,be,Se){Se=Math.min(ge.length,Se);for(var Ne=[],Ye=be;Ye239?4:Ze>223?3:Ze>191?2:1;if(Ye+ot<=Se){var ft=void 0,yt=void 0,Et=void 0,Tt=void 0;switch(ot){case 1:Ze<128&&(st=Ze);break;case 2:(192&(ft=ge[Ye+1]))==128&&(Tt=(31&Ze)<<6|63&ft)>127&&(st=Tt);break;case 3:ft=ge[Ye+1],yt=ge[Ye+2],(192&ft)==128&&(192&yt)==128&&(Tt=(15&Ze)<<12|(63&ft)<<6|63&yt)>2047&&(Tt<55296||Tt>57343)&&(st=Tt);break;case 4:ft=ge[Ye+1],yt=ge[Ye+2],Et=ge[Ye+3],(192&ft)==128&&(192&yt)==128&&(192&Et)==128&&(Tt=(15&Ze)<<18|(63&ft)<<12|(63&yt)<<6|63&Et)>65535&&Tt<1114112&&(st=Tt)}}st===null?(st=65533,ot=1):st>65535&&(st-=65536,Ne.push(st>>>10&1023|55296),st=56320|1023&st),Ne.push(st),Ye+=ot}return function(xt){var Dt=xt.length;if(Dt<=Q)return String.fromCharCode.apply(String,xt);for(var It="",Ft=0;Ft"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(g.prototype,"parent",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.buffer}}),Object.defineProperty(g.prototype,"offset",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.byteOffset}}),g.poolSize=8192,g.from=function(ge,be,Se){return m(ge,be,Se)},Object.setPrototypeOf(g.prototype,Uint8Array.prototype),Object.setPrototypeOf(g,Uint8Array),g.alloc=function(ge,be,Se){return function(Ne,Ye,Ze){return k(Ne),Ne<=0?x(Ne):Ye!==void 0?typeof Ze=="string"?x(Ne).fill(Ye,Ze):x(Ne).fill(Ye):x(Ne)}(ge,be,Se)},g.allocUnsafe=function(ge){return h(ge)},g.allocUnsafeSlow=function(ge){return h(ge)},g.isBuffer=function(ge){return ge!=null&&ge._isBuffer===!0&&ge!==g.prototype},g.compare=function(ge,be){if(Te(ge,Uint8Array)&&(ge=g.from(ge,ge.offset,ge.byteLength)),Te(be,Uint8Array)&&(be=g.from(be,be.offset,be.byteLength)),!g.isBuffer(ge)||!g.isBuffer(be))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(ge===be)return 0;for(var Se=ge.length,Ne=be.length,Ye=0,Ze=Math.min(Se,Ne);YeNe.length?(g.isBuffer(Ze)||(Ze=g.from(Ze)),Ze.copy(Ne,Ye)):Uint8Array.prototype.set.call(Ne,Ze,Ye);else{if(!g.isBuffer(Ze))throw new TypeError('"list" argument must be an Array of Buffers');Ze.copy(Ne,Ye)}Ye+=Ze.length}return Ne},g.byteLength=L,g.prototype._isBuffer=!0,g.prototype.swap16=function(){var ge=this.length;if(ge%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var be=0;bebe&&(ge+=" ... "),""},d&&(g.prototype[d]=g.prototype.inspect),g.prototype.compare=function(ge,be,Se,Ne,Ye){if(Te(ge,Uint8Array)&&(ge=g.from(ge,ge.offset,ge.byteLength)),!g.isBuffer(ge))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+p(ge));if(be===void 0&&(be=0),Se===void 0&&(Se=ge?ge.length:0),Ne===void 0&&(Ne=0),Ye===void 0&&(Ye=this.length),be<0||Se>ge.length||Ne<0||Ye>this.length)throw new RangeError("out of range index");if(Ne>=Ye&&be>=Se)return 0;if(Ne>=Ye)return-1;if(be>=Se)return 1;if(this===ge)return 0;for(var Ze=(Ye>>>=0)-(Ne>>>=0),st=(Se>>>=0)-(be>>>=0),ot=Math.min(Ze,st),ft=this.slice(Ne,Ye),yt=ge.slice(be,Se),Et=0;Et>>=0,isFinite(Se)?(Se>>>=0,Ne===void 0&&(Ne="utf8")):(Ne=Se,Se=void 0)}var Ye=this.length-be;if((Se===void 0||Se>Ye)&&(Se=Ye),ge.length>0&&(Se<0||be<0)||be>this.length)throw new RangeError("Attempt to write outside buffer bounds");Ne||(Ne="utf8");for(var Ze=!1;;)switch(Ne){case"hex":return B(this,ge,be,Se);case"utf8":case"utf-8":return G(this,ge,be,Se);case"ascii":case"latin1":case"binary":return N(this,ge,be,Se);case"base64":return j(this,ge,be,Se);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,ge,be,Se);default:if(Ze)throw new TypeError("Unknown encoding: "+Ne);Ne=(""+Ne).toLowerCase(),Ze=!0}},g.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;function X(ge,be,Se){var Ne="";Se=Math.min(ge.length,Se);for(var Ye=be;YeNe)&&(Se=Ne);for(var Ye="",Ze=be;ZeSe)throw new RangeError("Trying to access beyond buffer length")}function oe(ge,be,Se,Ne,Ye,Ze){if(!g.isBuffer(ge))throw new TypeError('"buffer" argument must be a Buffer instance');if(be>Ye||bege.length)throw new RangeError("Index out of range")}function se(ge,be,Se,Ne,Ye){we(be,Ne,Ye,ge,Se,7);var Ze=Number(be&BigInt(4294967295));ge[Se++]=Ze,Ze>>=8,ge[Se++]=Ze,Ze>>=8,ge[Se++]=Ze,Ze>>=8,ge[Se++]=Ze;var st=Number(be>>BigInt(32)&BigInt(4294967295));return ge[Se++]=st,st>>=8,ge[Se++]=st,st>>=8,ge[Se++]=st,st>>=8,ge[Se++]=st,Se}function fe(ge,be,Se,Ne,Ye){we(be,Ne,Ye,ge,Se,7);var Ze=Number(be&BigInt(4294967295));ge[Se+7]=Ze,Ze>>=8,ge[Se+6]=Ze,Ze>>=8,ge[Se+5]=Ze,Ze>>=8,ge[Se+4]=Ze;var st=Number(be>>BigInt(32)&BigInt(4294967295));return ge[Se+3]=st,st>>=8,ge[Se+2]=st,st>>=8,ge[Se+1]=st,st>>=8,ge[Se]=st,Se+8}function ye(ge,be,Se,Ne,Ye,Ze){if(Se+Ne>ge.length)throw new RangeError("Index out of range");if(Se<0)throw new RangeError("Index out of range")}function pe(ge,be,Se,Ne,Ye){return be=+be,Se>>>=0,Ye||ye(ge,0,Se,4),b.write(ge,be,Se,Ne,23,4),Se+4}function de(ge,be,Se,Ne,Ye){return be=+be,Se>>>=0,Ye||ye(ge,0,Se,8),b.write(ge,be,Se,Ne,52,8),Se+8}g.prototype.slice=function(ge,be){var Se=this.length;(ge=~~ge)<0?(ge+=Se)<0&&(ge=0):ge>Se&&(ge=Se),(be=be===void 0?Se:~~be)<0?(be+=Se)<0&&(be=0):be>Se&&(be=Se),be>>=0,be>>>=0,Se||ae(ge,be,this.length);for(var Ne=this[ge],Ye=1,Ze=0;++Ze>>=0,be>>>=0,Se||ae(ge,be,this.length);for(var Ne=this[ge+--be],Ye=1;be>0&&(Ye*=256);)Ne+=this[ge+--be]*Ye;return Ne},g.prototype.readUint8=g.prototype.readUInt8=function(ge,be){return ge>>>=0,be||ae(ge,1,this.length),this[ge]},g.prototype.readUint16LE=g.prototype.readUInt16LE=function(ge,be){return ge>>>=0,be||ae(ge,2,this.length),this[ge]|this[ge+1]<<8},g.prototype.readUint16BE=g.prototype.readUInt16BE=function(ge,be){return ge>>>=0,be||ae(ge,2,this.length),this[ge]<<8|this[ge+1]},g.prototype.readUint32LE=g.prototype.readUInt32LE=function(ge,be){return ge>>>=0,be||ae(ge,4,this.length),(this[ge]|this[ge+1]<<8|this[ge+2]<<16)+16777216*this[ge+3]},g.prototype.readUint32BE=g.prototype.readUInt32BE=function(ge,be){return ge>>>=0,be||ae(ge,4,this.length),16777216*this[ge]+(this[ge+1]<<16|this[ge+2]<<8|this[ge+3])},g.prototype.readBigUInt64LE=De(function(ge){Ae(ge>>>=0,"offset");var be=this[ge],Se=this[ge+7];be!==void 0&&Se!==void 0||Me(ge,this.length-8);var Ne=be+this[++ge]*Math.pow(2,8)+this[++ge]*Math.pow(2,16)+this[++ge]*Math.pow(2,24),Ye=this[++ge]+this[++ge]*Math.pow(2,8)+this[++ge]*Math.pow(2,16)+Se*Math.pow(2,24);return BigInt(Ne)+(BigInt(Ye)<>>=0,"offset");var be=this[ge],Se=this[ge+7];be!==void 0&&Se!==void 0||Me(ge,this.length-8);var Ne=be*Math.pow(2,24)+this[++ge]*Math.pow(2,16)+this[++ge]*Math.pow(2,8)+this[++ge],Ye=this[++ge]*Math.pow(2,24)+this[++ge]*Math.pow(2,16)+this[++ge]*Math.pow(2,8)+Se;return(BigInt(Ne)<>>=0,be>>>=0,Se||ae(ge,be,this.length);for(var Ne=this[ge],Ye=1,Ze=0;++Ze=(Ye*=128)&&(Ne-=Math.pow(2,8*be)),Ne},g.prototype.readIntBE=function(ge,be,Se){ge>>>=0,be>>>=0,Se||ae(ge,be,this.length);for(var Ne=be,Ye=1,Ze=this[ge+--Ne];Ne>0&&(Ye*=256);)Ze+=this[ge+--Ne]*Ye;return Ze>=(Ye*=128)&&(Ze-=Math.pow(2,8*be)),Ze},g.prototype.readInt8=function(ge,be){return ge>>>=0,be||ae(ge,1,this.length),128&this[ge]?-1*(255-this[ge]+1):this[ge]},g.prototype.readInt16LE=function(ge,be){ge>>>=0,be||ae(ge,2,this.length);var Se=this[ge]|this[ge+1]<<8;return 32768&Se?4294901760|Se:Se},g.prototype.readInt16BE=function(ge,be){ge>>>=0,be||ae(ge,2,this.length);var Se=this[ge+1]|this[ge]<<8;return 32768&Se?4294901760|Se:Se},g.prototype.readInt32LE=function(ge,be){return ge>>>=0,be||ae(ge,4,this.length),this[ge]|this[ge+1]<<8|this[ge+2]<<16|this[ge+3]<<24},g.prototype.readInt32BE=function(ge,be){return ge>>>=0,be||ae(ge,4,this.length),this[ge]<<24|this[ge+1]<<16|this[ge+2]<<8|this[ge+3]},g.prototype.readBigInt64LE=De(function(ge){Ae(ge>>>=0,"offset");var be=this[ge],Se=this[ge+7];be!==void 0&&Se!==void 0||Me(ge,this.length-8);var Ne=this[ge+4]+this[ge+5]*Math.pow(2,8)+this[ge+6]*Math.pow(2,16)+(Se<<24);return(BigInt(Ne)<>>=0,"offset");var be=this[ge],Se=this[ge+7];be!==void 0&&Se!==void 0||Me(ge,this.length-8);var Ne=(be<<24)+this[++ge]*Math.pow(2,16)+this[++ge]*Math.pow(2,8)+this[++ge];return(BigInt(Ne)<>>=0,be||ae(ge,4,this.length),b.read(this,ge,!0,23,4)},g.prototype.readFloatBE=function(ge,be){return ge>>>=0,be||ae(ge,4,this.length),b.read(this,ge,!1,23,4)},g.prototype.readDoubleLE=function(ge,be){return ge>>>=0,be||ae(ge,8,this.length),b.read(this,ge,!0,52,8)},g.prototype.readDoubleBE=function(ge,be){return ge>>>=0,be||ae(ge,8,this.length),b.read(this,ge,!1,52,8)},g.prototype.writeUintLE=g.prototype.writeUIntLE=function(ge,be,Se,Ne){ge=+ge,be>>>=0,Se>>>=0,Ne||oe(this,ge,be,Se,Math.pow(2,8*Se)-1,0);var Ye=1,Ze=0;for(this[be]=255≥++Ze>>=0,Se>>>=0,Ne||oe(this,ge,be,Se,Math.pow(2,8*Se)-1,0);var Ye=Se-1,Ze=1;for(this[be+Ye]=255≥--Ye>=0&&(Ze*=256);)this[be+Ye]=ge/Ze&255;return be+Se},g.prototype.writeUint8=g.prototype.writeUInt8=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,1,255,0),this[be]=255&ge,be+1},g.prototype.writeUint16LE=g.prototype.writeUInt16LE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,2,65535,0),this[be]=255&ge,this[be+1]=ge>>>8,be+2},g.prototype.writeUint16BE=g.prototype.writeUInt16BE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,2,65535,0),this[be]=ge>>>8,this[be+1]=255&ge,be+2},g.prototype.writeUint32LE=g.prototype.writeUInt32LE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,4,4294967295,0),this[be+3]=ge>>>24,this[be+2]=ge>>>16,this[be+1]=ge>>>8,this[be]=255&ge,be+4},g.prototype.writeUint32BE=g.prototype.writeUInt32BE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,4,4294967295,0),this[be]=ge>>>24,this[be+1]=ge>>>16,this[be+2]=ge>>>8,this[be+3]=255&ge,be+4},g.prototype.writeBigUInt64LE=De(function(ge){var be=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return se(this,ge,be,BigInt(0),BigInt("0xffffffffffffffff"))}),g.prototype.writeBigUInt64BE=De(function(ge){var be=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return fe(this,ge,be,BigInt(0),BigInt("0xffffffffffffffff"))}),g.prototype.writeIntLE=function(ge,be,Se,Ne){if(ge=+ge,be>>>=0,!Ne){var Ye=Math.pow(2,8*Se-1);oe(this,ge,be,Se,Ye-1,-Ye)}var Ze=0,st=1,ot=0;for(this[be]=255≥++Ze>0)-ot&255;return be+Se},g.prototype.writeIntBE=function(ge,be,Se,Ne){if(ge=+ge,be>>>=0,!Ne){var Ye=Math.pow(2,8*Se-1);oe(this,ge,be,Se,Ye-1,-Ye)}var Ze=Se-1,st=1,ot=0;for(this[be+Ze]=255≥--Ze>=0&&(st*=256);)ge<0&&ot===0&&this[be+Ze+1]!==0&&(ot=1),this[be+Ze]=(ge/st>>0)-ot&255;return be+Se},g.prototype.writeInt8=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,1,127,-128),ge<0&&(ge=255+ge+1),this[be]=255&ge,be+1},g.prototype.writeInt16LE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,2,32767,-32768),this[be]=255&ge,this[be+1]=ge>>>8,be+2},g.prototype.writeInt16BE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,2,32767,-32768),this[be]=ge>>>8,this[be+1]=255&ge,be+2},g.prototype.writeInt32LE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,4,2147483647,-2147483648),this[be]=255&ge,this[be+1]=ge>>>8,this[be+2]=ge>>>16,this[be+3]=ge>>>24,be+4},g.prototype.writeInt32BE=function(ge,be,Se){return ge=+ge,be>>>=0,Se||oe(this,ge,be,4,2147483647,-2147483648),ge<0&&(ge=4294967295+ge+1),this[be]=ge>>>24,this[be+1]=ge>>>16,this[be+2]=ge>>>8,this[be+3]=255&ge,be+4},g.prototype.writeBigInt64LE=De(function(ge){var be=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return se(this,ge,be,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),g.prototype.writeBigInt64BE=De(function(ge){var be=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return fe(this,ge,be,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),g.prototype.writeFloatLE=function(ge,be,Se){return pe(this,ge,be,!0,Se)},g.prototype.writeFloatBE=function(ge,be,Se){return pe(this,ge,be,!1,Se)},g.prototype.writeDoubleLE=function(ge,be,Se){return de(this,ge,be,!0,Se)},g.prototype.writeDoubleBE=function(ge,be,Se){return de(this,ge,be,!1,Se)},g.prototype.copy=function(ge,be,Se,Ne){if(!g.isBuffer(ge))throw new TypeError("argument should be a Buffer");if(Se||(Se=0),Ne||Ne===0||(Ne=this.length),be>=ge.length&&(be=ge.length),be||(be=0),Ne>0&&Ne=this.length)throw new RangeError("Index out of range");if(Ne<0)throw new RangeError("sourceEnd out of bounds");Ne>this.length&&(Ne=this.length),ge.length-be>>=0,Se=Se===void 0?this.length:Se>>>0,ge||(ge=0),typeof ge=="number")for(Ze=be;Ze"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}(),function(){var Et,Tt=u(st);if(ot){var xt=u(this).constructor;Et=Reflect.construct(Tt,arguments,xt)}else Et=Tt.apply(this,arguments);return o(this,Et)});function yt(){var Et;return i(this,yt),Et=ft.call(this),Object.defineProperty(a(Et),"message",{value:be.apply(a(Et),arguments),writable:!0,configurable:!0}),Et.name="".concat(Et.name," [").concat(ge,"]"),Et.stack,delete Et.name,Et}return Ye=yt,(Ze=[{key:"code",get:function(){return ge},set:function(Et){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:Et,writable:!0})}},{key:"toString",value:function(){return"".concat(this.name," [").concat(ge,"]: ").concat(this.message)}}])&&r(Ye.prototype,Ze),Object.defineProperty(Ye,"prototype",{writable:!1}),yt}(Se)}function Re(ge){for(var be="",Se=ge.length,Ne=ge[0]==="-"?1:0;Se>=Ne+4;Se-=3)be="_".concat(ge.slice(Se-3,Se)).concat(be);return"".concat(ge.slice(0,Se)).concat(be)}function we(ge,be,Se,Ne,Ye,Ze){if(ge>Se||ge3?be===0||be===BigInt(0)?">= 0".concat(ot," and < 2").concat(ot," ** ").concat(8*(Ze+1)).concat(ot):">= -(2".concat(ot," ** ").concat(8*(Ze+1)-1).concat(ot,") and < 2 ** ")+"".concat(8*(Ze+1)-1).concat(ot):">= ".concat(be).concat(ot," and <= ").concat(Se).concat(ot),new he.ERR_OUT_OF_RANGE("value",st,ge)}(function(ft,yt,Et){Ae(yt,"offset"),ft[yt]!==void 0&&ft[yt+Et]!==void 0||Me(yt,ft.length-(Et+1))})(Ne,Ye,Ze)}function Ae(ge,be){if(typeof ge!="number")throw new he.ERR_INVALID_ARG_TYPE(be,"number",ge)}function Me(ge,be,Se){throw Math.floor(ge)!==ge?(Ae(ge,Se),new he.ERR_OUT_OF_RANGE(Se||"offset","an integer",ge)):be<0?new he.ERR_BUFFER_OUT_OF_BOUNDS:new he.ERR_OUT_OF_RANGE(Se||"offset",">= ".concat(Se?1:0," and <= ").concat(be),ge)}xe("ERR_BUFFER_OUT_OF_BOUNDS",function(ge){return ge?"".concat(ge," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"},RangeError),xe("ERR_INVALID_ARG_TYPE",function(ge,be){return'The "'.concat(ge,'" argument must be of type number. Received type ').concat(p(be))},TypeError),xe("ERR_OUT_OF_RANGE",function(ge,be,Se){var Ne='The value of "'.concat(ge,'" is out of range.'),Ye=Se;return Number.isInteger(Se)&&Math.abs(Se)>Math.pow(2,32)?Ye=Re(String(Se)):typeof Se=="bigint"&&(Ye=String(Se),(Se>Math.pow(BigInt(2),BigInt(32))||Se<-Math.pow(BigInt(2),BigInt(32)))&&(Ye=Re(Ye)),Ye+="n"),Ne+" It must be ".concat(be,". Received ").concat(Ye)},RangeError);var Ce=/[^+/0-9A-Za-z-_]/g;function ne(ge,be){var Se;be=be||1/0;for(var Ne=ge.length,Ye=null,Ze=[],st=0;st55295&&Se<57344){if(!Ye){if(Se>56319){(be-=3)>-1&&Ze.push(239,191,189);continue}if(st+1===Ne){(be-=3)>-1&&Ze.push(239,191,189);continue}Ye=Se;continue}if(Se<56320){(be-=3)>-1&&Ze.push(239,191,189),Ye=Se;continue}Se=65536+(Ye-55296<<10|Se-56320)}else Ye&&(be-=3)>-1&&Ze.push(239,191,189);if(Ye=null,Se<128){if((be-=1)<0)break;Ze.push(Se)}else if(Se<2048){if((be-=2)<0)break;Ze.push(Se>>6|192,63&Se|128)}else if(Se<65536){if((be-=3)<0)break;Ze.push(Se>>12|224,Se>>6&63|128,63&Se|128)}else{if(!(Se<1114112))throw new Error("Invalid code point");if((be-=4)<0)break;Ze.push(Se>>18|240,Se>>12&63|128,Se>>6&63|128,63&Se|128)}}return Ze}function ue(ge){return c.toByteArray(function(be){if((be=(be=be.split("=")[0]).trim().replace(Ce,"")).length<2)return"";for(;be.length%4!=0;)be+="=";return be}(ge))}function me(ge,be,Se,Ne){var Ye;for(Ye=0;Ye=be.length||Ye>=ge.length);++Ye)be[Ye+Se]=ge[Ye];return Ye}function Te(ge,be){return ge instanceof be||ge!=null&&ge.constructor!=null&&ge.constructor.name!=null&&ge.constructor.name===be.name}function Ee(ge){return ge!=ge}var Ue=function(){for(var ge="0123456789abcdef",be=new Array(256),Se=0;Se<16;++Se)for(var Ne=16*Se,Ye=0;Ye<16;++Ye)be[Ne+Ye]=ge[Se]+ge[Ye];return be}();function De(ge){return typeof BigInt>"u"?je:ge}function je(){throw new Error("BigInt not supported")}},2321:function(f){f.exports=r,f.exports.isMobile=r,f.exports.default=r;var l=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,t=/CrOS/,i=/android|ipad|playbook|silk/i;function r(n){n||(n={});var o=n.ua;if(o||typeof navigator>"u"||(o=navigator.userAgent),o&&o.headers&&typeof o.headers["user-agent"]=="string"&&(o=o.headers["user-agent"]),typeof o!="string")return!1;var a=l.test(o)&&!t.test(o)||!!n.tablet&&i.test(o);return!a&&n.tablet&&n.featureDetect&&navigator&&navigator.maxTouchPoints>1&&o.indexOf("Macintosh")!==-1&&o.indexOf("Safari")!==-1&&(a=!0),a}},3910:function(f,l){l.byteLength=function(c){var b=u(c),d=b[0],v=b[1];return 3*(d+v)/4-v},l.toByteArray=function(c){var b,d,v=u(c),x=v[0],g=v[1],m=new r(function(M,A,C){return 3*(A+C)/4-C}(0,x,g)),k=0,h=g>0?x-4:x;for(d=0;d>16&255,m[k++]=b>>8&255,m[k++]=255&b;return g===2&&(b=i[c.charCodeAt(d)]<<2|i[c.charCodeAt(d+1)]>>4,m[k++]=255&b),g===1&&(b=i[c.charCodeAt(d)]<<10|i[c.charCodeAt(d+1)]<<4|i[c.charCodeAt(d+2)]>>2,m[k++]=b>>8&255,m[k++]=255&b),m},l.fromByteArray=function(c){for(var b,d=c.length,v=d%3,x=[],g=16383,m=0,k=d-v;mk?k:m+g));return v===1?(b=c[d-1],x.push(t[b>>2]+t[b<<4&63]+"==")):v===2&&(b=(c[d-2]<<8)+c[d-1],x.push(t[b>>10]+t[b>>4&63]+t[b<<2&63]+"=")),x.join("")};for(var t=[],i=[],r=typeof Uint8Array<"u"?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,a=n.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var d=c.indexOf("=");return d===-1&&(d=b),[d,d===b?0:4-d%4]}function p(c,b,d){for(var v,x,g=[],m=b;m>18&63]+t[x>>12&63]+t[x>>6&63]+t[63&x]);return g.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},3187:function(f,l){l.read=function(t,i,r,n,o){var a,u,p=8*o-n-1,c=(1<>1,d=-7,v=r?o-1:0,x=r?-1:1,g=t[i+v];for(v+=x,a=g&(1<<-d)-1,g>>=-d,d+=p;d>0;a=256*a+t[i+v],v+=x,d-=8);for(u=a&(1<<-d)-1,a>>=-d,d+=n;d>0;u=256*u+t[i+v],v+=x,d-=8);if(a===0)a=1-b;else{if(a===c)return u?NaN:1/0*(g?-1:1);u+=Math.pow(2,n),a-=b}return(g?-1:1)*u*Math.pow(2,a-n)},l.write=function(t,i,r,n,o,a){var u,p,c,b=8*a-o-1,d=(1<>1,x=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:a-1,m=n?1:-1,k=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(p=isNaN(i)?1:0,u=d):(u=Math.floor(Math.log(i)/Math.LN2),i*(c=Math.pow(2,-u))<1&&(u--,c*=2),(i+=u+v>=1?x/c:x*Math.pow(2,1-v))*c>=2&&(u++,c/=2),u+v>=d?(p=0,u=d):u+v>=1?(p=(i*c-1)*Math.pow(2,o),u+=v):(p=i*Math.pow(2,v-1)*Math.pow(2,o),u=0));o>=8;t[r+g]=255&p,g+=m,p/=256,o-=8);for(u=u<0;t[r+g]=255&u,g+=m,u/=256,b-=8);t[r+g-m]|=128*k}},1152:function(f,l,t){f.exports=function(u){var p=(u=u||{}).eye||[0,0,1],c=u.center||[0,0,0],b=u.up||[0,1,0],d=u.distanceLimits||[0,1/0],v=u.mode||"turntable",x=i(),g=r(),m=n();return x.setDistanceLimits(d[0],d[1]),x.lookAt(0,p,c,b),g.setDistanceLimits(d[0],d[1]),g.lookAt(0,p,c,b),m.setDistanceLimits(d[0],d[1]),m.lookAt(0,p,c,b),new o({turntable:x,orbit:g,matrix:m},v)};var i=t(3440),r=t(7774),n=t(9298);function o(u,p){this._controllerNames=Object.keys(u),this._controllerList=this._controllerNames.map(function(c){return u[c]}),this._mode=p,this._active=u[p],this._active||(this._mode="turntable",this._active=u.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var a=o.prototype;a.flush=function(u){for(var p=this._controllerList,c=0;c"u"?t(5346):WeakMap,r=t(5827),n=t(2944),o=new i;f.exports=function(a){var u=o.get(a),p=u&&(u._triangleBuffer.handle||u._triangleBuffer.buffer);if(!p||!a.isBuffer(p)){var c=r(a,new Float32Array([-1,-1,-1,4,4,-1]));(u=n(a,[{buffer:c,type:a.FLOAT,size:2}]))._triangleBuffer=c,o.set(a,u)}u.bind(),a.drawArrays(a.TRIANGLES,0,3),u.unbind()}},8008:function(f,l,t){var i=t(4930);f.exports=function(r,n,o){n=typeof n=="number"?n:1,o=o||": ";var a=r.split(/\r?\n/),u=String(a.length+n-1).length;return a.map(function(p,c){var b=c+n,d=String(b).length;return i(b,u-d)+o+p}).join(` +`)}},2153:function(f,l,t){f.exports=function(n){var o=n.length;if(o===0)return[];if(o===1)return[0];for(var a=n[0].length,u=[n[0]],p=[0],c=1;c0?d=d.ushln(x):x<0&&(v=v.ushln(-x)),a(d,v)}},234:function(f,l,t){var i=t(3218);f.exports=function(r){return Array.isArray(r)&&r.length===2&&i(r[0])&&i(r[1])}},4275:function(f,l,t){var i=t(1928);f.exports=function(r){return r.cmp(new i(0))}},9958:function(f,l,t){var i=t(4275);f.exports=function(r){var n=r.length,o=r.words,a=0;if(n===1)a=o[0];else if(n===2)a=o[0]+67108864*o[1];else for(var u=0;u20?52:a+32}},3218:function(f,l,t){t(1928),f.exports=function(i){return i&&typeof i=="object"&&!!i.words}},5514:function(f,l,t){var i=t(1928),r=t(8362);f.exports=function(n){var o=r.exponent(n);return o<52?new i(n):new i(n*Math.pow(2,52-o)).ushln(o-52)}},8524:function(f,l,t){var i=t(5514),r=t(4275);f.exports=function(n,o){var a=r(n),u=r(o);if(a===0)return[i(0),i(1)];if(u===0)return[i(0),i(0)];u<0&&(n=n.neg(),o=o.neg());var p=n.gcd(o);return p.cmpn(1)?[n.div(p),o.div(p)]:[n,o]}},2813:function(f,l,t){var i=t(1928);f.exports=function(r){return new i(r)}},3962:function(f,l,t){var i=t(8524);f.exports=function(r,n){return i(r[0].mul(n[0]),r[1].mul(n[1]))}},4951:function(f,l,t){var i=t(4275);f.exports=function(r){return i(r[0])*i(r[1])}},4354:function(f,l,t){var i=t(8524);f.exports=function(r,n){return i(r[0].mul(n[1]).sub(r[1].mul(n[0])),r[1].mul(n[1]))}},7999:function(f,l,t){var i=t(9958),r=t(1112);f.exports=function(n){var o=n[0],a=n[1];if(o.cmpn(0)===0)return 0;var u=o.abs().divmod(a.abs()),p=u.div,c=i(p),b=u.mod,d=o.negative!==a.negative?-1:1;if(b.cmpn(0)===0)return d*c;if(c){var v=r(c)+4,x=i(b.ushln(v).divRound(a));return d*(c+x*Math.pow(2,-v))}var g=a.bitLength()-b.bitLength()+53;return x=i(b.ushln(g).divRound(a)),g<1023?d*x*Math.pow(2,-g):d*(x*=Math.pow(2,-1023))*Math.pow(2,1023-g)}},5070:function(f){function l(a,u,p,c,b){for(var d=b+1;c<=b;){var v=c+b>>>1,x=a[v];(p!==void 0?p(x,u):x-u)>=0?(d=v,b=v-1):c=v+1}return d}function t(a,u,p,c,b){for(var d=b+1;c<=b;){var v=c+b>>>1,x=a[v];(p!==void 0?p(x,u):x-u)>0?(d=v,b=v-1):c=v+1}return d}function i(a,u,p,c,b){for(var d=c-1;c<=b;){var v=c+b>>>1,x=a[v];(p!==void 0?p(x,u):x-u)<0?(d=v,c=v+1):b=v-1}return d}function r(a,u,p,c,b){for(var d=c-1;c<=b;){var v=c+b>>>1,x=a[v];(p!==void 0?p(x,u):x-u)<=0?(d=v,c=v+1):b=v-1}return d}function n(a,u,p,c,b){for(;c<=b;){var d=c+b>>>1,v=a[d],x=p!==void 0?p(v,u):v-u;if(x===0)return d;x<=0?c=d+1:b=d-1}return-1}function o(a,u,p,c,b,d){return typeof p=="function"?d(a,u,p,c===void 0?0:0|c,b===void 0?a.length-1:0|b):d(a,u,void 0,p===void 0?0:0|p,c===void 0?a.length-1:0|c)}f.exports={ge:function(a,u,p,c,b){return o(a,u,p,c,b,l)},gt:function(a,u,p,c,b){return o(a,u,p,c,b,t)},lt:function(a,u,p,c,b){return o(a,u,p,c,b,i)},le:function(a,u,p,c,b){return o(a,u,p,c,b,r)},eq:function(a,u,p,c,b){return o(a,u,p,c,b,n)}}},2288:function(f,l){function t(r){var n=32;return(r&=-r)&&n--,65535&r&&(n-=16),16711935&r&&(n-=8),252645135&r&&(n-=4),858993459&r&&(n-=2),1431655765&r&&(n-=1),n}l.INT_BITS=32,l.INT_MAX=2147483647,l.INT_MIN=-2147483648,l.sign=function(r){return(r>0)-(r<0)},l.abs=function(r){var n=r>>31;return(r^n)-n},l.min=function(r,n){return n^(r^n)&-(r65535)<<4,n|=o=((r>>>=n)>255)<<3,n|=o=((r>>>=o)>15)<<2,(n|=o=((r>>>=o)>3)<<1)|(r>>>=o)>>1},l.log10=function(r){return r>=1e9?9:r>=1e8?8:r>=1e7?7:r>=1e6?6:r>=1e5?5:r>=1e4?4:r>=1e3?3:r>=100?2:r>=10?1:0},l.popCount=function(r){return 16843009*((r=(858993459&(r-=r>>>1&1431655765))+(r>>>2&858993459))+(r>>>4)&252645135)>>>24},l.countTrailingZeros=t,l.nextPow2=function(r){return r+=r===0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,1+((r|=r>>>8)|r>>>16)},l.prevPow2=function(r){return r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,(r|=r>>>16)-(r>>>1)},l.parity=function(r){return r^=r>>>16,r^=r>>>8,r^=r>>>4,27030>>>(r&=15)&1};var i=new Array(256);(function(r){for(var n=0;n<256;++n){var o=n,a=n,u=7;for(o>>>=1;o;o>>>=1)a<<=1,a|=1&o,--u;r[n]=a<>>8&255]<<16|i[r>>>16&255]<<8|i[r>>>24&255]},l.interleave2=function(r,n){return(r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)|r<<8))|r<<4))|r<<2))|r<<1))|(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n&=65535)|n<<8))|n<<4))|n<<2))|n<<1))<<1},l.deinterleave2=function(r,n){return(r=65535&((r=16711935&((r=252645135&((r=858993459&((r=r>>>n&1431655765)|r>>>1))|r>>>2))|r>>>4))|r>>>16))<<16>>16},l.interleave3=function(r,n,o){return r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2),(r|=(n=1227133513&((n=3272356035&((n=251719695&((n=4278190335&((n&=1023)|n<<16))|n<<8))|n<<4))|n<<2))<<1)|(o=1227133513&((o=3272356035&((o=251719695&((o=4278190335&((o&=1023)|o<<16))|o<<8))|o<<4))|o<<2))<<2},l.deinterleave3=function(r,n){return(r=1023&((r=4278190335&((r=251719695&((r=3272356035&((r=r>>>n&1227133513)|r>>>2))|r>>>4))|r>>>8))|r>>>16))<<22>>22},l.nextCombination=function(r){var n=r|r-1;return n+1|(~n&-~n)-1>>>t(r)+1}},1928:function(f,l,t){(function(i,r){function n(B,G){if(!B)throw new Error(G||"Assertion failed")}function o(B,G){B.super_=G;var N=function(){};N.prototype=G.prototype,B.prototype=new N,B.prototype.constructor=B}function a(B,G,N){if(a.isBN(B))return B;this.negative=0,this.words=null,this.length=0,this.red=null,B!==null&&(G!=="le"&&G!=="be"||(N=G,G=10),this._init(B||0,G||10,N||"be"))}var u;typeof i=="object"?i.exports=a:r.BN=a,a.BN=a,a.wordSize=26;try{u=typeof window<"u"&&window.Buffer!==void 0?window.Buffer:t(6601).Buffer}catch{}function p(B,G){var N=B.charCodeAt(G);return N>=65&&N<=70?N-55:N>=97&&N<=102?N-87:N-48&15}function c(B,G,N){var j=p(B,N);return N-1>=G&&(j|=p(B,N-1)<<4),j}function b(B,G,N,j){for(var V=0,H=Math.min(B.length,N),ee=G;ee=49?Q-49+10:Q>=17?Q-17+10:Q}return V}a.isBN=function(B){return B instanceof a||B!==null&&typeof B=="object"&&B.constructor.wordSize===a.wordSize&&Array.isArray(B.words)},a.max=function(B,G){return B.cmp(G)>0?B:G},a.min=function(B,G){return B.cmp(G)<0?B:G},a.prototype._init=function(B,G,N){if(typeof B=="number")return this._initNumber(B,G,N);if(typeof B=="object")return this._initArray(B,G,N);G==="hex"&&(G=16),n(G===(0|G)&&G>=2&&G<=36);var j=0;(B=B.toString().replace(/\s+/g,""))[0]==="-"&&(j++,this.negative=1),j=0;j-=3)H=B[j]|B[j-1]<<8|B[j-2]<<16,this.words[V]|=H<>>26-ee&67108863,(ee+=24)>=26&&(ee-=26,V++);else if(N==="le")for(j=0,V=0;j>>26-ee&67108863,(ee+=24)>=26&&(ee-=26,V++);return this.strip()},a.prototype._parseHex=function(B,G,N){this.length=Math.ceil((B.length-G)/6),this.words=new Array(this.length);for(var j=0;j=G;j-=2)V=c(B,G,j)<=18?(H-=18,ee+=1,this.words[ee]|=V>>>26):H+=8;else for(j=(B.length-G)%2==0?G+1:G;j=18?(H-=18,ee+=1,this.words[ee]|=V>>>26):H+=8;this.strip()},a.prototype._parseBase=function(B,G,N){this.words=[0],this.length=1;for(var j=0,V=1;V<=67108863;V*=G)j++;j--,V=V/G|0;for(var H=B.length-N,ee=H%j,Q=Math.min(H,H-ee)+N,X=0,Y=N;Y1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},a.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],v=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],x=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function g(B,G,N){N.negative=G.negative^B.negative;var j=B.length+G.length|0;N.length=j,j=j-1|0;var V=0|B.words[0],H=0|G.words[0],ee=V*H,Q=67108863&ee,X=ee/67108864|0;N.words[0]=Q;for(var Y=1;Y>>26,te=67108863&X,ae=Math.min(Y,G.length-1),oe=Math.max(0,Y-B.length+1);oe<=ae;oe++){var se=Y-oe|0;K+=(ee=(V=0|B.words[se])*(H=0|G.words[oe])+te)/67108864|0,te=67108863&ee}N.words[Y]=0|te,X=0|K}return X!==0?N.words[Y]=0|X:N.length--,N.strip()}a.prototype.toString=function(B,G){var N;if(G=0|G||1,(B=B||10)===16||B==="hex"){N="";for(var j=0,V=0,H=0;H>>24-j&16777215)!=0||H!==this.length-1?d[6-Q.length]+Q+N:Q+N,(j+=2)>=26&&(j-=26,H--)}for(V!==0&&(N=V.toString(16)+N);N.length%G!=0;)N="0"+N;return this.negative!==0&&(N="-"+N),N}if(B===(0|B)&&B>=2&&B<=36){var X=v[B],Y=x[B];N="";var K=this.clone();for(K.negative=0;!K.isZero();){var te=K.modn(Y).toString(B);N=(K=K.idivn(Y)).isZero()?te+N:d[X-te.length]+te+N}for(this.isZero()&&(N="0"+N);N.length%G!=0;)N="0"+N;return this.negative!==0&&(N="-"+N),N}n(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var B=this.words[0];return this.length===2?B+=67108864*this.words[1]:this.length===3&&this.words[2]===1?B+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-B:B},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(B,G){return n(u!==void 0),this.toArrayLike(u,B,G)},a.prototype.toArray=function(B,G){return this.toArrayLike(Array,B,G)},a.prototype.toArrayLike=function(B,G,N){var j=this.byteLength(),V=N||Math.max(1,j);n(j<=V,"byte array longer than desired length"),n(V>0,"Requested array length <= 0"),this.strip();var H,ee,Q=G==="le",X=new B(V),Y=this.clone();if(Q){for(ee=0;!Y.isZero();ee++)H=Y.andln(255),Y.iushrn(8),X[ee]=H;for(;ee=4096&&(N+=13,G>>>=13),G>=64&&(N+=7,G>>>=7),G>=8&&(N+=4,G>>>=4),G>=2&&(N+=2,G>>>=2),N+G},a.prototype._zeroBits=function(B){if(B===0)return 26;var G=B,N=0;return!(8191&G)&&(N+=13,G>>>=13),!(127&G)&&(N+=7,G>>>=7),!(15&G)&&(N+=4,G>>>=4),!(3&G)&&(N+=2,G>>>=2),!(1&G)&&N++,N},a.prototype.bitLength=function(){var B=this.words[this.length-1],G=this._countBits(B);return 26*(this.length-1)+G},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var B=0,G=0;GB.length?this.clone().ior(B):B.clone().ior(this)},a.prototype.uor=function(B){return this.length>B.length?this.clone().iuor(B):B.clone().iuor(this)},a.prototype.iuand=function(B){var G;G=this.length>B.length?B:this;for(var N=0;NB.length?this.clone().iand(B):B.clone().iand(this)},a.prototype.uand=function(B){return this.length>B.length?this.clone().iuand(B):B.clone().iuand(this)},a.prototype.iuxor=function(B){var G,N;this.length>B.length?(G=this,N=B):(G=B,N=this);for(var j=0;jB.length?this.clone().ixor(B):B.clone().ixor(this)},a.prototype.uxor=function(B){return this.length>B.length?this.clone().iuxor(B):B.clone().iuxor(this)},a.prototype.inotn=function(B){n(typeof B=="number"&&B>=0);var G=0|Math.ceil(B/26),N=B%26;this._expand(G),N>0&&G--;for(var j=0;j0&&(this.words[j]=~this.words[j]&67108863>>26-N),this.strip()},a.prototype.notn=function(B){return this.clone().inotn(B)},a.prototype.setn=function(B,G){n(typeof B=="number"&&B>=0);var N=B/26|0,j=B%26;return this._expand(N+1),this.words[N]=G?this.words[N]|1<B.length?(N=this,j=B):(N=B,j=this);for(var V=0,H=0;H>>26;for(;V!==0&&H>>26;if(this.length=N.length,V!==0)this.words[this.length]=V,this.length++;else if(N!==this)for(;HB.length?this.clone().iadd(B):B.clone().iadd(this)},a.prototype.isub=function(B){if(B.negative!==0){B.negative=0;var G=this.iadd(B);return B.negative=1,G._normSign()}if(this.negative!==0)return this.negative=0,this.iadd(B),this.negative=1,this._normSign();var N,j,V=this.cmp(B);if(V===0)return this.negative=0,this.length=1,this.words[0]=0,this;V>0?(N=this,j=B):(N=B,j=this);for(var H=0,ee=0;ee>26,this.words[ee]=67108863&G;for(;H!==0&&ee>26,this.words[ee]=67108863&G;if(H===0&&ee>>13,oe=0|ee[1],se=8191&oe,fe=oe>>>13,ye=0|ee[2],pe=8191&ye,de=ye>>>13,he=0|ee[3],xe=8191&he,Re=he>>>13,we=0|ee[4],Ae=8191&we,Me=we>>>13,Ce=0|ee[5],ne=8191&Ce,ue=Ce>>>13,me=0|ee[6],Te=8191&me,Ee=me>>>13,Ue=0|ee[7],De=8191&Ue,je=Ue>>>13,ge=0|ee[8],be=8191&ge,Se=ge>>>13,Ne=0|ee[9],Ye=8191&Ne,Ze=Ne>>>13,st=0|Q[0],ot=8191&st,ft=st>>>13,yt=0|Q[1],Et=8191&yt,Tt=yt>>>13,xt=0|Q[2],Dt=8191&xt,It=xt>>>13,Ft=0|Q[3],qt=8191&Ft,Nt=Ft>>>13,Je=0|Q[4],Ke=8191&Je,Ge=Je>>>13,nt=0|Q[5],ht=8191&nt,Oe=nt>>>13,Be=0|Q[6],Qe=8191&Be,ut=Be>>>13,pt=0|Q[7],bt=8191&pt,Lt=pt>>>13,Ct=0|Q[8],mt=8191&Ct,Ot=Ct>>>13,_t=0|Q[9],Pt=8191&_t,Bt=_t>>>13;N.negative=B.negative^G.negative,N.length=19;var Wt=(Y+(j=Math.imul(te,ot))|0)+((8191&(V=(V=Math.imul(te,ft))+Math.imul(ae,ot)|0))<<13)|0;Y=((H=Math.imul(ae,ft))+(V>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,j=Math.imul(se,ot),V=(V=Math.imul(se,ft))+Math.imul(fe,ot)|0,H=Math.imul(fe,ft);var Gt=(Y+(j=j+Math.imul(te,Et)|0)|0)+((8191&(V=(V=V+Math.imul(te,Tt)|0)+Math.imul(ae,Et)|0))<<13)|0;Y=((H=H+Math.imul(ae,Tt)|0)+(V>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,j=Math.imul(pe,ot),V=(V=Math.imul(pe,ft))+Math.imul(de,ot)|0,H=Math.imul(de,ft),j=j+Math.imul(se,Et)|0,V=(V=V+Math.imul(se,Tt)|0)+Math.imul(fe,Et)|0,H=H+Math.imul(fe,Tt)|0;var Xt=(Y+(j=j+Math.imul(te,Dt)|0)|0)+((8191&(V=(V=V+Math.imul(te,It)|0)+Math.imul(ae,Dt)|0))<<13)|0;Y=((H=H+Math.imul(ae,It)|0)+(V>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,j=Math.imul(xe,ot),V=(V=Math.imul(xe,ft))+Math.imul(Re,ot)|0,H=Math.imul(Re,ft),j=j+Math.imul(pe,Et)|0,V=(V=V+Math.imul(pe,Tt)|0)+Math.imul(de,Et)|0,H=H+Math.imul(de,Tt)|0,j=j+Math.imul(se,Dt)|0,V=(V=V+Math.imul(se,It)|0)+Math.imul(fe,Dt)|0,H=H+Math.imul(fe,It)|0;var Kt=(Y+(j=j+Math.imul(te,qt)|0)|0)+((8191&(V=(V=V+Math.imul(te,Nt)|0)+Math.imul(ae,qt)|0))<<13)|0;Y=((H=H+Math.imul(ae,Nt)|0)+(V>>>13)|0)+(Kt>>>26)|0,Kt&=67108863,j=Math.imul(Ae,ot),V=(V=Math.imul(Ae,ft))+Math.imul(Me,ot)|0,H=Math.imul(Me,ft),j=j+Math.imul(xe,Et)|0,V=(V=V+Math.imul(xe,Tt)|0)+Math.imul(Re,Et)|0,H=H+Math.imul(Re,Tt)|0,j=j+Math.imul(pe,Dt)|0,V=(V=V+Math.imul(pe,It)|0)+Math.imul(de,Dt)|0,H=H+Math.imul(de,It)|0,j=j+Math.imul(se,qt)|0,V=(V=V+Math.imul(se,Nt)|0)+Math.imul(fe,qt)|0,H=H+Math.imul(fe,Nt)|0;var nn=(Y+(j=j+Math.imul(te,Ke)|0)|0)+((8191&(V=(V=V+Math.imul(te,Ge)|0)+Math.imul(ae,Ke)|0))<<13)|0;Y=((H=H+Math.imul(ae,Ge)|0)+(V>>>13)|0)+(nn>>>26)|0,nn&=67108863,j=Math.imul(ne,ot),V=(V=Math.imul(ne,ft))+Math.imul(ue,ot)|0,H=Math.imul(ue,ft),j=j+Math.imul(Ae,Et)|0,V=(V=V+Math.imul(Ae,Tt)|0)+Math.imul(Me,Et)|0,H=H+Math.imul(Me,Tt)|0,j=j+Math.imul(xe,Dt)|0,V=(V=V+Math.imul(xe,It)|0)+Math.imul(Re,Dt)|0,H=H+Math.imul(Re,It)|0,j=j+Math.imul(pe,qt)|0,V=(V=V+Math.imul(pe,Nt)|0)+Math.imul(de,qt)|0,H=H+Math.imul(de,Nt)|0,j=j+Math.imul(se,Ke)|0,V=(V=V+Math.imul(se,Ge)|0)+Math.imul(fe,Ke)|0,H=H+Math.imul(fe,Ge)|0;var yn=(Y+(j=j+Math.imul(te,ht)|0)|0)+((8191&(V=(V=V+Math.imul(te,Oe)|0)+Math.imul(ae,ht)|0))<<13)|0;Y=((H=H+Math.imul(ae,Oe)|0)+(V>>>13)|0)+(yn>>>26)|0,yn&=67108863,j=Math.imul(Te,ot),V=(V=Math.imul(Te,ft))+Math.imul(Ee,ot)|0,H=Math.imul(Ee,ft),j=j+Math.imul(ne,Et)|0,V=(V=V+Math.imul(ne,Tt)|0)+Math.imul(ue,Et)|0,H=H+Math.imul(ue,Tt)|0,j=j+Math.imul(Ae,Dt)|0,V=(V=V+Math.imul(Ae,It)|0)+Math.imul(Me,Dt)|0,H=H+Math.imul(Me,It)|0,j=j+Math.imul(xe,qt)|0,V=(V=V+Math.imul(xe,Nt)|0)+Math.imul(Re,qt)|0,H=H+Math.imul(Re,Nt)|0,j=j+Math.imul(pe,Ke)|0,V=(V=V+Math.imul(pe,Ge)|0)+Math.imul(de,Ke)|0,H=H+Math.imul(de,Ge)|0,j=j+Math.imul(se,ht)|0,V=(V=V+Math.imul(se,Oe)|0)+Math.imul(fe,ht)|0,H=H+Math.imul(fe,Oe)|0;var ln=(Y+(j=j+Math.imul(te,Qe)|0)|0)+((8191&(V=(V=V+Math.imul(te,ut)|0)+Math.imul(ae,Qe)|0))<<13)|0;Y=((H=H+Math.imul(ae,ut)|0)+(V>>>13)|0)+(ln>>>26)|0,ln&=67108863,j=Math.imul(De,ot),V=(V=Math.imul(De,ft))+Math.imul(je,ot)|0,H=Math.imul(je,ft),j=j+Math.imul(Te,Et)|0,V=(V=V+Math.imul(Te,Tt)|0)+Math.imul(Ee,Et)|0,H=H+Math.imul(Ee,Tt)|0,j=j+Math.imul(ne,Dt)|0,V=(V=V+Math.imul(ne,It)|0)+Math.imul(ue,Dt)|0,H=H+Math.imul(ue,It)|0,j=j+Math.imul(Ae,qt)|0,V=(V=V+Math.imul(Ae,Nt)|0)+Math.imul(Me,qt)|0,H=H+Math.imul(Me,Nt)|0,j=j+Math.imul(xe,Ke)|0,V=(V=V+Math.imul(xe,Ge)|0)+Math.imul(Re,Ke)|0,H=H+Math.imul(Re,Ge)|0,j=j+Math.imul(pe,ht)|0,V=(V=V+Math.imul(pe,Oe)|0)+Math.imul(de,ht)|0,H=H+Math.imul(de,Oe)|0,j=j+Math.imul(se,Qe)|0,V=(V=V+Math.imul(se,ut)|0)+Math.imul(fe,Qe)|0,H=H+Math.imul(fe,ut)|0;var kn=(Y+(j=j+Math.imul(te,bt)|0)|0)+((8191&(V=(V=V+Math.imul(te,Lt)|0)+Math.imul(ae,bt)|0))<<13)|0;Y=((H=H+Math.imul(ae,Lt)|0)+(V>>>13)|0)+(kn>>>26)|0,kn&=67108863,j=Math.imul(be,ot),V=(V=Math.imul(be,ft))+Math.imul(Se,ot)|0,H=Math.imul(Se,ft),j=j+Math.imul(De,Et)|0,V=(V=V+Math.imul(De,Tt)|0)+Math.imul(je,Et)|0,H=H+Math.imul(je,Tt)|0,j=j+Math.imul(Te,Dt)|0,V=(V=V+Math.imul(Te,It)|0)+Math.imul(Ee,Dt)|0,H=H+Math.imul(Ee,It)|0,j=j+Math.imul(ne,qt)|0,V=(V=V+Math.imul(ne,Nt)|0)+Math.imul(ue,qt)|0,H=H+Math.imul(ue,Nt)|0,j=j+Math.imul(Ae,Ke)|0,V=(V=V+Math.imul(Ae,Ge)|0)+Math.imul(Me,Ke)|0,H=H+Math.imul(Me,Ge)|0,j=j+Math.imul(xe,ht)|0,V=(V=V+Math.imul(xe,Oe)|0)+Math.imul(Re,ht)|0,H=H+Math.imul(Re,Oe)|0,j=j+Math.imul(pe,Qe)|0,V=(V=V+Math.imul(pe,ut)|0)+Math.imul(de,Qe)|0,H=H+Math.imul(de,ut)|0,j=j+Math.imul(se,bt)|0,V=(V=V+Math.imul(se,Lt)|0)+Math.imul(fe,bt)|0,H=H+Math.imul(fe,Lt)|0;var Wn=(Y+(j=j+Math.imul(te,mt)|0)|0)+((8191&(V=(V=V+Math.imul(te,Ot)|0)+Math.imul(ae,mt)|0))<<13)|0;Y=((H=H+Math.imul(ae,Ot)|0)+(V>>>13)|0)+(Wn>>>26)|0,Wn&=67108863,j=Math.imul(Ye,ot),V=(V=Math.imul(Ye,ft))+Math.imul(Ze,ot)|0,H=Math.imul(Ze,ft),j=j+Math.imul(be,Et)|0,V=(V=V+Math.imul(be,Tt)|0)+Math.imul(Se,Et)|0,H=H+Math.imul(Se,Tt)|0,j=j+Math.imul(De,Dt)|0,V=(V=V+Math.imul(De,It)|0)+Math.imul(je,Dt)|0,H=H+Math.imul(je,It)|0,j=j+Math.imul(Te,qt)|0,V=(V=V+Math.imul(Te,Nt)|0)+Math.imul(Ee,qt)|0,H=H+Math.imul(Ee,Nt)|0,j=j+Math.imul(ne,Ke)|0,V=(V=V+Math.imul(ne,Ge)|0)+Math.imul(ue,Ke)|0,H=H+Math.imul(ue,Ge)|0,j=j+Math.imul(Ae,ht)|0,V=(V=V+Math.imul(Ae,Oe)|0)+Math.imul(Me,ht)|0,H=H+Math.imul(Me,Oe)|0,j=j+Math.imul(xe,Qe)|0,V=(V=V+Math.imul(xe,ut)|0)+Math.imul(Re,Qe)|0,H=H+Math.imul(Re,ut)|0,j=j+Math.imul(pe,bt)|0,V=(V=V+Math.imul(pe,Lt)|0)+Math.imul(de,bt)|0,H=H+Math.imul(de,Lt)|0,j=j+Math.imul(se,mt)|0,V=(V=V+Math.imul(se,Ot)|0)+Math.imul(fe,mt)|0,H=H+Math.imul(fe,Ot)|0;var wn=(Y+(j=j+Math.imul(te,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(te,Bt)|0)+Math.imul(ae,Pt)|0))<<13)|0;Y=((H=H+Math.imul(ae,Bt)|0)+(V>>>13)|0)+(wn>>>26)|0,wn&=67108863,j=Math.imul(Ye,Et),V=(V=Math.imul(Ye,Tt))+Math.imul(Ze,Et)|0,H=Math.imul(Ze,Tt),j=j+Math.imul(be,Dt)|0,V=(V=V+Math.imul(be,It)|0)+Math.imul(Se,Dt)|0,H=H+Math.imul(Se,It)|0,j=j+Math.imul(De,qt)|0,V=(V=V+Math.imul(De,Nt)|0)+Math.imul(je,qt)|0,H=H+Math.imul(je,Nt)|0,j=j+Math.imul(Te,Ke)|0,V=(V=V+Math.imul(Te,Ge)|0)+Math.imul(Ee,Ke)|0,H=H+Math.imul(Ee,Ge)|0,j=j+Math.imul(ne,ht)|0,V=(V=V+Math.imul(ne,Oe)|0)+Math.imul(ue,ht)|0,H=H+Math.imul(ue,Oe)|0,j=j+Math.imul(Ae,Qe)|0,V=(V=V+Math.imul(Ae,ut)|0)+Math.imul(Me,Qe)|0,H=H+Math.imul(Me,ut)|0,j=j+Math.imul(xe,bt)|0,V=(V=V+Math.imul(xe,Lt)|0)+Math.imul(Re,bt)|0,H=H+Math.imul(Re,Lt)|0,j=j+Math.imul(pe,mt)|0,V=(V=V+Math.imul(pe,Ot)|0)+Math.imul(de,mt)|0,H=H+Math.imul(de,Ot)|0;var on=(Y+(j=j+Math.imul(se,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(se,Bt)|0)+Math.imul(fe,Pt)|0))<<13)|0;Y=((H=H+Math.imul(fe,Bt)|0)+(V>>>13)|0)+(on>>>26)|0,on&=67108863,j=Math.imul(Ye,Dt),V=(V=Math.imul(Ye,It))+Math.imul(Ze,Dt)|0,H=Math.imul(Ze,It),j=j+Math.imul(be,qt)|0,V=(V=V+Math.imul(be,Nt)|0)+Math.imul(Se,qt)|0,H=H+Math.imul(Se,Nt)|0,j=j+Math.imul(De,Ke)|0,V=(V=V+Math.imul(De,Ge)|0)+Math.imul(je,Ke)|0,H=H+Math.imul(je,Ge)|0,j=j+Math.imul(Te,ht)|0,V=(V=V+Math.imul(Te,Oe)|0)+Math.imul(Ee,ht)|0,H=H+Math.imul(Ee,Oe)|0,j=j+Math.imul(ne,Qe)|0,V=(V=V+Math.imul(ne,ut)|0)+Math.imul(ue,Qe)|0,H=H+Math.imul(ue,ut)|0,j=j+Math.imul(Ae,bt)|0,V=(V=V+Math.imul(Ae,Lt)|0)+Math.imul(Me,bt)|0,H=H+Math.imul(Me,Lt)|0,j=j+Math.imul(xe,mt)|0,V=(V=V+Math.imul(xe,Ot)|0)+Math.imul(Re,mt)|0,H=H+Math.imul(Re,Ot)|0;var _n=(Y+(j=j+Math.imul(pe,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(pe,Bt)|0)+Math.imul(de,Pt)|0))<<13)|0;Y=((H=H+Math.imul(de,Bt)|0)+(V>>>13)|0)+(_n>>>26)|0,_n&=67108863,j=Math.imul(Ye,qt),V=(V=Math.imul(Ye,Nt))+Math.imul(Ze,qt)|0,H=Math.imul(Ze,Nt),j=j+Math.imul(be,Ke)|0,V=(V=V+Math.imul(be,Ge)|0)+Math.imul(Se,Ke)|0,H=H+Math.imul(Se,Ge)|0,j=j+Math.imul(De,ht)|0,V=(V=V+Math.imul(De,Oe)|0)+Math.imul(je,ht)|0,H=H+Math.imul(je,Oe)|0,j=j+Math.imul(Te,Qe)|0,V=(V=V+Math.imul(Te,ut)|0)+Math.imul(Ee,Qe)|0,H=H+Math.imul(Ee,ut)|0,j=j+Math.imul(ne,bt)|0,V=(V=V+Math.imul(ne,Lt)|0)+Math.imul(ue,bt)|0,H=H+Math.imul(ue,Lt)|0,j=j+Math.imul(Ae,mt)|0,V=(V=V+Math.imul(Ae,Ot)|0)+Math.imul(Me,mt)|0,H=H+Math.imul(Me,Ot)|0;var fn=(Y+(j=j+Math.imul(xe,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(xe,Bt)|0)+Math.imul(Re,Pt)|0))<<13)|0;Y=((H=H+Math.imul(Re,Bt)|0)+(V>>>13)|0)+(fn>>>26)|0,fn&=67108863,j=Math.imul(Ye,Ke),V=(V=Math.imul(Ye,Ge))+Math.imul(Ze,Ke)|0,H=Math.imul(Ze,Ge),j=j+Math.imul(be,ht)|0,V=(V=V+Math.imul(be,Oe)|0)+Math.imul(Se,ht)|0,H=H+Math.imul(Se,Oe)|0,j=j+Math.imul(De,Qe)|0,V=(V=V+Math.imul(De,ut)|0)+Math.imul(je,Qe)|0,H=H+Math.imul(je,ut)|0,j=j+Math.imul(Te,bt)|0,V=(V=V+Math.imul(Te,Lt)|0)+Math.imul(Ee,bt)|0,H=H+Math.imul(Ee,Lt)|0,j=j+Math.imul(ne,mt)|0,V=(V=V+Math.imul(ne,Ot)|0)+Math.imul(ue,mt)|0,H=H+Math.imul(ue,Ot)|0;var hn=(Y+(j=j+Math.imul(Ae,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(Ae,Bt)|0)+Math.imul(Me,Pt)|0))<<13)|0;Y=((H=H+Math.imul(Me,Bt)|0)+(V>>>13)|0)+(hn>>>26)|0,hn&=67108863,j=Math.imul(Ye,ht),V=(V=Math.imul(Ye,Oe))+Math.imul(Ze,ht)|0,H=Math.imul(Ze,Oe),j=j+Math.imul(be,Qe)|0,V=(V=V+Math.imul(be,ut)|0)+Math.imul(Se,Qe)|0,H=H+Math.imul(Se,ut)|0,j=j+Math.imul(De,bt)|0,V=(V=V+Math.imul(De,Lt)|0)+Math.imul(je,bt)|0,H=H+Math.imul(je,Lt)|0,j=j+Math.imul(Te,mt)|0,V=(V=V+Math.imul(Te,Ot)|0)+Math.imul(Ee,mt)|0,H=H+Math.imul(Ee,Ot)|0;var In=(Y+(j=j+Math.imul(ne,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(ne,Bt)|0)+Math.imul(ue,Pt)|0))<<13)|0;Y=((H=H+Math.imul(ue,Bt)|0)+(V>>>13)|0)+(In>>>26)|0,In&=67108863,j=Math.imul(Ye,Qe),V=(V=Math.imul(Ye,ut))+Math.imul(Ze,Qe)|0,H=Math.imul(Ze,ut),j=j+Math.imul(be,bt)|0,V=(V=V+Math.imul(be,Lt)|0)+Math.imul(Se,bt)|0,H=H+Math.imul(Se,Lt)|0,j=j+Math.imul(De,mt)|0,V=(V=V+Math.imul(De,Ot)|0)+Math.imul(je,mt)|0,H=H+Math.imul(je,Ot)|0;var Cn=(Y+(j=j+Math.imul(Te,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(Te,Bt)|0)+Math.imul(Ee,Pt)|0))<<13)|0;Y=((H=H+Math.imul(Ee,Bt)|0)+(V>>>13)|0)+(Cn>>>26)|0,Cn&=67108863,j=Math.imul(Ye,bt),V=(V=Math.imul(Ye,Lt))+Math.imul(Ze,bt)|0,H=Math.imul(Ze,Lt),j=j+Math.imul(be,mt)|0,V=(V=V+Math.imul(be,Ot)|0)+Math.imul(Se,mt)|0,H=H+Math.imul(Se,Ot)|0;var Nn=(Y+(j=j+Math.imul(De,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(De,Bt)|0)+Math.imul(je,Pt)|0))<<13)|0;Y=((H=H+Math.imul(je,Bt)|0)+(V>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,j=Math.imul(Ye,mt),V=(V=Math.imul(Ye,Ot))+Math.imul(Ze,mt)|0,H=Math.imul(Ze,Ot);var Hn=(Y+(j=j+Math.imul(be,Pt)|0)|0)+((8191&(V=(V=V+Math.imul(be,Bt)|0)+Math.imul(Se,Pt)|0))<<13)|0;Y=((H=H+Math.imul(Se,Bt)|0)+(V>>>13)|0)+(Hn>>>26)|0,Hn&=67108863;var qn=(Y+(j=Math.imul(Ye,Pt))|0)+((8191&(V=(V=Math.imul(Ye,Bt))+Math.imul(Ze,Pt)|0))<<13)|0;return Y=((H=Math.imul(Ze,Bt))+(V>>>13)|0)+(qn>>>26)|0,qn&=67108863,X[0]=Wt,X[1]=Gt,X[2]=Xt,X[3]=Kt,X[4]=nn,X[5]=yn,X[6]=ln,X[7]=kn,X[8]=Wn,X[9]=wn,X[10]=on,X[11]=_n,X[12]=fn,X[13]=hn,X[14]=In,X[15]=Cn,X[16]=Nn,X[17]=Hn,X[18]=qn,Y!==0&&(X[19]=Y,N.length++),N};function k(B,G,N){return new h().mulp(B,G,N)}function h(B,G){this.x=B,this.y=G}Math.imul||(m=g),a.prototype.mulTo=function(B,G){var N,j=this.length+B.length;return N=this.length===10&&B.length===10?m(this,B,G):j<63?g(this,B,G):j<1024?function(V,H,ee){ee.negative=H.negative^V.negative,ee.length=V.length+H.length;for(var Q=0,X=0,Y=0;Y>>26)|0)>>>26,K&=67108863}ee.words[Y]=te,Q=K,K=X}return Q!==0?ee.words[Y]=Q:ee.length--,ee.strip()}(this,B,G):k(this,B,G),N},h.prototype.makeRBT=function(B){for(var G=new Array(B),N=a.prototype._countBits(B)-1,j=0;j>=1;return j},h.prototype.permute=function(B,G,N,j,V,H){for(var ee=0;ee>>=1)V++;return 1<>>=13,N[2*H+1]=8191&V,V>>>=13;for(H=2*G;H>=26,G+=j/67108864|0,G+=V>>>26,this.words[N]=67108863&V}return G!==0&&(this.words[N]=G,this.length++),this},a.prototype.muln=function(B){return this.clone().imuln(B)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(B){var G=function(H){for(var ee=new Array(H.bitLength()),Q=0;Q>>Y}return ee}(B);if(G.length===0)return new a(1);for(var N=this,j=0;j=0);var G,N=B%26,j=(B-N)/26,V=67108863>>>26-N<<26-N;if(N!==0){var H=0;for(G=0;G>>26-N}H&&(this.words[G]=H,this.length++)}if(j!==0){for(G=this.length-1;G>=0;G--)this.words[G+j]=this.words[G];for(G=0;G=0),j=G?(G-G%26)/26:0;var V=B%26,H=Math.min((B-V)/26,this.length),ee=67108863^67108863>>>V<H)for(this.length-=H,X=0;X=0&&(Y!==0||X>=j);X--){var K=0|this.words[X];this.words[X]=Y<<26-V|K>>>V,Y=K&ee}return Q&&Y!==0&&(Q.words[Q.length++]=Y),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(B,G,N){return n(this.negative===0),this.iushrn(B,G,N)},a.prototype.shln=function(B){return this.clone().ishln(B)},a.prototype.ushln=function(B){return this.clone().iushln(B)},a.prototype.shrn=function(B){return this.clone().ishrn(B)},a.prototype.ushrn=function(B){return this.clone().iushrn(B)},a.prototype.testn=function(B){n(typeof B=="number"&&B>=0);var G=B%26,N=(B-G)/26,j=1<=0);var G=B%26,N=(B-G)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=N)return this;if(G!==0&&N++,this.length=Math.min(N,this.length),G!==0){var j=67108863^67108863>>>G<=67108864;G++)this.words[G]-=67108864,G===this.length-1?this.words[G+1]=1:this.words[G+1]++;return this.length=Math.max(this.length,G+1),this},a.prototype.isubn=function(B){if(n(typeof B=="number"),n(B<67108864),B<0)return this.iaddn(-B);if(this.negative!==0)return this.negative=0,this.iaddn(B),this.negative=1,this;if(this.words[0]-=B,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var G=0;G>26)-(Q/67108864|0),this.words[j+N]=67108863&V}for(;j>26,this.words[j+N]=67108863&V;if(ee===0)return this.strip();for(n(ee===-1),ee=0,j=0;j>26,this.words[j]=67108863&V;return this.negative=1,this.strip()},a.prototype._wordDiv=function(B,G){var N=(this.length,B.length),j=this.clone(),V=B,H=0|V.words[V.length-1];(N=26-this._countBits(H))!=0&&(V=V.ushln(N),j.iushln(N),H=0|V.words[V.length-1]);var ee,Q=j.length-V.length;if(G!=="mod"){(ee=new a(null)).length=Q+1,ee.words=new Array(ee.length);for(var X=0;X=0;K--){var te=67108864*(0|j.words[V.length+K])+(0|j.words[V.length+K-1]);for(te=Math.min(te/H|0,67108863),j._ishlnsubmul(V,te,K);j.negative!==0;)te--,j.negative=0,j._ishlnsubmul(V,1,K),j.isZero()||(j.negative^=1);ee&&(ee.words[K]=te)}return ee&&ee.strip(),j.strip(),G!=="div"&&N!==0&&j.iushrn(N),{div:ee||null,mod:j}},a.prototype.divmod=function(B,G,N){return n(!B.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:this.negative!==0&&B.negative===0?(H=this.neg().divmod(B,G),G!=="mod"&&(j=H.div.neg()),G!=="div"&&(V=H.mod.neg(),N&&V.negative!==0&&V.iadd(B)),{div:j,mod:V}):this.negative===0&&B.negative!==0?(H=this.divmod(B.neg(),G),G!=="mod"&&(j=H.div.neg()),{div:j,mod:H.mod}):this.negative&B.negative?(H=this.neg().divmod(B.neg(),G),G!=="div"&&(V=H.mod.neg(),N&&V.negative!==0&&V.isub(B)),{div:H.div,mod:V}):B.length>this.length||this.cmp(B)<0?{div:new a(0),mod:this}:B.length===1?G==="div"?{div:this.divn(B.words[0]),mod:null}:G==="mod"?{div:null,mod:new a(this.modn(B.words[0]))}:{div:this.divn(B.words[0]),mod:new a(this.modn(B.words[0]))}:this._wordDiv(B,G);var j,V,H},a.prototype.div=function(B){return this.divmod(B,"div",!1).div},a.prototype.mod=function(B){return this.divmod(B,"mod",!1).mod},a.prototype.umod=function(B){return this.divmod(B,"mod",!0).mod},a.prototype.divRound=function(B){var G=this.divmod(B);if(G.mod.isZero())return G.div;var N=G.div.negative!==0?G.mod.isub(B):G.mod,j=B.ushrn(1),V=B.andln(1),H=N.cmp(j);return H<0||V===1&&H===0?G.div:G.div.negative!==0?G.div.isubn(1):G.div.iaddn(1)},a.prototype.modn=function(B){n(B<=67108863);for(var G=67108864%B,N=0,j=this.length-1;j>=0;j--)N=(G*N+(0|this.words[j]))%B;return N},a.prototype.idivn=function(B){n(B<=67108863);for(var G=0,N=this.length-1;N>=0;N--){var j=(0|this.words[N])+67108864*G;this.words[N]=j/B|0,G=j%B}return this.strip()},a.prototype.divn=function(B){return this.clone().idivn(B)},a.prototype.egcd=function(B){n(B.negative===0),n(!B.isZero());var G=this,N=B.clone();G=G.negative!==0?G.umod(B):G.clone();for(var j=new a(1),V=new a(0),H=new a(0),ee=new a(1),Q=0;G.isEven()&&N.isEven();)G.iushrn(1),N.iushrn(1),++Q;for(var X=N.clone(),Y=G.clone();!G.isZero();){for(var K=0,te=1;!(G.words[0]&te)&&K<26;++K,te<<=1);if(K>0)for(G.iushrn(K);K-- >0;)(j.isOdd()||V.isOdd())&&(j.iadd(X),V.isub(Y)),j.iushrn(1),V.iushrn(1);for(var ae=0,oe=1;!(N.words[0]&oe)&&ae<26;++ae,oe<<=1);if(ae>0)for(N.iushrn(ae);ae-- >0;)(H.isOdd()||ee.isOdd())&&(H.iadd(X),ee.isub(Y)),H.iushrn(1),ee.iushrn(1);G.cmp(N)>=0?(G.isub(N),j.isub(H),V.isub(ee)):(N.isub(G),H.isub(j),ee.isub(V))}return{a:H,b:ee,gcd:N.iushln(Q)}},a.prototype._invmp=function(B){n(B.negative===0),n(!B.isZero());var G=this,N=B.clone();G=G.negative!==0?G.umod(B):G.clone();for(var j,V=new a(1),H=new a(0),ee=N.clone();G.cmpn(1)>0&&N.cmpn(1)>0;){for(var Q=0,X=1;!(G.words[0]&X)&&Q<26;++Q,X<<=1);if(Q>0)for(G.iushrn(Q);Q-- >0;)V.isOdd()&&V.iadd(ee),V.iushrn(1);for(var Y=0,K=1;!(N.words[0]&K)&&Y<26;++Y,K<<=1);if(Y>0)for(N.iushrn(Y);Y-- >0;)H.isOdd()&&H.iadd(ee),H.iushrn(1);G.cmp(N)>=0?(G.isub(N),V.isub(H)):(N.isub(G),H.isub(V))}return(j=G.cmpn(1)===0?V:H).cmpn(0)<0&&j.iadd(B),j},a.prototype.gcd=function(B){if(this.isZero())return B.abs();if(B.isZero())return this.abs();var G=this.clone(),N=B.clone();G.negative=0,N.negative=0;for(var j=0;G.isEven()&&N.isEven();j++)G.iushrn(1),N.iushrn(1);for(;;){for(;G.isEven();)G.iushrn(1);for(;N.isEven();)N.iushrn(1);var V=G.cmp(N);if(V<0){var H=G;G=N,N=H}else if(V===0||N.cmpn(1)===0)break;G.isub(N)}return N.iushln(j)},a.prototype.invm=function(B){return this.egcd(B).a.umod(B)},a.prototype.isEven=function(){return(1&this.words[0])==0},a.prototype.isOdd=function(){return(1&this.words[0])==1},a.prototype.andln=function(B){return this.words[0]&B},a.prototype.bincn=function(B){n(typeof B=="number");var G=B%26,N=(B-G)/26,j=1<>>26,ee&=67108863,this.words[H]=ee}return V!==0&&(this.words[H]=V,this.length++),this},a.prototype.isZero=function(){return this.length===1&&this.words[0]===0},a.prototype.cmpn=function(B){var G,N=B<0;if(this.negative!==0&&!N)return-1;if(this.negative===0&&N)return 1;if(this.strip(),this.length>1)G=1;else{N&&(B=-B),n(B<=67108863,"Number is too big");var j=0|this.words[0];G=j===B?0:jB.length)return 1;if(this.length=0;N--){var j=0|this.words[N],V=0|B.words[N];if(j!==V){jV&&(G=1);break}}return G},a.prototype.gtn=function(B){return this.cmpn(B)===1},a.prototype.gt=function(B){return this.cmp(B)===1},a.prototype.gten=function(B){return this.cmpn(B)>=0},a.prototype.gte=function(B){return this.cmp(B)>=0},a.prototype.ltn=function(B){return this.cmpn(B)===-1},a.prototype.lt=function(B){return this.cmp(B)===-1},a.prototype.lten=function(B){return this.cmpn(B)<=0},a.prototype.lte=function(B){return this.cmp(B)<=0},a.prototype.eqn=function(B){return this.cmpn(B)===0},a.prototype.eq=function(B){return this.cmp(B)===0},a.red=function(B){return new R(B)},a.prototype.toRed=function(B){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),B.convertTo(this)._forceRed(B)},a.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(B){return this.red=B,this},a.prototype.forceRed=function(B){return n(!this.red,"Already a number in reduction context"),this._forceRed(B)},a.prototype.redAdd=function(B){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,B)},a.prototype.redIAdd=function(B){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,B)},a.prototype.redSub=function(B){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,B)},a.prototype.redISub=function(B){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,B)},a.prototype.redShl=function(B){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,B)},a.prototype.redMul=function(B){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,B),this.red.mul(this,B)},a.prototype.redIMul=function(B){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,B),this.red.imul(this,B)},a.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(B){return n(this.red&&!B.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,B)};var M={k256:null,p224:null,p192:null,p25519:null};function A(B,G){this.name=B,this.p=new a(G,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function C(){A.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function L(){A.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function O(){A.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function I(){A.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function R(B){if(typeof B=="string"){var G=a._prime(B);this.m=G.p,this.prime=G}else n(B.gtn(1),"modulus must be greater than 1"),this.m=B,this.prime=null}function U(B){R.call(this,B),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}A.prototype._tmp=function(){var B=new a(null);return B.words=new Array(Math.ceil(this.n/13)),B},A.prototype.ireduce=function(B){var G,N=B;do this.split(N,this.tmp),G=(N=(N=this.imulK(N)).iadd(this.tmp)).bitLength();while(G>this.n);var j=G0?N.isub(this.p):N.strip!==void 0?N.strip():N._strip(),N},A.prototype.split=function(B,G){B.iushrn(this.n,0,G)},A.prototype.imulK=function(B){return B.imul(this.k)},o(C,A),C.prototype.split=function(B,G){for(var N=4194303,j=Math.min(B.length,9),V=0;V>>22,H=ee}H>>>=22,B.words[V-10]=H,H===0&&B.length>10?B.length-=10:B.length-=9},C.prototype.imulK=function(B){B.words[B.length]=0,B.words[B.length+1]=0,B.length+=2;for(var G=0,N=0;N>>=26,B.words[N]=V,G=j}return G!==0&&(B.words[B.length++]=G),B},a._prime=function(B){if(M[B])return M[B];var G;if(B==="k256")G=new C;else if(B==="p224")G=new L;else if(B==="p192")G=new O;else{if(B!=="p25519")throw new Error("Unknown prime "+B);G=new I}return M[B]=G,G},R.prototype._verify1=function(B){n(B.negative===0,"red works only with positives"),n(B.red,"red works only with red numbers")},R.prototype._verify2=function(B,G){n((B.negative|G.negative)==0,"red works only with positives"),n(B.red&&B.red===G.red,"red works only with red numbers")},R.prototype.imod=function(B){return this.prime?this.prime.ireduce(B)._forceRed(this):B.umod(this.m)._forceRed(this)},R.prototype.neg=function(B){return B.isZero()?B.clone():this.m.sub(B)._forceRed(this)},R.prototype.add=function(B,G){this._verify2(B,G);var N=B.add(G);return N.cmp(this.m)>=0&&N.isub(this.m),N._forceRed(this)},R.prototype.iadd=function(B,G){this._verify2(B,G);var N=B.iadd(G);return N.cmp(this.m)>=0&&N.isub(this.m),N},R.prototype.sub=function(B,G){this._verify2(B,G);var N=B.sub(G);return N.cmpn(0)<0&&N.iadd(this.m),N._forceRed(this)},R.prototype.isub=function(B,G){this._verify2(B,G);var N=B.isub(G);return N.cmpn(0)<0&&N.iadd(this.m),N},R.prototype.shl=function(B,G){return this._verify1(B),this.imod(B.ushln(G))},R.prototype.imul=function(B,G){return this._verify2(B,G),this.imod(B.imul(G))},R.prototype.mul=function(B,G){return this._verify2(B,G),this.imod(B.mul(G))},R.prototype.isqr=function(B){return this.imul(B,B.clone())},R.prototype.sqr=function(B){return this.mul(B,B)},R.prototype.sqrt=function(B){if(B.isZero())return B.clone();var G=this.m.andln(3);if(n(G%2==1),G===3){var N=this.m.add(new a(1)).iushrn(2);return this.pow(B,N)}for(var j=this.m.subn(1),V=0;!j.isZero()&&j.andln(1)===0;)V++,j.iushrn(1);n(!j.isZero());var H=new a(1).toRed(this),ee=H.redNeg(),Q=this.m.subn(1).iushrn(1),X=this.m.bitLength();for(X=new a(2*X*X).toRed(this);this.pow(X,Q).cmp(ee)!==0;)X.redIAdd(ee);for(var Y=this.pow(X,j),K=this.pow(B,j.addn(1).iushrn(1)),te=this.pow(B,j),ae=V;te.cmp(H)!==0;){for(var oe=te,se=0;oe.cmp(H)!==0;se++)oe=oe.redSqr();n(se=0;j--){for(var X=G.words[j],Y=Q-1;Y>=0;Y--){var K=X>>Y&1;V!==N[0]&&(V=this.sqr(V)),K!==0||H!==0?(H<<=1,H|=K,(++ee==4||j===0&&Y===0)&&(V=this.mul(V,N[H]),ee=0,H=0)):ee=0}Q=26}return V},R.prototype.convertTo=function(B){var G=B.umod(this.m);return G===B?G.clone():G},R.prototype.convertFrom=function(B){var G=B.clone();return G.red=null,G},a.mont=function(B){return new U(B)},o(U,R),U.prototype.convertTo=function(B){return this.imod(B.ushln(this.shift))},U.prototype.convertFrom=function(B){var G=this.imod(B.mul(this.rinv));return G.red=null,G},U.prototype.imul=function(B,G){if(B.isZero()||G.isZero())return B.words[0]=0,B.length=1,B;var N=B.imul(G),j=N.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),V=N.isub(j).iushrn(this.shift),H=V;return V.cmp(this.m)>=0?H=V.isub(this.m):V.cmpn(0)<0&&(H=V.iadd(this.m)),H._forceRed(this)},U.prototype.mul=function(B,G){if(B.isZero()||G.isZero())return new a(0)._forceRed(this);var N=B.mul(G),j=N.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),V=N.isub(j).iushrn(this.shift),H=V;return V.cmp(this.m)>=0?H=V.isub(this.m):V.cmpn(0)<0&&(H=V.iadd(this.m)),H._forceRed(this)},U.prototype.invm=function(B){return this.imod(B._invmp(this.m).mul(this.r2))._forceRed(this)}})(f=t.nmd(f),this)},2692:function(f){f.exports=function(l){var t,i,r,n=l.length,o=0;for(t=0;t>>1;if(!(M<=0)){var A,C=r.mallocDouble(2*M*k),L=r.mallocInt32(k);if((k=u(v,M,C,L))>0){if(M===1&&m)n.init(k),A=n.sweepComplete(M,g,0,k,C,L,0,k,C,L);else{var O=r.mallocDouble(2*M*h),I=r.mallocInt32(h);(h=u(x,M,O,I))>0&&(n.init(k+h),A=M===1?n.sweepBipartite(M,g,0,k,C,L,0,h,O,I):o(M,g,m,k,C,L,h,O,I),r.free(O),r.free(I))}r.free(C),r.free(L)}return A}}}function c(v,x){i.push([v,x])}function b(v){return i=[],p(v,v,c,!0),i}function d(v,x){return i=[],p(v,x,c,!1),i}},7333:function(f,l){function t(i){return i?function(r,n,o,a,u,p,c,b,d,v,x){return u-a>d-b?function(g,m,k,h,M,A,C,L,O,I,R){for(var U=2*g,B=h,G=U*h;Bv-d?a?function(m,k,h,M,A,C,L,O,I,R,U){for(var B=2*m,G=M,N=B*M;G0;){var Q=6*(H-=1),X=k[Q],Y=k[Q+1],K=k[Q+2],te=k[Q+3],ae=k[Q+4],oe=k[Q+5],se=2*H,fe=h[se],ye=h[se+1],pe=1&oe,de=!!(16&oe),he=U,xe=B,Re=N,we=j;if(pe&&(he=N,xe=j,Re=U,we=B),!(2&oe&&(K=v(L,X,Y,K,he,xe,ye),Y>=K)||4&oe&&(Y=x(L,X,Y,K,he,xe,fe))>=K)){var Ae=K-Y,Me=ae-te;if(de){if(L*Ae*(Ae+Me)<4194304){if((V=u.scanComplete(L,X,O,Y,K,he,xe,te,ae,Re,we))!==void 0)return V;continue}}else{if(L*Math.min(Ae,Me)<128){if((V=o(L,X,O,pe,Y,K,he,xe,te,ae,Re,we))!==void 0)return V;continue}if(L*Ae*Me<4194304){if((V=u.scanBipartite(L,X,O,pe,Y,K,he,xe,te,ae,Re,we))!==void 0)return V;continue}}var Ce=b(L,X,Y,K,he,xe,fe,ye);if(Y=p0)&&!(p1>=hi)"),d=c("lo===p0"),v=c("lo>>1,x=2*n,g=v,m=p[x*v+o];b=C?(g=A,m=C):M>=O?(g=h,m=M):(g=L,m=O):C>=O?(g=A,m=C):O>=M?(g=h,m=M):(g=L,m=O);for(var I=x*(d-1),R=x*g,U=0;Ua&&p[m+o]>x;--g,m-=b){for(var k=m,h=m+b,M=0;Mx;++x,c+=p)if(o[c+v]===u)if(d===x)d+=1,b+=p;else{for(var g=0;p>g;++g){var m=o[c+g];o[c+g]=o[b],o[b++]=m}var k=a[x];a[x]=a[d],a[d++]=k}return d},"lox;++x,c+=p)if(o[c+v]g;++g){var m=o[c+g];o[c+g]=o[b],o[b++]=m}var k=a[x];a[x]=a[d],a[d++]=k}return d},"lo<=p0":function(t,i,r,n,o,a,u){for(var p=2*t,c=p*r,b=c,d=r,v=t+i,x=r;n>x;++x,c+=p)if(o[c+v]<=u)if(d===x)d+=1,b+=p;else{for(var g=0;p>g;++g){var m=o[c+g];o[c+g]=o[b],o[b++]=m}var k=a[x];a[x]=a[d],a[d++]=k}return d},"hi<=p0":function(t,i,r,n,o,a,u){for(var p=2*t,c=p*r,b=c,d=r,v=t+i,x=r;n>x;++x,c+=p)if(o[c+v]<=u)if(d===x)d+=1,b+=p;else{for(var g=0;p>g;++g){var m=o[c+g];o[c+g]=o[b],o[b++]=m}var k=a[x];a[x]=a[d],a[d++]=k}return d},"log;++g,c+=p){var m=o[c+v],k=o[c+x];if(mh;++h){var M=o[c+h];o[c+h]=o[b],o[b++]=M}var A=a[g];a[g]=a[d],a[d++]=A}}return d},"lo<=p0&&p0<=hi":function(t,i,r,n,o,a,u){for(var p=2*t,c=p*r,b=c,d=r,v=i,x=t+i,g=r;n>g;++g,c+=p){var m=o[c+v],k=o[c+x];if(m<=u&&u<=k)if(d===g)d+=1,b+=p;else{for(var h=0;p>h;++h){var M=o[c+h];o[c+h]=o[b],o[b++]=M}var A=a[g];a[g]=a[d],a[d++]=A}}return d},"!(lo>=p0)&&!(p1>=hi)":function(t,i,r,n,o,a,u,p){for(var c=2*t,b=c*r,d=b,v=r,x=i,g=t+i,m=r;n>m;++m,b+=c){var k=o[b+x],h=o[b+g];if(!(k>=u||p>=h))if(v===m)v+=1,d+=c;else{for(var M=0;c>M;++M){var A=o[b+M];o[b+M]=o[d],o[d++]=A}var C=a[m];a[m]=a[v],a[v++]=C}}return v}}},309:function(f){function l(p,c,b){for(var d=2*(p+1),v=p+1;v<=c;++v){for(var x=b[d++],g=b[d++],m=v,k=d-2;m-- >p;){var h=b[k-2],M=b[k-1];if(hb[c+1])}function a(p,c,b,d){var v=d[p*=2];return v>1,m=g-d,k=g+d,h=v,M=m,A=g,C=k,L=x,O=p+1,I=c-1,R=0;o(h,M,b)&&(R=h,h=M,M=R),o(C,L,b)&&(R=C,C=L,L=R),o(h,A,b)&&(R=h,h=A,A=R),o(M,A,b)&&(R=M,M=A,A=R),o(h,C,b)&&(R=h,h=C,C=R),o(A,C,b)&&(R=A,A=C,C=R),o(M,L,b)&&(R=M,M=L,L=R),o(M,A,b)&&(R=M,M=A,A=R),o(C,L,b)&&(R=C,C=L,L=R);for(var U=b[2*M],B=b[2*M+1],G=b[2*C],N=b[2*C+1],j=2*h,V=2*A,H=2*L,ee=2*v,Q=2*g,X=2*x,Y=0;Y<2;++Y){var K=b[j+Y],te=b[V+Y],ae=b[H+Y];b[ee+Y]=K,b[Q+Y]=te,b[X+Y]=ae}i(m,p,b),i(k,c,b);for(var oe=O;oe<=I;++oe)if(a(oe,U,B,b))oe!==O&&t(oe,O,b),++O;else if(!a(oe,G,N,b))for(;;){if(a(I,G,N,b)){a(I,U,B,b)?(r(oe,O,I,b),++O,--I):(t(oe,I,b),--I);break}if(--I>>1;n(x,X);var Y=0,K=0;for(V=0;V=o)g(c,b,K--,te=te-o|0);else if(te>=0)g(u,p,Y--,te);else if(te<=-268435456){te=-te-o|0;for(var ae=0;ae>>1;n(x,X);var Y=0,K=0,te=0;for(V=0;V>1==x[2*V+3]>>1&&(oe=2,V+=1),ae<0){for(var se=-(ae>>1)-1,fe=0;fe>1)-1,oe===0?g(u,p,Y--,se):oe===1?g(c,b,K--,se):oe===2&&g(d,v,te--,se)}},scanBipartite:function(k,h,M,A,C,L,O,I,R,U,B,G){var N=0,j=2*k,V=h,H=h+k,ee=1,Q=1;A?Q=o:ee=o;for(var X=C;X>>1;n(x,ae);var oe=0;for(X=0;X=o?(fe=!A,Y-=o):(fe=!!A,Y-=1),fe)m(u,p,oe++,Y);else{var ye=G[Y],pe=j*Y,de=B[pe+h+1],he=B[pe+h+1+k];e:for(var xe=0;xe>>1;n(x,Y);var K=0;for(H=0;H=o)u[K++]=ee-o;else{var ae=B[ee-=1],oe=N*ee,se=U[oe+h+1],fe=U[oe+h+1+k];e:for(var ye=0;ye=0;--ye)if(u[ye]===ee){for(xe=ye+1;xe0;){for(var m=a.pop(),k=(v=-1,x=-1,b=p[c=a.pop()],1);k=0||(o.flip(c,m),r(n,o,a,v,c,x),r(n,o,a,c,x,v),r(n,o,a,x,m,v),r(n,o,a,m,v,x))}}},7098:function(f,l,t){var i,r=t(5070);function n(a,u,p,c,b,d,v){this.cells=a,this.neighbor=u,this.flags=c,this.constraint=p,this.active=b,this.next=d,this.boundary=v}function o(a,u){return a[0]-u[0]||a[1]-u[1]||a[2]-u[2]}f.exports=function(a,u,p){var c=function(O,I){for(var R=O.cells(),U=R.length,B=0;B0||v.length>0;){for(;d.length>0;){var h=d.pop();if(x[h]!==-b){x[h]=b,g[h];for(var M=0;M<3;++M){var A=k[3*h+M];A>=0&&x[A]===0&&(m[3*h+M]?v.push(A):(d.push(A),x[A]=b))}}}var C=v;v=d,d=C,v.length=0,b=-b}var L=function(O,I,R){for(var U=0,B=0;B1&&r(g[L[O-2]],g[L[O-1]],m)>0;)v.push([L[O-1],L[O-2],k]),O-=1;L.length=O,L.push(k);var I=C.upperIds;for(O=I.length;O>1&&r(g[I[O-2]],g[I[O-1]],m)<0;)v.push([I[O-2],I[O-1],k]),O-=1;I.length=O,I.push(k)}}function c(v,x){var g;return(g=v.a[0]C[0]&&k.push(new o(C,A,2,h),new o(A,C,1,h))}k.sort(a);for(var L=k[0].a[0]-(1+Math.abs(k[0].a[0]))*Math.pow(2,-52),O=[new n([L,1],[L,0],-1,[],[])],I=[],R=(h=0,k.length);h=0}}(),n.removeTriangle=function(a,u,p){var c=this.stars;o(c[a],u,p),o(c[u],p,a),o(c[p],a,u)},n.addTriangle=function(a,u,p){var c=this.stars;c[a].push(u,p),c[u].push(p,a),c[p].push(a,u)},n.opposite=function(a,u){for(var p=this.stars[u],c=1,b=p.length;cA[2]?1:0)}function k(M,A,C){if(M.length!==0){if(A)for(var L=0;L=0;--H){var se=G[ee=(we=j[H])[0]],fe=se[0],ye=se[1],pe=B[fe],de=B[ye];if((pe[0]-de[0]||pe[1]-de[1])<0){var he=fe;fe=ye,ye=he}se[0]=fe;var xe,Re=se[1]=we[1];for(V&&(xe=se[2]);H>0&&j[H-1][0]===ee;){var we,Ae=(we=j[--H])[1];V?G.push([Re,Ae,xe]):G.push([Re,Ae]),Re=Ae}V?G.push([Re,ye,xe]):G.push([Re,ye])}return Q}(M,A,O,I,C),U=x(M,R);return k(A,U,C),!!U||O.length>0||I.length>0}},5528:function(f,l,t){f.exports=function(b,d,v,x){var g=a(d,b),m=a(x,v),k=c(g,m);if(o(k)===0)return null;var h=c(m,a(b,v)),M=r(h,k),A=p(g,M);return u(b,A)};var i=t(3962),r=t(9189),n=t(4354),o=t(4951),a=t(6695),u=t(7584),p=t(4469);function c(b,d){return n(i(b[0],d[1]),i(b[1],d[0]))}},5692:function(f){f.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:1,rgb:[255,255,255,1]}],viridis:[{index:0,rgb:[68,1,84]},{index:.13,rgb:[71,44,122]},{index:.25,rgb:[59,81,139]},{index:.38,rgb:[44,113,142]},{index:.5,rgb:[33,144,141]},{index:.63,rgb:[39,173,129]},{index:.75,rgb:[92,200,99]},{index:.88,rgb:[170,220,50]},{index:1,rgb:[253,231,37]}],inferno:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[31,12,72]},{index:.25,rgb:[85,15,109]},{index:.38,rgb:[136,34,106]},{index:.5,rgb:[186,54,85]},{index:.63,rgb:[227,89,51]},{index:.75,rgb:[249,140,10]},{index:.88,rgb:[249,201,50]},{index:1,rgb:[252,255,164]}],magma:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[28,16,68]},{index:.25,rgb:[79,18,123]},{index:.38,rgb:[129,37,129]},{index:.5,rgb:[181,54,122]},{index:.63,rgb:[229,80,100]},{index:.75,rgb:[251,135,97]},{index:.88,rgb:[254,194,135]},{index:1,rgb:[252,253,191]}],plasma:[{index:0,rgb:[13,8,135]},{index:.13,rgb:[75,3,161]},{index:.25,rgb:[125,3,168]},{index:.38,rgb:[168,34,150]},{index:.5,rgb:[203,70,121]},{index:.63,rgb:[229,107,93]},{index:.75,rgb:[248,148,65]},{index:.88,rgb:[253,195,40]},{index:1,rgb:[240,249,33]}],warm:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[172,0,187]},{index:.25,rgb:[219,0,170]},{index:.38,rgb:[255,0,130]},{index:.5,rgb:[255,63,74]},{index:.63,rgb:[255,123,0]},{index:.75,rgb:[234,176,0]},{index:.88,rgb:[190,228,0]},{index:1,rgb:[147,255,0]}],cool:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[116,0,218]},{index:.25,rgb:[98,74,237]},{index:.38,rgb:[68,146,231]},{index:.5,rgb:[0,204,197]},{index:.63,rgb:[0,247,146]},{index:.75,rgb:[0,255,88]},{index:.88,rgb:[40,255,8]},{index:1,rgb:[147,255,0]}],"rainbow-soft":[{index:0,rgb:[125,0,179]},{index:.1,rgb:[199,0,180]},{index:.2,rgb:[255,0,121]},{index:.3,rgb:[255,108,0]},{index:.4,rgb:[222,194,0]},{index:.5,rgb:[150,255,0]},{index:.6,rgb:[0,255,55]},{index:.7,rgb:[0,246,150]},{index:.8,rgb:[50,167,222]},{index:.9,rgb:[103,51,235]},{index:1,rgb:[124,0,186]}],bathymetry:[{index:0,rgb:[40,26,44]},{index:.13,rgb:[59,49,90]},{index:.25,rgb:[64,76,139]},{index:.38,rgb:[63,110,151]},{index:.5,rgb:[72,142,158]},{index:.63,rgb:[85,174,163]},{index:.75,rgb:[120,206,163]},{index:.88,rgb:[187,230,172]},{index:1,rgb:[253,254,204]}],cdom:[{index:0,rgb:[47,15,62]},{index:.13,rgb:[87,23,86]},{index:.25,rgb:[130,28,99]},{index:.38,rgb:[171,41,96]},{index:.5,rgb:[206,67,86]},{index:.63,rgb:[230,106,84]},{index:.75,rgb:[242,149,103]},{index:.88,rgb:[249,193,135]},{index:1,rgb:[254,237,176]}],chlorophyll:[{index:0,rgb:[18,36,20]},{index:.13,rgb:[25,63,41]},{index:.25,rgb:[24,91,59]},{index:.38,rgb:[13,119,72]},{index:.5,rgb:[18,148,80]},{index:.63,rgb:[80,173,89]},{index:.75,rgb:[132,196,122]},{index:.88,rgb:[175,221,162]},{index:1,rgb:[215,249,208]}],density:[{index:0,rgb:[54,14,36]},{index:.13,rgb:[89,23,80]},{index:.25,rgb:[110,45,132]},{index:.38,rgb:[120,77,178]},{index:.5,rgb:[120,113,213]},{index:.63,rgb:[115,151,228]},{index:.75,rgb:[134,185,227]},{index:.88,rgb:[177,214,227]},{index:1,rgb:[230,241,241]}],"freesurface-blue":[{index:0,rgb:[30,4,110]},{index:.13,rgb:[47,14,176]},{index:.25,rgb:[41,45,236]},{index:.38,rgb:[25,99,212]},{index:.5,rgb:[68,131,200]},{index:.63,rgb:[114,156,197]},{index:.75,rgb:[157,181,203]},{index:.88,rgb:[200,208,216]},{index:1,rgb:[241,237,236]}],"freesurface-red":[{index:0,rgb:[60,9,18]},{index:.13,rgb:[100,17,27]},{index:.25,rgb:[142,20,29]},{index:.38,rgb:[177,43,27]},{index:.5,rgb:[192,87,63]},{index:.63,rgb:[205,125,105]},{index:.75,rgb:[216,162,148]},{index:.88,rgb:[227,199,193]},{index:1,rgb:[241,237,236]}],oxygen:[{index:0,rgb:[64,5,5]},{index:.13,rgb:[106,6,15]},{index:.25,rgb:[144,26,7]},{index:.38,rgb:[168,64,3]},{index:.5,rgb:[188,100,4]},{index:.63,rgb:[206,136,11]},{index:.75,rgb:[220,174,25]},{index:.88,rgb:[231,215,44]},{index:1,rgb:[248,254,105]}],par:[{index:0,rgb:[51,20,24]},{index:.13,rgb:[90,32,35]},{index:.25,rgb:[129,44,34]},{index:.38,rgb:[159,68,25]},{index:.5,rgb:[182,99,19]},{index:.63,rgb:[199,134,22]},{index:.75,rgb:[212,171,35]},{index:.88,rgb:[221,210,54]},{index:1,rgb:[225,253,75]}],phase:[{index:0,rgb:[145,105,18]},{index:.13,rgb:[184,71,38]},{index:.25,rgb:[186,58,115]},{index:.38,rgb:[160,71,185]},{index:.5,rgb:[110,97,218]},{index:.63,rgb:[50,123,164]},{index:.75,rgb:[31,131,110]},{index:.88,rgb:[77,129,34]},{index:1,rgb:[145,105,18]}],salinity:[{index:0,rgb:[42,24,108]},{index:.13,rgb:[33,50,162]},{index:.25,rgb:[15,90,145]},{index:.38,rgb:[40,118,137]},{index:.5,rgb:[59,146,135]},{index:.63,rgb:[79,175,126]},{index:.75,rgb:[120,203,104]},{index:.88,rgb:[193,221,100]},{index:1,rgb:[253,239,154]}],temperature:[{index:0,rgb:[4,35,51]},{index:.13,rgb:[23,51,122]},{index:.25,rgb:[85,59,157]},{index:.38,rgb:[129,79,143]},{index:.5,rgb:[175,95,130]},{index:.63,rgb:[222,112,101]},{index:.75,rgb:[249,146,66]},{index:.88,rgb:[249,196,65]},{index:1,rgb:[232,250,91]}],turbidity:[{index:0,rgb:[34,31,27]},{index:.13,rgb:[65,50,41]},{index:.25,rgb:[98,69,52]},{index:.38,rgb:[131,89,57]},{index:.5,rgb:[161,112,59]},{index:.63,rgb:[185,140,66]},{index:.75,rgb:[202,174,88]},{index:.88,rgb:[216,209,126]},{index:1,rgb:[233,246,171]}],"velocity-blue":[{index:0,rgb:[17,32,64]},{index:.13,rgb:[35,52,116]},{index:.25,rgb:[29,81,156]},{index:.38,rgb:[31,113,162]},{index:.5,rgb:[50,144,169]},{index:.63,rgb:[87,173,176]},{index:.75,rgb:[149,196,189]},{index:.88,rgb:[203,221,211]},{index:1,rgb:[254,251,230]}],"velocity-green":[{index:0,rgb:[23,35,19]},{index:.13,rgb:[24,64,38]},{index:.25,rgb:[11,95,45]},{index:.38,rgb:[39,123,35]},{index:.5,rgb:[95,146,12]},{index:.63,rgb:[152,165,18]},{index:.75,rgb:[201,186,69]},{index:.88,rgb:[233,216,137]},{index:1,rgb:[255,253,205]}],cubehelix:[{index:0,rgb:[0,0,0]},{index:.07,rgb:[22,5,59]},{index:.13,rgb:[60,4,105]},{index:.2,rgb:[109,1,135]},{index:.27,rgb:[161,0,147]},{index:.33,rgb:[210,2,142]},{index:.4,rgb:[251,11,123]},{index:.47,rgb:[255,29,97]},{index:.53,rgb:[255,54,69]},{index:.6,rgb:[255,85,46]},{index:.67,rgb:[255,120,34]},{index:.73,rgb:[255,157,37]},{index:.8,rgb:[241,191,57]},{index:.87,rgb:[224,220,93]},{index:.93,rgb:[218,241,142]},{index:1,rgb:[227,253,198]}]}},9156:function(f,l,t){var i=t(5692),r=t(3578);function n(u){return[u[0]/255,u[1]/255,u[2]/255,u[3]]}function o(u){for(var p,c="#",b=0;b<3;++b)c+=("00"+(p=(p=u[b]).toString(16))).substr(p.length);return c}function a(u){return"rgba("+u.join(",")+")"}f.exports=function(u){var p,c,b,d,v,x,g,m,k,h;if(u||(u={}),m=(u.nshades||72)-1,g=u.format||"hex",(x=u.colormap)||(x="jet"),typeof x=="string"){if(x=x.toLowerCase(),!i[x])throw Error(x+" not a supported colorscale");v=i[x]}else{if(!Array.isArray(x))throw Error("unsupported colormap option",x);v=x.slice()}if(v.length>m+1)throw new Error(x+" map requires nshades to be at least size "+v.length);k=Array.isArray(u.alpha)?u.alpha.length!==2?[1,1]:u.alpha.slice():typeof u.alpha=="number"?[u.alpha,u.alpha]:[1,1],p=v.map(function(O){return Math.round(O.index*m)}),k[0]=Math.min(Math.max(k[0],0),1),k[1]=Math.min(Math.max(k[1],0),1);var M=v.map(function(O,I){var R=v[I].index,U=v[I].rgb.slice();return U.length===4&&U[3]>=0&&U[3]<=1||(U[3]=k[0]+(k[1]-k[0])*R),U}),A=[];for(h=0;h0||u(p,c,d)?-1:1:x===0?g>0||u(p,c,b)?1:-1:r(g-x)}var k=i(p,c,b);return k>0?v>0&&i(p,c,d)>0?1:-1:k<0?v>0||i(p,c,d)>0?1:-1:i(p,c,d)>0||u(p,c,b)?1:-1};var i=t(417),r=t(7538),n=t(87),o=t(2019),a=t(9662);function u(p,c,b){var d=n(p[0],-c[0]),v=n(p[1],-c[1]),x=n(b[0],-c[0]),g=n(b[1],-c[1]),m=a(o(d,x),o(v,g));return m[m.length-1]>=0}},7538:function(f){f.exports=function(l){return l<0?-1:l>0?1:0}},9209:function(f){f.exports=function(i,r){var n=i.length,o=i.length-r.length;if(o)return o;switch(n){case 0:return 0;case 1:return i[0]-r[0];case 2:return i[0]+i[1]-r[0]-r[1]||l(i[0],i[1])-l(r[0],r[1]);case 3:var a=i[0]+i[1],u=r[0]+r[1];if(o=a+i[2]-(u+r[2]))return o;var p=l(i[0],i[1]),c=l(r[0],r[1]);return l(p,i[2])-l(c,r[2])||l(p+i[2],a)-l(c+r[2],u);case 4:var b=i[0],d=i[1],v=i[2],x=i[3],g=r[0],m=r[1],k=r[2],h=r[3];return b+d+v+x-(g+m+k+h)||l(b,d,v,x)-l(g,m,k,h,g)||l(b+d,b+v,b+x,d+v,d+x,v+x)-l(g+m,g+k,g+h,m+k,m+h,k+h)||l(b+d+v,b+d+x,b+v+x,d+v+x)-l(g+m+k,g+m+h,g+k+h,m+k+h);default:for(var M=i.slice().sort(t),A=r.slice().sort(t),C=0;Cl[i][0]&&(i=r);return ti?[[i],[t]]:[[t]]}},8722:function(f,l,t){f.exports=function(r){var n=i(r),o=n.length;if(o<=2)return[];for(var a=new Array(o),u=n[o-1],p=0;p=b[h]&&(k+=1);g[m]=k}}return c}(i(u,!0),a)}};var i=t(2183),r=t(2153)},9680:function(f){f.exports=function(l,t,i,r,n,o){var a=n-1,u=n*n,p=a*a,c=(1+2*n)*p,b=n*p,d=u*(3-2*n),v=u*a;if(l.length){o||(o=new Array(l.length));for(var x=l.length-1;x>=0;--x)o[x]=c*l[x]+b*t[x]+d*i[x]+v*r[x];return o}return c*l+b*t+d*i+v*r},f.exports.derivative=function(l,t,i,r,n,o){var a=6*n*n-6*n,u=3*n*n-4*n+1,p=-6*n*n+6*n,c=3*n*n-2*n;if(l.length){o||(o=new Array(l.length));for(var b=l.length-1;b>=0;--b)o[b]=a*l[b]+u*t[b]+p*i[b]+c*r[b];return o}return a*l+u*t+p*i[b]+c*r}},4419:function(f,l,t){var i=t(2183),r=t(1215);function n(a,u){this.point=a,this.index=u}function o(a,u){for(var p=a.point,c=u.point,b=p.length,d=0;d=2)return!1;R[B]=G}return!0}):I.filter(function(R){for(var U=0;U<=c;++U){var B=A[R[U]];if(B<0)return!1;R[U]=B}return!0}),1&c)for(v=0;v>>31},f.exports.exponent=function(n){return(f.exports.hi(n)<<1>>>21)-1023},f.exports.fraction=function(n){var o=f.exports.lo(n),a=f.exports.hi(n),u=1048575&a;return 2146435072&a&&(u+=1048576),[o,u]},f.exports.denormalized=function(n){return!(2146435072&f.exports.hi(n))}},3094:function(f){function l(t,i,r){var n=0|t[r];if(n<=0)return[];var o,a=new Array(n);if(r===t.length-1)for(o=0;o0)return function(r,n){var o,a;for(o=new Array(r),a=0;a=b-1){h=x.length-1;var A=p-c[b-1];for(M=0;M=b-1)for(var k=x.length-1,h=(c[b-1],0);h=0;--b)if(p[--c])return!1;return!0},a.jump=function(p){var c=this.lastT(),b=this.dimension;if(!(p0;--M)d.push(n(m[M-1],k[M-1],arguments[M])),v.push(0)}},a.push=function(p){var c=this.lastT(),b=this.dimension;if(!(p1e-6?1/g:0;this._time.push(p);for(var A=b;A>0;--A){var C=n(k[A-1],h[A-1],arguments[A]);d.push(C),v.push((C-d[x++])*M)}}},a.set=function(p){var c=this.dimension;if(!(p0;--m)b.push(n(x[m-1],g[m-1],arguments[m])),d.push(0)}},a.move=function(p){var c=this.lastT(),b=this.dimension;if(!(p<=c||arguments.length!==b+1)){var d=this._state,v=this._velocity,x=d.length-this.dimension,g=this.bounds,m=g[0],k=g[1],h=p-c,M=h>1e-6?1/h:0;this._time.push(p);for(var A=b;A>0;--A){var C=arguments[A];d.push(n(m[A-1],k[A-1],d[x++]+C)),v.push(C*M)}}},a.idle=function(p){var c=this.lastT();if(!(p=0;--M)d.push(n(m[M],k[M],d[x]+h*v[x])),v.push(0),x+=1}}},7080:function(f){function l(x,g,m,k,h,M){this._color=x,this.key=g,this.value=m,this.left=k,this.right=h,this._count=M}function t(x){return new l(x._color,x.key,x.value,x.left,x.right,x._count)}function i(x,g){return new l(x,g.key,g.value,g.left,g.right,g._count)}function r(x){x._count=1+(x.left?x.left._count:0)+(x.right?x.right._count:0)}function n(x,g){this._compare=x,this.root=g}f.exports=function(x){return new n(x||v,null)};var o=n.prototype;function a(x,g){var m;return g.left&&(m=a(x,g.left))?m:(m=x(g.key,g.value))||(g.right?a(x,g.right):void 0)}function u(x,g,m,k){if(g(x,k.key)<=0){var h;if(k.left&&(h=u(x,g,m,k.left))||(h=m(k.key,k.value)))return h}if(k.right)return u(x,g,m,k.right)}function p(x,g,m,k,h){var M,A=m(x,h.key),C=m(g,h.key);if(A<=0&&(h.left&&(M=p(x,g,m,k,h.left))||C>0&&(M=k(h.key,h.value))))return M;if(C>0&&h.right)return p(x,g,m,k,h.right)}function c(x,g){this.tree=x,this._stack=g}Object.defineProperty(o,"keys",{get:function(){var x=[];return this.forEach(function(g,m){x.push(g)}),x}}),Object.defineProperty(o,"values",{get:function(){var x=[];return this.forEach(function(g,m){x.push(m)}),x}}),Object.defineProperty(o,"length",{get:function(){return this.root?this.root._count:0}}),o.insert=function(x,g){for(var m=this._compare,k=this.root,h=[],M=[];k;){var A=m(x,k.key);h.push(k),M.push(A),k=A<=0?k.left:k.right}h.push(new l(0,x,g,null,null,1));for(var C=h.length-2;C>=0;--C)k=h[C],M[C]<=0?h[C]=new l(k._color,k.key,k.value,h[C+1],k.right,k._count+1):h[C]=new l(k._color,k.key,k.value,k.left,h[C+1],k._count+1);for(C=h.length-1;C>1;--C){var L=h[C-1];if(k=h[C],L._color===1||k._color===1)break;var O=h[C-2];if(O.left===L)if(L.left===k){if(!(I=O.right)||I._color!==0){O._color=0,O.left=L.right,L._color=1,L.right=O,h[C-2]=L,h[C-1]=k,r(O),r(L),C>=3&&((R=h[C-3]).left===O?R.left=L:R.right=L);break}L._color=1,O.right=i(1,I),O._color=0,C-=1}else{if(!(I=O.right)||I._color!==0){L.right=k.left,O._color=0,O.left=k.right,k._color=1,k.left=L,k.right=O,h[C-2]=k,h[C-1]=L,r(O),r(L),r(k),C>=3&&((R=h[C-3]).left===O?R.left=k:R.right=k);break}L._color=1,O.right=i(1,I),O._color=0,C-=1}else if(L.right===k){if(!(I=O.left)||I._color!==0){O._color=0,O.right=L.left,L._color=1,L.left=O,h[C-2]=L,h[C-1]=k,r(O),r(L),C>=3&&((R=h[C-3]).right===O?R.right=L:R.left=L);break}L._color=1,O.left=i(1,I),O._color=0,C-=1}else{var I;if(!(I=O.left)||I._color!==0){var R;L.left=k.right,O._color=0,O.right=k.left,k._color=1,k.right=L,k.left=O,h[C-2]=k,h[C-1]=L,r(O),r(L),r(k),C>=3&&((R=h[C-3]).right===O?R.right=k:R.left=k);break}L._color=1,O.left=i(1,I),O._color=0,C-=1}}return h[0]._color=1,new n(m,h[0])},o.forEach=function(x,g,m){if(this.root)switch(arguments.length){case 1:return a(x,this.root);case 2:return u(g,this._compare,x,this.root);case 3:return this._compare(g,m)>=0?void 0:p(g,m,this._compare,x,this.root)}},Object.defineProperty(o,"begin",{get:function(){for(var x=[],g=this.root;g;)x.push(g),g=g.left;return new c(this,x)}}),Object.defineProperty(o,"end",{get:function(){for(var x=[],g=this.root;g;)x.push(g),g=g.right;return new c(this,x)}}),o.at=function(x){if(x<0)return new c(this,[]);for(var g=this.root,m=[];;){if(m.push(g),g.left){if(x=g.right._count)break;g=g.right}return new c(this,[])},o.ge=function(x){for(var g=this._compare,m=this.root,k=[],h=0;m;){var M=g(x,m.key);k.push(m),M<=0&&(h=k.length),m=M<=0?m.left:m.right}return k.length=h,new c(this,k)},o.gt=function(x){for(var g=this._compare,m=this.root,k=[],h=0;m;){var M=g(x,m.key);k.push(m),M<0&&(h=k.length),m=M<0?m.left:m.right}return k.length=h,new c(this,k)},o.lt=function(x){for(var g=this._compare,m=this.root,k=[],h=0;m;){var M=g(x,m.key);k.push(m),M>0&&(h=k.length),m=M<=0?m.left:m.right}return k.length=h,new c(this,k)},o.le=function(x){for(var g=this._compare,m=this.root,k=[],h=0;m;){var M=g(x,m.key);k.push(m),M>=0&&(h=k.length),m=M<0?m.left:m.right}return k.length=h,new c(this,k)},o.find=function(x){for(var g=this._compare,m=this.root,k=[];m;){var h=g(x,m.key);if(k.push(m),h===0)return new c(this,k);m=h<=0?m.left:m.right}return new c(this,[])},o.remove=function(x){var g=this.find(x);return g?g.remove():this},o.get=function(x){for(var g=this._compare,m=this.root;m;){var k=g(x,m.key);if(k===0)return m.value;m=k<=0?m.left:m.right}};var b=c.prototype;function d(x,g){x.key=g.key,x.value=g.value,x.left=g.left,x.right=g.right,x._color=g._color,x._count=g._count}function v(x,g){return xg?1:0}Object.defineProperty(b,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(b,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),b.clone=function(){return new c(this.tree,this._stack.slice())},b.remove=function(){var x=this._stack;if(x.length===0)return this.tree;var g=new Array(x.length),m=x[x.length-1];g[g.length-1]=new l(m._color,m.key,m.value,m.left,m.right,m._count);for(var k=x.length-2;k>=0;--k)(m=x[k]).left===x[k+1]?g[k]=new l(m._color,m.key,m.value,g[k+1],m.right,m._count):g[k]=new l(m._color,m.key,m.value,m.left,g[k+1],m._count);if((m=g[g.length-1]).left&&m.right){var h=g.length;for(m=m.left;m.right;)g.push(m),m=m.right;var M=g[h-1];for(g.push(new l(m._color,M.key,M.value,m.left,m.right,m._count)),g[h-1].key=m.key,g[h-1].value=m.value,k=g.length-2;k>=h;--k)m=g[k],g[k]=new l(m._color,m.key,m.value,m.left,g[k+1],m._count);g[h-1].left=g[h]}if((m=g[g.length-1])._color===0){var A=g[g.length-2];for(A.left===m?A.left=null:A.right===m&&(A.right=null),g.pop(),k=0;k=0;--B){if(O=L[B],B===0)return void(O._color=1);if((I=L[B-1]).left===O){if((R=I.right).right&&R.right._color===0)return U=(R=I.right=t(R)).right=t(R.right),I.right=R.left,R.left=I,R.right=U,R._color=I._color,O._color=1,I._color=1,U._color=1,r(I),r(R),B>1&&((G=L[B-2]).left===I?G.left=R:G.right=R),void(L[B-1]=R);if(R.left&&R.left._color===0)return U=(R=I.right=t(R)).left=t(R.left),I.right=U.left,R.left=U.right,U.left=I,U.right=R,U._color=I._color,I._color=1,R._color=1,O._color=1,r(I),r(R),r(U),B>1&&((G=L[B-2]).left===I?G.left=U:G.right=U),void(L[B-1]=U);if(R._color===1){if(I._color===0)return I._color=1,void(I.right=i(0,R));I.right=i(0,R);continue}R=t(R),I.right=R.left,R.left=I,R._color=I._color,I._color=0,r(I),r(R),B>1&&((G=L[B-2]).left===I?G.left=R:G.right=R),L[B-1]=R,L[B]=I,B+11&&((G=L[B-2]).right===I?G.right=R:G.left=R),void(L[B-1]=R);if(R.right&&R.right._color===0)return U=(R=I.left=t(R)).right=t(R.right),I.left=U.right,R.right=U.left,U.right=I,U.left=R,U._color=I._color,I._color=1,R._color=1,O._color=1,r(I),r(R),r(U),B>1&&((G=L[B-2]).right===I?G.right=U:G.left=U),void(L[B-1]=U);if(R._color===1){if(I._color===0)return I._color=1,void(I.left=i(0,R));I.left=i(0,R);continue}var G;R=t(R),I.left=R.right,R.right=I,R._color=I._color,I._color=0,r(I),r(R),B>1&&((G=L[B-2]).right===I?G.right=R:G.left=R),L[B-1]=R,L[B]=I,B+10)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(b,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(b,"index",{get:function(){var x=0,g=this._stack;if(g.length===0){var m=this.tree.root;return m?m._count:0}g[g.length-1].left&&(x=g[g.length-1].left._count);for(var k=g.length-2;k>=0;--k)g[k+1]===g[k].right&&(++x,g[k].left&&(x+=g[k].left._count));return x},enumerable:!0}),b.next=function(){var x=this._stack;if(x.length!==0){var g=x[x.length-1];if(g.right)for(g=g.right;g;)x.push(g),g=g.left;else for(x.pop();x.length>0&&x[x.length-1].right===g;)g=x[x.length-1],x.pop()}},Object.defineProperty(b,"hasNext",{get:function(){var x=this._stack;if(x.length===0)return!1;if(x[x.length-1].right)return!0;for(var g=x.length-1;g>0;--g)if(x[g-1].left===x[g])return!0;return!1}}),b.update=function(x){var g=this._stack;if(g.length===0)throw new Error("Can't update empty node!");var m=new Array(g.length),k=g[g.length-1];m[m.length-1]=new l(k._color,k.key,x,k.left,k.right,k._count);for(var h=g.length-2;h>=0;--h)(k=g[h]).left===g[h+1]?m[h]=new l(k._color,k.key,k.value,m[h+1],k.right,k._count):m[h]=new l(k._color,k.key,k.value,k.left,m[h+1],k._count);return new n(this.tree._compare,m[0])},b.prev=function(){var x=this._stack;if(x.length!==0){var g=x[x.length-1];if(g.left)for(g=g.left;g;)x.push(g),g=g.right;else for(x.pop();x.length>0&&x[x.length-1].left===g;)g=x[x.length-1],x.pop()}},Object.defineProperty(b,"hasPrev",{get:function(){var x=this._stack;if(x.length===0)return!1;if(x[x.length-1].left)return!0;for(var g=x.length-1;g>0;--g)if(x[g-1].right===x[g])return!0;return!1}})},7453:function(f,l,t){f.exports=function(A,C){var L=new c(A);return L.update(C),L};var i=t(9557),r=t(1681),n=t(1011),o=t(2864),a=t(8468),u=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function p(A,C){return A[0]=C[0],A[1]=C[1],A[2]=C[2],A}function c(A){this.gl=A,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont="sans-serif",this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=n(A)}var b=c.prototype;function d(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}b.update=function(A){function C(ee,Q,X){if(X in A){var Y,K=A[X],te=this[X];(ee?Array.isArray(K)&&Array.isArray(K[0]):Array.isArray(K))?this[X]=Y=[Q(K[0]),Q(K[1]),Q(K[2])]:this[X]=Y=[Q(K),Q(K),Q(K)];for(var ae=0;ae<3;++ae)if(Y[ae]!==te[ae])return!0}return!1}A=A||{};var L,O=C.bind(this,!1,Number),I=C.bind(this,!1,Boolean),R=C.bind(this,!1,String),U=C.bind(this,!0,function(ee){if(Array.isArray(ee)){if(ee.length===3)return[+ee[0],+ee[1],+ee[2],1];if(ee.length===4)return[+ee[0],+ee[1],+ee[2],+ee[3]]}return[0,0,0,1]}),B=!1,G=!1;if("bounds"in A)for(var N=A.bounds,j=0;j<2;++j)for(var V=0;V<3;++V)N[j][V]!==this.bounds[j][V]&&(G=!0),this.bounds[j][V]=N[j][V];if("ticks"in A)for(L=A.ticks,B=!0,this.autoTicks=!1,j=0;j<3;++j)this.tickSpacing[j]=0;else O("tickSpacing")&&(this.autoTicks=!0,G=!0);if(this._firstInit&&("ticks"in A||"tickSpacing"in A||(this.autoTicks=!0),G=!0,B=!0,this._firstInit=!1),G&&this.autoTicks&&(L=a.create(this.bounds,this.tickSpacing),B=!0),B){for(j=0;j<3;++j)L[j].sort(function(ee,Q){return ee.x-Q.x});a.equal(L,this.ticks)?B=!1:this.ticks=L}I("tickEnable"),R("tickFont")&&(B=!0),O("tickSize"),O("tickAngle"),O("tickPad"),U("tickColor");var H=R("labels");R("labelFont")&&(H=!0),I("labelEnable"),O("labelSize"),O("labelPad"),U("labelColor"),I("lineEnable"),I("lineMirror"),O("lineWidth"),U("lineColor"),I("lineTickEnable"),I("lineTickMirror"),O("lineTickLength"),O("lineTickWidth"),U("lineTickColor"),I("gridEnable"),O("gridWidth"),U("gridColor"),I("zeroEnable"),U("zeroLineColor"),O("zeroLineWidth"),I("backgroundEnable"),U("backgroundColor"),this._text?this._text&&(H||B)&&this._text.update(this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont):this._text=i(this.gl,this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont),this._lines&&B&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=r(this.gl,this.bounds,this.ticks))};var v=[new d,new d,new d];function x(A,C,L,O,I){for(var R=A.primalOffset,U=A.primalMinor,B=A.mirrorOffset,G=A.mirrorMinor,N=O[C],j=0;j<3;++j)if(C!==j){var V=R,H=B,ee=U,Q=G;N&1<0?(ee[j]=-1,Q[j]=0):(ee[j]=0,Q[j]=1)}}var g=[0,0,0],m={model:u,view:u,projection:u,_ortho:!1};b.isOpaque=function(){return!0},b.isTransparent=function(){return!1},b.drawTransparent=function(A){};var k=[0,0,0],h=[0,0,0],M=[0,0,0];b.draw=function(A){A=A||m;for(var C=this.gl,L=A.model||u,O=A.view||u,I=A.projection||u,R=this.bounds,U=A._ortho||!1,B=o(L,O,I,R,U),G=B.cubeEdges,N=B.axis,j=O[12],V=O[13],H=O[14],ee=O[15],Q=(U?2:1)*this.pixelRatio*(I[3]*j+I[7]*V+I[11]*H+I[15]*ee)/C.drawingBufferHeight,X=0;X<3;++X)this.lastCubeProps.cubeEdges[X]=G[X],this.lastCubeProps.axis[X]=N[X];var Y=v;for(X=0;X<3;++X)x(v[X],X,this.bounds,G,N);C=this.gl;var K,te,ae,oe=g;for(X=0;X<3;++X)this.backgroundEnable[X]?oe[X]=N[X]:oe[X]=0;for(this._background.draw(L,O,I,R,oe,this.backgroundColor),this._lines.bind(L,O,I,this),X=0;X<3;++X){var se=[0,0,0];N[X]>0?se[X]=R[1][X]:se[X]=R[0][X];for(var fe=0;fe<2;++fe){var ye=(X+1+fe)%3,pe=(X+1+(1^fe))%3;this.gridEnable[ye]&&this._lines.drawGrid(ye,pe,this.bounds,se,this.gridColor[ye],this.gridWidth[ye]*this.pixelRatio)}for(fe=0;fe<2;++fe)ye=(X+1+fe)%3,pe=(X+1+(1^fe))%3,this.zeroEnable[pe]&&Math.min(R[0][pe],R[1][pe])<=0&&Math.max(R[0][pe],R[1][pe])>=0&&this._lines.drawZero(ye,pe,this.bounds,se,this.zeroLineColor[pe],this.zeroLineWidth[pe]*this.pixelRatio)}for(X=0;X<3;++X){this.lineEnable[X]&&this._lines.drawAxisLine(X,this.bounds,Y[X].primalOffset,this.lineColor[X],this.lineWidth[X]*this.pixelRatio),this.lineMirror[X]&&this._lines.drawAxisLine(X,this.bounds,Y[X].mirrorOffset,this.lineColor[X],this.lineWidth[X]*this.pixelRatio);var de=p(k,Y[X].primalMinor),he=p(h,Y[X].mirrorMinor),xe=this.lineTickLength;for(fe=0;fe<3;++fe){var Re=Q/L[5*fe];de[fe]*=xe[fe]*Re,he[fe]*=xe[fe]*Re}this.lineTickEnable[X]&&this._lines.drawAxisTicks(X,Y[X].primalOffset,de,this.lineTickColor[X],this.lineTickWidth[X]*this.pixelRatio),this.lineTickMirror[X]&&this._lines.drawAxisTicks(X,Y[X].mirrorOffset,he,this.lineTickColor[X],this.lineTickWidth[X]*this.pixelRatio)}function we(me){(ae=[0,0,0])[me]=1}function Ae(me,Te,Ee){var Ue=(me+1)%3,De=(me+2)%3,je=Te[Ue],ge=Te[De],be=Ee[Ue],Se=Ee[De];je>0&&Se>0||je>0&&Se<0||je<0&&Se>0||je<0&&Se<0?we(Ue):(ge>0&&be>0||ge>0&&be<0||ge<0&&be>0||ge<0&&be<0)&&we(De)}for(this._lines.unbind(),this._text.bind(L,O,I,this.pixelRatio),X=0;X<3;++X){var Me=Y[X].primalMinor,Ce=Y[X].mirrorMinor,ne=p(M,Y[X].primalOffset);for(fe=0;fe<3;++fe)this.lineTickEnable[X]&&(ne[fe]+=Q*Me[fe]*Math.max(this.lineTickLength[fe],0)/L[5*fe]);var ue=[0,0,0];if(ue[X]=1,this.tickEnable[X]){for(this.tickAngle[X]===-3600?(this.tickAngle[X]=0,this.tickAlign[X]="auto"):this.tickAlign[X]=-1,te=1,(K=[this.tickAlign[X],.5,te])[0]==="auto"?K[0]=0:K[0]=parseInt(""+K[0]),ae=[0,0,0],Ae(X,Me,Ce),fe=0;fe<3;++fe)ne[fe]+=Q*Me[fe]*this.tickPad[fe]/L[5*fe];this._text.drawTicks(X,this.tickSize[X],this.tickAngle[X],ne,this.tickColor[X],ue,ae,K)}if(this.labelEnable[X]){for(te=0,ae=[0,0,0],this.labels[X].length>4&&(we(X),te=1),(K=[this.labelAlign[X],.5,te])[0]==="auto"?K[0]=0:K[0]=parseInt(""+K[0]),fe=0;fe<3;++fe)ne[fe]+=Q*Me[fe]*this.labelPad[fe]/L[5*fe];ne[X]+=.5*(R[0][X]+R[1][X]),this._text.drawLabel(X,this.labelSize[X],this.labelAngle[X],ne,this.labelColor[X],[0,0,0],ae,K)}}this._text.unbind()},b.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},1011:function(f,l,t){f.exports=function(u){for(var p=[],c=[],b=0,d=0;d<3;++d)for(var v=(d+1)%3,x=(d+2)%3,g=[0,0,0],m=[0,0,0],k=-1;k<=1;k+=2){c.push(b,b+2,b+1,b+1,b+2,b+3),g[d]=k,m[d]=k;for(var h=-1;h<=1;h+=2){g[v]=h;for(var M=-1;M<=1;M+=2)g[x]=M,p.push(g[0],g[1],g[2],m[0],m[1],m[2]),b+=1}var A=v;v=x,x=A}var C=i(u,new Float32Array(p)),L=i(u,new Uint16Array(c),u.ELEMENT_ARRAY_BUFFER),O=r(u,[{buffer:C,type:u.FLOAT,size:3,offset:0,stride:24},{buffer:C,type:u.FLOAT,size:3,offset:12,stride:24}],L),I=n(u);return I.attributes.position.location=0,I.attributes.normal.location=1,new o(u,C,O,I)};var i=t(5827),r=t(2944),n=t(1943).bg;function o(u,p,c,b){this.gl=u,this.buffer=p,this.vao=c,this.shader=b}var a=o.prototype;a.draw=function(u,p,c,b,d,v){for(var x=!1,g=0;g<3;++g)x=x||d[g];if(x){var m=this.gl;m.enable(m.POLYGON_OFFSET_FILL),m.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:u,view:p,projection:c,bounds:b,enable:d,colors:v},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),m.disable(m.POLYGON_OFFSET_FILL)}},a.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},2864:function(f,l,t){f.exports=function(h,M,A,C,L){r(a,M,h),r(a,A,a);for(var O=0,I=0;I<2;++I){c[2]=C[I][2];for(var R=0;R<2;++R){c[1]=C[R][1];for(var U=0;U<2;++U)c[0]=C[U][0],d(u[O],c,a),O+=1}}var B=-1;for(I=0;I<8;++I){for(var G=u[I][3],N=0;N<3;++N)p[I][N]=u[I][N]/G;L&&(p[I][2]*=-1),G<0&&(B<0||p[I][2]ee&&(B|=1<ee&&(B|=1<p[I][1])&&(se=I);var fe=-1;for(I=0;I<3;++I)(pe=se^1<p[ye][0]&&(ye=pe))}var de=g;de[0]=de[1]=de[2]=0,de[i.log2(fe^se)]=se&fe,de[i.log2(se^ye)]=se&ye;var he=7^ye;he===B||he===oe?(he=7^fe,de[i.log2(ye^he)]=he&ye):de[i.log2(fe^he)]=he&fe;var xe=m,Re=B;for(j=0;j<3;++j)xe[j]=Re&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ? + b - PI : + b; +} + +float look_horizontal_or_vertical(float a, float ratio) { + // ratio controls the ratio between being horizontal to (vertical + horizontal) + // if ratio is set to 0.5 then it is 50%, 50%. + // when using a higher ratio e.g. 0.75 the result would + // likely be more horizontal than vertical. + + float b = positive_angle(a); + + return + (b < ( ratio) * HALF_PI) ? 0.0 : + (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI : + (b < (2.0 + ratio) * HALF_PI) ? 0.0 : + (b < (4.0 - ratio) * HALF_PI) ? HALF_PI : + 0.0; +} + +float roundTo(float a, float b) { + return float(b * floor((a + 0.5 * b) / b)); +} + +float look_round_n_directions(float a, int n) { + float b = positive_angle(a); + float div = TWO_PI / float(n); + float c = roundTo(b, div); + return look_upwards(c); +} + +float applyAlignOption(float rawAngle, float delta) { + return + (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions + (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical + (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis + (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards + (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal + rawAngle; // otherwise return back raw input angle +} + +bool isAxisTitle = (axis.x == 0.0) && + (axis.y == 0.0) && + (axis.z == 0.0); + +void main() { + //Compute world offset + float axisDistance = position.z; + vec3 dataPosition = axisDistance * axis + offset; + + float beta = angle; // i.e. user defined attributes for each tick + + float axisAngle; + float clipAngle; + float flip; + + if (enableAlign) { + axisAngle = (isAxisTitle) ? HALF_PI : + computeViewAngle(dataPosition, dataPosition + axis); + clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir); + + axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0; + clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0; + + flip = (dot(vec2(cos(axisAngle), sin(axisAngle)), + vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0; + + beta += applyAlignOption(clipAngle, flip * PI); + } + + //Compute plane offset + vec2 planeCoord = position.xy * pixelScale; + + mat2 planeXform = scale * mat2( + cos(beta), sin(beta), + -sin(beta), cos(beta) + ); + + vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution; + + //Compute clip position + vec3 clipPosition = project(dataPosition); + + //Apply text offset in clip coordinates + clipPosition += vec3(viewOffset, 0.0); + + //Done + gl_Position = vec4(clipPosition, 1.0); +}`]),u=i([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 color; +void main() { + gl_FragColor = color; +}`]);l.f=function(b){return r(b,a,u,null,[{name:"position",type:"vec3"}])};var p=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec3 normal; + +uniform mat4 model, view, projection; +uniform vec3 enable; +uniform vec3 bounds[2]; + +varying vec3 colorChannel; + +void main() { + + vec3 signAxis = sign(bounds[1] - bounds[0]); + + vec3 realNormal = signAxis * normal; + + if(dot(realNormal, enable) > 0.0) { + vec3 minRange = min(bounds[0], bounds[1]); + vec3 maxRange = max(bounds[0], bounds[1]); + vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0)); + gl_Position = projection * view * model * vec4(nPosition, 1.0); + } else { + gl_Position = vec4(0,0,0,0); + } + + colorChannel = abs(realNormal); +}`]),c=i([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 colors[3]; + +varying vec3 colorChannel; + +void main() { + gl_FragColor = colorChannel.x * colors[0] + + colorChannel.y * colors[1] + + colorChannel.z * colors[2]; +}`]);l.bg=function(b){return r(b,p,c,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},9557:function(f,l,t){f.exports=function(d,v,x,g,m,k){var h=i(d),M=r(d,[{buffer:h,size:3}]),A=o(d);A.attributes.position.location=0;var C=new p(d,A,h,M);return C.update(v,x,g,m,k),C};var i=t(5827),r=t(2944),n=t(875),o=t(1943).f,a=window||w.global||{},u=a.__TEXT_CACHE||{};function p(d,v,x,g){this.gl=d,this.shader=v,this.buffer=x,this.vao=g,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}a.__TEXT_CACHE={};var c=p.prototype,b=[0,0];c.bind=function(d,v,x,g){this.vao.bind(),this.shader.bind();var m=this.shader.uniforms;m.model=d,m.view=v,m.projection=x,m.pixelScale=g,b[0]=this.gl.drawingBufferWidth,b[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=b},c.unbind=function(){this.vao.unbind()},c.update=function(d,v,x,g,m){var k=[];function h(U,B,G,N,j,V){var H=u[G];H||(H=u[G]={});var ee=H[B];ee||(ee=H[B]=function(fe,ye){try{return n(fe,ye)}catch(pe){return console.warn('error vectorizing text:"'+fe+'" error:',pe),{cells:[],positions:[]}}}(B,{triangles:!0,font:G,textAlign:"center",textBaseline:"middle",lineSpacing:j,styletags:V}));for(var Q=(N||12)/12,X=ee.positions,Y=ee.cells,K=0,te=Y.length;K=0;--oe){var se=X[ae[oe]];k.push(Q*se[0],-Q*se[1],U)}}for(var M=[0,0,0],A=[0,0,0],C=[0,0,0],L=[0,0,0],O={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},I=0;I<3;++I){C[I]=k.length/3|0,h(.5*(d[0][I]+d[1][I]),v[I],x[I],12,1.25,O),L[I]=(k.length/3|0)-C[I],M[I]=k.length/3|0;for(var R=0;R=0&&(a=n.length-o-1);var u=Math.pow(10,a),p=Math.round(i*r*u),c=p+"";if(c.indexOf("e")>=0)return c;var b=p/u,d=p%u;p<0?(b=0|-Math.ceil(b),d=0|-d):(b=0|Math.floor(b),d|=0);var v=""+b;if(p<0&&(v="-"+v),a){for(var x=""+d;x.length=i[0][o];--u)a.push({x:u*r[o],text:t(r[o],u)});n.push(a)}return n},l.equal=function(i,r){for(var n=0;n<3;++n){if(i[n].length!==r[n].length)return!1;for(var o=0;ov)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return b.bufferSubData(d,m,g),v}function c(b,d){for(var v=i.malloc(b.length,d),x=b.length,g=0;g=0;--A){if(h[A]!==M)return!1;M*=k[A]}return!0}(b.shape,b.stride))b.offset===0&&b.data.length===b.shape[0]?this.length=p(this.gl,this.type,this.length,this.usage,b.data,d):this.length=p(this.gl,this.type,this.length,this.usage,b.data.subarray(b.offset,b.shape[0]),d);else{var x=i.malloc(b.size,v),g=n(x,b.shape);r.assign(g,b),this.length=p(this.gl,this.type,this.length,this.usage,d<0?x:x.subarray(0,b.size),d),i.free(x)}}else if(Array.isArray(b)){var m;m=this.type===this.gl.ELEMENT_ARRAY_BUFFER?c(b,"uint16"):c(b,"float32"),this.length=p(this.gl,this.type,this.length,this.usage,d<0?m:m.subarray(0,b.length),d),i.free(m)}else if(typeof b=="object"&&typeof b.length=="number")this.length=p(this.gl,this.type,this.length,this.usage,b,d);else{if(typeof b!="number"&&b!==void 0)throw new Error("gl-buffer: Invalid data type");if(d>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");(b|=0)<=0&&(b=1),this.gl.bufferData(this.type,0|b,this.usage),this.length=b}},f.exports=function(b,d,v,x){if(v=v||b.ARRAY_BUFFER,x=x||b.DYNAMIC_DRAW,v!==b.ARRAY_BUFFER&&v!==b.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(x!==b.DYNAMIC_DRAW&&x!==b.STATIC_DRAW&&x!==b.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var g=b.createBuffer(),m=new a(b,v,g,0,x);return m.update(d),m}},1140:function(f,l,t){var i=t(2858);f.exports=function(n,o){var a=n.positions,u=n.vectors,p={positions:[],vertexIntensity:[],vertexIntensityBounds:n.vertexIntensityBounds,vectors:[],cells:[],coneOffset:n.coneOffset,colormap:n.colormap};if(n.positions.length===0)return o&&(o[0]=[0,0,0],o[1]=[0,0,0]),p;for(var c=0,b=1/0,d=-1/0,v=1/0,x=-1/0,g=1/0,m=-1/0,k=null,h=null,M=[],A=1/0,C=!1,L=0;Lc&&(c=i.length(I)),L){var R=2*i.distance(k,O)/(i.length(h)+i.length(I));R?(A=Math.min(A,R),C=!1):C=!0}C||(k=O,h=I),M.push(I)}var U=[b,v,g],B=[d,x,m];o&&(o[0]=U,o[1]=B),c===0&&(c=1);var G=1/c;isFinite(A)||(A=1),p.vectorScale=A;var N=n.coneSize||.5;n.absoluteConeSize&&(N=n.absoluteConeSize*G),p.coneScale=N,L=0;for(var j=0;L=1},v.isTransparent=function(){return this.opacity<1},v.pickSlots=1,v.setPickBase=function(m){this.pickId=m},v.update=function(m){m=m||{};var k=this.gl;this.dirty=!0,"lightPosition"in m&&(this.lightPosition=m.lightPosition),"opacity"in m&&(this.opacity=m.opacity),"ambient"in m&&(this.ambientLight=m.ambient),"diffuse"in m&&(this.diffuseLight=m.diffuse),"specular"in m&&(this.specularLight=m.specular),"roughness"in m&&(this.roughness=m.roughness),"fresnel"in m&&(this.fresnel=m.fresnel),m.tubeScale!==void 0&&(this.tubeScale=m.tubeScale),m.vectorScale!==void 0&&(this.vectorScale=m.vectorScale),m.coneScale!==void 0&&(this.coneScale=m.coneScale),m.coneOffset!==void 0&&(this.coneOffset=m.coneOffset),m.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=k.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=k.LINEAR,this.texture.setPixels(function(se){for(var fe=c({colormap:se,nshades:256,format:"rgba"}),ye=new Uint8Array(1024),pe=0;pe<256;++pe){for(var de=fe[pe],he=0;he<3;++he)ye[4*pe+he]=de[he];ye[4*pe+3]=255*de[3]}return p(ye,[256,256,4],[4,0,1])}(m.colormap)),this.texture.generateMipmap());var h=m.cells,M=m.positions,A=m.vectors;if(M&&h&&A){var C=[],L=[],O=[],I=[],R=[];this.cells=h,this.positions=M,this.vectors=A;var U=m.meshColor||[1,1,1,1],B=m.vertexIntensity,G=1/0,N=-1/0;if(B)if(m.vertexIntensityBounds)G=+m.vertexIntensityBounds[0],N=+m.vertexIntensityBounds[1];else for(var j=0;j0){var G=this.triShader;G.bind(),G.uniforms=O,this.triangleVAO.bind(),k.drawArrays(k.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()}},v.drawPick=function(m){m=m||{};for(var k=this.gl,h=m.model||b,M=m.view||b,A=m.projection||b,C=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],L=0;L<3;++L)C[0][L]=Math.max(C[0][L],this.clipBounds[0][L]),C[1][L]=Math.min(C[1][L],this.clipBounds[1][L]);this._model=[].slice.call(h),this._view=[].slice.call(M),this._projection=[].slice.call(A),this._resolution=[k.drawingBufferWidth,k.drawingBufferHeight];var O={model:h,view:M,projection:A,clipBounds:C,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},I=this.pickShader;I.bind(),I.uniforms=O,this.triangleCount>0&&(this.triangleVAO.bind(),k.drawArrays(k.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind())},v.pick=function(m){if(!m||m.id!==this.pickId)return null;var k=m.value[0]+256*m.value[1]+65536*m.value[2],h=this.cells[k],M=this.positions[h[1]].slice(0,3),A={position:M,dataCoordinate:M,index:Math.floor(h[1]/48)};return this.traceType==="cone"?A.index=Math.floor(h[1]/48):this.traceType==="streamtube"&&(A.intensity=this.intensity[h[1]],A.velocity=this.vectors[h[1]].slice(0,3),A.divergence=this.vectors[h[1]][3],A.index=k),A},v.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()},f.exports=function(m,k,h){var M=h.shaders;arguments.length===1&&(m=(k=m).gl);var A=x(m,M),C=g(m,M),L=o(m,p(new Uint8Array([255,255,255,255]),[1,1,4]));L.generateMipmap(),L.minFilter=m.LINEAR_MIPMAP_LINEAR,L.magFilter=m.LINEAR;var O=r(m),I=r(m),R=r(m),U=r(m),B=r(m),G=n(m,[{buffer:O,type:m.FLOAT,size:4},{buffer:B,type:m.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:R,type:m.FLOAT,size:4},{buffer:U,type:m.FLOAT,size:2},{buffer:I,type:m.FLOAT,size:4}]),N=new d(m,L,A,C,O,I,B,R,U,G,h.traceType||"cone");return N.update(k),N}},7234:function(f,l,t){var i=t(6832),r=i([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec3 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, coneScale, coneOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * conePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(conePosition, 1.0); + vec4 t_position = view * conePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = conePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),n=i([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),o=i([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float vectorScale, coneScale, coneOffset; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + gl_Position = projection * view * conePosition; + f_id = id; + f_position = position.xyz; +} +`]),a=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);l.meshShader={vertex:r,fragment:n,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},l.pickShader={vertex:o,fragment:a,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},1950:function(f){f.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},6603:function(f,l,t){var i=t(1950);f.exports=function(r){return i[r]}},3110:function(f,l,t){f.exports=function(d){var v=d.gl,x=i(v),g=r(v,[{buffer:x,type:v.FLOAT,size:3,offset:0,stride:40},{buffer:x,type:v.FLOAT,size:4,offset:12,stride:40},{buffer:x,type:v.FLOAT,size:3,offset:28,stride:40}]),m=n(v);m.attributes.position.location=0,m.attributes.color.location=1,m.attributes.offset.location=2;var k=new a(v,x,g,m);return k.update(d),k};var i=t(5827),r=t(2944),n=t(7667),o=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function a(d,v,x,g){this.gl=d,this.shader=g,this.buffer=v,this.vao=x,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var u=a.prototype;function p(d,v){for(var x=0;x<3;++x)d[0][x]=Math.min(d[0][x],v[x]),d[1][x]=Math.max(d[1][x],v[x])}u.isOpaque=function(){return!this.hasAlpha},u.isTransparent=function(){return this.hasAlpha},u.drawTransparent=u.draw=function(d){var v=this.gl,x=this.shader.uniforms;this.shader.bind();var g=x.view=d.view||o,m=x.projection=d.projection||o;x.model=d.model||o,x.clipBounds=this.clipBounds,x.opacity=this.opacity;var k=g[12],h=g[13],M=g[14],A=g[15],C=(d._ortho?2:1)*this.pixelRatio*(m[3]*k+m[7]*h+m[11]*M+m[15]*A)/v.drawingBufferHeight;this.vao.bind();for(var L=0;L<3;++L)v.lineWidth(this.lineWidth[L]*this.pixelRatio),x.capSize=this.capSize[L]*C,this.lineCount[L]&&v.drawArrays(v.LINES,this.lineOffset[L],this.lineCount[L]);this.vao.unbind()};var c=function(){for(var d=new Array(3),v=0;v<3;++v){for(var x=[],g=1;g<=2;++g)for(var m=-1;m<=1;m+=2){var k=[0,0,0];k[(g+v)%3]=m,x.push(k)}d[v]=x}return d}();function b(d,v,x,g){for(var m=c[g],k=0;k0&&((O=C.slice())[M]+=I[1][M],m.push(C[0],C[1],C[2],R[0],R[1],R[2],R[3],0,0,0,O[0],O[1],O[2],R[0],R[1],R[2],R[3],0,0,0),p(this.bounds,O),h+=2+b(m,O,R,M)))}this.lineCount[M]=h-this.lineOffset[M]}this.buffer.update(m)}},u.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},7667:function(f,l,t){var i=t(6832),r=t(5158),n=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, offset; +attribute vec4 color; +uniform mat4 model, view, projection; +uniform float capSize; +varying vec4 fragColor; +varying vec3 fragPosition; + +void main() { + vec4 worldPosition = model * vec4(position, 1.0); + worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0); + gl_Position = projection * view * worldPosition; + fragColor = color; + fragPosition = position; +}`]),o=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float opacity; +varying vec3 fragPosition; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], fragPosition) || + fragColor.a * opacity == 0. + ) discard; + + gl_FragColor = opacity * fragColor; +}`]);f.exports=function(a){return r(a,n,o,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},4234:function(f,l,t){var i=t(8931);f.exports=function(k,h,M,A){r||(r=k.FRAMEBUFFER_UNSUPPORTED,n=k.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,o=k.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,a=k.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);var C=k.getExtension("WEBGL_draw_buffers");if(!u&&C&&function(G,N){var j=G.getParameter(N.MAX_COLOR_ATTACHMENTS_WEBGL);u=new Array(j+1);for(var V=0;V<=j;++V){for(var H=new Array(j),ee=0;eeL||M<0||M>L)throw new Error("gl-fbo: Parameters are too large for FBO");var O=1;if("color"in(A=A||{})){if((O=Math.max(0|A.color,0))<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(O>1){if(!C)throw new Error("gl-fbo: Multiple draw buffer extension not supported");if(O>k.getParameter(C.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+O+" draw buffers")}}var I=k.UNSIGNED_BYTE,R=k.getExtension("OES_texture_float");if(A.float&&O>0){if(!R)throw new Error("gl-fbo: Context does not support floating point textures");I=k.FLOAT}else A.preferFloat&&O>0&&R&&(I=k.FLOAT);var U=!0;"depth"in A&&(U=!!A.depth);var B=!1;return"stencil"in A&&(B=!!A.stencil),new x(k,h,M,I,O,U,B,C)};var r,n,o,a,u=null;function p(k){return[k.getParameter(k.FRAMEBUFFER_BINDING),k.getParameter(k.RENDERBUFFER_BINDING),k.getParameter(k.TEXTURE_BINDING_2D)]}function c(k,h){k.bindFramebuffer(k.FRAMEBUFFER,h[0]),k.bindRenderbuffer(k.RENDERBUFFER,h[1]),k.bindTexture(k.TEXTURE_2D,h[2])}function b(k){switch(k){case r:throw new Error("gl-fbo: Framebuffer unsupported");case n:throw new Error("gl-fbo: Framebuffer incomplete attachment");case o:throw new Error("gl-fbo: Framebuffer incomplete dimensions");case a:throw new Error("gl-fbo: Framebuffer incomplete missing attachment");default:throw new Error("gl-fbo: Framebuffer failed for unspecified reason")}}function d(k,h,M,A,C,L){if(!A)return null;var O=i(k,h,M,C,A);return O.magFilter=k.NEAREST,O.minFilter=k.NEAREST,O.mipSamples=1,O.bind(),k.framebufferTexture2D(k.FRAMEBUFFER,L,k.TEXTURE_2D,O.handle,0),O}function v(k,h,M,A,C){var L=k.createRenderbuffer();return k.bindRenderbuffer(k.RENDERBUFFER,L),k.renderbufferStorage(k.RENDERBUFFER,A,h,M),k.framebufferRenderbuffer(k.FRAMEBUFFER,C,k.RENDERBUFFER,L),L}function x(k,h,M,A,C,L,O,I){this.gl=k,this._shape=[0|h,0|M],this._destroyed=!1,this._ext=I,this.color=new Array(C);for(var R=0;R1&&X.drawBuffersWEBGL(u[Q]);var oe=j.getExtension("WEBGL_depth_texture");oe?Y?G.depth=d(j,H,ee,oe.UNSIGNED_INT_24_8_WEBGL,j.DEPTH_STENCIL,j.DEPTH_STENCIL_ATTACHMENT):K&&(G.depth=d(j,H,ee,j.UNSIGNED_SHORT,j.DEPTH_COMPONENT,j.DEPTH_ATTACHMENT)):K&&Y?G._depth_rb=v(j,H,ee,j.DEPTH_STENCIL,j.DEPTH_STENCIL_ATTACHMENT):K?G._depth_rb=v(j,H,ee,j.DEPTH_COMPONENT16,j.DEPTH_ATTACHMENT):Y&&(G._depth_rb=v(j,H,ee,j.STENCIL_INDEX,j.STENCIL_ATTACHMENT));var se=j.checkFramebufferStatus(j.FRAMEBUFFER);if(se!==j.FRAMEBUFFER_COMPLETE){for(G._destroyed=!0,j.bindFramebuffer(j.FRAMEBUFFER,null),j.deleteFramebuffer(G.handle),G.handle=null,G.depth&&(G.depth.dispose(),G.depth=null),G._depth_rb&&(j.deleteRenderbuffer(G._depth_rb),G._depth_rb=null),ae=0;aeC||M<0||M>C)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");k._shape[0]=h,k._shape[1]=M;for(var L=p(A),O=0;O>8*U&255;this.pickOffset=g,k.bind();var B=k.uniforms;B.viewTransform=v,B.pickOffset=x,B.shape=this.shape;var G=k.attributes;return this.positionBuffer.bind(),G.position.pointer(),this.weightBuffer.bind(),G.weight.pointer(A.UNSIGNED_BYTE,!1),this.idBuffer.bind(),G.pickId.pointer(A.UNSIGNED_BYTE,!1),A.drawArrays(A.TRIANGLES,0,M),g+this.shape[0]*this.shape[1]}}}(),b.pick=function(v,x,g){var m=this.pickOffset,k=this.shape[0]*this.shape[1];if(g=m+k)return null;var h=g-m,M=this.xData,A=this.yData;return{object:this,pointId:h,dataCoord:[M[h%this.shape[0]],A[h/this.shape[0]|0]]}},b.update=function(v){var x=(v=v||{}).shape||[0,0],g=v.x||r(x[0]),m=v.y||r(x[1]),k=v.z||new Float32Array(x[0]*x[1]),h=v.zsmooth!==!1;this.xData=g,this.yData=m;var M,A,C,L,O=v.colorLevels||[0],I=v.colorValues||[0,0,0,1],R=O.length,U=this.bounds;h?(M=U[0]=g[0],A=U[1]=m[0],C=U[2]=g[g.length-1],L=U[3]=m[m.length-1]):(M=U[0]=g[0]+(g[1]-g[0])/2,A=U[1]=m[0]+(m[1]-m[0])/2,C=U[2]=g[g.length-1]+(g[g.length-1]-g[g.length-2])/2,L=U[3]=m[m.length-1]+(m[m.length-1]-m[m.length-2])/2);var B=1/(C-M),G=1/(L-A),N=x[0],j=x[1];this.shape=[N,j];var V=(h?(N-1)*(j-1):N*j)*(d.length>>>1);this.numVertices=V;for(var H=n.mallocUint8(4*V),ee=n.mallocFloat32(2*V),Q=n.mallocUint8(2*V),X=n.mallocUint32(V),Y=0,K=h?N-1:N,te=h?j-1:j,ae=0;ae max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D dashTexture; +uniform float dashScale; +uniform float opacity; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], worldPosition) || + fragColor.a * opacity == 0. + ) discard; + + float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r; + if(dashWeight < 0.5) { + discard; + } + gl_FragColor = fragColor * opacity; +} +`]),a=i([`precision highp float; +#define GLSLIFY 1 + +#define FLOAT_MAX 1.70141184e38 +#define FLOAT_MIN 1.17549435e-38 + +// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl +vec4 packFloat(float v) { + float av = abs(v); + + //Handle special cases + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(127.0, 128.0, 0.0, 0.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(255.0, 128.0, 0.0, 0.0) / 255.0; + } + + vec4 c = vec4(0,0,0,0); + + //Compute exponent and mantissa + float e = floor(log2(av)); + float m = av * pow(2.0, -e) - 1.0; + + //Unpack mantissa + c[1] = floor(128.0 * m); + m -= c[1] / 128.0; + c[2] = floor(32768.0 * m); + m -= c[2] / 32768.0; + c[3] = floor(8388608.0 * m); + + //Unpack exponent + float ebias = e + 127.0; + c[0] = floor(ebias / 2.0); + ebias -= c[0] * 2.0; + c[1] += floor(ebias) * 128.0; + + //Unpack sign bit + c[0] += 128.0 * step(0.0, -v); + + //Scale back to range + return c / 255.0; +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform float pickId; +uniform vec3 clipBounds[2]; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard; + + gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz); +}`]),u=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];l.createShader=function(p){return r(p,n,o,null,u)},l.createPickShader=function(p){return r(p,n,a,null,u)}},6086:function(f,l,t){f.exports=function(M){var A=M.gl||M.scene&&M.scene.gl,C=b(A);C.attributes.position.location=0,C.attributes.nextPosition.location=1,C.attributes.arcLength.location=2,C.attributes.lineWidth.location=3,C.attributes.color.location=4;var L=d(A);L.attributes.position.location=0,L.attributes.nextPosition.location=1,L.attributes.arcLength.location=2,L.attributes.lineWidth.location=3,L.attributes.color.location=4;for(var O=i(A),I=r(A,[{buffer:O,size:3,offset:0,stride:48},{buffer:O,size:3,offset:12,stride:48},{buffer:O,size:1,offset:24,stride:48},{buffer:O,size:1,offset:28,stride:48},{buffer:O,size:4,offset:32,stride:48}]),R=p(new Array(1024),[256,1,4]),U=0;U<1024;++U)R.data[U]=255;var B=n(A,R);B.wrap=A.REPEAT;var G=new k(A,C,L,O,I,B);return G.update(M),G};var i=t(5827),r=t(2944),n=t(8931),o=new Uint8Array(4),a=new Float32Array(o.buffer),u=t(5070),p=t(5050),c=t(248),b=c.createShader,d=c.createPickShader,v=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function x(M,A){for(var C=0,L=0;L<3;++L){var O=M[L]-A[L];C+=O*O}return Math.sqrt(C)}function g(M){for(var A=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],C=0;C<3;++C)A[0][C]=Math.max(M[0][C],A[0][C]),A[1][C]=Math.min(M[1][C],A[1][C]);return A}function m(M,A,C,L){this.arcLength=M,this.position=A,this.index=C,this.dataCoordinate=L}function k(M,A,C,L,O,I){this.gl=M,this.shader=A,this.pickShader=C,this.buffer=L,this.vao=O,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=I,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var h=k.prototype;h.isTransparent=function(){return this.hasAlpha},h.isOpaque=function(){return!this.hasAlpha},h.pickSlots=1,h.setPickBase=function(M){this.pickId=M},h.drawTransparent=h.draw=function(M){if(this.vertexCount){var A=this.gl,C=this.shader,L=this.vao;C.bind(),C.uniforms={model:M.model||v,view:M.view||v,projection:M.projection||v,clipBounds:g(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[A.drawingBufferWidth,A.drawingBufferHeight],pixelRatio:this.pixelRatio},L.bind(),L.draw(A.TRIANGLE_STRIP,this.vertexCount),L.unbind()}},h.drawPick=function(M){if(this.vertexCount){var A=this.gl,C=this.pickShader,L=this.vao;C.bind(),C.uniforms={model:M.model||v,view:M.view||v,projection:M.projection||v,pickId:this.pickId,clipBounds:g(this.clipBounds),screenShape:[A.drawingBufferWidth,A.drawingBufferHeight],pixelRatio:this.pixelRatio},L.bind(),L.draw(A.TRIANGLE_STRIP,this.vertexCount),L.unbind()}},h.update=function(M){var A,C;this.dirty=!0;var L=!!M.connectGaps;"dashScale"in M&&(this.dashScale=M.dashScale),this.hasAlpha=!1,"opacity"in M&&(this.opacity=+M.opacity,this.opacity<1&&(this.hasAlpha=!0));var O=[],I=[],R=[],U=0,B=0,G=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],N=M.position||M.positions;if(N){var j=M.color||M.colors||[0,0,0,1],V=M.lineWidth||1,H=!1;e:for(A=1;A0){for(var te=0;te<24;++te)O.push(O[O.length-12]);B+=2,H=!0}continue e}G[0][C]=Math.min(G[0][C],Y[C],K[C]),G[1][C]=Math.max(G[1][C],Y[C],K[C])}Array.isArray(j[0])?(ee=j.length>A-1?j[A-1]:j.length>0?j[j.length-1]:[0,0,0,1],Q=j.length>A?j[A]:j.length>0?j[j.length-1]:[0,0,0,1]):ee=Q=j,ee.length===3&&(ee=[ee[0],ee[1],ee[2],1]),Q.length===3&&(Q=[Q[0],Q[1],Q[2],1]),!this.hasAlpha&&ee[3]<1&&(this.hasAlpha=!0),X=Array.isArray(V)?V.length>A-1?V[A-1]:V.length>0?V[V.length-1]:[0,0,0,1]:V;var ae=U;if(U+=x(Y,K),H){for(C=0;C<2;++C)O.push(Y[0],Y[1],Y[2],K[0],K[1],K[2],ae,X,ee[0],ee[1],ee[2],ee[3]);B+=2,H=!1}O.push(Y[0],Y[1],Y[2],K[0],K[1],K[2],ae,X,ee[0],ee[1],ee[2],ee[3],Y[0],Y[1],Y[2],K[0],K[1],K[2],ae,-X,ee[0],ee[1],ee[2],ee[3],K[0],K[1],K[2],Y[0],Y[1],Y[2],U,-X,Q[0],Q[1],Q[2],Q[3],K[0],K[1],K[2],Y[0],Y[1],Y[2],U,X,Q[0],Q[1],Q[2],Q[3]),B+=4}}if(this.buffer.update(O),I.push(U),R.push(N[N.length-1].slice()),this.bounds=G,this.vertexCount=B,this.points=R,this.arcLength=I,"dashes"in M){var oe=M.dashes.slice();for(oe.unshift(0),A=1;A1.0001)return null;C+=A[g]}return Math.abs(C-1)>.001?null:[m,a(u,A),A]}},2056:function(f,l,t){var i=t(6832),r=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, normal; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model + , view + , projection + , inverseModel; +uniform vec3 eyePosition + , lightPosition; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +vec4 project(vec3 p) { + return projection * view * model * vec4(p, 1.0); +} + +void main() { + gl_Position = project(position); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * vec4(position , 1.0); + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + f_color = color; + f_data = position; + f_uv = uv; +} +`]),n=i([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness + , fresnel + , kambient + , kdiffuse + , kspecular; +uniform sampler2D texture; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (f_color.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], f_data) + ) discard; + + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d + + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * f_color.a; +} +`]),o=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model, view, projection; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); + f_color = color; + f_data = position; + f_uv = uv; +}`]),a=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard; + + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),u=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; +attribute float pointSize; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0); + } else { + gl_Position = projection * view * model * vec4(position, 1.0); + } + gl_PointSize = pointSize; + f_color = color; + f_uv = uv; +}`]),p=i([`precision highp float; +#define GLSLIFY 1 + +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5); + if(dot(pointR, pointR) > 0.25) { + discard; + } + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),c=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 id; + +uniform mat4 model, view, projection; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); + f_id = id; + f_position = position; +}`]),b=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]),d=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute float pointSize; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_Position = projection * view * model * vec4(position, 1.0); + gl_PointSize = pointSize; + } + f_id = id; + f_position = position; +}`]),v=i([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; + +uniform mat4 model, view, projection; + +void main() { + gl_Position = projection * view * model * vec4(position, 1.0); +}`]),x=i([`precision highp float; +#define GLSLIFY 1 + +uniform vec3 contourColor; + +void main() { + gl_FragColor = vec4(contourColor, 1.0); +} +`]);l.meshShader={vertex:r,fragment:n,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},l.wireShader={vertex:o,fragment:a,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},l.pointShader={vertex:u,fragment:p,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},l.pickShader={vertex:c,fragment:b,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},l.pointPickShader={vertex:d,fragment:b,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},l.contourShader={vertex:v,fragment:x,attributes:[{name:"position",type:"vec3"}]}},8116:function(f,l,t){var i=t(5158),r=t(5827),n=t(2944),o=t(8931),a=t(115),u=t(104),p=t(7437),c=t(5050),b=t(9156),d=t(7212),v=t(5306),x=t(2056),g=t(4340),m=x.meshShader,k=x.wireShader,h=x.pointShader,M=x.pickShader,A=x.pointPickShader,C=x.contourShader,L=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function O(H,ee,Q,X,Y,K,te,ae,oe,se,fe,ye,pe,de,he,xe,Re,we,Ae,Me,Ce,ne,ue,me,Te,Ee,Ue){this.gl=H,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=ee,this.dirty=!0,this.triShader=Q,this.lineShader=X,this.pointShader=Y,this.pickShader=K,this.pointPickShader=te,this.contourShader=ae,this.trianglePositions=oe,this.triangleColors=fe,this.triangleNormals=pe,this.triangleUVs=ye,this.triangleIds=se,this.triangleVAO=de,this.triangleCount=0,this.lineWidth=1,this.edgePositions=he,this.edgeColors=Re,this.edgeUVs=we,this.edgeIds=xe,this.edgeVAO=Ae,this.edgeCount=0,this.pointPositions=Me,this.pointColors=ne,this.pointUVs=ue,this.pointSizes=me,this.pointIds=Ce,this.pointVAO=Te,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=Ee,this.contourVAO=Ue,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=L,this._view=L,this._projection=L,this._resolution=[1,1]}var I=O.prototype;function R(H,ee){if(!ee||!ee.length)return 1;for(var Q=0;QH&&Q>0){var X=(ee[Q][0]-H)/(ee[Q][0]-ee[Q-1][0]);return ee[Q][1]*(1-X)+X*ee[Q-1][1]}}return 1}function U(H){var ee=i(H,m.vertex,m.fragment);return ee.attributes.position.location=0,ee.attributes.color.location=2,ee.attributes.uv.location=3,ee.attributes.normal.location=4,ee}function B(H){var ee=i(H,k.vertex,k.fragment);return ee.attributes.position.location=0,ee.attributes.color.location=2,ee.attributes.uv.location=3,ee}function G(H){var ee=i(H,h.vertex,h.fragment);return ee.attributes.position.location=0,ee.attributes.color.location=2,ee.attributes.uv.location=3,ee.attributes.pointSize.location=4,ee}function N(H){var ee=i(H,M.vertex,M.fragment);return ee.attributes.position.location=0,ee.attributes.id.location=1,ee}function j(H){var ee=i(H,A.vertex,A.fragment);return ee.attributes.position.location=0,ee.attributes.id.location=1,ee.attributes.pointSize.location=4,ee}function V(H){var ee=i(H,C.vertex,C.fragment);return ee.attributes.position.location=0,ee}I.isOpaque=function(){return!this.hasAlpha},I.isTransparent=function(){return this.hasAlpha},I.pickSlots=1,I.setPickBase=function(H){this.pickId=H},I.highlight=function(H){if(H&&this.contourEnable){for(var ee=d(this.cells,this.intensity,H.intensity),Q=ee.cells,X=ee.vertexIds,Y=ee.vertexWeights,K=Q.length,te=v.mallocFloat32(6*K),ae=0,oe=0;oe0&&((se=this.triShader).bind(),se.uniforms=ae,this.triangleVAO.bind(),ee.drawArrays(ee.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&this.lineWidth>0&&((se=this.lineShader).bind(),se.uniforms=ae,this.edgeVAO.bind(),ee.lineWidth(this.lineWidth*this.pixelRatio),ee.drawArrays(ee.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((se=this.pointShader).bind(),se.uniforms=ae,this.pointVAO.bind(),ee.drawArrays(ee.POINTS,0,this.pointCount),this.pointVAO.unbind()),this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((se=this.contourShader).bind(),se.uniforms=ae,this.contourVAO.bind(),ee.drawArrays(ee.LINES,0,this.contourCount),this.contourVAO.unbind())},I.drawPick=function(H){H=H||{};for(var ee=this.gl,Q=H.model||L,X=H.view||L,Y=H.projection||L,K=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],te=0;te<3;++te)K[0][te]=Math.max(K[0][te],this.clipBounds[0][te]),K[1][te]=Math.min(K[1][te],this.clipBounds[1][te]);this._model=[].slice.call(Q),this._view=[].slice.call(X),this._projection=[].slice.call(Y),this._resolution=[ee.drawingBufferWidth,ee.drawingBufferHeight];var ae,oe={model:Q,view:X,projection:Y,clipBounds:K,pickId:this.pickId/255};(ae=this.pickShader).bind(),ae.uniforms=oe,this.triangleCount>0&&(this.triangleVAO.bind(),ee.drawArrays(ee.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),ee.lineWidth(this.lineWidth*this.pixelRatio),ee.drawArrays(ee.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((ae=this.pointPickShader).bind(),ae.uniforms=oe,this.pointVAO.bind(),ee.drawArrays(ee.POINTS,0,this.pointCount),this.pointVAO.unbind())},I.pick=function(H){if(!H||H.id!==this.pickId)return null;for(var ee=H.value[0]+256*H.value[1]+65536*H.value[2],Q=this.cells[ee],X=this.positions,Y=new Array(Q.length),K=0;KA[Y]&&(h.uniforms.dataAxis=p,h.uniforms.screenOffset=c,h.uniforms.color=G[m],h.uniforms.angle=N[m],C.drawArrays(C.TRIANGLES,A[Y],A[K]-A[Y]))),j[m]&&X&&(c[1^m]-=te*R*V[m],h.uniforms.dataAxis=b,h.uniforms.screenOffset=c,h.uniforms.color=H[m],h.uniforms.angle=ee[m],C.drawArrays(C.TRIANGLES,Q,X)),c[1^m]=te*L[2+(1^m)]-1,U[m+2]&&(c[1^m]+=te*R*B[m+2],YA[Y]&&(h.uniforms.dataAxis=p,h.uniforms.screenOffset=c,h.uniforms.color=G[m+2],h.uniforms.angle=N[m+2],C.drawArrays(C.TRIANGLES,A[Y],A[K]-A[Y]))),j[m+2]&&X&&(c[1^m]+=te*R*V[m+2],h.uniforms.dataAxis=b,h.uniforms.screenOffset=c,h.uniforms.color=H[m+2],h.uniforms.angle=ee[m+2],C.drawArrays(C.TRIANGLES,Q,X))}),g.drawTitle=function(){var m=[0,0],k=[0,0];return function(){var h=this.plot,M=this.shader,A=h.gl,C=h.screenBox,L=h.titleCenter,O=h.titleAngle,I=h.titleColor,R=h.pixelRatio;if(this.titleCount){for(var U=0;U<2;++U)k[U]=2*(L[U]*R-C[U])/(C[2+U]-C[U])-1;M.bind(),M.uniforms.dataAxis=m,M.uniforms.screenOffset=k,M.uniforms.angle=O,M.uniforms.color=I,A.drawArrays(A.TRIANGLES,this.titleOffset,this.titleCount)}}}(),g.bind=(d=[0,0],v=[0,0],x=[0,0],function(){var m=this.plot,k=this.shader,h=m._tickBounds,M=m.dataBox,A=m.screenBox,C=m.viewBox;k.bind();for(var L=0;L<2;++L){var O=h[L],I=h[L+2]-O,R=.5*(M[L+2]+M[L]),U=M[L+2]-M[L],B=C[L],G=C[L+2]-B,N=A[L],j=A[L+2]-N;v[L]=2*I/U*G/j,d[L]=2*(O-R)/U*G/j}x[1]=2*m.pixelRatio/(A[3]-A[1]),x[0]=x[1]*(A[3]-A[1])/(A[2]-A[0]),k.uniforms.dataScale=v,k.uniforms.dataShift=d,k.uniforms.textScale=x,this.vbo.bind(),k.attributes.textCoordinate.pointer()}),g.update=function(m){var k,h,M,A,C,L=[],O=m.ticks,I=m.bounds;for(C=0;C<2;++C){var R=[Math.floor(L.length/3)],U=[-1/0],B=O[C];for(k=0;k=0){var B=v[U]-g[U]*(v[U+2]-v[U])/(g[U+2]-g[U]);U===0?h.drawLine(B,v[1],B,v[3],R[U],I[U]):h.drawLine(v[0],B,v[2],B,R[U],I[U])}}for(U=0;U=0;--d)this.objects[d].dispose();for(this.objects.length=0,d=this.overlays.length-1;d>=0;--d)this.overlays[d].dispose();this.overlays.length=0,this.gl=null},p.addObject=function(d){this.objects.indexOf(d)<0&&(this.objects.push(d),this.setDirty())},p.removeObject=function(d){for(var v=this.objects,x=0;xMath.abs(A))d.rotate(O,0,0,-M*C*Math.PI*k.rotateSpeed/window.innerWidth);else if(!k._ortho){var I=-k.zoomSpeed*L*A/window.innerHeight*(O-d.lastT())/20;d.pan(O,0,0,x*(Math.exp(I)-1))}}},!0)},k.enableMouseListeners(),k};var i=t(8161),r=t(1152),n=t(6145),o=t(6475),a=t(2565),u=t(5233)},8245:function(f,l,t){var i=t(6832),r=t(5158),n=i([`precision mediump float; +#define GLSLIFY 1 +attribute vec2 position; +varying vec2 uv; +void main() { + uv = position; + gl_Position = vec4(position, 0, 1); +}`]),o=i([`precision mediump float; +#define GLSLIFY 1 + +uniform sampler2D accumBuffer; +varying vec2 uv; + +void main() { + vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); + gl_FragColor = min(vec4(1,1,1,1), accum); +}`]);f.exports=function(a){return r(a,n,o,null,[{name:"position",type:"vec2"}])}},1059:function(f,l,t){var i=t(4296),r=t(7453),n=t(2771),o=t(6496),a=t(2611),u=t(4234),p=t(8126),c=t(6145),b=t(1120),d=t(5268),v=t(8245),x=t(2321)({tablet:!0,featureDetect:!0});function g(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function m(h){var M=Math.round(Math.log(Math.abs(h))/Math.log(10));if(M<0){var A=Math.round(Math.pow(10,-M));return Math.ceil(h*A)/A}return M>0?(A=Math.round(Math.pow(10,M)),Math.ceil(h/A)*A):Math.ceil(h)}function k(h){return typeof h!="boolean"||h}f.exports={createScene:function(h){(h=h||{}).camera=h.camera||{};var M=h.canvas;M||(M=document.createElement("canvas"),h.container?h.container.appendChild(M):document.body.appendChild(M));var A=h.gl;if(A||(h.glOptions&&(x=!!h.glOptions.preserveDrawingBuffer),A=function(Re,we){var Ae=null;try{(Ae=Re.getContext("webgl",we))||(Ae=Re.getContext("experimental-webgl",we))}catch{return null}return Ae}(M,h.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:x})),!A)throw new Error("webgl not supported");var C=h.bounds||[[-10,-10,-10],[10,10,10]],L=new g,O=u(A,A.drawingBufferWidth,A.drawingBufferHeight,{preferFloat:!x}),I=v(A),R=h.cameraObject&&h.cameraObject._ortho===!0||h.camera.projection&&h.camera.projection.type==="orthographic"||!1,U={eye:h.camera.eye||[2,0,0],center:h.camera.center||[0,0,0],up:h.camera.up||[0,1,0],zoomMin:h.camera.zoomMax||.1,zoomMax:h.camera.zoomMin||100,mode:h.camera.mode||"turntable",_ortho:R},B=h.axes||{},G=r(A,B);G.enable=!B.disable;var N=h.spikes||{},j=o(A,N),V=[],H=[],ee=[],Q=[],X=!0,Y=!0,K={view:null,projection:new Array(16),model:new Array(16),_ortho:!1},te=(Y=!0,[A.drawingBufferWidth,A.drawingBufferHeight]),ae=h.cameraObject||i(M,U),oe={gl:A,contextLost:!1,pixelRatio:h.pixelRatio||1,canvas:M,selection:L,camera:ae,axes:G,axesPixels:null,spikes:j,bounds:C,objects:V,shape:te,aspect:h.aspectRatio||[1,1,1],pickRadius:h.pickRadius||10,zNear:h.zNear||.01,zFar:h.zFar||1e3,fovy:h.fovy||Math.PI/4,clearColor:h.clearColor||[0,0,0,0],autoResize:k(h.autoResize),autoBounds:k(h.autoBounds),autoScale:!!h.autoScale,autoCenter:k(h.autoCenter),clipToBounds:k(h.clipToBounds),snapToData:!!h.snapToData,onselect:h.onselect||null,onrender:h.onrender||null,onclick:h.onclick||null,cameraParams:K,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(Re){this.aspect[0]=Re.x,this.aspect[1]=Re.y,this.aspect[2]=Re.z,Y=!0},setBounds:function(Re,we){this.bounds[0][Re]=we.min,this.bounds[1][Re]=we.max},setClearColor:function(Re){this.clearColor=Re},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},se=[A.drawingBufferWidth/oe.pixelRatio|0,A.drawingBufferHeight/oe.pixelRatio|0];function fe(){if(!oe._stopped&&oe.autoResize){var Re=M.parentNode,we=1,Ae=1;Re&&Re!==document.body?(we=Re.clientWidth,Ae=Re.clientHeight):(we=window.innerWidth,Ae=window.innerHeight);var Me=0|Math.ceil(we*oe.pixelRatio),Ce=0|Math.ceil(Ae*oe.pixelRatio);if(Me!==M.width||Ce!==M.height){M.width=Me,M.height=Ce;var ne=M.style;ne.position=ne.position||"absolute",ne.left="0px",ne.top="0px",ne.width=we+"px",ne.height=Ae+"px",X=!0}}}function ye(){for(var Re=V.length,we=Q.length,Ae=0;Ae0&&ee[we-1]===0;)ee.pop(),Q.pop().dispose()}function pe(){if(oe.contextLost)return!0;A.isContextLost()&&(oe.contextLost=!0,oe.mouseListener.enabled=!1,oe.selection.object=null,oe.oncontextloss&&oe.oncontextloss())}oe.autoResize&&fe(),window.addEventListener("resize",fe),oe.update=function(Re){oe._stopped||(X=!0,Y=!0)},oe.add=function(Re){oe._stopped||(Re.axes=G,V.push(Re),H.push(-1),X=!0,Y=!0,ye())},oe.remove=function(Re){if(!oe._stopped){var we=V.indexOf(Re);we<0||(V.splice(we,1),H.pop(),X=!0,Y=!0,ye())}},oe.dispose=function(){if(!oe._stopped&&(oe._stopped=!0,window.removeEventListener("resize",fe),M.removeEventListener("webglcontextlost",pe),oe.mouseListener.enabled=!1,!oe.contextLost)){G.dispose(),j.dispose();for(var Re=0;ReL.distance)continue;for(var Ee=0;Ee 1.0) { + discard; + } + baseColor = mix(borderColor, color, step(radius, centerFraction)); + gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a); + } +} +`]),l.pickVertex=i([`precision mediump float; +#define GLSLIFY 1 + +attribute vec2 position; +attribute vec4 pickId; + +uniform mat3 matrix; +uniform float pointSize; +uniform vec4 pickOffset; + +varying vec4 fragId; + +void main() { + vec3 hgPosition = matrix * vec3(position, 1); + gl_Position = vec4(hgPosition.xy, 0, hgPosition.z); + gl_PointSize = pointSize; + + vec4 id = pickId + pickOffset; + id.y += floor(id.x / 256.0); + id.x -= floor(id.x / 256.0) * 256.0; + + id.z += floor(id.y / 256.0); + id.y -= floor(id.y / 256.0) * 256.0; + + id.w += floor(id.z / 256.0); + id.z -= floor(id.z / 256.0) * 256.0; + + fragId = id; +} +`]),l.pickFragment=i([`precision mediump float; +#define GLSLIFY 1 + +varying vec4 fragId; + +void main() { + float radius = length(2.0 * gl_PointCoord.xy - 1.0); + if(radius > 1.0) { + discard; + } + gl_FragColor = fragId / 255.0; +} +`])},8271:function(f,l,t){var i=t(5158),r=t(5827),n=t(5306),o=t(8023);function a(b,d,v,x,g){this.plot=b,this.offsetBuffer=d,this.pickBuffer=v,this.shader=x,this.pickShader=g,this.sizeMin=.5,this.sizeMinCap=2,this.sizeMax=20,this.areaRatio=1,this.pointCount=0,this.color=[1,0,0,1],this.borderColor=[0,0,0,1],this.blend=!1,this.pickOffset=0,this.points=null}f.exports=function(b,d){var v=b.gl,x=new a(b,r(v),r(v),i(v,o.pointVertex,o.pointFragment),i(v,o.pickVertex,o.pickFragment));return x.update(d),b.addObject(x),x};var u,p,c=a.prototype;c.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.offsetBuffer.dispose(),this.pickBuffer.dispose(),this.plot.removeObject(this)},c.update=function(b){var d;function v(A,C){return A in b?b[A]:C}b=b||{},this.sizeMin=v("sizeMin",.5),this.sizeMax=v("sizeMax",20),this.color=v("color",[1,0,0,1]).slice(),this.areaRatio=v("areaRatio",1),this.borderColor=v("borderColor",[0,0,0,1]).slice(),this.blend=v("blend",!1);var x=b.positions.length>>>1,g=b.positions instanceof Float32Array,m=b.idToIndex instanceof Int32Array&&b.idToIndex.length>=x,k=b.positions,h=g?k:n.mallocFloat32(k.length),M=m?b.idToIndex:n.mallocInt32(x);if(g||h.set(k),!m)for(h.set(k),d=0;d>>1;for(I=0;I=O[0]&&B<=O[2]&&G>=O[1]&&G<=O[3]&&R++}return R}(this.points,g),M=this.plot.pickPixelRatio*Math.max(Math.min(this.sizeMinCap,this.sizeMin),Math.min(this.sizeMax,this.sizeMax/Math.pow(h,.33333)));u[0]=2/m,u[4]=2/k,u[6]=-2*g[0]/m-1,u[7]=-2*g[1]/k-1,this.offsetBuffer.bind(),v.bind(),v.attributes.position.pointer(),v.uniforms.matrix=u,v.uniforms.color=this.color,v.uniforms.borderColor=this.borderColor,v.uniforms.pointCloud=M<5,v.uniforms.pointSize=M,v.uniforms.centerFraction=Math.min(1,Math.max(0,Math.sqrt(1-this.areaRatio))),d&&(p[0]=255&b,p[1]=b>>8&255,p[2]=b>>16&255,p[3]=b>>24&255,this.pickBuffer.bind(),v.attributes.pickId.pointer(x.UNSIGNED_BYTE),v.uniforms.pickOffset=p,this.pickOffset=b);var A=x.getParameter(x.BLEND),C=x.getParameter(x.DITHER);return A&&!this.blend&&x.disable(x.BLEND),C&&x.disable(x.DITHER),x.drawArrays(x.POINTS,0,this.pointCount),A&&!this.blend&&x.enable(x.BLEND),C&&x.enable(x.DITHER),b+this.pointCount}),c.draw=c.unifiedDraw,c.drawPick=c.unifiedDraw,c.pick=function(b,d,v){var x=this.pickOffset,g=this.pointCount;if(v=x+g)return null;var m=v-x,k=this.points;return{object:this,pointId:m,dataCoord:[k[2*m],k[2*m+1]]}}},6093:function(f){f.exports=function(l,t,i,r){var n,o,a,u,p,c=t[0],b=t[1],d=t[2],v=t[3],x=i[0],g=i[1],m=i[2],k=i[3];return(o=c*x+b*g+d*m+v*k)<0&&(o=-o,x=-x,g=-g,m=-m,k=-k),1-o>1e-6?(n=Math.acos(o),a=Math.sin(n),u=Math.sin((1-r)*n)/a,p=Math.sin(r*n)/a):(u=1-r,p=r),l[0]=u*c+p*x,l[1]=u*b+p*g,l[2]=u*d+p*m,l[3]=u*v+p*k,l}},8240:function(f){f.exports=function(l){return l||l===0?l.toString():""}},4123:function(f,l,t){var i=t(875);f.exports=function(n,o,a){var u=r[o];if(u||(u=r[o]={}),n in u)return u[n];var p={textAlign:"center",textBaseline:"middle",lineHeight:1,font:o,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},triangles:!0},c=i(n,p);p.triangles=!1;var b,d,v=i(n,p);if(a&&a!==1){for(b=0;b max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform vec4 highlightId; +uniform float highlightScale; +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = 1.0; + if(distance(highlightId, id) < 0.0001) { + scale = highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1); + vec4 viewPosition = view * worldPosition; + viewPosition = viewPosition / viewPosition.w; + vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0)); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),o=r([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float highlightScale, pixelRatio; +uniform vec4 highlightId; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = pixelRatio; + if(distance(highlightId.bgr, id.bgr) < 0.001) { + scale *= highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1.0); + vec4 viewPosition = view * worldPosition; + vec4 clipPosition = projection * viewPosition; + clipPosition /= clipPosition.w; + + gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0); + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),a=r([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform float highlightScale; +uniform vec4 highlightId; +uniform vec3 axes[2]; +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float scale, pixelRatio; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float lscale = pixelRatio * scale; + if(distance(highlightId, id) < 0.0001) { + lscale *= highlightScale; + } + + vec4 clipCenter = projection * view * model * vec4(position, 1); + vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y; + vec4 clipPosition = projection * view * model * vec4(dataPosition, 1); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = dataPosition; + } +} +`]),u=r([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float opacity; + +varying vec4 interpColor; +varying vec3 dataCoordinate; + +void main() { + if ( + outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) || + interpColor.a * opacity == 0. + ) discard; + gl_FragColor = interpColor * opacity; +} +`]),p=r([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float pickGroup; + +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard; + + gl_FragColor = vec4(pickGroup, pickId.bgr); +}`]),c=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],b={vertex:n,fragment:u,attributes:c},d={vertex:o,fragment:u,attributes:c},v={vertex:a,fragment:u,attributes:c},x={vertex:n,fragment:p,attributes:c},g={vertex:o,fragment:p,attributes:c},m={vertex:a,fragment:p,attributes:c};function k(h,M){var A=i(h,M),C=A.attributes;return C.position.location=0,C.color.location=1,C.glyph.location=2,C.id.location=3,A}l.createPerspective=function(h){return k(h,b)},l.createOrtho=function(h){return k(h,d)},l.createProject=function(h){return k(h,v)},l.createPickPerspective=function(h){return k(h,x)},l.createPickOrtho=function(h){return k(h,g)},l.createPickProject=function(h){return k(h,m)}},2182:function(f,l,t){var i=t(3596),r=t(5827),n=t(2944),o=t(5306),a=t(104),u=t(9282),p=t(4123),c=t(8240),b=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function d(H,ee){var Q=H[0],X=H[1],Y=H[2],K=H[3];return H[0]=ee[0]*Q+ee[4]*X+ee[8]*Y+ee[12]*K,H[1]=ee[1]*Q+ee[5]*X+ee[9]*Y+ee[13]*K,H[2]=ee[2]*Q+ee[6]*X+ee[10]*Y+ee[14]*K,H[3]=ee[3]*Q+ee[7]*X+ee[11]*Y+ee[15]*K,H}function v(H,ee,Q,X){return d(X,X),d(X,X),d(X,X)}function x(H,ee){this.index=H,this.dataCoordinate=this.position=ee}function g(H){return H===!0||H>1?1:H}function m(H,ee,Q,X,Y,K,te,ae,oe,se,fe,ye){this.gl=H,this.pixelRatio=1,this.shader=ee,this.orthoShader=Q,this.projectShader=X,this.pointBuffer=Y,this.colorBuffer=K,this.glyphBuffer=te,this.idBuffer=ae,this.vao=oe,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=se,this.pickOrthoShader=fe,this.pickProjectShader=ye,this.points=[],this._selectResult=new x(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}f.exports=function(H){var ee=H.gl,Q=u.createPerspective(ee),X=u.createOrtho(ee),Y=u.createProject(ee),K=u.createPickPerspective(ee),te=u.createPickOrtho(ee),ae=u.createPickProject(ee),oe=r(ee),se=r(ee),fe=r(ee),ye=r(ee),pe=new m(ee,Q,X,Y,oe,se,fe,ye,n(ee,[{buffer:oe,size:3,type:ee.FLOAT},{buffer:se,size:4,type:ee.FLOAT},{buffer:fe,size:2,type:ee.FLOAT},{buffer:ye,size:4,type:ee.UNSIGNED_BYTE,normalized:!0}]),K,te,ae);return pe.update(H),pe};var k=m.prototype;k.pickSlots=1,k.setPickBase=function(H){this.pickId=H},k.isTransparent=function(){if(this.hasAlpha)return!0;for(var H=0;H<3;++H)if(this.axesProject[H]&&this.projectHasAlpha)return!0;return!1},k.isOpaque=function(){if(!this.hasAlpha)return!0;for(var H=0;H<3;++H)if(this.axesProject[H]&&!this.projectHasAlpha)return!0;return!1};var h=[0,0],M=[0,0,0],A=[0,0,0],C=[0,0,0,1],L=[0,0,0,1],O=b.slice(),I=[0,0,0],R=[[0,0,0],[0,0,0]];function U(H){return H[0]=H[1]=H[2]=0,H}function B(H,ee){return H[0]=ee[0],H[1]=ee[1],H[2]=ee[2],H[3]=1,H}function G(H,ee,Q,X){return H[0]=ee[0],H[1]=ee[1],H[2]=ee[2],H[Q]=X,H}var N=[[-1e8,-1e8,-1e8],[1e8,1e8,1e8]];function j(H,ee,Q,X,Y,K,te){var ae=Q.gl;if((K===Q.projectHasAlpha||te)&&function(se,fe,ye,pe){var de,he=fe.axesProject,xe=fe.gl,Re=se.uniforms,we=ye.model||b,Ae=ye.view||b,Me=ye.projection||b,Ce=fe.axesBounds,ne=function(st){for(var ot=R,ft=0;ft<2;++ft)for(var yt=0;yt<3;++yt)ot[ft][yt]=Math.max(Math.min(st[ft][yt],1e8),-1e8);return ot}(fe.clipBounds);de=fe.axes&&fe.axes.lastCubeProps?fe.axes.lastCubeProps.axis:[1,1,1],h[0]=2/xe.drawingBufferWidth,h[1]=2/xe.drawingBufferHeight,se.bind(),Re.view=Ae,Re.projection=Me,Re.screenSize=h,Re.highlightId=fe.highlightId,Re.highlightScale=fe.highlightScale,Re.clipBounds=ne,Re.pickGroup=fe.pickId/255,Re.pixelRatio=pe;for(var ue=0;ue<3;++ue)if(he[ue]){Re.scale=fe.projectScale[ue],Re.opacity=fe.projectOpacity[ue];for(var me=O,Te=0;Te<16;++Te)me[Te]=0;for(Te=0;Te<4;++Te)me[5*Te]=1;me[5*ue]=0,de[ue]<0?me[12+ue]=Ce[0][ue]:me[12+ue]=Ce[1][ue],a(me,we,me),Re.model=me;var Ee=(ue+1)%3,Ue=(ue+2)%3,De=U(M),je=U(A);De[Ee]=1,je[Ue]=1;var ge=v(0,0,0,B(C,De)),be=v(0,0,0,B(L,je));if(Math.abs(ge[1])>Math.abs(be[1])){var Se=ge;ge=be,be=Se,Se=De,De=je,je=Se;var Ne=Ee;Ee=Ue,Ue=Ne}ge[0]<0&&(De[Ee]=-1),be[1]>0&&(je[Ue]=-1);var Ye=0,Ze=0;for(Te=0;Te<4;++Te)Ye+=Math.pow(we[4*Ee+Te],2),Ze+=Math.pow(we[4*Ue+Te],2);De[Ee]/=Math.sqrt(Ye),je[Ue]/=Math.sqrt(Ze),Re.axes[0]=De,Re.axes[1]=je,Re.fragClipBounds[0]=G(I,ne[0],ue,-1e8),Re.fragClipBounds[1]=G(I,ne[1],ue,1e8),fe.vao.bind(),fe.vao.draw(xe.TRIANGLES,fe.vertexCount),fe.lineWidth>0&&(xe.lineWidth(fe.lineWidth*pe),fe.vao.draw(xe.LINES,fe.lineVertexCount,fe.vertexCount)),fe.vao.unbind()}}(ee,Q,X,Y),K===Q.hasAlpha||te){H.bind();var oe=H.uniforms;oe.model=X.model||b,oe.view=X.view||b,oe.projection=X.projection||b,h[0]=2/ae.drawingBufferWidth,h[1]=2/ae.drawingBufferHeight,oe.screenSize=h,oe.highlightId=Q.highlightId,oe.highlightScale=Q.highlightScale,oe.fragClipBounds=N,oe.clipBounds=Q.axes.bounds,oe.opacity=Q.opacity,oe.pickGroup=Q.pickId/255,oe.pixelRatio=Y,Q.vao.bind(),Q.vao.draw(ae.TRIANGLES,Q.vertexCount),Q.lineWidth>0&&(ae.lineWidth(Q.lineWidth*Y),Q.vao.draw(ae.LINES,Q.lineVertexCount,Q.vertexCount)),Q.vao.unbind()}}function V(H,ee,Q,X){var Y;Y=Array.isArray(H)?ee=this.pointCount||ee<0)return null;var Q=this.points[ee],X=this._selectResult;X.index=ee;for(var Y=0;Y<3;++Y)X.position[Y]=X.dataCoordinate[Y]=Q[Y];return X},k.highlight=function(H){if(H){var ee=H.index,Q=255&ee,X=ee>>8&255,Y=ee>>16&255;this.highlightId=[Q/255,X/255,Y/255,0]}else this.highlightId=[1,1,1,1]},k.update=function(H){if("perspective"in(H=H||{})&&(this.useOrtho=!H.perspective),"orthographic"in H&&(this.useOrtho=!!H.orthographic),"lineWidth"in H&&(this.lineWidth=H.lineWidth),"project"in H)if(Array.isArray(H.project))this.axesProject=H.project;else{var ee=!!H.project;this.axesProject=[ee,ee,ee]}if("projectScale"in H)if(Array.isArray(H.projectScale))this.projectScale=H.projectScale.slice();else{var Q=+H.projectScale;this.projectScale=[Q,Q,Q]}if(this.projectHasAlpha=!1,"projectOpacity"in H){Array.isArray(H.projectOpacity)?this.projectOpacity=H.projectOpacity.slice():(Q=+H.projectOpacity,this.projectOpacity=[Q,Q,Q]);for(var X=0;X<3;++X)this.projectOpacity[X]=g(this.projectOpacity[X]),this.projectOpacity[X]<1&&(this.projectHasAlpha=!0)}this.hasAlpha=!1,"opacity"in H&&(this.opacity=g(H.opacity),this.opacity<1&&(this.hasAlpha=!0)),this.dirty=!0;var Y,K,te=H.position,ae=H.font||"normal",oe=H.alignment||[0,0];if(oe.length===2)Y=oe[0],K=oe[1];else for(Y=[],K=[],X=0;X0){var be=0,Se=we,Ne=[0,0,0,1],Ye=[0,0,0,1],Ze=Array.isArray(pe)&&Array.isArray(pe[0]),st=Array.isArray(xe)&&Array.isArray(xe[0]);e:for(X=0;X0?1-Te[0][0]:It<0?1+Te[1][0]:1,Ft*=Ft>0?1-Te[0][1]:Ft<0?1+Te[1][1]:1],Nt=ue.cells||[],Je=ue.positions||[];for(ne=0;ne0){var R=c*h;x.drawBox(M-R,A-R,C+R,A+R,v),x.drawBox(M-R,L-R,C+R,L+R,v),x.drawBox(M-R,A-R,M+R,L+R,v),x.drawBox(C-R,A-R,C+R,L+R,v)}}}},a.update=function(u){u=u||{},this.innerFill=!!u.innerFill,this.outerFill=!!u.outerFill,this.innerColor=(u.innerColor||[0,0,0,.5]).slice(),this.outerColor=(u.outerColor||[0,0,0,.5]).slice(),this.borderColor=(u.borderColor||[0,0,0,1]).slice(),this.borderWidth=u.borderWidth||0,this.selectBox=(u.selectBox||this.selectBox).slice()},a.dispose=function(){this.boxBuffer.dispose(),this.boxShader.dispose(),this.plot.removeOverlay(this)}},2611:function(f,l,t){f.exports=function(c,b){var d=b[0],v=b[1];return new u(c,i(c,d,v,{}),r.mallocUint8(d*v*4))};var i=t(4234),r=t(5306),n=t(5050),o=t(2288).nextPow2;function a(c,b,d,v,x){this.coord=[c,b],this.id=d,this.value=v,this.distance=x}function u(c,b,d){this.gl=c,this.fbo=b,this.buffer=d,this._readTimeout=null;var v=this;this._readCallback=function(){v.gl&&(b.bind(),c.readPixels(0,0,b.shape[0],b.shape[1],c.RGBA,c.UNSIGNED_BYTE,v.buffer),v._readTimeout=null)}}var p=u.prototype;Object.defineProperty(p,"shape",{get:function(){return this.gl?this.fbo.shape.slice():[0,0]},set:function(c){if(this.gl){this.fbo.shape=c;var b=this.fbo.shape[0],d=this.fbo.shape[1];if(d*b*4>this.buffer.length){r.free(this.buffer);for(var v=this.buffer=r.mallocUint8(o(d*b*4)),x=0;xx)for(d=x;dv)for(d=v;d=0){for(var G=0|B.type.charAt(B.type.length-1),N=new Array(G),j=0;j=0;)V+=1;U[O]=V}var H=new Array(x.length);function ee(){k.program=o.program(h,k._vref,k._fref,R,U);for(var Q=0;Q=0){if((A=h.charCodeAt(h.length-1)-48)<2||A>4)throw new i("","Invalid data type for attribute "+k+": "+h);a(p,c,M[0],d,A,v,k)}else{if(!(h.indexOf("mat")>=0))throw new i("","Unknown data type for attribute "+k+": "+h);var A;if((A=h.charCodeAt(h.length-1)-48)<2||A>4)throw new i("","Invalid data type for attribute "+k+": "+h);u(p,c,M,d,A,v,k)}}}return v};var i=t(9068);function r(p,c,b,d,v,x){this._gl=p,this._wrapper=c,this._index=b,this._locations=d,this._dimension=v,this._constFunc=x}var n=r.prototype;n.pointer=function(p,c,b,d){var v=this,x=v._gl,g=v._locations[v._index];x.vertexAttribPointer(g,v._dimension,p||x.FLOAT,!!c,b||0,d||0),x.enableVertexAttribArray(g)},n.set=function(p,c,b,d){return this._constFunc(this._locations[this._index],p,c,b,d)},Object.defineProperty(n,"location",{get:function(){return this._locations[this._index]},set:function(p){return p!==this._locations[this._index]&&(this._locations[this._index]=0|p,this._wrapper.program=null),0|p}});var o=[function(p,c,b){return b.length===void 0?p.vertexAttrib1f(c,b):p.vertexAttrib1fv(c,b)},function(p,c,b,d){return b.length===void 0?p.vertexAttrib2f(c,b,d):p.vertexAttrib2fv(c,b)},function(p,c,b,d,v){return b.length===void 0?p.vertexAttrib3f(c,b,d,v):p.vertexAttrib3fv(c,b)},function(p,c,b,d,v,x){return b.length===void 0?p.vertexAttrib4f(c,b,d,v,x):p.vertexAttrib4fv(c,b)}];function a(p,c,b,d,v,x,g){var m=o[v],k=new r(p,c,b,d,v,m);Object.defineProperty(x,g,{set:function(h){return p.disableVertexAttribArray(d[b]),m(p,d[b],h),h},get:function(){return k},enumerable:!0})}function u(p,c,b,d,v,x,g){for(var m=new Array(v),k=new Array(v),h=0;h4)throw new r("","Invalid uniform dimension type for matrix "+name+": "+N);a["uniformMatrix"+G+"fv"](c[L],!1,O);break}throw new r("","Unknown uniform data type for "+name+": "+N)}if((G=N.charCodeAt(N.length-1)-48)<2||G>4)throw new r("","Invalid data type");switch(N.charAt(0)){case"b":case"i":a["uniform"+G+"iv"](c[L],O);break;case"v":a["uniform"+G+"fv"](c[L],O);break;default:throw new r("","Unrecognized data type for vector "+name+": "+N)}}}}}}function d(m,k){if(typeof k!="object")return[[m,k]];var h=[];for(var M in k){var A=k[M],C=m;parseInt(M)+""===M?C+="["+M+"]":C+="."+M,typeof A=="object"?h.push.apply(h,d(C,A)):h.push([C,A])}return h}function v(m,k,h){if(typeof h=="object"){var M=x(h);Object.defineProperty(m,k,{get:n(M),set:b(h),enumerable:!0,configurable:!1})}else c[h]?Object.defineProperty(m,k,{get:(A=h,function(C,L,O){return C.getUniform(L.program,O[A])}),set:b(h),enumerable:!0,configurable:!1}):m[k]=function(C){switch(C){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":case"float":return 0;default:var L=C.indexOf("vec");if(0<=L&&L<=1&&C.length===4+L){if((O=C.charCodeAt(C.length-1)-48)<2||O>4)throw new r("","Invalid data type");return C.charAt(0)==="b"?o(O,!1):o(O,0)}if(C.indexOf("mat")===0&&C.length===4){var O;if((O=C.charCodeAt(C.length-1)-48)<2||O>4)throw new r("","Invalid uniform dimension type for matrix "+name+": "+C);return o(O*O,0)}throw new r("","Unknown uniform data type for "+name+": "+C)}}(p[h].type);var A}function x(m){var k;if(Array.isArray(m)){k=new Array(m.length);for(var h=0;h1){u[0]in o||(o[u[0]]=[]),o=o[u[0]];for(var p=1;p1)for(var d=0;d"u"?t(4037):WeakMap),o=0;function a(b,d,v,x,g,m,k){this.id=b,this.src=d,this.type=v,this.shader=x,this.count=m,this.programs=[],this.cache=k}function u(b){this.gl=b,this.shaders=[{},{}],this.programs={}}a.prototype.dispose=function(){if(--this.count==0){for(var b=this.cache,d=b.gl,v=this.programs,x=0,g=v.length;x 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, tubeScale; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * tubePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(tubePosition, 1.0); + vec4 t_position = view * tubePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = tubePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),n=i([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),o=i([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float tubeScale; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + gl_Position = projection * view * tubePosition; + f_id = id; + f_position = position.xyz; +} +`]),a=i([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);l.meshShader={vertex:r,fragment:n,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},l.pickShader={vertex:o,fragment:a,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7307:function(f,l,t){var i=t(2858),r=t(4020),n=["xyz","xzy","yxz","yzx","zxy","zyx"],o=function(b,d){var v,x=b.length;for(v=0;vd)return v-1}return v},a=function(b,d,v){return bv?v:b},u=function(b){var d=1/0;b.sort(function(m,k){return m-k});for(var v=b.length,x=1;xTe-1||Se>Ee-1||Ne>Ue-1)return i.create();var Ye,Ze,st,ot,ft,yt,Et=Ce[0][De],Tt=Ce[0][be],xt=Ce[1][je],Dt=Ce[1][Se],It=Ce[2][ge],Ft=(ne-Et)/(Tt-Et),qt=(ue-xt)/(Dt-xt),Nt=(me-It)/(Ce[2][Ne]-It);switch(isFinite(Ft)||(Ft=.5),isFinite(qt)||(qt=.5),isFinite(Nt)||(Nt=.5),Ae.reversedX&&(De=Te-1-De,be=Te-1-be),Ae.reversedY&&(je=Ee-1-je,Se=Ee-1-Se),Ae.reversedZ&&(ge=Ue-1-ge,Ne=Ue-1-Ne),Ae.filled){case 5:ft=ge,yt=Ne,st=je*Ue,ot=Se*Ue,Ye=De*Ue*Ee,Ze=be*Ue*Ee;break;case 4:ft=ge,yt=Ne,Ye=De*Ue,Ze=be*Ue,st=je*Ue*Te,ot=Se*Ue*Te;break;case 3:st=je,ot=Se,ft=ge*Ee,yt=Ne*Ee,Ye=De*Ee*Ue,Ze=be*Ee*Ue;break;case 2:st=je,ot=Se,Ye=De*Ee,Ze=be*Ee,ft=ge*Ee*Te,yt=Ne*Ee*Te;break;case 1:Ye=De,Ze=be,ft=ge*Te,yt=Ne*Te,st=je*Te*Ue,ot=Se*Te*Ue;break;default:Ye=De,Ze=be,st=je*Te,ot=Se*Te,ft=ge*Te*Ee,yt=Ne*Te*Ee}var Je=Me[Ye+st+ft],Ke=Me[Ye+st+yt],Ge=Me[Ye+ot+ft],nt=Me[Ye+ot+yt],ht=Me[Ze+st+ft],Oe=Me[Ze+st+yt],Be=Me[Ze+ot+ft],Qe=Me[Ze+ot+yt],ut=i.create(),pt=i.create(),bt=i.create(),Lt=i.create();i.lerp(ut,Je,ht,Ft),i.lerp(pt,Ke,Oe,Ft),i.lerp(bt,Ge,Be,Ft),i.lerp(Lt,nt,Qe,Ft);var Ct=i.create(),mt=i.create();i.lerp(Ct,ut,bt,qt),i.lerp(mt,pt,Lt,qt);var Ot=i.create();return i.lerp(Ot,Ct,mt,Nt),Ot}(xe,b,h)},A=b.getDivergence||function(xe,Re){var we=i.create(),Ae=1e-4;i.add(we,xe,[Ae,0,0]);var Me=M(we);i.subtract(Me,Me,Re),i.scale(Me,Me,1/Ae),i.add(we,xe,[0,Ae,0]);var Ce=M(we);i.subtract(Ce,Ce,Re),i.scale(Ce,Ce,1/Ae),i.add(we,xe,[0,0,Ae]);var ne=M(we);return i.subtract(ne,ne,Re),i.scale(ne,ne,1/Ae),i.add(we,Me,Ce),i.add(we,we,ne),we},C=[],L=d[0][0],O=d[0][1],I=d[0][2],R=d[1][0],U=d[1][1],B=d[1][2],G=function(xe){var Re=xe[0],we=xe[1],Ae=xe[2];return!(ReR||weU||AeB)},N=10*i.distance(d[0],d[1])/x,j=N*N,V=1,H=0,ee=v.length;ee>1&&(V=function(xe){for(var Re=[],we=[],Ae=[],Me={},Ce={},ne={},ue=xe.length,me=0;meH&&(H=fe),oe.push(fe),C.push({points:Y,velocities:K,divergences:oe});for(var ye=0;ye<100*x&&Y.lengthj&&i.scale(pe,pe,N/Math.sqrt(de)),i.add(pe,pe,X),te=M(pe),i.squaredDistance(ae,pe)-j>-1e-4*j&&(Y.push(pe),ae=pe,K.push(te),se=A(pe,te),fe=i.length(se),isFinite(fe)&&fe>H&&(H=fe),oe.push(fe)),X=pe}}var he=function(xe,Re,we,Ae){for(var Me=0,Ce=0;Ce0)for(ut=0;ut<8;ut++){var pt=(ut+1)%8;xt.push(Ft[ut],qt[ut],qt[pt],qt[pt],Ft[pt],Ft[ut]),It.push(nt,Ge,Ge,Ge,nt,nt),Nt.push(Je,Ke,Ke,Ke,Je,Je);var bt=xt.length;Dt.push([bt-6,bt-5,bt-4],[bt-3,bt-2,bt-1])}var Lt=Ft;Ft=qt,qt=Lt;var Ct=nt;nt=Ge,Ge=Ct;var mt=Je;Je=Ke,Ke=mt}return{positions:xt,cells:Dt,vectors:It,vertexIntensity:Nt}}(Ye,we,Ae,Me)}),Te=[],Ee=[],Ue=[],De=[];for(Ce=0;Ce max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 lowerBound, upperBound; +uniform float contourTint; +uniform vec4 contourColor; +uniform sampler2D colormap; +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform float vertexColor; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + if ( + kill > 0.0 || + vColor.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], worldCoordinate) + ) discard; + + vec3 N = normalize(surfaceNormal); + vec3 V = normalize(eyeDirection); + vec3 L = normalize(lightDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = max(beckmannSpecular(L, V, N, roughness), 0.); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + //decide how to interpolate color — in vertex or in fragment + vec4 surfaceColor = + step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + + step(.5, vertexColor) * vColor; + + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = mix(litColor, contourColor, contourTint) * opacity; +} +`]),a=r([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute float f; + +uniform vec3 objectOffset; +uniform mat3 permutation; +uniform mat4 model, view, projection; +uniform float height, zOffset; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 dataCoordinate = permutation * vec3(uv.xy, height); + worldCoordinate = objectOffset + dataCoordinate; + vec4 worldPosition = model * vec4(worldCoordinate, 1.0); + + vec4 clipPosition = projection * view * worldPosition; + clipPosition.z += zOffset; + + gl_Position = clipPosition; + value = f + objectOffset.z; + kill = -1.0; + planeCoordinate = uv.zw; + + vColor = texture2D(colormap, vec2(value, value)); + + //Don't do lighting for contours + surfaceNormal = vec3(1,0,0); + eyeDirection = vec3(0,1,0); + lightDirection = vec3(0,0,1); +} +`]),u=r([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec2 shape; +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 surfaceNormal; + +vec2 splitFloat(float v) { + float vh = 255.0 * v; + float upper = floor(vh); + float lower = fract(vh); + return vec2(upper / 255.0, floor(lower * 16.0) / 16.0); +} + +void main() { + if ((kill > 0.0) || + (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard; + + vec2 ux = splitFloat(planeCoordinate.x / shape.x); + vec2 uy = splitFloat(planeCoordinate.y / shape.y); + gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); +} +`]);l.createShader=function(p){var c=i(p,n,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return c.attributes.uv.location=0,c.attributes.f.location=1,c.attributes.normal.location=2,c},l.createPickShader=function(p){var c=i(p,n,u,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return c.attributes.uv.location=0,c.attributes.f.location=1,c.attributes.normal.location=2,c},l.createContourShader=function(p){var c=i(p,a,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return c.attributes.uv.location=0,c.attributes.f.location=1,c},l.createPickContourShader=function(p){var c=i(p,a,u,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return c.attributes.uv.location=0,c.attributes.f.location=1,c}},3754:function(f,l,t){f.exports=function(ae){var oe=ae.gl,se=h(oe),fe=A(oe),ye=M(oe),pe=C(oe),de=r(oe),he=n(oe,[{buffer:de,size:4,stride:40,offset:0},{buffer:de,size:3,stride:40,offset:16},{buffer:de,size:3,stride:40,offset:28}]),xe=r(oe),Re=n(oe,[{buffer:xe,size:4,stride:20,offset:0},{buffer:xe,size:1,stride:20,offset:16}]),we=r(oe),Ae=n(oe,[{buffer:we,size:2,type:oe.FLOAT}]),Me=o(oe,1,256,oe.RGBA,oe.UNSIGNED_BYTE);Me.minFilter=oe.LINEAR,Me.magFilter=oe.LINEAR;var Ce=new U(oe,[0,0],[[0,0,0],[0,0,0]],se,fe,de,he,Me,ye,pe,xe,Re,we,Ae,[0,0,0]),ne={levels:[[],[],[]]};for(var ue in ae)ne[ue]=ae[ue];return ne.colormap=ne.colormap||"jet",Ce.update(ne),Ce};var i=t(2288),r=t(5827),n=t(2944),o=t(8931),a=t(5306),u=t(9156),p=t(7498),c=t(7382),b=t(5050),d=t(4162),v=t(104),x=t(7437),g=t(5070),m=t(9144),k=t(9054),h=k.createShader,M=k.createContourShader,A=k.createPickShader,C=k.createPickContourShader,L=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],O=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],I=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];function R(ae,oe,se,fe,ye){this.position=ae,this.index=oe,this.uv=se,this.level=fe,this.dataCoordinate=ye}function U(ae,oe,se,fe,ye,pe,de,he,xe,Re,we,Ae,Me,Ce,ne){this.gl=ae,this.shape=oe,this.bounds=se,this.objectOffset=ne,this.intensityBounds=[],this._shader=fe,this._pickShader=ye,this._coordinateBuffer=pe,this._vao=de,this._colorMap=he,this._contourShader=xe,this._contourPickShader=Re,this._contourBuffer=we,this._contourVAO=Ae,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new R([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=Me,this._dynamicVAO=Ce,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[b(a.mallocFloat(1024),[0,0]),b(a.mallocFloat(1024),[0,0]),b(a.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}(function(){for(var ae=0;ae<3;++ae){var oe=I[ae],se=(ae+2)%3;oe[(ae+1)%3+0]=1,oe[se+3]=1,oe[ae+6]=1}})();var B=U.prototype;B.genColormap=function(ae,oe){var se=!1,fe=c([u({colormap:ae,nshades:256,format:"rgba"}).map(function(ye,pe){var de=oe?function(he,xe){if(!xe||!xe.length)return 1;for(var Re=0;Rehe&&Re>0){var we=(xe[Re][0]-he)/(xe[Re][0]-xe[Re-1][0]);return xe[Re][1]*(1-we)+we*xe[Re-1][1]}}return 1}(pe/255,oe):ye[3];return de<1&&(se=!0),[ye[0],ye[1],ye[2],255*de]})]);return p.divseq(fe,255),this.hasAlphaScale=se,fe},B.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},B.isOpaque=function(){return!this.isTransparent()},B.pickSlots=1,B.setPickBase=function(ae){this.pickId=ae};var G=[0,0,0],N={showSurface:!1,showContour:!1,projections:[L.slice(),L.slice(),L.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function j(ae,oe){var se,fe,ye,pe=oe.axes&&oe.axes.lastCubeProps.axis||G,de=oe.showSurface,he=oe.showContour;for(se=0;se<3;++se)for(de=de||oe.surfaceProject[se],fe=0;fe<3;++fe)he=he||oe.contourProject[se][fe];for(se=0;se<3;++se){var xe=N.projections[se];for(fe=0;fe<16;++fe)xe[fe]=0;for(fe=0;fe<4;++fe)xe[5*fe]=1;xe[5*se]=0,xe[12+se]=oe.axesBounds[+(pe[se]>0)][se],v(xe,ae.model,xe);var Re=N.clipBounds[se];for(ye=0;ye<2;++ye)for(fe=0;fe<3;++fe)Re[ye][fe]=ae.clipBounds[ye][fe];Re[0][se]=-1e8,Re[1][se]=1e8}return N.showSurface=de,N.showContour=he,N}var V={model:L,view:L,projection:L,inverseModel:L.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},H=L.slice(),ee=[1,0,0,0,1,0,0,0,1];function Q(ae,oe){ae=ae||{};var se=this.gl;se.disable(se.CULL_FACE),this._colorMap.bind(0);var fe=V;fe.model=ae.model||L,fe.view=ae.view||L,fe.projection=ae.projection||L,fe.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],fe.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],fe.objectOffset=this.objectOffset,fe.contourColor=this.contourColor[0],fe.inverseModel=x(fe.inverseModel,fe.model);for(var ye=0;ye<2;++ye)for(var pe=fe.clipBounds[ye],de=0;de<3;++de)pe[de]=Math.min(Math.max(this.clipBounds[ye][de],-1e8),1e8);fe.kambient=this.ambientLight,fe.kdiffuse=this.diffuseLight,fe.kspecular=this.specularLight,fe.roughness=this.roughness,fe.fresnel=this.fresnel,fe.opacity=this.opacity,fe.height=0,fe.permutation=ee,fe.vertexColor=this.vertexColor;var he=H;for(v(he,fe.view,fe.model),v(he,fe.projection,he),x(he,he),ye=0;ye<3;++ye)fe.eyePosition[ye]=he[12+ye]/he[15];var xe=he[15];for(ye=0;ye<3;++ye)xe+=this.lightPosition[ye]*he[4*ye+3];for(ye=0;ye<3;++ye){var Re=he[12+ye];for(de=0;de<3;++de)Re+=he[4*de+ye]*this.lightPosition[de];fe.lightPosition[ye]=Re/xe}var we=j(fe,this);if(we.showSurface){for(this._shader.bind(),this._shader.uniforms=fe,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(se.TRIANGLES,this._vertexCount),ye=0;ye<3;++ye)this.surfaceProject[ye]&&this.vertexCount&&(this._shader.uniforms.model=we.projections[ye],this._shader.uniforms.clipBounds=we.clipBounds[ye],this._vao.draw(se.TRIANGLES,this._vertexCount));this._vao.unbind()}if(we.showContour){var Ae=this._contourShader;fe.kambient=1,fe.kdiffuse=0,fe.kspecular=0,fe.opacity=1,Ae.bind(),Ae.uniforms=fe;var Me=this._contourVAO;for(Me.bind(),ye=0;ye<3;++ye)for(Ae.uniforms.permutation=I[ye],se.lineWidth(this.contourWidth[ye]*this.pixelRatio),de=0;de>4)/16)/255,ye=Math.floor(fe),pe=fe-ye,de=oe[1]*(ae.value[1]+(15&ae.value[2])/16)/255,he=Math.floor(de),xe=de-he;ye+=1,he+=1;var Re=se.position;Re[0]=Re[1]=Re[2]=0;for(var we=0;we<2;++we)for(var Ae=we?pe:1-pe,Me=0;Me<2;++Me)for(var Ce=ye+we,ne=he+Me,ue=Ae*(Me?xe:1-xe),me=0;me<3;++me)Re[me]+=this._field[me].get(Ce,ne)*ue;for(var Te=this._pickResult.level,Ee=0;Ee<3;++Ee)if(Te[Ee]=g.le(this.contourLevels[Ee],Re[Ee]),Te[Ee]<0)this.contourLevels[Ee].length>0&&(Te[Ee]=0);else if(Te[Ee]Math.abs(De-Re[Ee])&&(Te[Ee]+=1)}for(se.index[0]=pe<.5?ye:ye+1,se.index[1]=xe<.5?he:he+1,se.uv[0]=fe/oe[0],se.uv[1]=de/oe[1],me=0;me<3;++me)se.dataCoordinate[me]=this._field[me].get(se.index[0],se.index[1]);return se},B.padField=function(ae,oe){var se=oe.shape.slice(),fe=ae.shape.slice();p.assign(ae.lo(1,1).hi(se[0],se[1]),oe),p.assign(ae.lo(1).hi(se[0],1),oe.hi(se[0],1)),p.assign(ae.lo(1,fe[1]-1).hi(se[0],1),oe.lo(0,se[1]-1).hi(se[0],1)),p.assign(ae.lo(0,1).hi(1,se[1]),oe.hi(1)),p.assign(ae.lo(fe[0]-1,1).hi(1,se[1]),oe.lo(se[0]-1)),ae.set(0,0,oe.get(0,0)),ae.set(0,fe[1]-1,oe.get(0,se[1]-1)),ae.set(fe[0]-1,0,oe.get(se[0]-1,0)),ae.set(fe[0]-1,fe[1]-1,oe.get(se[0]-1,se[1]-1))},B.update=function(ae){ae=ae||{},this.objectOffset=ae.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in ae&&(this.contourWidth=Y(ae.contourWidth,Number)),"showContour"in ae&&(this.showContour=Y(ae.showContour,Boolean)),"showSurface"in ae&&(this.showSurface=!!ae.showSurface),"contourTint"in ae&&(this.contourTint=Y(ae.contourTint,Boolean)),"contourColor"in ae&&(this.contourColor=te(ae.contourColor)),"contourProject"in ae&&(this.contourProject=Y(ae.contourProject,function(wn){return Y(wn,Boolean)})),"surfaceProject"in ae&&(this.surfaceProject=ae.surfaceProject),"dynamicColor"in ae&&(this.dynamicColor=te(ae.dynamicColor)),"dynamicTint"in ae&&(this.dynamicTint=Y(ae.dynamicTint,Number)),"dynamicWidth"in ae&&(this.dynamicWidth=Y(ae.dynamicWidth,Number)),"opacity"in ae&&(this.opacity=ae.opacity),"opacityscale"in ae&&(this.opacityscale=ae.opacityscale),"colorBounds"in ae&&(this.colorBounds=ae.colorBounds),"vertexColor"in ae&&(this.vertexColor=ae.vertexColor?1:0),"colormap"in ae&&this._colorMap.setPixels(this.genColormap(ae.colormap,this.opacityscale));var oe=ae.field||ae.coords&&ae.coords[2]||null,se=!1;if(oe||(oe=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),"field"in ae||"coords"in ae){var fe=(oe.shape[0]+2)*(oe.shape[1]+2);fe>this._field[2].data.length&&(a.freeFloat(this._field[2].data),this._field[2].data=a.mallocFloat(i.nextPow2(fe))),this._field[2]=b(this._field[2].data,[oe.shape[0]+2,oe.shape[1]+2]),this.padField(this._field[2],oe),this.shape=oe.shape.slice();for(var ye=this.shape,pe=0;pe<2;++pe)this._field[2].size>this._field[pe].data.length&&(a.freeFloat(this._field[pe].data),this._field[pe].data=a.mallocFloat(this._field[2].size)),this._field[pe]=b(this._field[pe].data,[ye[0]+2,ye[1]+2]);if(ae.coords){var de=ae.coords;if(!Array.isArray(de)||de.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(pe=0;pe<2;++pe){var he=de[pe];for(Me=0;Me<2;++Me)if(he.shape[Me]!==ye[Me])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[pe],he)}}else if(ae.ticks){var xe=ae.ticks;if(!Array.isArray(xe)||xe.length!==2)throw new Error("gl-surface: invalid ticks");for(pe=0;pe<2;++pe){var Re=xe[pe];if((Array.isArray(Re)||Re.length)&&(Re=b(Re)),Re.shape[0]!==ye[pe])throw new Error("gl-surface: invalid tick length");var we=b(Re.data,ye);we.stride[pe]=Re.stride[0],we.stride[1^pe]=0,this.padField(this._field[pe],we)}}else{for(pe=0;pe<2;++pe){var Ae=[0,0];Ae[pe]=1,this._field[pe]=b(this._field[pe].data,[ye[0]+2,ye[1]+2],Ae,0)}this._field[0].set(0,0,0);for(var Me=0;Me0){for(var kn=0;kn<5;++kn)ht.pop();Tt-=1}continue e}ht.push(pt[0],pt[1],Ct[0],Ct[1],pt[2]),Tt+=1}}ut.push(Tt)}this._contourOffsets[Oe]=Qe,this._contourCounts[Oe]=ut}var Wn=a.mallocFloat(ht.length);for(pe=0;peI||L<0||L>I)throw new Error("gl-texture2d: Invalid texture size");return A._shape=[C,L],A.bind(),O.texImage2D(O.TEXTURE_2D,0,A.format,C,L,0,A.format,A.type,null),A._mipLevels=[0],A}function v(A,C,L,O,I,R){this.gl=A,this.handle=C,this.format=I,this.type=R,this._shape=[L,O],this._mipLevels=[0],this._magFilter=A.NEAREST,this._minFilter=A.NEAREST,this._wrapS=A.CLAMP_TO_EDGE,this._wrapT=A.CLAMP_TO_EDGE,this._anisoSamples=1;var U=this,B=[this._wrapS,this._wrapT];Object.defineProperties(B,[{get:function(){return U._wrapS},set:function(N){return U.wrapS=N}},{get:function(){return U._wrapT},set:function(N){return U.wrapT=N}}]),this._wrapVector=B;var G=[this._shape[0],this._shape[1]];Object.defineProperties(G,[{get:function(){return U._shape[0]},set:function(N){return U.width=N}},{get:function(){return U._shape[1]},set:function(N){return U.height=N}}]),this._shapeVector=G}var x=v.prototype;function g(A,C){return A.length===3?C[2]===1&&C[1]===A[0]*A[2]&&C[0]===A[2]:C[0]===1&&C[1]===A[0]}function m(A){var C=A.createTexture();return A.bindTexture(A.TEXTURE_2D,C),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MIN_FILTER,A.NEAREST),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MAG_FILTER,A.NEAREST),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_S,A.CLAMP_TO_EDGE),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_T,A.CLAMP_TO_EDGE),C}function k(A,C,L,O,I){var R=A.getParameter(A.MAX_TEXTURE_SIZE);if(C<0||C>R||L<0||L>R)throw new Error("gl-texture2d: Invalid texture shape");if(I===A.FLOAT&&!A.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var U=m(A);return A.texImage2D(A.TEXTURE_2D,0,O,C,L,0,O,I,null),new v(A,U,C,L,O,I)}function h(A,C,L,O,I,R){var U=m(A);return A.texImage2D(A.TEXTURE_2D,0,I,I,R,C),new v(A,U,L,O,I,R)}function M(A,C){var L=C.dtype,O=C.shape.slice(),I=A.getParameter(A.MAX_TEXTURE_SIZE);if(O[0]<0||O[0]>I||O[1]<0||O[1]>I)throw new Error("gl-texture2d: Invalid texture size");var R=g(O,C.stride.slice()),U=0;L==="float32"?U=A.FLOAT:L==="float64"?(U=A.FLOAT,R=!1,L="float32"):L==="uint8"?U=A.UNSIGNED_BYTE:(U=A.UNSIGNED_BYTE,R=!1,L="uint8");var B,G,N=0;if(O.length===2)N=A.LUMINANCE,O=[O[0],O[1],1],C=i(C.data,O,[C.stride[0],C.stride[1],1],C.offset);else{if(O.length!==3)throw new Error("gl-texture2d: Invalid shape for texture");if(O[2]===1)N=A.ALPHA;else if(O[2]===2)N=A.LUMINANCE_ALPHA;else if(O[2]===3)N=A.RGB;else{if(O[2]!==4)throw new Error("gl-texture2d: Invalid shape for pixel coords");N=A.RGBA}}U!==A.FLOAT||A.getExtension("OES_texture_float")||(U=A.UNSIGNED_BYTE,R=!1);var j=C.size;if(R)B=C.offset===0&&C.data.length===j?C.data:C.data.subarray(C.offset,C.offset+j);else{var V=[O[2],O[2]*O[0],1];G=n.malloc(j,L);var H=i(G,O,V,0);L!=="float32"&&L!=="float64"||U!==A.UNSIGNED_BYTE?r.assign(H,C):b(H,C),B=G.subarray(0,j)}var ee=m(A);return A.texImage2D(A.TEXTURE_2D,0,N,O[0],O[1],0,N,U,B),R||n.free(G),new v(A,ee,O[0],O[1],N,U)}Object.defineProperties(x,{minFilter:{get:function(){return this._minFilter},set:function(A){this.bind();var C=this.gl;if(this.type===C.FLOAT&&o.indexOf(A)>=0&&(C.getExtension("OES_texture_float_linear")||(A=C.NEAREST)),a.indexOf(A)<0)throw new Error("gl-texture2d: Unknown filter mode "+A);return C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),this._minFilter=A}},magFilter:{get:function(){return this._magFilter},set:function(A){this.bind();var C=this.gl;if(this.type===C.FLOAT&&o.indexOf(A)>=0&&(C.getExtension("OES_texture_float_linear")||(A=C.NEAREST)),a.indexOf(A)<0)throw new Error("gl-texture2d: Unknown filter mode "+A);return C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),this._magFilter=A}},mipSamples:{get:function(){return this._anisoSamples},set:function(A){var C=this._anisoSamples;if(this._anisoSamples=0|Math.max(A,1),C!==this._anisoSamples){var L=this.gl.getExtension("EXT_texture_filter_anisotropic");L&&this.gl.texParameterf(this.gl.TEXTURE_2D,L.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(A){if(this.bind(),u.indexOf(A)<0)throw new Error("gl-texture2d: Unknown wrap mode "+A);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,A),this._wrapS=A}},wrapT:{get:function(){return this._wrapT},set:function(A){if(this.bind(),u.indexOf(A)<0)throw new Error("gl-texture2d: Unknown wrap mode "+A);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,A),this._wrapT=A}},wrap:{get:function(){return this._wrapVector},set:function(A){if(Array.isArray(A)||(A=[A,A]),A.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var C=0;C<2;++C)if(u.indexOf(A[C])<0)throw new Error("gl-texture2d: Unknown wrap mode "+A);this._wrapS=A[0],this._wrapT=A[1];var L=this.gl;return this.bind(),L.texParameteri(L.TEXTURE_2D,L.TEXTURE_WRAP_S,this._wrapS),L.texParameteri(L.TEXTURE_2D,L.TEXTURE_WRAP_T,this._wrapT),A}},shape:{get:function(){return this._shapeVector},set:function(A){if(Array.isArray(A)){if(A.length!==2)throw new Error("gl-texture2d: Invalid texture shape")}else A=[0|A,0|A];return d(this,0|A[0],0|A[1]),[0|A[0],0|A[1]]}},width:{get:function(){return this._shape[0]},set:function(A){return d(this,A|=0,this._shape[1]),A}},height:{get:function(){return this._shape[1]},set:function(A){return A|=0,d(this,this._shape[0],A),A}}}),x.bind=function(A){var C=this.gl;return A!==void 0&&C.activeTexture(C.TEXTURE0+(0|A)),C.bindTexture(C.TEXTURE_2D,this.handle),A!==void 0?0|A:C.getParameter(C.ACTIVE_TEXTURE)-C.TEXTURE0},x.dispose=function(){this.gl.deleteTexture(this.handle)},x.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var A=Math.min(this._shape[0],this._shape[1]),C=0;A>0;++C,A>>>=1)this._mipLevels.indexOf(C)<0&&this._mipLevels.push(C)},x.setPixels=function(A,C,L,O){var I=this.gl;this.bind(),Array.isArray(C)?(O=L,L=0|C[1],C=0|C[0]):(C=C||0,L=L||0),O=O||0;var R=c(A)?A:A.raw;if(R)this._mipLevels.indexOf(O)<0?(I.texImage2D(I.TEXTURE_2D,0,this.format,this.format,this.type,R),this._mipLevels.push(O)):I.texSubImage2D(I.TEXTURE_2D,O,C,L,this.format,this.type,R);else{if(!(A.shape&&A.stride&&A.data))throw new Error("gl-texture2d: Unsupported data type");if(A.shape.length<2||C+A.shape[1]>this._shape[1]>>>O||L+A.shape[0]>this._shape[0]>>>O||C<0||L<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");(function(U,B,G,N,j,V,H,ee){var Q=ee.dtype,X=ee.shape.slice();if(X.length<2||X.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var Y=0,K=0,te=g(X,ee.stride.slice());if(Q==="float32"?Y=U.FLOAT:Q==="float64"?(Y=U.FLOAT,te=!1,Q="float32"):Q==="uint8"?Y=U.UNSIGNED_BYTE:(Y=U.UNSIGNED_BYTE,te=!1,Q="uint8"),X.length===2)K=U.LUMINANCE,X=[X[0],X[1],1],ee=i(ee.data,X,[ee.stride[0],ee.stride[1],1],ee.offset);else{if(X.length!==3)throw new Error("gl-texture2d: Invalid shape for texture");if(X[2]===1)K=U.ALPHA;else if(X[2]===2)K=U.LUMINANCE_ALPHA;else if(X[2]===3)K=U.RGB;else{if(X[2]!==4)throw new Error("gl-texture2d: Invalid shape for pixel coords");K=U.RGBA}X[2]}if(K!==U.LUMINANCE&&K!==U.ALPHA||j!==U.LUMINANCE&&j!==U.ALPHA||(K=j),K!==j)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var ae=ee.size,oe=H.indexOf(N)<0;if(oe&&H.push(N),Y===V&&te)ee.offset===0&&ee.data.length===ae?oe?U.texImage2D(U.TEXTURE_2D,N,j,X[0],X[1],0,j,V,ee.data):U.texSubImage2D(U.TEXTURE_2D,N,B,G,X[0],X[1],j,V,ee.data):oe?U.texImage2D(U.TEXTURE_2D,N,j,X[0],X[1],0,j,V,ee.data.subarray(ee.offset,ee.offset+ae)):U.texSubImage2D(U.TEXTURE_2D,N,B,G,X[0],X[1],j,V,ee.data.subarray(ee.offset,ee.offset+ae));else{var se;se=V===U.FLOAT?n.mallocFloat32(ae):n.mallocUint8(ae);var fe=i(se,X,[X[2],X[2]*X[0],1]);Y===U.FLOAT&&V===U.UNSIGNED_BYTE?b(fe,ee):r.assign(fe,ee),oe?U.texImage2D(U.TEXTURE_2D,N,j,X[0],X[1],0,j,V,se.subarray(0,ae)):U.texSubImage2D(U.TEXTURE_2D,N,B,G,X[0],X[1],j,V,se.subarray(0,ae)),V===U.FLOAT?n.freeFloat32(se):n.freeUint8(se)}})(I,C,L,O,this.format,this.type,this._mipLevels,A)}}},3056:function(f){f.exports=function(l,t,i){t?t.bind():l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,null);var r=0|l.getParameter(l.MAX_VERTEX_ATTRIBS);if(i){if(i.length>r)throw new Error("gl-vao: Too many vertex attributes");for(var n=0;n1?0:Math.acos(c)};var i=t(5415),r=t(899),n=t(9305)},8827:function(f){f.exports=function(l,t){return l[0]=Math.ceil(t[0]),l[1]=Math.ceil(t[1]),l[2]=Math.ceil(t[2]),l}},7622:function(f){f.exports=function(l){var t=new Float32Array(3);return t[0]=l[0],t[1]=l[1],t[2]=l[2],t}},8782:function(f){f.exports=function(l,t){return l[0]=t[0],l[1]=t[1],l[2]=t[2],l}},8501:function(f){f.exports=function(){var l=new Float32Array(3);return l[0]=0,l[1]=0,l[2]=0,l}},903:function(f){f.exports=function(l,t,i){var r=t[0],n=t[1],o=t[2],a=i[0],u=i[1],p=i[2];return l[0]=n*p-o*u,l[1]=o*a-r*p,l[2]=r*u-n*a,l}},5981:function(f,l,t){f.exports=t(8288)},8288:function(f){f.exports=function(l,t){var i=t[0]-l[0],r=t[1]-l[1],n=t[2]-l[2];return Math.sqrt(i*i+r*r+n*n)}},8629:function(f,l,t){f.exports=t(7979)},7979:function(f){f.exports=function(l,t,i){return l[0]=t[0]/i[0],l[1]=t[1]/i[1],l[2]=t[2]/i[2],l}},9305:function(f){f.exports=function(l,t){return l[0]*t[0]+l[1]*t[1]+l[2]*t[2]}},154:function(f){f.exports=1e-6},4932:function(f,l,t){f.exports=function(r,n){var o=r[0],a=r[1],u=r[2],p=n[0],c=n[1],b=n[2];return Math.abs(o-p)<=i*Math.max(1,Math.abs(o),Math.abs(p))&&Math.abs(a-c)<=i*Math.max(1,Math.abs(a),Math.abs(c))&&Math.abs(u-b)<=i*Math.max(1,Math.abs(u),Math.abs(b))};var i=t(154)},5777:function(f){f.exports=function(l,t){return l[0]===t[0]&&l[1]===t[1]&&l[2]===t[2]}},3306:function(f){f.exports=function(l,t){return l[0]=Math.floor(t[0]),l[1]=Math.floor(t[1]),l[2]=Math.floor(t[2]),l}},7447:function(f,l,t){f.exports=function(r,n,o,a,u,p){var c,b;for(n||(n=3),o||(o=0),b=a?Math.min(a*n+o,r.length):r.length,c=o;c0&&(o=1/Math.sqrt(o),l[0]=t[0]*o,l[1]=t[1]*o,l[2]=t[2]*o),l}},6660:function(f){f.exports=function(l,t){t=t||1;var i=2*Math.random()*Math.PI,r=2*Math.random()-1,n=Math.sqrt(1-r*r)*t;return l[0]=Math.cos(i)*n,l[1]=Math.sin(i)*n,l[2]=r*t,l}},392:function(f){f.exports=function(l,t,i,r){var n=i[1],o=i[2],a=t[1]-n,u=t[2]-o,p=Math.sin(r),c=Math.cos(r);return l[0]=t[0],l[1]=n+a*c-u*p,l[2]=o+a*p+u*c,l}},3222:function(f){f.exports=function(l,t,i,r){var n=i[0],o=i[2],a=t[0]-n,u=t[2]-o,p=Math.sin(r),c=Math.cos(r);return l[0]=n+u*p+a*c,l[1]=t[1],l[2]=o+u*c-a*p,l}},3388:function(f){f.exports=function(l,t,i,r){var n=i[0],o=i[1],a=t[0]-n,u=t[1]-o,p=Math.sin(r),c=Math.cos(r);return l[0]=n+a*c-u*p,l[1]=o+a*p+u*c,l[2]=t[2],l}},1624:function(f){f.exports=function(l,t){return l[0]=Math.round(t[0]),l[1]=Math.round(t[1]),l[2]=Math.round(t[2]),l}},5685:function(f){f.exports=function(l,t,i){return l[0]=t[0]*i,l[1]=t[1]*i,l[2]=t[2]*i,l}},6722:function(f){f.exports=function(l,t,i,r){return l[0]=t[0]+i[0]*r,l[1]=t[1]+i[1]*r,l[2]=t[2]+i[2]*r,l}},831:function(f){f.exports=function(l,t,i,r){return l[0]=t,l[1]=i,l[2]=r,l}},5294:function(f,l,t){f.exports=t(6403)},3303:function(f,l,t){f.exports=t(4337)},6403:function(f){f.exports=function(l,t){var i=t[0]-l[0],r=t[1]-l[1],n=t[2]-l[2];return i*i+r*r+n*n}},4337:function(f){f.exports=function(l){var t=l[0],i=l[1],r=l[2];return t*t+i*i+r*r}},8921:function(f,l,t){f.exports=t(911)},911:function(f){f.exports=function(l,t,i){return l[0]=t[0]-i[0],l[1]=t[1]-i[1],l[2]=t[2]-i[2],l}},9908:function(f){f.exports=function(l,t,i){var r=t[0],n=t[1],o=t[2];return l[0]=r*i[0]+n*i[3]+o*i[6],l[1]=r*i[1]+n*i[4]+o*i[7],l[2]=r*i[2]+n*i[5]+o*i[8],l}},3255:function(f){f.exports=function(l,t,i){var r=t[0],n=t[1],o=t[2],a=i[3]*r+i[7]*n+i[11]*o+i[15];return a=a||1,l[0]=(i[0]*r+i[4]*n+i[8]*o+i[12])/a,l[1]=(i[1]*r+i[5]*n+i[9]*o+i[13])/a,l[2]=(i[2]*r+i[6]*n+i[10]*o+i[14])/a,l}},6568:function(f){f.exports=function(l,t,i){var r=t[0],n=t[1],o=t[2],a=i[0],u=i[1],p=i[2],c=i[3],b=c*r+u*o-p*n,d=c*n+p*r-a*o,v=c*o+a*n-u*r,x=-a*r-u*n-p*o;return l[0]=b*c+x*-a+d*-p-v*-u,l[1]=d*c+x*-u+v*-a-b*-p,l[2]=v*c+x*-p+b*-u-d*-a,l}},3433:function(f){f.exports=function(l,t,i){return l[0]=t[0]+i[0],l[1]=t[1]+i[1],l[2]=t[2]+i[2],l[3]=t[3]+i[3],l}},1413:function(f){f.exports=function(l){var t=new Float32Array(4);return t[0]=l[0],t[1]=l[1],t[2]=l[2],t[3]=l[3],t}},3470:function(f){f.exports=function(l,t){return l[0]=t[0],l[1]=t[1],l[2]=t[2],l[3]=t[3],l}},5313:function(f){f.exports=function(){var l=new Float32Array(4);return l[0]=0,l[1]=0,l[2]=0,l[3]=0,l}},5446:function(f){f.exports=function(l,t){var i=t[0]-l[0],r=t[1]-l[1],n=t[2]-l[2],o=t[3]-l[3];return Math.sqrt(i*i+r*r+n*n+o*o)}},205:function(f){f.exports=function(l,t,i){return l[0]=t[0]/i[0],l[1]=t[1]/i[1],l[2]=t[2]/i[2],l[3]=t[3]/i[3],l}},4242:function(f){f.exports=function(l,t){return l[0]*t[0]+l[1]*t[1]+l[2]*t[2]+l[3]*t[3]}},5680:function(f){f.exports=function(l,t,i,r){var n=new Float32Array(4);return n[0]=l,n[1]=t,n[2]=i,n[3]=r,n}},4020:function(f,l,t){f.exports={create:t(5313),clone:t(1413),fromValues:t(5680),copy:t(3470),set:t(6453),add:t(3433),subtract:t(2705),multiply:t(746),divide:t(205),min:t(2170),max:t(3030),scale:t(5510),scaleAndAdd:t(4224),distance:t(5446),squaredDistance:t(1542),length:t(8177),squaredLength:t(9037),negate:t(6459),inverse:t(8057),normalize:t(381),dot:t(4242),lerp:t(8746),random:t(3770),transformMat4:t(6342),transformQuat:t(5022)}},8057:function(f){f.exports=function(l,t){return l[0]=1/t[0],l[1]=1/t[1],l[2]=1/t[2],l[3]=1/t[3],l}},8177:function(f){f.exports=function(l){var t=l[0],i=l[1],r=l[2],n=l[3];return Math.sqrt(t*t+i*i+r*r+n*n)}},8746:function(f){f.exports=function(l,t,i,r){var n=t[0],o=t[1],a=t[2],u=t[3];return l[0]=n+r*(i[0]-n),l[1]=o+r*(i[1]-o),l[2]=a+r*(i[2]-a),l[3]=u+r*(i[3]-u),l}},3030:function(f){f.exports=function(l,t,i){return l[0]=Math.max(t[0],i[0]),l[1]=Math.max(t[1],i[1]),l[2]=Math.max(t[2],i[2]),l[3]=Math.max(t[3],i[3]),l}},2170:function(f){f.exports=function(l,t,i){return l[0]=Math.min(t[0],i[0]),l[1]=Math.min(t[1],i[1]),l[2]=Math.min(t[2],i[2]),l[3]=Math.min(t[3],i[3]),l}},746:function(f){f.exports=function(l,t,i){return l[0]=t[0]*i[0],l[1]=t[1]*i[1],l[2]=t[2]*i[2],l[3]=t[3]*i[3],l}},6459:function(f){f.exports=function(l,t){return l[0]=-t[0],l[1]=-t[1],l[2]=-t[2],l[3]=-t[3],l}},381:function(f){f.exports=function(l,t){var i=t[0],r=t[1],n=t[2],o=t[3],a=i*i+r*r+n*n+o*o;return a>0&&(a=1/Math.sqrt(a),l[0]=i*a,l[1]=r*a,l[2]=n*a,l[3]=o*a),l}},3770:function(f,l,t){var i=t(381),r=t(5510);f.exports=function(n,o){return o=o||1,n[0]=Math.random(),n[1]=Math.random(),n[2]=Math.random(),n[3]=Math.random(),i(n,n),r(n,n,o),n}},5510:function(f){f.exports=function(l,t,i){return l[0]=t[0]*i,l[1]=t[1]*i,l[2]=t[2]*i,l[3]=t[3]*i,l}},4224:function(f){f.exports=function(l,t,i,r){return l[0]=t[0]+i[0]*r,l[1]=t[1]+i[1]*r,l[2]=t[2]+i[2]*r,l[3]=t[3]+i[3]*r,l}},6453:function(f){f.exports=function(l,t,i,r,n){return l[0]=t,l[1]=i,l[2]=r,l[3]=n,l}},1542:function(f){f.exports=function(l,t){var i=t[0]-l[0],r=t[1]-l[1],n=t[2]-l[2],o=t[3]-l[3];return i*i+r*r+n*n+o*o}},9037:function(f){f.exports=function(l){var t=l[0],i=l[1],r=l[2],n=l[3];return t*t+i*i+r*r+n*n}},2705:function(f){f.exports=function(l,t,i){return l[0]=t[0]-i[0],l[1]=t[1]-i[1],l[2]=t[2]-i[2],l[3]=t[3]-i[3],l}},6342:function(f){f.exports=function(l,t,i){var r=t[0],n=t[1],o=t[2],a=t[3];return l[0]=i[0]*r+i[4]*n+i[8]*o+i[12]*a,l[1]=i[1]*r+i[5]*n+i[9]*o+i[13]*a,l[2]=i[2]*r+i[6]*n+i[10]*o+i[14]*a,l[3]=i[3]*r+i[7]*n+i[11]*o+i[15]*a,l}},5022:function(f){f.exports=function(l,t,i){var r=t[0],n=t[1],o=t[2],a=i[0],u=i[1],p=i[2],c=i[3],b=c*r+u*o-p*n,d=c*n+p*r-a*o,v=c*o+a*n-u*r,x=-a*r-u*n-p*o;return l[0]=b*c+x*-a+d*-p-v*-u,l[1]=d*c+x*-u+v*-a-b*-p,l[2]=v*c+x*-p+b*-u-d*-a,l[3]=t[3],l}},9365:function(f,l,t){var i=t(8096),r=t(7896);f.exports=function(n){for(var o=Array.isArray(n)?n:i(n),a=0;a0)continue;ye=se.slice(0,1).join("")}return j(ye),L+=ye.length,(h=h.slice(ye.length)).length}}function K(){return/[^a-fA-F0-9]/.test(d)?(j(h.join("")),k=u,g):(h.push(d),v=d,g+1)}function te(){return d==="."||/[eE]/.test(d)?(h.push(d),k=5,v=d,g+1):d==="x"&&h.length===1&&h[0]==="0"?(k=11,h.push(d),v=d,g+1):/[^\d]/.test(d)?(j(h.join("")),k=u,g):(h.push(d),v=d,g+1)}function ae(){return d==="f"&&(h.push(d),v=d,g+=1),/[eE]/.test(d)?(h.push(d),v=d,g+1):(d!=="-"&&d!=="+"||!/[eE]/.test(v))&&/[^\d]/.test(d)?(j(h.join("")),k=u,g):(h.push(d),v=d,g+1)}function oe(){if(/[^\d\w_]/.test(d)){var se=h.join("");return k=N[se]?8:G[se]?7:6,j(h.join("")),k=u,g}return h.push(d),v=d,g+1}};var i=t(399),r=t(9746),n=t(9525),o=t(9458),a=t(3585),u=999,p=9999,c=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"]},3585:function(f,l,t){var i=t(9525);i=i.slice().filter(function(r){return!/^(gl\_|texture)/.test(r)}),f.exports=i.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},9525:function(f){f.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},9458:function(f,l,t){var i=t(399);f.exports=i.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},399:function(f){f.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},9746:function(f){f.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},8096:function(f,l,t){var i=t(3193);f.exports=function(r,n){var o=i(n),a=[];return(a=a.concat(o(r))).concat(o(null))}},6832:function(f){f.exports=function(l){typeof l=="string"&&(l=[l]);for(var t=[].slice.call(arguments,1),i=[],r=0;r0;)for(var h=(b=k.pop()).adjacent,M=0;M<=v;++M){var A=h[M];if(A.boundary&&!(A.lastVisited<=-x)){for(var C=A.vertices,L=0;L<=v;++L){var O=C[L];g[L]=O<0?d:m[O]}var I=this.orient();if(I>0)return A;A.lastVisited=-x,I===0&&k.push(A)}}return null},c.walk=function(b,d){var v=this.vertices.length-1,x=this.dimension,g=this.vertices,m=this.tuple,k=d?this.interior.length*Math.random()|0:this.interior.length-1,h=this.interior[k];e:for(;!h.boundary;){for(var M=h.vertices,A=h.adjacent,C=0;C<=x;++C)m[C]=g[M[C]];for(h.lastVisited=v,C=0;C<=x;++C){var L=A[C];if(!(L.lastVisited>=v)){var O=m[C];m[C]=b;var I=this.orient();if(m[C]=O,I<0){h=L;continue e}L.boundary?L.lastVisited=-v:L.lastVisited=v}}return}return h},c.addPeaks=function(b,d){var v=this.vertices.length-1,x=this.dimension,g=this.vertices,m=this.tuple,k=this.interior,h=this.simplices,M=[d];d.lastVisited=v,d.vertices[d.vertices.indexOf(-1)]=v,d.boundary=!1,k.push(d);for(var A=[];M.length>0;){var C=(d=M.pop()).vertices,L=d.adjacent,O=C.indexOf(v);if(!(O<0)){for(var I=0;I<=x;++I)if(I!==O){var R=L[I];if(R.boundary&&!(R.lastVisited>=v)){var U=R.vertices;if(R.lastVisited!==-v){for(var B=0,G=0;G<=x;++G)U[G]<0?(B=G,m[G]=b):m[G]=g[U[G]];if(this.orient()>0){U[B]=v,R.boundary=!1,k.push(R),M.push(R),R.lastVisited=v;continue}R.lastVisited=-v}var N=R.adjacent,j=C.slice(),V=L.slice(),H=new n(j,V,!0);h.push(H);var ee=N.indexOf(d);if(!(ee<0))for(N[ee]=H,V[O]=R,j[I]=-1,V[I]=d,L[I]=H,H.flip(),G=0;G<=x;++G){var Q=j[G];if(!(Q<0||Q===v)){for(var X=new Array(x-1),Y=0,K=0;K<=x;++K){var te=j[K];te<0||K===G||(X[Y++]=te)}A.push(new o(X,H,G))}}}}}}for(A.sort(a),I=0;I+1=0?k[M++]=h[C]:A=1&C;if(A===(1&b)){var L=k[0];k[0]=k[1],k[1]=L}d.push(k)}}return d}},9014:function(f,l,t){var i=t(5070);function r(M,A,C,L,O){this.mid=M,this.left=A,this.right=C,this.leftPoints=L,this.rightPoints=O,this.count=(A?A.count:0)+(C?C.count:0)+L.length}f.exports=function(M){return M&&M.length!==0?new k(m(M)):new k(null)};var n=r.prototype;function o(M,A){M.mid=A.mid,M.left=A.left,M.right=A.right,M.leftPoints=A.leftPoints,M.rightPoints=A.rightPoints,M.count=A.count}function a(M,A){var C=m(A);M.mid=C.mid,M.left=C.left,M.right=C.right,M.leftPoints=C.leftPoints,M.rightPoints=C.rightPoints,M.count=C.count}function u(M,A){var C=M.intervals([]);C.push(A),a(M,C)}function p(M,A){var C=M.intervals([]),L=C.indexOf(A);return L<0?0:(C.splice(L,1),a(M,C),1)}function c(M,A,C){for(var L=0;L=0&&M[L][1]>=A;--L){var O=C(M[L]);if(O)return O}}function d(M,A){for(var C=0;C>1],O=[],I=[],R=[];for(C=0;C3*(A+1)?u(this,M):this.left.insert(M):this.left=m([M]);else if(M[0]>this.mid)this.right?4*(this.right.count+1)>3*(A+1)?u(this,M):this.right.insert(M):this.right=m([M]);else{var C=i.ge(this.leftPoints,M,x),L=i.ge(this.rightPoints,M,g);this.leftPoints.splice(C,0,M),this.rightPoints.splice(L,0,M)}},n.remove=function(M){var A=this.count-this.leftPoints;if(M[1]3*(A-1)?p(this,M):(I=this.left.remove(M))===2?(this.left=null,this.count-=1,1):(I===1&&(this.count-=1),I):0;if(M[0]>this.mid)return this.right?4*(this.left?this.left.count:0)>3*(A-1)?p(this,M):(I=this.right.remove(M))===2?(this.right=null,this.count-=1,1):(I===1&&(this.count-=1),I):0;if(this.count===1)return this.leftPoints[0]===M?2:0;if(this.leftPoints.length===1&&this.leftPoints[0]===M){if(this.left&&this.right){for(var C=this,L=this.left;L.right;)C=L,L=L.right;if(C===this)L.right=this.right;else{var O=this.left,I=this.right;C.count-=L.count,C.right=L.left,L.left=O,L.right=I}o(this,L),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?o(this,this.left):o(this,this.right);return 1}for(O=i.ge(this.leftPoints,M,x);Othis.mid?this.right&&(C=this.right.queryPoint(M,A))?C:b(this.rightPoints,M,A):d(this.leftPoints,A);var C},n.queryInterval=function(M,A,C){var L;return Mthis.mid&&this.right&&(L=this.right.queryInterval(M,A,C))?L:Athis.mid?b(this.rightPoints,M,C):d(this.leftPoints,C)};var h=k.prototype;h.insert=function(M){this.root?this.root.insert(M):this.root=new r(M[0],null,null,[M],[M])},h.remove=function(M){if(this.root){var A=this.root.remove(M);return A===2&&(this.root=null),A!==0}return!1},h.queryPoint=function(M,A){if(this.root)return this.root.queryPoint(M,A)},h.queryInterval=function(M,A,C){if(M<=A&&this.root)return this.root.queryInterval(M,A,C)},Object.defineProperty(h,"count",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(h,"intervals",{get:function(){return this.root?this.root.intervals([]):[]}})},9560:function(f){f.exports=function(l){for(var t=new Array(l),i=0;i13)&&t!==32&&t!==133&&t!==160&&t!==5760&&t!==6158&&(t<8192||t>8205)&&t!==8232&&t!==8233&&t!==8239&&t!==8287&&t!==8288&&t!==12288&&t!==65279)return!1;return!0}},3578:function(f){f.exports=function(l,t,i){return l*(1-i)+t*i}},7191:function(f,l,t){var i=t(4690),r=t(9823),n=t(7332),o=t(7787),a=t(7437),u=t(2142),p={length:t(4693),normalize:t(899),dot:t(9305),cross:t(903)},c=r(),b=r(),d=[0,0,0,0],v=[[0,0,0],[0,0,0],[0,0,0]],x=[0,0,0];function g(m,k,h,M,A){m[0]=k[0]*M+h[0]*A,m[1]=k[1]*M+h[1]*A,m[2]=k[2]*M+h[2]*A}f.exports=function(m,k,h,M,A,C){if(k||(k=[0,0,0]),h||(h=[0,0,0]),M||(M=[0,0,0]),A||(A=[0,0,0,1]),C||(C=[0,0,0,1]),!i(c,m)||(n(b,c),b[3]=0,b[7]=0,b[11]=0,b[15]=1,Math.abs(o(b)<1e-8)))return!1;var L,O,I,R,U,B,G,N=c[3],j=c[7],V=c[11],H=c[12],ee=c[13],Q=c[14],X=c[15];if(N!==0||j!==0||V!==0){if(d[0]=N,d[1]=j,d[2]=V,d[3]=X,!a(b,b))return!1;u(b,b),L=A,I=b,R=(O=d)[0],U=O[1],B=O[2],G=O[3],L[0]=I[0]*R+I[4]*U+I[8]*B+I[12]*G,L[1]=I[1]*R+I[5]*U+I[9]*B+I[13]*G,L[2]=I[2]*R+I[6]*U+I[10]*B+I[14]*G,L[3]=I[3]*R+I[7]*U+I[11]*B+I[15]*G}else A[0]=A[1]=A[2]=0,A[3]=1;if(k[0]=H,k[1]=ee,k[2]=Q,function(K,te){K[0][0]=te[0],K[0][1]=te[1],K[0][2]=te[2],K[1][0]=te[4],K[1][1]=te[5],K[1][2]=te[6],K[2][0]=te[8],K[2][1]=te[9],K[2][2]=te[10]}(v,c),h[0]=p.length(v[0]),p.normalize(v[0],v[0]),M[0]=p.dot(v[0],v[1]),g(v[1],v[1],v[0],1,-M[0]),h[1]=p.length(v[1]),p.normalize(v[1],v[1]),M[0]/=h[1],M[1]=p.dot(v[0],v[2]),g(v[2],v[2],v[0],1,-M[1]),M[2]=p.dot(v[1],v[2]),g(v[2],v[2],v[1],1,-M[2]),h[2]=p.length(v[2]),p.normalize(v[2],v[2]),M[1]/=h[2],M[2]/=h[2],p.cross(x,v[1],v[2]),p.dot(v[0],x)<0)for(var Y=0;Y<3;Y++)h[Y]*=-1,v[Y][0]*=-1,v[Y][1]*=-1,v[Y][2]*=-1;return C[0]=.5*Math.sqrt(Math.max(1+v[0][0]-v[1][1]-v[2][2],0)),C[1]=.5*Math.sqrt(Math.max(1-v[0][0]+v[1][1]-v[2][2],0)),C[2]=.5*Math.sqrt(Math.max(1-v[0][0]-v[1][1]+v[2][2],0)),C[3]=.5*Math.sqrt(Math.max(1+v[0][0]+v[1][1]+v[2][2],0)),v[2][1]>v[1][2]&&(C[0]=-C[0]),v[0][2]>v[2][0]&&(C[1]=-C[1]),v[1][0]>v[0][1]&&(C[2]=-C[2]),!0}},4690:function(f){f.exports=function(l,t){var i=t[15];if(i===0)return!1;for(var r=1/i,n=0;n<16;n++)l[n]=t[n]*r;return!0}},7649:function(f,l,t){var i=t(1868),r=t(1102),n=t(7191),o=t(7787),a=t(1116),u=b(),p=b(),c=b();function b(){return{translate:d(),scale:d(1),skew:d(),perspective:[0,0,0,1],quaternion:[0,0,0,1]}}function d(v){return[v||0,v||0,v||0]}f.exports=function(v,x,g,m){if(o(x)===0||o(g)===0)return!1;var k=n(x,u.translate,u.scale,u.skew,u.perspective,u.quaternion),h=n(g,p.translate,p.scale,p.skew,p.perspective,p.quaternion);return!(!k||!h||(i(c.translate,u.translate,p.translate,m),i(c.skew,u.skew,p.skew,m),i(c.scale,u.scale,p.scale,m),i(c.perspective,u.perspective,p.perspective,m),a(c.quaternion,u.quaternion,p.quaternion,m),r(v,c.translate,c.scale,c.skew,c.perspective,c.quaternion),0))}},1102:function(f,l,t){var i={identity:t(9947),translate:t(998),multiply:t(104),create:t(9823),scale:t(3668),fromRotationTranslation:t(7280)},r=(i.create(),i.create());f.exports=function(n,o,a,u,p,c){return i.identity(n),i.fromRotationTranslation(n,c,o),n[3]=p[0],n[7]=p[1],n[11]=p[2],n[15]=p[3],i.identity(r),u[2]!==0&&(r[9]=u[2],i.multiply(n,n,r)),u[1]!==0&&(r[9]=0,r[8]=u[1],i.multiply(n,n,r)),u[0]!==0&&(r[8]=0,r[4]=u[0],i.multiply(n,n,r)),i.scale(n,n,a),n}},9298:function(f,l,t){var i=t(5070),r=t(7649),n=t(7437),o=t(6109),a=t(7115),u=t(5240),p=t(3012),c=t(998),b=(t(3668),t(899)),d=[0,0,0];function v(m){this._components=m.slice(),this._time=[0],this.prevMatrix=m.slice(),this.nextMatrix=m.slice(),this.computedMatrix=m.slice(),this.computedInverse=m.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}f.exports=function(m){return new v((m=m||{}).matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])};var x=v.prototype;x.recalcMatrix=function(m){var k=this._time,h=i.le(k,m),M=this.computedMatrix;if(!(h<0)){var A=this._components;if(h===k.length-1)for(var C=16*h,L=0;L<16;++L)M[L]=A[C++];else{var O=k[h+1]-k[h],I=(C=16*h,this.prevMatrix),R=!0;for(L=0;L<16;++L)I[L]=A[C++];var U=this.nextMatrix;for(L=0;L<16;++L)U[L]=A[C++],R=R&&I[L]===U[L];if(O<1e-6||R)for(L=0;L<16;++L)M[L]=I[L];else r(M,I,U,(m-k[h])/O)}var B=this.computedUp;B[0]=M[1],B[1]=M[5],B[2]=M[9],b(B,B);var G=this.computedInverse;n(G,M);var N=this.computedEye,j=G[15];N[0]=G[12]/j,N[1]=G[13]/j,N[2]=G[14]/j;var V=this.computedCenter,H=Math.exp(this.computedRadius[0]);for(L=0;L<3;++L)V[L]=N[L]-M[2+4*L]*H}},x.idle=function(m){if(!(m1&&i(r[p[v-2]],r[p[v-1]],d)<=0;)v-=1,p.pop();for(p.push(b),v=c.length;v>1&&i(r[c[v-2]],r[c[v-1]],d)>=0;)v-=1,c.pop();c.push(b)}o=new Array(c.length+p.length-2);for(var x=0,g=(a=0,p.length);a0;--m)o[x++]=c[m];return o};var i=t(417)[3]},6145:function(f,l,t){f.exports=function(r,n){n||(n=r,r=window);var o=0,a=0,u=0,p={shift:!1,alt:!1,control:!1,meta:!1},c=!1;function b(C){var L=!1;return"altKey"in C&&(L=L||C.altKey!==p.alt,p.alt=!!C.altKey),"shiftKey"in C&&(L=L||C.shiftKey!==p.shift,p.shift=!!C.shiftKey),"ctrlKey"in C&&(L=L||C.ctrlKey!==p.control,p.control=!!C.ctrlKey),"metaKey"in C&&(L=L||C.metaKey!==p.meta,p.meta=!!C.metaKey),L}function d(C,L){var O=i.x(L),I=i.y(L);"buttons"in L&&(C=0|L.buttons),(C!==o||O!==a||I!==u||b(L))&&(o=0|C,a=O||0,u=I||0,n&&n(o,a,u,p))}function v(C){d(0,C)}function x(){(o||a||u||p.shift||p.alt||p.meta||p.control)&&(a=u=0,o=0,p.shift=p.alt=p.control=p.meta=!1,n&&n(0,0,0,p))}function g(C){b(C)&&n&&n(o,a,u,p)}function m(C){i.buttons(C)===0?d(0,C):d(o,C)}function k(C){d(o|i.buttons(C),C)}function h(C){d(o&~i.buttons(C),C)}function M(){c||(c=!0,r.addEventListener("mousemove",m),r.addEventListener("mousedown",k),r.addEventListener("mouseup",h),r.addEventListener("mouseleave",v),r.addEventListener("mouseenter",v),r.addEventListener("mouseout",v),r.addEventListener("mouseover",v),r.addEventListener("blur",x),r.addEventListener("keyup",g),r.addEventListener("keydown",g),r.addEventListener("keypress",g),r!==window&&(window.addEventListener("blur",x),window.addEventListener("keyup",g),window.addEventListener("keydown",g),window.addEventListener("keypress",g)))}M();var A={element:r};return Object.defineProperties(A,{enabled:{get:function(){return c},set:function(C){C?M():c&&(c=!1,r.removeEventListener("mousemove",m),r.removeEventListener("mousedown",k),r.removeEventListener("mouseup",h),r.removeEventListener("mouseleave",v),r.removeEventListener("mouseenter",v),r.removeEventListener("mouseout",v),r.removeEventListener("mouseover",v),r.removeEventListener("blur",x),r.removeEventListener("keyup",g),r.removeEventListener("keydown",g),r.removeEventListener("keypress",g),r!==window&&(window.removeEventListener("blur",x),window.removeEventListener("keyup",g),window.removeEventListener("keydown",g),window.removeEventListener("keypress",g)))},enumerable:!0},buttons:{get:function(){return o},enumerable:!0},x:{get:function(){return a},enumerable:!0},y:{get:function(){return u},enumerable:!0},mods:{get:function(){return p},enumerable:!0}}),A};var i=t(4110)},2565:function(f){var l={left:0,top:0};f.exports=function(t,i,r){i=i||t.currentTarget||t.srcElement,Array.isArray(r)||(r=[0,0]);var n,o=t.clientX||0,a=t.clientY||0,u=(n=i)===window||n===document||n===document.body?l:n.getBoundingClientRect();return r[0]=o-u.left,r[1]=a-u.top,r}},4110:function(f,l){function t(i){return i.target||i.srcElement||window}l.buttons=function(i){if(typeof i=="object"){if("buttons"in i)return i.buttons;if("which"in i){if((r=i.which)===2)return 4;if(r===3)return 2;if(r>0)return 1<=0)return 1< 0"),typeof n.vertex!="function"&&o("Must specify vertex creation function"),typeof n.cell!="function"&&o("Must specify cell creation function"),typeof n.phase!="function"&&o("Must specify phase function");for(var p=n.getters||[],c=new Array(u),b=0;b=0?c[b]=!0:c[b]=!1;return function(d,v,x,g,m,k){var h=[k,m].join(",");return(0,r[h])(d,v,x,i.mallocUint32,i.freeUint32)}(n.vertex,n.cell,n.phase,0,a,c)};var r={"false,0,1":function(n,o,a,u,p){return function(c,b,d,v){var x,g=0|c.shape[0],m=0|c.shape[1],k=c.data,h=0|c.offset,M=0|c.stride[0],A=0|c.stride[1],C=h,L=0|-M,O=0,I=0|-A,R=0,U=-M-A|0,B=0,G=0|M,N=A-M*g|0,j=0,V=0,H=0,ee=2*g|0,Q=u(ee),X=u(ee),Y=0,K=0,te=-1,ae=-1,oe=0,se=0|-g,fe=0|g,ye=0,pe=-g-1|0,de=g-1|0,he=0,xe=0,Re=0;for(j=0;j0){if(V=1,Q[Y++]=a(k[C],b,d,v),C+=G,g>0)for(j=1,x=k[C],K=Q[Y]=a(x,b,d,v),oe=Q[Y+te],ye=Q[Y+se],he=Q[Y+pe],K===oe&&K===ye&&K===he||(O=k[C+L],R=k[C+I],B=k[C+U],n(j,V,x,O,R,B,K,oe,ye,he,b,d,v),xe=X[Y]=H++),Y+=1,C+=G,j=2;j0)for(j=1,x=k[C],K=Q[Y]=a(x,b,d,v),oe=Q[Y+te],ye=Q[Y+se],he=Q[Y+pe],K===oe&&K===ye&&K===he||(O=k[C+L],R=k[C+I],B=k[C+U],n(j,V,x,O,R,B,K,oe,ye,he,b,d,v),xe=X[Y]=H++,he!==ye&&o(X[Y+se],xe,R,B,ye,he,b,d,v)),Y+=1,C+=G,j=2;j0){if(j=1,Q[Y++]=a(k[C],b,d,v),C+=G,m>0)for(V=1,x=k[C],K=Q[Y]=a(x,b,d,v),ye=Q[Y+se],oe=Q[Y+te],he=Q[Y+pe],K===ye&&K===oe&&K===he||(O=k[C+L],R=k[C+I],B=k[C+U],n(j,V,x,O,R,B,K,ye,oe,he,b,d,v),xe=X[Y]=H++),Y+=1,C+=G,V=2;V0)for(V=1,x=k[C],K=Q[Y]=a(x,b,d,v),ye=Q[Y+se],oe=Q[Y+te],he=Q[Y+pe],K===ye&&K===oe&&K===he||(O=k[C+L],R=k[C+I],B=k[C+U],n(j,V,x,O,R,B,K,ye,oe,he,b,d,v),xe=X[Y]=H++,he!==ye&&o(X[Y+se],xe,B,O,he,ye,b,d,v)),Y+=1,C+=G,V=2;V2&&C[1]>2&&h(A.pick(-1,-1).lo(1,1).hi(C[0]-2,C[1]-2),M.pick(-1,-1,0).lo(1,1).hi(C[0]-2,C[1]-2),M.pick(-1,-1,1).lo(1,1).hi(C[0]-2,C[1]-2)),C[1]>2&&(k(A.pick(0,-1).lo(1).hi(C[1]-2),M.pick(0,-1,1).lo(1).hi(C[1]-2)),m(M.pick(0,-1,0).lo(1).hi(C[1]-2))),C[1]>2&&(k(A.pick(C[0]-1,-1).lo(1).hi(C[1]-2),M.pick(C[0]-1,-1,1).lo(1).hi(C[1]-2)),m(M.pick(C[0]-1,-1,0).lo(1).hi(C[1]-2))),C[0]>2&&(k(A.pick(-1,0).lo(1).hi(C[0]-2),M.pick(-1,0,0).lo(1).hi(C[0]-2)),m(M.pick(-1,0,1).lo(1).hi(C[0]-2))),C[0]>2&&(k(A.pick(-1,C[1]-1).lo(1).hi(C[0]-2),M.pick(-1,C[1]-1,0).lo(1).hi(C[0]-2)),m(M.pick(-1,C[1]-1,1).lo(1).hi(C[0]-2))),M.set(0,0,0,0),M.set(0,0,1,0),M.set(C[0]-1,0,0,0),M.set(C[0]-1,0,1,0),M.set(0,C[1]-1,0,0),M.set(0,C[1]-1,1,0),M.set(C[0]-1,C[1]-1,0,0),M.set(C[0]-1,C[1]-1,1,0),M}}f.exports=function(g,m,k){return Array.isArray(k)||(k=i(m.dimension,typeof k=="string"?k:"clamp")),m.size===0?g:m.dimension===0?(g.set(0),g):function(h){var M=h.join();if(O=c[M])return O;for(var A=h.length,C=[b,d],L=1;L<=A;++L)C.push(v(L));var O=x.apply(void 0,C);return c[M]=O,O}(k)(g,m)}},3581:function(f){function l(n,o){var a=Math.floor(o),u=o-a,p=0<=a&&a0;){U<64?(g=U,U=0):(g=64,U-=64);for(var B=0|a[1];B>0;){B<64?(m=B,B=0):(m=64,B-=64),c=I+U*h+B*M,v=R+U*C+B*L;var G=0,N=0,j=0,V=A,H=h-k*A,ee=M-g*h,Q=O,X=C-k*O,Y=L-g*C;for(j=0;j0;){L<64?(g=L,L=0):(g=64,L-=64);for(var O=0|a[0];O>0;){O<64?(x=O,O=0):(x=64,O-=64),c=A+L*k+O*m,v=C+L*M+O*h;var I=0,R=0,U=k,B=m-g*k,G=M,N=h-g*M;for(R=0;R0;){R<64?(m=R,R=0):(m=64,R-=64);for(var U=0|a[0];U>0;){U<64?(x=U,U=0):(x=64,U-=64);for(var B=0|a[1];B>0;){B<64?(g=B,B=0):(g=64,B-=64),c=O+R*M+U*k+B*h,v=I+R*L+U*A+B*C;var G=0,N=0,j=0,V=M,H=k-m*M,ee=h-x*k,Q=L,X=A-m*L,Y=C-x*A;for(j=0;jc;){R=0,U=O-x;t:for(I=0;IG)break t;U+=M,R+=A}for(R=O,U=O-x,I=0;I>1,Ce=Me-Re,ne=Me+Re,ue=we,me=Ce,Te=Me,Ee=ne,Ue=Ae,De=d+1,je=v-1,ge=!0,be=0,Se=0,Ne=0,Ye=M,Ze=p(Ye),st=p(Ye);ee=m*ue,Q=m*me,xe=g;e:for(H=0;H0){I=ue,ue=me,me=I;break e}if(Ne<0)break e;xe+=C}ee=m*Ee,Q=m*Ue,xe=g;e:for(H=0;H0){I=Ee,Ee=Ue,Ue=I;break e}if(Ne<0)break e;xe+=C}ee=m*ue,Q=m*Te,xe=g;e:for(H=0;H0){I=ue,ue=Te,Te=I;break e}if(Ne<0)break e;xe+=C}ee=m*me,Q=m*Te,xe=g;e:for(H=0;H0){I=me,me=Te,Te=I;break e}if(Ne<0)break e;xe+=C}ee=m*ue,Q=m*Ee,xe=g;e:for(H=0;H0){I=ue,ue=Ee,Ee=I;break e}if(Ne<0)break e;xe+=C}ee=m*Te,Q=m*Ee,xe=g;e:for(H=0;H0){I=Te,Te=Ee,Ee=I;break e}if(Ne<0)break e;xe+=C}ee=m*me,Q=m*Ue,xe=g;e:for(H=0;H0){I=me,me=Ue,Ue=I;break e}if(Ne<0)break e;xe+=C}ee=m*me,Q=m*Te,xe=g;e:for(H=0;H0){I=me,me=Te,Te=I;break e}if(Ne<0)break e;xe+=C}ee=m*Ee,Q=m*Ue,xe=g;e:for(H=0;H0){I=Ee,Ee=Ue,Ue=I;break e}if(Ne<0)break e;xe+=C}for(ee=m*ue,Q=m*me,X=m*Te,Y=m*Ee,K=m*Ue,te=m*we,ae=m*Me,oe=m*Ae,he=0,xe=g,H=0;H0)){if(Ne<0){for(ee=m*G,Q=m*De,X=m*je,xe=g,H=0;H0)for(;;){for(N=g+je*m,he=0,H=0;H0)){for(N=g+je*m,he=0,H=0;HAe){e:for(;;){for(N=g+De*m,he=0,xe=g,H=0;H1&&k?M(m,k[0],k[1]):M(m)}(u,p,d);return b(d,v)}},8729:function(f,l,t){var i=t(8139),r={};f.exports=function(n){var o=n.order,a=n.dtype,u=[o,a].join(":"),p=r[u];return p||(r[u]=p=i(o,a)),p(n),n}},5050:function(f,l,t){var i=t(4780),r=typeof Float64Array<"u";function n(c,b){return c[0]-b[0]}function o(){var c,b=this.stride,d=new Array(b.length);for(c=0;c=0&&(m+=M*(k=0|g),h-=k),new v(this.data,h,M,m)},x.step=function(g){var m=this.shape[0],k=this.stride[0],h=this.offset,M=0,A=Math.ceil;return typeof g=="number"&&((M=0|g)<0?(h+=k*(m-1),m=A(-m/M)):m=A(m/M),k*=M),new v(this.data,m,k,h)},x.transpose=function(g){g=g===void 0?0:0|g;var m=this.shape,k=this.stride;return new v(this.data,m[g],k[g],this.offset)},x.pick=function(g){var m=[],k=[],h=this.offset;return typeof g=="number"&&g>=0?h=h+this.stride[0]*g|0:(m.push(this.shape[0]),k.push(this.stride[0])),(0,b[m.length+1])(this.data,m,k,h)},function(g,m,k,h){return new v(g,m[0],k[0],h)}},2:function(c,b,d){function v(g,m,k,h,M,A){this.data=g,this.shape=[m,k],this.stride=[h,M],this.offset=0|A}var x=v.prototype;return x.dtype=c,x.dimension=2,Object.defineProperty(x,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(x,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),x.set=function(g,m,k){return c==="generic"?this.data.set(this.offset+this.stride[0]*g+this.stride[1]*m,k):this.data[this.offset+this.stride[0]*g+this.stride[1]*m]=k},x.get=function(g,m){return c==="generic"?this.data.get(this.offset+this.stride[0]*g+this.stride[1]*m):this.data[this.offset+this.stride[0]*g+this.stride[1]*m]},x.index=function(g,m){return this.offset+this.stride[0]*g+this.stride[1]*m},x.hi=function(g,m){return new v(this.data,typeof g!="number"||g<0?this.shape[0]:0|g,typeof m!="number"||m<0?this.shape[1]:0|m,this.stride[0],this.stride[1],this.offset)},x.lo=function(g,m){var k=this.offset,h=0,M=this.shape[0],A=this.shape[1],C=this.stride[0],L=this.stride[1];return typeof g=="number"&&g>=0&&(k+=C*(h=0|g),M-=h),typeof m=="number"&&m>=0&&(k+=L*(h=0|m),A-=h),new v(this.data,M,A,C,L,k)},x.step=function(g,m){var k=this.shape[0],h=this.shape[1],M=this.stride[0],A=this.stride[1],C=this.offset,L=0,O=Math.ceil;return typeof g=="number"&&((L=0|g)<0?(C+=M*(k-1),k=O(-k/L)):k=O(k/L),M*=L),typeof m=="number"&&((L=0|m)<0?(C+=A*(h-1),h=O(-h/L)):h=O(h/L),A*=L),new v(this.data,k,h,M,A,C)},x.transpose=function(g,m){g=g===void 0?0:0|g,m=m===void 0?1:0|m;var k=this.shape,h=this.stride;return new v(this.data,k[g],k[m],h[g],h[m],this.offset)},x.pick=function(g,m){var k=[],h=[],M=this.offset;return typeof g=="number"&&g>=0?M=M+this.stride[0]*g|0:(k.push(this.shape[0]),h.push(this.stride[0])),typeof m=="number"&&m>=0?M=M+this.stride[1]*m|0:(k.push(this.shape[1]),h.push(this.stride[1])),(0,b[k.length+1])(this.data,k,h,M)},function(g,m,k,h){return new v(g,m[0],m[1],k[0],k[1],h)}},3:function(c,b,d){function v(g,m,k,h,M,A,C,L){this.data=g,this.shape=[m,k,h],this.stride=[M,A,C],this.offset=0|L}var x=v.prototype;return x.dtype=c,x.dimension=3,Object.defineProperty(x,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(x,"order",{get:function(){var g=Math.abs(this.stride[0]),m=Math.abs(this.stride[1]),k=Math.abs(this.stride[2]);return g>m?m>k?[2,1,0]:g>k?[1,2,0]:[1,0,2]:g>k?[2,0,1]:k>m?[0,1,2]:[0,2,1]}}),x.set=function(g,m,k,h){return c==="generic"?this.data.set(this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k,h):this.data[this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k]=h},x.get=function(g,m,k){return c==="generic"?this.data.get(this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k):this.data[this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k]},x.index=function(g,m,k){return this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k},x.hi=function(g,m,k){return new v(this.data,typeof g!="number"||g<0?this.shape[0]:0|g,typeof m!="number"||m<0?this.shape[1]:0|m,typeof k!="number"||k<0?this.shape[2]:0|k,this.stride[0],this.stride[1],this.stride[2],this.offset)},x.lo=function(g,m,k){var h=this.offset,M=0,A=this.shape[0],C=this.shape[1],L=this.shape[2],O=this.stride[0],I=this.stride[1],R=this.stride[2];return typeof g=="number"&&g>=0&&(h+=O*(M=0|g),A-=M),typeof m=="number"&&m>=0&&(h+=I*(M=0|m),C-=M),typeof k=="number"&&k>=0&&(h+=R*(M=0|k),L-=M),new v(this.data,A,C,L,O,I,R,h)},x.step=function(g,m,k){var h=this.shape[0],M=this.shape[1],A=this.shape[2],C=this.stride[0],L=this.stride[1],O=this.stride[2],I=this.offset,R=0,U=Math.ceil;return typeof g=="number"&&((R=0|g)<0?(I+=C*(h-1),h=U(-h/R)):h=U(h/R),C*=R),typeof m=="number"&&((R=0|m)<0?(I+=L*(M-1),M=U(-M/R)):M=U(M/R),L*=R),typeof k=="number"&&((R=0|k)<0?(I+=O*(A-1),A=U(-A/R)):A=U(A/R),O*=R),new v(this.data,h,M,A,C,L,O,I)},x.transpose=function(g,m,k){g=g===void 0?0:0|g,m=m===void 0?1:0|m,k=k===void 0?2:0|k;var h=this.shape,M=this.stride;return new v(this.data,h[g],h[m],h[k],M[g],M[m],M[k],this.offset)},x.pick=function(g,m,k){var h=[],M=[],A=this.offset;return typeof g=="number"&&g>=0?A=A+this.stride[0]*g|0:(h.push(this.shape[0]),M.push(this.stride[0])),typeof m=="number"&&m>=0?A=A+this.stride[1]*m|0:(h.push(this.shape[1]),M.push(this.stride[1])),typeof k=="number"&&k>=0?A=A+this.stride[2]*k|0:(h.push(this.shape[2]),M.push(this.stride[2])),(0,b[h.length+1])(this.data,h,M,A)},function(g,m,k,h){return new v(g,m[0],m[1],m[2],k[0],k[1],k[2],h)}},4:function(c,b,d){function v(g,m,k,h,M,A,C,L,O,I){this.data=g,this.shape=[m,k,h,M],this.stride=[A,C,L,O],this.offset=0|I}var x=v.prototype;return x.dtype=c,x.dimension=4,Object.defineProperty(x,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(x,"order",{get:d}),x.set=function(g,m,k,h,M){return c==="generic"?this.data.set(this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h,M):this.data[this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h]=M},x.get=function(g,m,k,h){return c==="generic"?this.data.get(this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h):this.data[this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h]},x.index=function(g,m,k,h){return this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h},x.hi=function(g,m,k,h){return new v(this.data,typeof g!="number"||g<0?this.shape[0]:0|g,typeof m!="number"||m<0?this.shape[1]:0|m,typeof k!="number"||k<0?this.shape[2]:0|k,typeof h!="number"||h<0?this.shape[3]:0|h,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},x.lo=function(g,m,k,h){var M=this.offset,A=0,C=this.shape[0],L=this.shape[1],O=this.shape[2],I=this.shape[3],R=this.stride[0],U=this.stride[1],B=this.stride[2],G=this.stride[3];return typeof g=="number"&&g>=0&&(M+=R*(A=0|g),C-=A),typeof m=="number"&&m>=0&&(M+=U*(A=0|m),L-=A),typeof k=="number"&&k>=0&&(M+=B*(A=0|k),O-=A),typeof h=="number"&&h>=0&&(M+=G*(A=0|h),I-=A),new v(this.data,C,L,O,I,R,U,B,G,M)},x.step=function(g,m,k,h){var M=this.shape[0],A=this.shape[1],C=this.shape[2],L=this.shape[3],O=this.stride[0],I=this.stride[1],R=this.stride[2],U=this.stride[3],B=this.offset,G=0,N=Math.ceil;return typeof g=="number"&&((G=0|g)<0?(B+=O*(M-1),M=N(-M/G)):M=N(M/G),O*=G),typeof m=="number"&&((G=0|m)<0?(B+=I*(A-1),A=N(-A/G)):A=N(A/G),I*=G),typeof k=="number"&&((G=0|k)<0?(B+=R*(C-1),C=N(-C/G)):C=N(C/G),R*=G),typeof h=="number"&&((G=0|h)<0?(B+=U*(L-1),L=N(-L/G)):L=N(L/G),U*=G),new v(this.data,M,A,C,L,O,I,R,U,B)},x.transpose=function(g,m,k,h){g=g===void 0?0:0|g,m=m===void 0?1:0|m,k=k===void 0?2:0|k,h=h===void 0?3:0|h;var M=this.shape,A=this.stride;return new v(this.data,M[g],M[m],M[k],M[h],A[g],A[m],A[k],A[h],this.offset)},x.pick=function(g,m,k,h){var M=[],A=[],C=this.offset;return typeof g=="number"&&g>=0?C=C+this.stride[0]*g|0:(M.push(this.shape[0]),A.push(this.stride[0])),typeof m=="number"&&m>=0?C=C+this.stride[1]*m|0:(M.push(this.shape[1]),A.push(this.stride[1])),typeof k=="number"&&k>=0?C=C+this.stride[2]*k|0:(M.push(this.shape[2]),A.push(this.stride[2])),typeof h=="number"&&h>=0?C=C+this.stride[3]*h|0:(M.push(this.shape[3]),A.push(this.stride[3])),(0,b[M.length+1])(this.data,M,A,C)},function(g,m,k,h){return new v(g,m[0],m[1],m[2],m[3],k[0],k[1],k[2],k[3],h)}},5:function(c,b,d){function v(g,m,k,h,M,A,C,L,O,I,R,U){this.data=g,this.shape=[m,k,h,M,A],this.stride=[C,L,O,I,R],this.offset=0|U}var x=v.prototype;return x.dtype=c,x.dimension=5,Object.defineProperty(x,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(x,"order",{get:d}),x.set=function(g,m,k,h,M,A){return c==="generic"?this.data.set(this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h+this.stride[4]*M,A):this.data[this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h+this.stride[4]*M]=A},x.get=function(g,m,k,h,M){return c==="generic"?this.data.get(this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h+this.stride[4]*M):this.data[this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h+this.stride[4]*M]},x.index=function(g,m,k,h,M){return this.offset+this.stride[0]*g+this.stride[1]*m+this.stride[2]*k+this.stride[3]*h+this.stride[4]*M},x.hi=function(g,m,k,h,M){return new v(this.data,typeof g!="number"||g<0?this.shape[0]:0|g,typeof m!="number"||m<0?this.shape[1]:0|m,typeof k!="number"||k<0?this.shape[2]:0|k,typeof h!="number"||h<0?this.shape[3]:0|h,typeof M!="number"||M<0?this.shape[4]:0|M,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},x.lo=function(g,m,k,h,M){var A=this.offset,C=0,L=this.shape[0],O=this.shape[1],I=this.shape[2],R=this.shape[3],U=this.shape[4],B=this.stride[0],G=this.stride[1],N=this.stride[2],j=this.stride[3],V=this.stride[4];return typeof g=="number"&&g>=0&&(A+=B*(C=0|g),L-=C),typeof m=="number"&&m>=0&&(A+=G*(C=0|m),O-=C),typeof k=="number"&&k>=0&&(A+=N*(C=0|k),I-=C),typeof h=="number"&&h>=0&&(A+=j*(C=0|h),R-=C),typeof M=="number"&&M>=0&&(A+=V*(C=0|M),U-=C),new v(this.data,L,O,I,R,U,B,G,N,j,V,A)},x.step=function(g,m,k,h,M){var A=this.shape[0],C=this.shape[1],L=this.shape[2],O=this.shape[3],I=this.shape[4],R=this.stride[0],U=this.stride[1],B=this.stride[2],G=this.stride[3],N=this.stride[4],j=this.offset,V=0,H=Math.ceil;return typeof g=="number"&&((V=0|g)<0?(j+=R*(A-1),A=H(-A/V)):A=H(A/V),R*=V),typeof m=="number"&&((V=0|m)<0?(j+=U*(C-1),C=H(-C/V)):C=H(C/V),U*=V),typeof k=="number"&&((V=0|k)<0?(j+=B*(L-1),L=H(-L/V)):L=H(L/V),B*=V),typeof h=="number"&&((V=0|h)<0?(j+=G*(O-1),O=H(-O/V)):O=H(O/V),G*=V),typeof M=="number"&&((V=0|M)<0?(j+=N*(I-1),I=H(-I/V)):I=H(I/V),N*=V),new v(this.data,A,C,L,O,I,R,U,B,G,N,j)},x.transpose=function(g,m,k,h,M){g=g===void 0?0:0|g,m=m===void 0?1:0|m,k=k===void 0?2:0|k,h=h===void 0?3:0|h,M=M===void 0?4:0|M;var A=this.shape,C=this.stride;return new v(this.data,A[g],A[m],A[k],A[h],A[M],C[g],C[m],C[k],C[h],C[M],this.offset)},x.pick=function(g,m,k,h,M){var A=[],C=[],L=this.offset;return typeof g=="number"&&g>=0?L=L+this.stride[0]*g|0:(A.push(this.shape[0]),C.push(this.stride[0])),typeof m=="number"&&m>=0?L=L+this.stride[1]*m|0:(A.push(this.shape[1]),C.push(this.stride[1])),typeof k=="number"&&k>=0?L=L+this.stride[2]*k|0:(A.push(this.shape[2]),C.push(this.stride[2])),typeof h=="number"&&h>=0?L=L+this.stride[3]*h|0:(A.push(this.shape[3]),C.push(this.stride[3])),typeof M=="number"&&M>=0?L=L+this.stride[4]*M|0:(A.push(this.shape[4]),C.push(this.stride[4])),(0,b[A.length+1])(this.data,A,C,L)},function(g,m,k,h){return new v(g,m[0],m[1],m[2],m[3],m[4],k[0],k[1],k[2],k[3],k[4],h)}}};function u(c,b){var d=b===-1?"T":String(b),v=a[d];return b===-1?v(c):b===0?v(c,p[c][0]):v(c,p[c],o)}var p={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};f.exports=function(c,b,d,v){if(c===void 0)return(0,p.array[0])([]);typeof c=="number"&&(c=[c]),b===void 0&&(b=[c.length]);var x=b.length;if(d===void 0){d=new Array(x);for(var g=x-1,m=1;g>=0;--g)d[g]=m,m*=b[g]}if(v===void 0)for(v=0,g=0;g>>0;f.exports=function(o,a){if(isNaN(o)||isNaN(a))return NaN;if(o===a)return o;if(o===0)return a<0?-r:r;var u=i.hi(o),p=i.lo(o);return a>o==o>0?p===n?(u+=1,p=0):p+=1:p===0?(p=n,u-=1):p-=1,i.pack(p,u)}},115:function(f,l){l.vertexNormals=function(t,i,r){for(var n=i.length,o=new Array(n),a=r===void 0?1e-6:r,u=0;ua){var L=o[b],O=1/Math.sqrt(h*A);for(C=0;C<3;++C){var I=(C+1)%3,R=(C+2)%3;L[C]+=O*(M[I]*k[R]-M[R]*k[I])}}}for(u=0;ua)for(O=1/Math.sqrt(U),C=0;C<3;++C)L[C]*=O;else for(C=0;C<3;++C)L[C]=0}return o},l.faceNormals=function(t,i,r){for(var n=t.length,o=new Array(n),a=r===void 0?1e-6:r,u=0;ua?1/Math.sqrt(g):0,b=0;b<3;++b)x[b]*=g;o[u]=x}return o}},567:function(f){f.exports=function(l,t,i,r,n,o,a,u,p,c){var b=t+o+c;if(d>0){var d=Math.sqrt(b+1);l[0]=.5*(a-p)/d,l[1]=.5*(u-r)/d,l[2]=.5*(i-o)/d,l[3]=.5*d}else{var v=Math.max(t,o,c);d=Math.sqrt(2*v-b+1),t>=v?(l[0]=.5*d,l[1]=.5*(n+i)/d,l[2]=.5*(u+r)/d,l[3]=.5*(a-p)/d):o>=v?(l[0]=.5*(i+n)/d,l[1]=.5*d,l[2]=.5*(p+a)/d,l[3]=.5*(u-r)/d):(l[0]=.5*(r+u)/d,l[1]=.5*(a+p)/d,l[2]=.5*d,l[3]=.5*(i-n)/d)}return l}},7774:function(f,l,t){f.exports=function(v){var x=(v=v||{}).center||[0,0,0],g=v.rotation||[0,0,0,1],m=v.radius||1;x=[].slice.call(x,0,3),c(g=[].slice.call(g,0,4),g);var k=new b(g,x,Math.log(m));return k.setDistanceLimits(v.zoomMin,v.zoomMax),("eye"in v||"up"in v)&&k.lookAt(0,v.eye,v.center,v.up),k};var i=t(8444),r=t(3012),n=t(5950),o=t(7437),a=t(567);function u(v,x,g){return Math.sqrt(Math.pow(v,2)+Math.pow(x,2)+Math.pow(g,2))}function p(v,x,g,m){return Math.sqrt(Math.pow(v,2)+Math.pow(x,2)+Math.pow(g,2)+Math.pow(m,2))}function c(v,x){var g=x[0],m=x[1],k=x[2],h=x[3],M=p(g,m,k,h);M>1e-6?(v[0]=g/M,v[1]=m/M,v[2]=k/M,v[3]=h/M):(v[0]=v[1]=v[2]=0,v[3]=1)}function b(v,x,g){this.radius=i([g]),this.center=i(x),this.rotation=i(v),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var d=b.prototype;d.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},d.recalcMatrix=function(v){this.radius.curve(v),this.center.curve(v),this.rotation.curve(v);var x=this.computedRotation;c(x,x);var g=this.computedMatrix;n(g,x);var m=this.computedCenter,k=this.computedEye,h=this.computedUp,M=Math.exp(this.computedRadius[0]);k[0]=m[0]+M*g[2],k[1]=m[1]+M*g[6],k[2]=m[2]+M*g[10],h[0]=g[1],h[1]=g[5],h[2]=g[9];for(var A=0;A<3;++A){for(var C=0,L=0;L<3;++L)C+=g[A+4*L]*k[L];g[12+A]=-C}},d.getMatrix=function(v,x){this.recalcMatrix(v);var g=this.computedMatrix;if(x){for(var m=0;m<16;++m)x[m]=g[m];return x}return g},d.idle=function(v){this.center.idle(v),this.radius.idle(v),this.rotation.idle(v)},d.flush=function(v){this.center.flush(v),this.radius.flush(v),this.rotation.flush(v)},d.pan=function(v,x,g,m){x=x||0,g=g||0,m=m||0,this.recalcMatrix(v);var k=this.computedMatrix,h=k[1],M=k[5],A=k[9],C=u(h,M,A);h/=C,M/=C,A/=C;var L=k[0],O=k[4],I=k[8],R=L*h+O*M+I*A,U=u(L-=h*R,O-=M*R,I-=A*R);L/=U,O/=U,I/=U,k[2],k[6],k[10];var B=L*x+h*g,G=O*x+M*g,N=I*x+A*g;this.center.move(v,B,G,N);var j=Math.exp(this.computedRadius[0]);j=Math.max(1e-4,j+m),this.radius.set(v,Math.log(j))},d.rotate=function(v,x,g,m){this.recalcMatrix(v),x=x||0,g=g||0;var k=this.computedMatrix,h=k[0],M=k[4],A=k[8],C=k[1],L=k[5],O=k[9],I=k[2],R=k[6],U=k[10],B=x*h+g*C,G=x*M+g*L,N=x*A+g*O,j=-(R*N-U*G),V=-(U*B-I*N),H=-(I*G-R*B),ee=Math.sqrt(Math.max(0,1-Math.pow(j,2)-Math.pow(V,2)-Math.pow(H,2))),Q=p(j,V,H,ee);Q>1e-6?(j/=Q,V/=Q,H/=Q,ee/=Q):(j=V=H=0,ee=1);var X=this.computedRotation,Y=X[0],K=X[1],te=X[2],ae=X[3],oe=Y*ee+ae*j+K*H-te*V,se=K*ee+ae*V+te*j-Y*H,fe=te*ee+ae*H+Y*V-K*j,ye=ae*ee-Y*j-K*V-te*H;if(m){j=I,V=R,H=U;var pe=Math.sin(m)/u(j,V,H);j*=pe,V*=pe,H*=pe,ye=ye*(ee=Math.cos(x))-(oe=oe*ee+ye*j+se*H-fe*V)*j-(se=se*ee+ye*V+fe*j-oe*H)*V-(fe=fe*ee+ye*H+oe*V-se*j)*H}var de=p(oe,se,fe,ye);de>1e-6?(oe/=de,se/=de,fe/=de,ye/=de):(oe=se=fe=0,ye=1),this.rotation.set(v,oe,se,fe,ye)},d.lookAt=function(v,x,g,m){this.recalcMatrix(v),g=g||this.computedCenter,x=x||this.computedEye,m=m||this.computedUp;var k=this.computedMatrix;r(k,x,g,m);var h=this.computedRotation;a(h,k[0],k[1],k[2],k[4],k[5],k[6],k[8],k[9],k[10]),c(h,h),this.rotation.set(v,h[0],h[1],h[2],h[3]);for(var M=0,A=0;A<3;++A)M+=Math.pow(g[A]-x[A],2);this.radius.set(v,.5*Math.log(Math.max(M,1e-6))),this.center.set(v,g[0],g[1],g[2])},d.translate=function(v,x,g,m){this.center.move(v,x||0,g||0,m||0)},d.setMatrix=function(v,x){var g=this.computedRotation;a(g,x[0],x[1],x[2],x[4],x[5],x[6],x[8],x[9],x[10]),c(g,g),this.rotation.set(v,g[0],g[1],g[2],g[3]);var m=this.computedMatrix;o(m,x);var k=m[15];if(Math.abs(k)>1e-6){var h=m[12]/k,M=m[13]/k,A=m[14]/k;this.recalcMatrix(v);var C=Math.exp(this.computedRadius[0]);this.center.set(v,h-m[2]*C,M-m[6]*C,A-m[10]*C),this.radius.idle(v)}else this.center.idle(v),this.radius.idle(v)},d.setDistance=function(v,x){x>0&&this.radius.set(v,Math.log(x))},d.setDistanceLimits=function(v,x){v=v>0?Math.log(v):-1/0,x=x>0?Math.log(x):1/0,x=Math.max(x,v),this.radius.bounds[0][0]=v,this.radius.bounds[1][0]=x},d.getDistanceLimits=function(v){var x=this.radius.bounds;return v?(v[0]=Math.exp(x[0][0]),v[1]=Math.exp(x[1][0]),v):[Math.exp(x[0][0]),Math.exp(x[1][0])]},d.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},d.fromJSON=function(v){var x=this.lastT(),g=v.center;g&&this.center.set(x,g[0],g[1],g[2]);var m=v.rotation;m&&this.rotation.set(x,m[0],m[1],m[2],m[3]);var k=v.distance;k&&k>0&&this.radius.set(x,Math.log(k)),this.setDistanceLimits(v.zoomMin,v.zoomMax)}},4930:function(f,l,t){var i=t(6184);f.exports=function(r,n,o){return i(o=o!==void 0?o+"":" ",n)+r}},4405:function(f){f.exports=function(l,t){t||(t=[0,""]),l=String(l);var i=parseFloat(l,10);return t[0]=i,t[1]=l.match(/[\d.\-\+]*\s*(.*)/)[1]||"",t}},4166:function(f,l,t){f.exports=function(r,n){for(var o=0|n.length,a=r.length,u=[new Array(o),new Array(o)],p=0;p0){L=u[R][A][0],I=R;break}O=L[1^I];for(var U=0;U<2;++U)for(var B=u[U][A],G=0;G0&&(L=N,O=j,I=U)}return C||L&&d(L,I),O}function x(M,A){var C=u[A][M][0],L=[M];d(C,A);for(var O=C[1^A];;){for(;O!==M;)L.push(O),O=v(L[L.length-2],O,!1);if(u[0][M].length+u[1][M].length===0)break;var I=L[L.length-1],R=M,U=L[1],B=v(I,R,!0);if(i(n[I],n[R],n[U],n[B])<0)break;L.push(M),O=v(I,R)}return L}function g(M,A){return A[1]===A[A.length-1]}for(p=0;p0;){u[0][p].length;var h=x(p,m);g(0,h)?k.push.apply(k,h):(k.length>0&&b.push(k),k=h)}k.length>0&&b.push(k)}return b};var i=t(9398)},3959:function(f,l,t){f.exports=function(r,n){for(var o=i(r,n.length),a=new Array(n.length),u=new Array(n.length),p=[],c=0;c0;){var d=p.pop();a[d]=!1;var v=o[d];for(c=0;c0})).length,M=new Array(h),A=new Array(h);for(m=0;m0;){var se=ae.pop(),fe=V[se];u(fe,function(Re,we){return Re-we});var ye,pe=fe.length,de=oe[se];if(de===0){var he=k[se];ye=[he]}for(m=0;m=0||(oe[xe]=1^de,ae.push(xe),de===0&&(te(he=k[xe])||(he.reverse(),ye.push(he))))}de===0&&v.push(ye)}return v};var i=t(8348),r=t(4166),n=t(211),o=t(9660),a=t(9662),u=t(1215),p=t(3959);function c(b,d){for(var v=new Array(b),x=0;x0&&R[B]===U[0]))return 1;G=I[B-1]}for(var N=1;G;){var j=G.key,V=i(U,j[0],j[1]);if(j[0][0]0))return 0;N=-1,G=G.right}else if(V>0)G=G.left;else{if(!(V<0))return 0;N=1,G=G.right}}return N}}(L.slabs,L.coordinates);return v.length===0?O:function(I,R){return function(U){return I(U[0],U[1])?0:R(U)}}(u(v),O)};var i=t(417)[3],r=t(4385),n=t(9014),o=t(5070);function a(){return!0}function u(c){for(var b={},d=0;d=c?(R=1,M=c+2*v+g):M=v*(R=-v/c)+g):(R=0,x>=0?(U=0,M=g):-x>=d?(U=1,M=d+2*x+g):M=x*(U=-x/d)+g);else if(U<0)U=0,v>=0?(R=0,M=g):-v>=c?(R=1,M=c+2*v+g):M=v*(R=-v/c)+g;else{var B=1/I;M=(R*=B)*(c*R+b*(U*=B)+2*v)+U*(b*R+d*U+2*x)+g}else R<0?(C=d+x)>(A=b+v)?(L=C-A)>=(O=c-2*b+d)?(R=1,U=0,M=c+2*v+g):M=(R=L/O)*(c*R+b*(U=1-R)+2*v)+U*(b*R+d*U+2*x)+g:(R=0,C<=0?(U=1,M=d+2*x+g):x>=0?(U=0,M=g):M=x*(U=-x/d)+g):U<0?(C=c+v)>(A=b+x)?(L=C-A)>=(O=c-2*b+d)?(U=1,R=0,M=d+2*x+g):M=(R=1-(U=L/O))*(c*R+b*U+2*v)+U*(b*R+d*U+2*x)+g:(U=0,C<=0?(R=1,M=c+2*v+g):v>=0?(R=0,M=g):M=v*(R=-v/c)+g):(L=d+x-b-v)<=0?(R=0,U=1,M=d+2*x+g):L>=(O=c-2*b+d)?(R=1,U=0,M=c+2*v+g):M=(R=L/O)*(c*R+b*(U=1-R)+2*v)+U*(b*R+d*U+2*x)+g;var G=1-R-U;for(p=0;p0){var d=o[u-1];if(i(c,d)===0&&n(d)!==b){u-=1;continue}}o[u++]=c}}return o.length=u,o}},6184:function(f){var l,t="";f.exports=function(i,r){if(typeof i!="string")throw new TypeError("expected a string");if(r===1)return i;if(r===2)return i+i;var n=i.length*r;if(l!==i||l===void 0)l=i,t="";else if(t.length>=n)return t.substr(0,n);for(;n>t.length&&r>1;)1&r&&(t+=i),r>>=1,i+=i;return t=(t+=i).substr(0,n)}},8161:function(f,l,t){f.exports=t.g.performance&&t.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},402:function(f){f.exports=function(l){for(var t=l.length,i=l[l.length-1],r=t,n=t-2;n>=0;--n){var o=i,a=l[n];(p=a-((i=o+a)-o))&&(l[--r]=i,i=p)}var u=0;for(n=r;n0){if(C<=0)return L;M=A+C}else{if(!(A<0)||C>=0)return L;M=-(A+C)}var O=33306690738754716e-32*M;return L>=O||L<=-O?L:b(m,k,h)},function(m,k,h,M){var A=m[0]-M[0],C=k[0]-M[0],L=h[0]-M[0],O=m[1]-M[1],I=k[1]-M[1],R=h[1]-M[1],U=m[2]-M[2],B=k[2]-M[2],G=h[2]-M[2],N=C*R,j=L*I,V=L*O,H=A*R,ee=A*I,Q=C*O,X=U*(N-j)+B*(V-H)+G*(ee-Q),Y=7771561172376103e-31*((Math.abs(N)+Math.abs(j))*Math.abs(U)+(Math.abs(V)+Math.abs(H))*Math.abs(B)+(Math.abs(ee)+Math.abs(Q))*Math.abs(G));return X>Y||-X>Y?X:d(m,k,h,M)}];function x(m){var k=v[m.length];return k||(k=v[m.length]=c(m.length)),k.apply(void 0,m)}function g(m,k,h,M,A,C,L){return function(O,I,R,U,B){switch(arguments.length){case 0:case 1:return 0;case 2:return M(O,I);case 3:return A(O,I,R);case 4:return C(O,I,R,U);case 5:return L(O,I,R,U,B)}for(var G=new Array(arguments.length),N=0;N0&&p>0||u<0&&p<0)return!1;var c=i(o,r,n),b=i(a,r,n);return!(c>0&&b>0||c<0&&b<0)&&(u!==0||p!==0||c!==0||b!==0||function(d,v,x,g){for(var m=0;m<2;++m){var k=d[m],h=v[m],M=Math.min(k,h),A=Math.max(k,h),C=x[m],L=g[m],O=Math.min(C,L);if(Math.max(C,L)=r?(n=d,(p+=1)=r?(n=d,(p+=1)>1,d=r[2*b+1];if(d===u)return b;u>1,d=r[2*b+1];if(d===u)return b;u>1,d=r[2*b+1];if(d===u)return b;u0)-(r<0)},l.abs=function(r){var n=r>>31;return(r^n)-n},l.min=function(r,n){return n^(r^n)&-(r65535)<<4,n|=o=((r>>>=n)>255)<<3,n|=o=((r>>>=o)>15)<<2,(n|=o=((r>>>=o)>3)<<1)|(r>>>=o)>>1},l.log10=function(r){return r>=1e9?9:r>=1e8?8:r>=1e7?7:r>=1e6?6:r>=1e5?5:r>=1e4?4:r>=1e3?3:r>=100?2:r>=10?1:0},l.popCount=function(r){return 16843009*((r=(858993459&(r-=r>>>1&1431655765))+(r>>>2&858993459))+(r>>>4)&252645135)>>>24},l.countTrailingZeros=t,l.nextPow2=function(r){return r+=r===0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,1+((r|=r>>>8)|r>>>16)},l.prevPow2=function(r){return r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,(r|=r>>>16)-(r>>>1)},l.parity=function(r){return r^=r>>>16,r^=r>>>8,r^=r>>>4,27030>>>(r&=15)&1};var i=new Array(256);(function(r){for(var n=0;n<256;++n){var o=n,a=n,u=7;for(o>>>=1;o;o>>>=1)a<<=1,a|=1&o,--u;r[n]=a<>>8&255]<<16|i[r>>>16&255]<<8|i[r>>>24&255]},l.interleave2=function(r,n){return(r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)|r<<8))|r<<4))|r<<2))|r<<1))|(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n&=65535)|n<<8))|n<<4))|n<<2))|n<<1))<<1},l.deinterleave2=function(r,n){return(r=65535&((r=16711935&((r=252645135&((r=858993459&((r=r>>>n&1431655765)|r>>>1))|r>>>2))|r>>>4))|r>>>16))<<16>>16},l.interleave3=function(r,n,o){return r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2),(r|=(n=1227133513&((n=3272356035&((n=251719695&((n=4278190335&((n&=1023)|n<<16))|n<<8))|n<<4))|n<<2))<<1)|(o=1227133513&((o=3272356035&((o=251719695&((o=4278190335&((o&=1023)|o<<16))|o<<8))|o<<4))|o<<2))<<2},l.deinterleave3=function(r,n){return(r=1023&((r=4278190335&((r=251719695&((r=3272356035&((r=r>>>n&1227133513)|r>>>2))|r>>>4))|r>>>8))|r>>>16))<<22>>22},l.nextCombination=function(r){var n=r|r-1;return n+1|(~n&-~n)-1>>>t(r)+1}},6656:function(f,l,t){var i=t(9392),r=t(9521);function n(d,v){var x=d.length,g=d.length-v.length,m=Math.min;if(g)return g;switch(x){case 0:return 0;case 1:return d[0]-v[0];case 2:return(M=d[0]+d[1]-v[0]-v[1])||m(d[0],d[1])-m(v[0],v[1]);case 3:var k=d[0]+d[1],h=v[0]+v[1];if(M=k+d[2]-(h+v[2]))return M;var M,A=m(d[0],d[1]),C=m(v[0],v[1]);return(M=m(A,d[2])-m(C,v[2]))||m(A+d[2],k)-m(C+v[2],h);default:var L=d.slice(0);L.sort();var O=v.slice(0);O.sort();for(var I=0;I>1,h=n(d[k],v);h<=0?(h===0&&(m=k),x=k+1):h>0&&(g=k-1)}return m}function c(d,v){for(var x=new Array(d.length),g=0,m=x.length;g=d.length||n(d[R],k)!==0););}return x}function b(d,v){if(v<0)return[];for(var x=[],g=(1<>>C&1&&A.push(m[C]);v.push(A)}return a(v)},l.skeleton=b,l.boundary=function(d){for(var v=[],x=0,g=d.length;x>1:(Q>>1)-1}function L(Q){for(var X=A(Q);;){var Y=X,K=2*Q+1,te=2*(Q+1),ae=Q;if(K0;){var Y=C(Q);if(!(Y>=0&&X0){var Q=B[0];return M(0,N-1),N-=1,L(0),Q}return-1}function R(Q,X){var Y=B[Q];return d[Y]===X?Q:(d[Y]=-1/0,O(Q),I(),d[Y]=X,O((N+=1)-1))}function U(Q){if(!v[Q]){v[Q]=!0;var X=c[Q],Y=b[Q];c[Y]>=0&&(c[Y]=X),b[X]>=0&&(b[X]=Y),G[X]>=0&&R(G[X],h(X)),G[Y]>=0&&R(G[Y],h(Y))}}var B=[],G=new Array(u);for(x=0;x>1;x>=0;--x)L(x);for(;;){var j=I();if(j<0||d[j]>a)break;U(j)}var V=[];for(x=0;x=0&&Y>=0&&X!==Y){var K=G[X],te=G[Y];K!==te&&ee.push([K,te])}}),r.unique(r.normalize(ee)),{positions:V,edges:ee}};var i=t(417),r=t(6656)},6638:function(f,l,t){f.exports=function(n,o){var a,u,p,c;if(o[0][0]o[1][0]))return r(o,n);a=o[1],u=o[0]}if(n[0][0]n[1][0]))return-r(n,o);p=n[1],c=n[0]}var b=i(a,u,c),d=i(a,u,p);if(b<0){if(d<=0)return b}else if(b>0){if(d>=0)return b}else if(d)return d;if(b=i(c,p,u),d=i(c,p,a),b<0){if(d<=0)return b}else if(b>0){if(d>=0)return b}else if(d)return d;return u[0]-c[0]};var i=t(417);function r(n,o){var a,u,p,c;if(o[0][0]o[1][0])){var b=Math.min(n[0][1],n[1][1]),d=Math.max(n[0][1],n[1][1]),v=Math.min(o[0][1],o[1][1]),x=Math.max(o[0][1],o[1][1]);return dx?b-x:d-x}a=o[1],u=o[0]}n[0][1]0)if(v[0]!==k[1][0])x=d,d=d.right;else{if(M=p(d.right,v))return M;d=d.left}else{if(v[0]!==k[1][0])return d;var M;if(M=p(d.right,v))return M;d=d.left}}return x}function c(d,v,x,g){this.y=d,this.index=v,this.start=x,this.closed=g}function b(d,v,x,g){this.x=d,this.segment=v,this.create=x,this.index=g}a.prototype.castUp=function(d){var v=i.le(this.coordinates,d[0]);if(v<0)return-1;this.slabs[v];var x=p(this.slabs[v],d),g=-1;if(x&&(g=x.value),this.coordinates[v]===d[0]){var m=null;if(x&&(m=x.key),v>0){var k=p(this.slabs[v-1],d);k&&(m?o(k.key,m)>0&&(m=k.key,g=k.value):(g=k.value,m=k.key))}var h=this.horizontal[v];if(h.length>0){var M=i.ge(h,d[1],u);if(M=h.length)return g;A=h[M]}}if(A.start)if(m){var C=n(m[0],m[1],[d[0],A.y]);m[0][0]>m[1][0]&&(C=-C),C>0&&(g=A.index)}else g=A.index;else A.y!==d[1]&&(g=A.index)}}}return g}},4670:function(f,l,t){var i=t(9130),r=t(9662);function n(a,u){var p=r(i(a,u),[u[u.length-1]]);return p[p.length-1]}function o(a,u,p,c){var b=-u/(c-u);b<0?b=0:b>1&&(b=1);for(var d=1-b,v=a.length,x=new Array(v),g=0;g0||b>0&&g<0){var m=o(d,g,v,b);p.push(m),c.push(m.slice())}g<0?c.push(v.slice()):g>0?p.push(v.slice()):(p.push(v.slice()),c.push(v.slice())),b=g}return{positive:p,negative:c}},f.exports.positive=function(a,u){for(var p=[],c=n(a[a.length-1],u),b=a[a.length-1],d=a[0],v=0;v0||c>0&&x<0)&&p.push(o(b,x,d,c)),x>=0&&p.push(d.slice()),c=x}return p},f.exports.negative=function(a,u){for(var p=[],c=n(a[a.length-1],u),b=a[a.length-1],d=a[0],v=0;v0||c>0&&x<0)&&p.push(o(b,x,d,c)),x<=0&&p.push(d.slice()),c=x}return p}},8974:function(f,l,t){var i;(function(){var r={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function n(c){return a(p(c),arguments)}function o(c,b){return n.apply(null,[c].concat(b||[]))}function a(c,b){var d,v,x,g,m,k,h,M,A,C=1,L=c.length,O="";for(v=0;v=0),g.type){case"b":d=parseInt(d,10).toString(2);break;case"c":d=String.fromCharCode(parseInt(d,10));break;case"d":case"i":d=parseInt(d,10);break;case"j":d=JSON.stringify(d,null,g.width?parseInt(g.width):0);break;case"e":d=g.precision?parseFloat(d).toExponential(g.precision):parseFloat(d).toExponential();break;case"f":d=g.precision?parseFloat(d).toFixed(g.precision):parseFloat(d);break;case"g":d=g.precision?String(Number(d.toPrecision(g.precision))):parseFloat(d);break;case"o":d=(parseInt(d,10)>>>0).toString(8);break;case"s":d=String(d),d=g.precision?d.substring(0,g.precision):d;break;case"t":d=String(!!d),d=g.precision?d.substring(0,g.precision):d;break;case"T":d=Object.prototype.toString.call(d).slice(8,-1).toLowerCase(),d=g.precision?d.substring(0,g.precision):d;break;case"u":d=parseInt(d,10)>>>0;break;case"v":d=d.valueOf(),d=g.precision?d.substring(0,g.precision):d;break;case"x":d=(parseInt(d,10)>>>0).toString(16);break;case"X":d=(parseInt(d,10)>>>0).toString(16).toUpperCase()}r.json.test(g.type)?O+=d:(!r.number.test(g.type)||M&&!g.sign?A="":(A=M?"+":"-",d=d.toString().replace(r.sign,"")),k=g.pad_char?g.pad_char==="0"?"0":g.pad_char.charAt(1):" ",h=g.width-(A+d).length,m=g.width&&h>0?k.repeat(h):"",O+=g.align?A+d+m:k==="0"?A+m+d:m+A+d)}return O}var u=Object.create(null);function p(c){if(u[c])return u[c];for(var b,d=c,v=[],x=0;d;){if((b=r.text.exec(d))!==null)v.push(b[0]);else if((b=r.modulo.exec(d))!==null)v.push("%");else{if((b=r.placeholder.exec(d))===null)throw new SyntaxError("[sprintf] unexpected placeholder");if(b[2]){x|=1;var g=[],m=b[2],k=[];if((k=r.key.exec(m))===null)throw new SyntaxError("[sprintf] failed to parse named argument key");for(g.push(k[1]);(m=m.substring(k[0].length))!=="";)if((k=r.key_access.exec(m))!==null)g.push(k[1]);else{if((k=r.index_access.exec(m))===null)throw new SyntaxError("[sprintf] failed to parse named argument key");g.push(k[1])}b[2]=g}else x|=2;if(x===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");v.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}d=d.substring(b[0].length)}return u[c]=v}l.sprintf=n,l.vsprintf=o,typeof window<"u"&&(window.sprintf=n,window.vsprintf=o,(i=function(){return{sprintf:n,vsprintf:o}}.call(l,t,l,f))===void 0||(f.exports=i))})()},4162:function(f,l,t){f.exports=function(a,u){if(a.dimension<=0)return{positions:[],cells:[]};if(a.dimension===1)return function(b,d){for(var v=r(b,d),x=v.length,g=new Array(x),m=new Array(x),k=0;kx|0},vertex:function(b,d,v,x,g,m,k,h,M,A,C,L,O){var I=(k<<0)+(h<<1)+(M<<2)+(A<<3)|0;if(I!==0&&I!==15)switch(I){case 0:case 15:C.push([b-.5,d-.5]);break;case 1:C.push([b-.25-.25*(x+v-2*O)/(v-x),d-.25-.25*(g+v-2*O)/(v-g)]);break;case 2:C.push([b-.75-.25*(-x-v+2*O)/(x-v),d-.25-.25*(m+x-2*O)/(x-m)]);break;case 3:C.push([b-.5,d-.5-.5*(g+v+m+x-4*O)/(v-g+x-m)]);break;case 4:C.push([b-.25-.25*(m+g-2*O)/(g-m),d-.75-.25*(-g-v+2*O)/(g-v)]);break;case 5:C.push([b-.5-.5*(x+v+m+g-4*O)/(v-x+g-m),d-.5]);break;case 6:C.push([b-.5-.25*(-x-v+m+g)/(x-v+g-m),d-.5-.25*(-g-v+m+x)/(g-v+x-m)]);break;case 7:C.push([b-.75-.25*(m+g-2*O)/(g-m),d-.75-.25*(m+x-2*O)/(x-m)]);break;case 8:C.push([b-.75-.25*(-m-g+2*O)/(m-g),d-.75-.25*(-m-x+2*O)/(m-x)]);break;case 9:C.push([b-.5-.25*(x+v+-m-g)/(v-x+m-g),d-.5-.25*(g+v+-m-x)/(v-g+m-x)]);break;case 10:C.push([b-.5-.5*(-x-v-m-g+4*O)/(x-v+m-g),d-.5]);break;case 11:C.push([b-.25-.25*(-m-g+2*O)/(m-g),d-.75-.25*(g+v-2*O)/(v-g)]);break;case 12:C.push([b-.5,d-.5-.5*(-g-v-m-x+4*O)/(g-v+m-x)]);break;case 13:C.push([b-.75-.25*(x+v-2*O)/(v-x),d-.25-.25*(-m-x+2*O)/(m-x)]);break;case 14:C.push([b-.25-.25*(-x-v+2*O)/(x-v),d-.25-.25*(-g-v+2*O)/(g-v)])}},cell:function(b,d,v,x,g,m,k,h,M){g?h.push([b,d]):h.push([d,b])}});return function(b,d){var v=[],x=[];return c(b,v,x,d),{positions:v,cells:x}}}},o={}},6946:function(f,l,t){f.exports=function o(a,u,p){p=p||{};var c=n[a];c||(c=n[a]={" ":{data:new Float32Array(0),shape:.2}});var b=c[u];if(!b)if(u.length<=1||!/\d/.test(u))b=c[u]=function(L){for(var O=L.cells,I=L.positions,R=new Float32Array(6*O.length),U=0,B=0,G=0;G0&&(g+=.02);var k=new Float32Array(x),h=0,M=-.5*g;for(m=0;mMath.max(k,h)?M[2]=1:k>Math.max(m,h)?M[0]=1:M[1]=1;for(var A=0,C=0,L=0;L<3;++L)A+=g[L]*g[L],C+=M[L]*g[L];for(L=0;L<3;++L)M[L]-=C/A*g[L];return a(M,M),M}function d(g,m,k,h,M,A,C,L){this.center=i(k),this.up=i(h),this.right=i(M),this.radius=i([A]),this.angle=i([C,L]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(g,m),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var O=0;O<16;++O)this.computedMatrix[O]=.5;this.recalcMatrix(0)}var v=d.prototype;v.setDistanceLimits=function(g,m){g=g>0?Math.log(g):-1/0,m=m>0?Math.log(m):1/0,m=Math.max(m,g),this.radius.bounds[0][0]=g,this.radius.bounds[1][0]=m},v.getDistanceLimits=function(g){var m=this.radius.bounds[0];return g?(g[0]=Math.exp(m[0][0]),g[1]=Math.exp(m[1][0]),g):[Math.exp(m[0][0]),Math.exp(m[1][0])]},v.recalcMatrix=function(g){this.center.curve(g),this.up.curve(g),this.right.curve(g),this.radius.curve(g),this.angle.curve(g);for(var m=this.computedUp,k=this.computedRight,h=0,M=0,A=0;A<3;++A)M+=m[A]*k[A],h+=m[A]*m[A];var C=Math.sqrt(h),L=0;for(A=0;A<3;++A)k[A]-=m[A]*M/h,L+=k[A]*k[A],m[A]/=C;var O=Math.sqrt(L);for(A=0;A<3;++A)k[A]/=O;var I=this.computedToward;o(I,m,k),a(I,I);var R=Math.exp(this.computedRadius[0]),U=this.computedAngle[0],B=this.computedAngle[1],G=Math.cos(U),N=Math.sin(U),j=Math.cos(B),V=Math.sin(B),H=this.computedCenter,ee=G*j,Q=N*j,X=V,Y=-G*V,K=-N*V,te=j,ae=this.computedEye,oe=this.computedMatrix;for(A=0;A<3;++A){var se=ee*k[A]+Q*I[A]+X*m[A];oe[4*A+1]=Y*k[A]+K*I[A]+te*m[A],oe[4*A+2]=se,oe[4*A+3]=0}var fe=oe[1],ye=oe[5],pe=oe[9],de=oe[2],he=oe[6],xe=oe[10],Re=ye*xe-pe*he,we=pe*de-fe*xe,Ae=fe*he-ye*de,Me=p(Re,we,Ae);for(Re/=Me,we/=Me,Ae/=Me,oe[0]=Re,oe[4]=we,oe[8]=Ae,A=0;A<3;++A)ae[A]=H[A]+oe[2+4*A]*R;for(A=0;A<3;++A){L=0;for(var Ce=0;Ce<3;++Ce)L+=oe[A+4*Ce]*ae[Ce];oe[12+A]=-L}oe[15]=1},v.getMatrix=function(g,m){this.recalcMatrix(g);var k=this.computedMatrix;if(m){for(var h=0;h<16;++h)m[h]=k[h];return m}return k};var x=[0,0,0];v.rotate=function(g,m,k,h){if(this.angle.move(g,m,k),h){this.recalcMatrix(g);var M=this.computedMatrix;x[0]=M[2],x[1]=M[6],x[2]=M[10];for(var A=this.computedUp,C=this.computedRight,L=this.computedToward,O=0;O<3;++O)M[4*O]=A[O],M[4*O+1]=C[O],M[4*O+2]=L[O];for(n(M,M,h,x),O=0;O<3;++O)A[O]=M[4*O],C[O]=M[4*O+1];this.up.set(g,A[0],A[1],A[2]),this.right.set(g,C[0],C[1],C[2])}},v.pan=function(g,m,k,h){m=m||0,k=k||0,h=h||0,this.recalcMatrix(g);var M=this.computedMatrix,A=(Math.exp(this.computedRadius[0]),M[1]),C=M[5],L=M[9],O=p(A,C,L);A/=O,C/=O,L/=O;var I=M[0],R=M[4],U=M[8],B=I*A+R*C+U*L,G=p(I-=A*B,R-=C*B,U-=L*B),N=(I/=G)*m+A*k,j=(R/=G)*m+C*k,V=(U/=G)*m+L*k;this.center.move(g,N,j,V);var H=Math.exp(this.computedRadius[0]);H=Math.max(1e-4,H+h),this.radius.set(g,Math.log(H))},v.translate=function(g,m,k,h){this.center.move(g,m||0,k||0,h||0)},v.setMatrix=function(g,m,k,h){var M=1;typeof k=="number"&&(M=0|k),(M<0||M>3)&&(M=1);var A=(M+2)%3;m||(this.recalcMatrix(g),m=this.computedMatrix);var C=m[M],L=m[M+4],O=m[M+8];if(h){var I=Math.abs(C),R=Math.abs(L),U=Math.abs(O),B=Math.max(I,R,U);I===B?(C=C<0?-1:1,L=O=0):U===B?(O=O<0?-1:1,C=L=0):(L=L<0?-1:1,C=O=0)}else{var G=p(C,L,O);C/=G,L/=G,O/=G}var N,j,V=m[A],H=m[A+4],ee=m[A+8],Q=V*C+H*L+ee*O,X=p(V-=C*Q,H-=L*Q,ee-=O*Q),Y=L*(ee/=X)-O*(H/=X),K=O*(V/=X)-C*ee,te=C*H-L*V,ae=p(Y,K,te);if(Y/=ae,K/=ae,te/=ae,this.center.jump(g,Te,Ee,Ue),this.radius.idle(g),this.up.jump(g,C,L,O),this.right.jump(g,V,H,ee),M===2){var oe=m[1],se=m[5],fe=m[9],ye=oe*V+se*H+fe*ee,pe=oe*Y+se*K+fe*te;N=Re<0?-Math.PI/2:Math.PI/2,j=Math.atan2(pe,ye)}else{var de=m[2],he=m[6],xe=m[10],Re=de*C+he*L+xe*O,we=de*V+he*H+xe*ee,Ae=de*Y+he*K+xe*te;N=Math.asin(c(Re)),j=Math.atan2(Ae,we)}this.angle.jump(g,j,N),this.recalcMatrix(g);var Me=m[2],Ce=m[6],ne=m[10],ue=this.computedMatrix;r(ue,m);var me=ue[15],Te=ue[12]/me,Ee=ue[13]/me,Ue=ue[14]/me,De=Math.exp(this.computedRadius[0]);this.center.jump(g,Te-Me*De,Ee-Ce*De,Ue-ne*De)},v.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},v.idle=function(g){this.center.idle(g),this.up.idle(g),this.right.idle(g),this.radius.idle(g),this.angle.idle(g)},v.flush=function(g){this.center.flush(g),this.up.flush(g),this.right.flush(g),this.radius.flush(g),this.angle.flush(g)},v.setDistance=function(g,m){m>0&&this.radius.set(g,Math.log(m))},v.lookAt=function(g,m,k,h){this.recalcMatrix(g),m=m||this.computedEye,k=k||this.computedCenter;var M=(h=h||this.computedUp)[0],A=h[1],C=h[2],L=p(M,A,C);if(!(L<1e-6)){M/=L,A/=L,C/=L;var O=m[0]-k[0],I=m[1]-k[1],R=m[2]-k[2],U=p(O,I,R);if(!(U<1e-6)){O/=U,I/=U,R/=U;var B=this.computedRight,G=B[0],N=B[1],j=B[2],V=M*G+A*N+C*j,H=p(G-=V*M,N-=V*A,j-=V*C);if(!(H<.01&&(H=p(G=A*R-C*I,N=C*O-M*R,j=M*I-A*O))<1e-6)){G/=H,N/=H,j/=H,this.up.set(g,M,A,C),this.right.set(g,G,N,j),this.center.set(g,k[0],k[1],k[2]),this.radius.set(g,Math.log(U));var ee=A*j-C*N,Q=C*G-M*j,X=M*N-A*G,Y=p(ee,Q,X),K=M*O+A*I+C*R,te=G*O+N*I+j*R,ae=(ee/=Y)*O+(Q/=Y)*I+(X/=Y)*R,oe=Math.asin(c(K)),se=Math.atan2(ae,te),fe=this.angle._state,ye=fe[fe.length-1],pe=fe[fe.length-2];ye%=2*Math.PI;var de=Math.abs(ye+2*Math.PI-se),he=Math.abs(ye-se),xe=Math.abs(ye-2*Math.PI-se);de0?N.pop():new ArrayBuffer(B)}function x(B){return new Uint8Array(v(B),0,B)}function g(B){return new Uint16Array(v(2*B),0,B)}function m(B){return new Uint32Array(v(4*B),0,B)}function k(B){return new Int8Array(v(B),0,B)}function h(B){return new Int16Array(v(2*B),0,B)}function M(B){return new Int32Array(v(4*B),0,B)}function A(B){return new Float32Array(v(4*B),0,B)}function C(B){return new Float64Array(v(8*B),0,B)}function L(B){return o?new Uint8ClampedArray(v(B),0,B):x(B)}function O(B){return a?new BigUint64Array(v(8*B),0,B):null}function I(B){return u?new BigInt64Array(v(8*B),0,B):null}function R(B){return new DataView(v(B),0,B)}function U(B){B=i.nextPow2(B);var G=i.log2(B),N=b[G];return N.length>0?N.pop():new n(B)}l.free=function(B){if(n.isBuffer(B))b[i.log2(B.length)].push(B);else{if(Object.prototype.toString.call(B)!=="[object ArrayBuffer]"&&(B=B.buffer),!B)return;var G=B.length||B.byteLength,N=0|i.log2(G);c[N].push(B)}},l.freeUint8=l.freeUint16=l.freeUint32=l.freeBigUint64=l.freeInt8=l.freeInt16=l.freeInt32=l.freeBigInt64=l.freeFloat32=l.freeFloat=l.freeFloat64=l.freeDouble=l.freeUint8Clamped=l.freeDataView=function(B){d(B.buffer)},l.freeArrayBuffer=d,l.freeBuffer=function(B){b[i.log2(B.length)].push(B)},l.malloc=function(B,G){if(G===void 0||G==="arraybuffer")return v(B);switch(G){case"uint8":return x(B);case"uint16":return g(B);case"uint32":return m(B);case"int8":return k(B);case"int16":return h(B);case"int32":return M(B);case"float":case"float32":return A(B);case"double":case"float64":return C(B);case"uint8_clamped":return L(B);case"bigint64":return I(B);case"biguint64":return O(B);case"buffer":return U(B);case"data":case"dataview":return R(B);default:return null}return null},l.mallocArrayBuffer=v,l.mallocUint8=x,l.mallocUint16=g,l.mallocUint32=m,l.mallocInt8=k,l.mallocInt16=h,l.mallocInt32=M,l.mallocFloat32=l.mallocFloat=A,l.mallocFloat64=l.mallocDouble=C,l.mallocUint8Clamped=L,l.mallocBigUint64=O,l.mallocBigInt64=I,l.mallocDataView=R,l.mallocBuffer=U,l.clearCache=function(){for(var B=0;B<32;++B)p.UINT8[B].length=0,p.UINT16[B].length=0,p.UINT32[B].length=0,p.INT8[B].length=0,p.INT16[B].length=0,p.INT32[B].length=0,p.FLOAT[B].length=0,p.DOUBLE[B].length=0,p.BIGUINT64[B].length=0,p.BIGINT64[B].length=0,p.UINT8C[B].length=0,c[B].length=0,b[B].length=0}},1731:function(f){function l(i){this.roots=new Array(i),this.ranks=new Array(i);for(var r=0;r0&&(M=h.size),h.lineSpacing&&h.lineSpacing>0&&(A=h.lineSpacing),h.styletags&&h.styletags.breaklines&&(C.breaklines=!!h.styletags.breaklines),h.styletags&&h.styletags.bolds&&(C.bolds=!!h.styletags.bolds),h.styletags&&h.styletags.italics&&(C.italics=!!h.styletags.italics),h.styletags&&h.styletags.subscripts&&(C.subscripts=!!h.styletags.subscripts),h.styletags&&h.styletags.superscripts&&(C.superscripts=!!h.styletags.superscripts)),k.font=[h.fontStyle,h.fontVariant,h.fontWeight,M+"px",h.font].filter(function(L){return L}).join(" "),k.textAlign="start",k.textBaseline="alphabetic",k.direction="ltr",x(function(L,O,I,R,U,B){I=I.replace(/\n/g,""),I=B.breaklines===!0?I.replace(/\/g,` +`):I.replace(/\/g," ");var G="",N=[];for(ee=0;ee-1?parseInt(ue[1+Ee]):0,je=Ue>-1?parseInt(me[1+Ue]):0;De!==je&&(Te=Te.replace(xe(),"?px "),Y*=Math.pow(.75,je-De),Te=Te.replace("?px ",xe())),X+=.25*ae*(je-De)}if(B.superscripts===!0){var ge=ue.indexOf("+"),be=me.indexOf("+"),Se=ge>-1?parseInt(ue[1+ge]):0,Ne=be>-1?parseInt(me[1+be]):0;Se!==Ne&&(Te=Te.replace(xe(),"?px "),Y*=Math.pow(.75,Ne-Se),Te=Te.replace("?px ",xe())),X-=.25*ae*(Ne-Se)}if(B.bolds===!0){var Ye=ue.indexOf(p)>-1,Ze=me.indexOf(p)>-1;!Ye&&Ze&&(Te=st?Te.replace("italic ","italic bold "):"bold "+Te),Ye&&!Ze&&(Te=Te.replace("bold ",""))}if(B.italics===!0){var st=ue.indexOf(c)>-1,ot=me.indexOf(c)>-1;!st&&ot&&(Te="italic "+Te),st&&!ot&&(Te=Te.replace("italic ",""))}O.font=Te}for(H=0;H",A="",C=M.length,L=A.length,O=m[0]==="+"||m[0]==="-",I=0,R=-L;I>-1&&(I=k.indexOf(M,I))!==-1&&(R=k.indexOf(A,I+C))!==-1&&!(R<=I);){for(var U=I;U=R)h[U]=null,k=k.substr(0,U)+" "+k.substr(U+1);else if(h[U]!==null){var B=h[U].indexOf(m[0]);B===-1?h[U]+=m:O&&(h[U]=h[U].substr(0,B+1)+(1+parseInt(h[U][B+1]))+h[U].substr(B+2))}var G=I+C,N=k.substr(G,R-G).indexOf(M);I=N!==-1?N:R+L}return h}function d(g,m){var k=i(g,128);return m?n(k.cells,k.positions,.25):{edges:k.cells,positions:k.positions}}function v(g,m,k,h){var M=d(g,h),A=function(H,ee,Q){for(var X=ee.textAlign||"start",Y=ee.textBaseline||"alphabetic",K=[1<<30,1<<30],te=[0,0],ae=H.length,oe=0;oe"u"||!ses.ok||ses.ok()){typeof ses<"u"&&(ses.weakMapPermitHostObjects=m);var l=!1;if(typeof WeakMap=="function"){var t=WeakMap;if(!(typeof navigator<"u"&&/Firefox/.test(navigator.userAgent))){var i=new t,r=Object.freeze({});if(i.set(r,1),i.get(r)===1)return void(f.exports=WeakMap);l=!0}}var n=Object.getOwnPropertyNames,o=Object.defineProperty,a=Object.isExtensible,u="weakmap:",p="weakmap:ident:"+Math.random()+"___";if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var c=new ArrayBuffer(25),b=new Uint8Array(c);crypto.getRandomValues(b),p="weakmap:rand:"+Array.prototype.map.call(b,function(C){return(C%36).toString(36)}).join("")+"___"}if(o(Object,"getOwnPropertyNames",{value:function(C){return n(C).filter(k)}}),"getPropertyNames"in Object){var d=Object.getPropertyNames;o(Object,"getPropertyNames",{value:function(C){return d(C).filter(k)}})}(function(){var C=Object.freeze;o(Object,"freeze",{value:function(I){return h(I),C(I)}});var L=Object.seal;o(Object,"seal",{value:function(I){return h(I),L(I)}});var O=Object.preventExtensions;o(Object,"preventExtensions",{value:function(I){return h(I),O(I)}})})();var v=!1,x=0,g=function(){this instanceof g||A();var C=[],L=[],O=x++;return Object.create(g.prototype,{get___:{value:M(function(I,R){var U,B=h(I);return B?O in B?B[O]:R:(U=C.indexOf(I))>=0?L[U]:R})},has___:{value:M(function(I){var R=h(I);return R?O in R:C.indexOf(I)>=0})},set___:{value:M(function(I,R){var U,B=h(I);return B?B[O]=R:(U=C.indexOf(I))>=0?L[U]=R:(U=C.length,L[U]=R,C[U]=I),this})},delete___:{value:M(function(I){var R,U,B=h(I);return B?O in B&&delete B[O]:!((R=C.indexOf(I))<0||(U=C.length-1,C[R]=void 0,L[R]=L[U],C[R]=C[U],C.length=U,L.length=U,0))})}})};g.prototype=Object.create(Object.prototype,{get:{value:function(C,L){return this.get___(C,L)},writable:!0,configurable:!0},has:{value:function(C){return this.has___(C)},writable:!0,configurable:!0},set:{value:function(C,L){return this.set___(C,L)},writable:!0,configurable:!0},delete:{value:function(C){return this.delete___(C)},writable:!0,configurable:!0}}),typeof t=="function"?function(){function C(){this instanceof g||A();var L,O=new t,I=void 0,R=!1;return L=l?function(U,B){return O.set(U,B),O.has(U)||(I||(I=new g),I.set(U,B)),this}:function(U,B){if(R)try{O.set(U,B)}catch{I||(I=new g),I.set___(U,B)}else O.set(U,B);return this},Object.create(g.prototype,{get___:{value:M(function(U,B){return I?O.has(U)?O.get(U):I.get___(U,B):O.get(U,B)})},has___:{value:M(function(U){return O.has(U)||!!I&&I.has___(U)})},set___:{value:M(L)},delete___:{value:M(function(U){var B=!!O.delete(U);return I&&I.delete___(U)||B})},permitHostObjects___:{value:M(function(U){if(U!==m)throw new Error("bogus call to permitHostObjects___");R=!0})}})}l&&typeof Proxy<"u"&&(Proxy=void 0),C.prototype=g.prototype,f.exports=C,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy<"u"&&(Proxy=void 0),f.exports=g)}function m(C){C.permitHostObjects___&&C.permitHostObjects___(m)}function k(C){return!(C.substr(0,u.length)==u&&C.substr(C.length-3)==="___")}function h(C){if(C!==Object(C))throw new TypeError("Not an object: "+C);var L=C[p];if(L&&L.key===C)return L;if(a(C)){L={key:C};try{return o(C,p,{value:L,writable:!1,enumerable:!1,configurable:!1}),L}catch{return}}}function M(C){return C.prototype=null,Object.freeze(C)}function A(){v||typeof console>"u"||(v=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}})()},9222:function(f,l,t){var i=t(7178);f.exports=function(){var r={};return function(n){if((typeof n!="object"||n===null)&&typeof n!="function")throw new Error("Weakmap-shim: Key must be object");var o=n.valueOf(r);return o&&o.identity===r?o:i(n,r)}}},7178:function(f){f.exports=function(l,t){var i={identity:t},r=l.valueOf;return Object.defineProperty(l,"valueOf",{value:function(n){return n!==t?r.apply(this,arguments):i},writable:!0}),i}},4037:function(f,l,t){var i=t(9222);f.exports=function(){var r=i();return{get:function(n,o){var a=r(n);return a.hasOwnProperty("value")?a.value:o},set:function(n,o){return r(n).value=o,this},has:function(n){return"value"in r(n)},delete:function(n){return delete r(n).value}}}},6183:function(f){f.exports=function(l){var t={};return function(i,r,n){var o=i.dtype,a=i.order,u=[o,a.join()].join(),p=t[u];return p||(t[u]=p=l([o,a])),p(i.shape.slice(0),i.data,i.stride,0|i.offset,r,n)}}(function(){return function(l,t,i,r,n,o){var a=l[0],u=i[0],p=[0],c=u;r|=0;var b=0,d=u;for(b=0;b=0!=x>=0&&n.push(p[0]+.5+.5*(v+x)/(v-x)),r+=d,++p[0]}}}.bind(void 0,{funcName:"zeroCrossings"}))},9584:function(f,l,t){f.exports=function(r,n){var o=[];return n=+n||0,i(r.hi(r.shape[0]-1),o,n),o};var i=t(6183)},6601:function(){}},T={};function y(f){var l=T[f];if(l!==void 0)return l.exports;var t=T[f]={id:f,loaded:!1,exports:{}};return s[f].call(t.exports,t,t.exports,y),t.loaded=!0,t.exports}return y.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),y.nmd=function(f){return f.paths=[],f.children||(f.children=[]),f},y(7386)}()},D.exports=_()},12856:function(D,E,e){function _(ne,ue){if(!(ne instanceof ue))throw new TypeError("Cannot call a class as a function")}function w(ne,ue){for(var me=0;men)throw new RangeError('The value "'+ne+'" is invalid for option "size"');var ue=new Uint8Array(ne);return Object.setPrototypeOf(ue,a.prototype),ue}function a(ne,ue,me){if(typeof ne=="number"){if(typeof ue=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return c(ne)}return u(ne,ue,me)}function u(ne,ue,me){if(typeof ne=="string")return function(Ue,De){if(typeof De=="string"&&De!==""||(De="utf8"),!a.isEncoding(De))throw new TypeError("Unknown encoding: "+De);var je=0|x(Ue,De),ge=o(je),be=ge.write(Ue,De);return be!==je&&(ge=ge.slice(0,be)),ge}(ne,ue);if(ArrayBuffer.isView(ne))return function(Ue){if(Re(Ue,Uint8Array)){var De=new Uint8Array(Ue);return d(De.buffer,De.byteOffset,De.byteLength)}return b(Ue)}(ne);if(ne==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(ne));if(Re(ne,ArrayBuffer)||ne&&Re(ne.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Re(ne,SharedArrayBuffer)||ne&&Re(ne.buffer,SharedArrayBuffer)))return d(ne,ue,me);if(typeof ne=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var Te=ne.valueOf&&ne.valueOf();if(Te!=null&&Te!==ne)return a.from(Te,ue,me);var Ee=function(Ue){if(a.isBuffer(Ue)){var De=0|v(Ue.length),je=o(De);return je.length===0||Ue.copy(je,0,0,De),je}return Ue.length!==void 0?typeof Ue.length!="number"||we(Ue.length)?o(0):b(Ue):Ue.type==="Buffer"&&Array.isArray(Ue.data)?b(Ue.data):void 0}(ne);if(Ee)return Ee;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ne[Symbol.toPrimitive]=="function")return a.from(ne[Symbol.toPrimitive]("string"),ue,me);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(ne))}function p(ne){if(typeof ne!="number")throw new TypeError('"size" argument must be of type number');if(ne<0)throw new RangeError('The value "'+ne+'" is invalid for option "size"')}function c(ne){return p(ne),o(ne<0?0:0|v(ne))}function b(ne){for(var ue=ne.length<0?0:0|v(ne.length),me=o(ue),Te=0;Te=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|ne}function x(ne,ue){if(a.isBuffer(ne))return ne.length;if(ArrayBuffer.isView(ne)||Re(ne,ArrayBuffer))return ne.byteLength;if(typeof ne!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+l(ne));var me=ne.length,Te=arguments.length>2&&arguments[2]===!0;if(!Te&&me===0)return 0;for(var Ee=!1;;)switch(ue){case"ascii":case"latin1":case"binary":return me;case"utf8":case"utf-8":return de(ne).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*me;case"hex":return me>>>1;case"base64":return he(ne).length;default:if(Ee)return Te?-1:de(ne).length;ue=(""+ue).toLowerCase(),Ee=!0}}function g(ne,ue,me){var Te=!1;if((ue===void 0||ue<0)&&(ue=0),ue>this.length||((me===void 0||me>this.length)&&(me=this.length),me<=0)||(me>>>=0)<=(ue>>>=0))return"";for(ne||(ne="utf8");;)switch(ne){case"hex":return N(this,ue,me);case"utf8":case"utf-8":return R(this,ue,me);case"ascii":return B(this,ue,me);case"latin1":case"binary":return G(this,ue,me);case"base64":return I(this,ue,me);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,ue,me);default:if(Te)throw new TypeError("Unknown encoding: "+ne);ne=(ne+"").toLowerCase(),Te=!0}}function m(ne,ue,me){var Te=ne[ue];ne[ue]=ne[me],ne[me]=Te}function k(ne,ue,me,Te,Ee){if(ne.length===0)return-1;if(typeof me=="string"?(Te=me,me=0):me>2147483647?me=2147483647:me<-2147483648&&(me=-2147483648),we(me=+me)&&(me=Ee?0:ne.length-1),me<0&&(me=ne.length+me),me>=ne.length){if(Ee)return-1;me=ne.length-1}else if(me<0){if(!Ee)return-1;me=0}if(typeof ue=="string"&&(ue=a.from(ue,Te)),a.isBuffer(ue))return ue.length===0?-1:h(ne,ue,me,Te,Ee);if(typeof ue=="number")return ue&=255,typeof Uint8Array.prototype.indexOf=="function"?Ee?Uint8Array.prototype.indexOf.call(ne,ue,me):Uint8Array.prototype.lastIndexOf.call(ne,ue,me):h(ne,[ue],me,Te,Ee);throw new TypeError("val must be string, number or Buffer")}function h(ne,ue,me,Te,Ee){var Ue,De=1,je=ne.length,ge=ue.length;if(Te!==void 0&&((Te=String(Te).toLowerCase())==="ucs2"||Te==="ucs-2"||Te==="utf16le"||Te==="utf-16le")){if(ne.length<2||ue.length<2)return-1;De=2,je/=2,ge/=2,me/=2}function be(Ze,st){return De===1?Ze[st]:Ze.readUInt16BE(st*De)}if(Ee){var Se=-1;for(Ue=me;Ueje&&(me=je-ge),Ue=me;Ue>=0;Ue--){for(var Ne=!0,Ye=0;YeEe&&(Te=Ee):Te=Ee;var Ue,De=ue.length;for(Te>De/2&&(Te=De/2),Ue=0;Ue>8,ge=De%256,be.push(ge),be.push(je);return be}(ue,ne.length-me),ne,me,Te)}function I(ne,ue,me){return ue===0&&me===ne.length?t.fromByteArray(ne):t.fromByteArray(ne.slice(ue,me))}function R(ne,ue,me){me=Math.min(ne.length,me);for(var Te=[],Ee=ue;Ee239?4:Ue>223?3:Ue>191?2:1;if(Ee+je<=me){var ge=void 0,be=void 0,Se=void 0,Ne=void 0;switch(je){case 1:Ue<128&&(De=Ue);break;case 2:(192&(ge=ne[Ee+1]))==128&&(Ne=(31&Ue)<<6|63&ge)>127&&(De=Ne);break;case 3:ge=ne[Ee+1],be=ne[Ee+2],(192&ge)==128&&(192&be)==128&&(Ne=(15&Ue)<<12|(63&ge)<<6|63&be)>2047&&(Ne<55296||Ne>57343)&&(De=Ne);break;case 4:ge=ne[Ee+1],be=ne[Ee+2],Se=ne[Ee+3],(192&ge)==128&&(192&be)==128&&(192&Se)==128&&(Ne=(15&Ue)<<18|(63&ge)<<12|(63&be)<<6|63&Se)>65535&&Ne<1114112&&(De=Ne)}}De===null?(De=65533,je=1):De>65535&&(De-=65536,Te.push(De>>>10&1023|55296),De=56320|1023&De),Te.push(De),Ee+=je}return function(Ye){var Ze=Ye.length;if(Ze<=U)return String.fromCharCode.apply(String,Ye);for(var st="",ot=0;ot"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}}),a.poolSize=8192,a.from=function(ne,ue,me){return u(ne,ue,me)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array),a.alloc=function(ne,ue,me){return function(Te,Ee,Ue){return p(Te),Te<=0?o(Te):Ee!==void 0?typeof Ue=="string"?o(Te).fill(Ee,Ue):o(Te).fill(Ee):o(Te)}(ne,ue,me)},a.allocUnsafe=function(ne){return c(ne)},a.allocUnsafeSlow=function(ne){return c(ne)},a.isBuffer=function(ne){return ne!=null&&ne._isBuffer===!0&&ne!==a.prototype},a.compare=function(ne,ue){if(Re(ne,Uint8Array)&&(ne=a.from(ne,ne.offset,ne.byteLength)),Re(ue,Uint8Array)&&(ue=a.from(ue,ue.offset,ue.byteLength)),!a.isBuffer(ne)||!a.isBuffer(ue))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(ne===ue)return 0;for(var me=ne.length,Te=ue.length,Ee=0,Ue=Math.min(me,Te);EeTe.length?(a.isBuffer(Ue)||(Ue=a.from(Ue)),Ue.copy(Te,Ee)):Uint8Array.prototype.set.call(Te,Ue,Ee);else{if(!a.isBuffer(Ue))throw new TypeError('"list" argument must be an Array of Buffers');Ue.copy(Te,Ee)}Ee+=Ue.length}return Te},a.byteLength=x,a.prototype._isBuffer=!0,a.prototype.swap16=function(){var ne=this.length;if(ne%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var ue=0;ueue&&(ne+=" ... "),""},r&&(a.prototype[r]=a.prototype.inspect),a.prototype.compare=function(ne,ue,me,Te,Ee){if(Re(ne,Uint8Array)&&(ne=a.from(ne,ne.offset,ne.byteLength)),!a.isBuffer(ne))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+l(ne));if(ue===void 0&&(ue=0),me===void 0&&(me=ne?ne.length:0),Te===void 0&&(Te=0),Ee===void 0&&(Ee=this.length),ue<0||me>ne.length||Te<0||Ee>this.length)throw new RangeError("out of range index");if(Te>=Ee&&ue>=me)return 0;if(Te>=Ee)return-1;if(ue>=me)return 1;if(this===ne)return 0;for(var Ue=(Ee>>>=0)-(Te>>>=0),De=(me>>>=0)-(ue>>>=0),je=Math.min(Ue,De),ge=this.slice(Te,Ee),be=ne.slice(ue,me),Se=0;Se>>=0,isFinite(me)?(me>>>=0,Te===void 0&&(Te="utf8")):(Te=me,me=void 0)}var Ee=this.length-ue;if((me===void 0||me>Ee)&&(me=Ee),ne.length>0&&(me<0||ue<0)||ue>this.length)throw new RangeError("Attempt to write outside buffer bounds");Te||(Te="utf8");for(var Ue=!1;;)switch(Te){case"hex":return M(this,ne,ue,me);case"utf8":case"utf-8":return A(this,ne,ue,me);case"ascii":case"latin1":case"binary":return C(this,ne,ue,me);case"base64":return L(this,ne,ue,me);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,ne,ue,me);default:if(Ue)throw new TypeError("Unknown encoding: "+Te);Te=(""+Te).toLowerCase(),Ue=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var U=4096;function B(ne,ue,me){var Te="";me=Math.min(ne.length,me);for(var Ee=ue;EeTe)&&(me=Te);for(var Ee="",Ue=ue;Ueme)throw new RangeError("Trying to access beyond buffer length")}function H(ne,ue,me,Te,Ee,Ue){if(!a.isBuffer(ne))throw new TypeError('"buffer" argument must be a Buffer instance');if(ue>Ee||uene.length)throw new RangeError("Index out of range")}function ee(ne,ue,me,Te,Ee){se(ue,Te,Ee,ne,me,7);var Ue=Number(ue&BigInt(4294967295));ne[me++]=Ue,Ue>>=8,ne[me++]=Ue,Ue>>=8,ne[me++]=Ue,Ue>>=8,ne[me++]=Ue;var De=Number(ue>>BigInt(32)&BigInt(4294967295));return ne[me++]=De,De>>=8,ne[me++]=De,De>>=8,ne[me++]=De,De>>=8,ne[me++]=De,me}function Q(ne,ue,me,Te,Ee){se(ue,Te,Ee,ne,me,7);var Ue=Number(ue&BigInt(4294967295));ne[me+7]=Ue,Ue>>=8,ne[me+6]=Ue,Ue>>=8,ne[me+5]=Ue,Ue>>=8,ne[me+4]=Ue;var De=Number(ue>>BigInt(32)&BigInt(4294967295));return ne[me+3]=De,De>>=8,ne[me+2]=De,De>>=8,ne[me+1]=De,De>>=8,ne[me]=De,me+8}function X(ne,ue,me,Te,Ee,Ue){if(me+Te>ne.length)throw new RangeError("Index out of range");if(me<0)throw new RangeError("Index out of range")}function Y(ne,ue,me,Te,Ee){return ue=+ue,me>>>=0,Ee||X(ne,0,me,4),i.write(ne,ue,me,Te,23,4),me+4}function K(ne,ue,me,Te,Ee){return ue=+ue,me>>>=0,Ee||X(ne,0,me,8),i.write(ne,ue,me,Te,52,8),me+8}a.prototype.slice=function(ne,ue){var me=this.length;(ne=~~ne)<0?(ne+=me)<0&&(ne=0):ne>me&&(ne=me),(ue=ue===void 0?me:~~ue)<0?(ue+=me)<0&&(ue=0):ue>me&&(ue=me),ue>>=0,ue>>>=0,me||V(ne,ue,this.length);for(var Te=this[ne],Ee=1,Ue=0;++Ue>>=0,ue>>>=0,me||V(ne,ue,this.length);for(var Te=this[ne+--ue],Ee=1;ue>0&&(Ee*=256);)Te+=this[ne+--ue]*Ee;return Te},a.prototype.readUint8=a.prototype.readUInt8=function(ne,ue){return ne>>>=0,ue||V(ne,1,this.length),this[ne]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(ne,ue){return ne>>>=0,ue||V(ne,2,this.length),this[ne]|this[ne+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(ne,ue){return ne>>>=0,ue||V(ne,2,this.length),this[ne]<<8|this[ne+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(ne,ue){return ne>>>=0,ue||V(ne,4,this.length),(this[ne]|this[ne+1]<<8|this[ne+2]<<16)+16777216*this[ne+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(ne,ue){return ne>>>=0,ue||V(ne,4,this.length),16777216*this[ne]+(this[ne+1]<<16|this[ne+2]<<8|this[ne+3])},a.prototype.readBigUInt64LE=Me(function(ne){fe(ne>>>=0,"offset");var ue=this[ne],me=this[ne+7];ue!==void 0&&me!==void 0||ye(ne,this.length-8);var Te=ue+this[++ne]*Math.pow(2,8)+this[++ne]*Math.pow(2,16)+this[++ne]*Math.pow(2,24),Ee=this[++ne]+this[++ne]*Math.pow(2,8)+this[++ne]*Math.pow(2,16)+me*Math.pow(2,24);return BigInt(Te)+(BigInt(Ee)<>>=0,"offset");var ue=this[ne],me=this[ne+7];ue!==void 0&&me!==void 0||ye(ne,this.length-8);var Te=ue*Math.pow(2,24)+this[++ne]*Math.pow(2,16)+this[++ne]*Math.pow(2,8)+this[++ne],Ee=this[++ne]*Math.pow(2,24)+this[++ne]*Math.pow(2,16)+this[++ne]*Math.pow(2,8)+me;return(BigInt(Te)<>>=0,ue>>>=0,me||V(ne,ue,this.length);for(var Te=this[ne],Ee=1,Ue=0;++Ue=(Ee*=128)&&(Te-=Math.pow(2,8*ue)),Te},a.prototype.readIntBE=function(ne,ue,me){ne>>>=0,ue>>>=0,me||V(ne,ue,this.length);for(var Te=ue,Ee=1,Ue=this[ne+--Te];Te>0&&(Ee*=256);)Ue+=this[ne+--Te]*Ee;return Ue>=(Ee*=128)&&(Ue-=Math.pow(2,8*ue)),Ue},a.prototype.readInt8=function(ne,ue){return ne>>>=0,ue||V(ne,1,this.length),128&this[ne]?-1*(255-this[ne]+1):this[ne]},a.prototype.readInt16LE=function(ne,ue){ne>>>=0,ue||V(ne,2,this.length);var me=this[ne]|this[ne+1]<<8;return 32768&me?4294901760|me:me},a.prototype.readInt16BE=function(ne,ue){ne>>>=0,ue||V(ne,2,this.length);var me=this[ne+1]|this[ne]<<8;return 32768&me?4294901760|me:me},a.prototype.readInt32LE=function(ne,ue){return ne>>>=0,ue||V(ne,4,this.length),this[ne]|this[ne+1]<<8|this[ne+2]<<16|this[ne+3]<<24},a.prototype.readInt32BE=function(ne,ue){return ne>>>=0,ue||V(ne,4,this.length),this[ne]<<24|this[ne+1]<<16|this[ne+2]<<8|this[ne+3]},a.prototype.readBigInt64LE=Me(function(ne){fe(ne>>>=0,"offset");var ue=this[ne],me=this[ne+7];ue!==void 0&&me!==void 0||ye(ne,this.length-8);var Te=this[ne+4]+this[ne+5]*Math.pow(2,8)+this[ne+6]*Math.pow(2,16)+(me<<24);return(BigInt(Te)<>>=0,"offset");var ue=this[ne],me=this[ne+7];ue!==void 0&&me!==void 0||ye(ne,this.length-8);var Te=(ue<<24)+this[++ne]*Math.pow(2,16)+this[++ne]*Math.pow(2,8)+this[++ne];return(BigInt(Te)<>>=0,ue||V(ne,4,this.length),i.read(this,ne,!0,23,4)},a.prototype.readFloatBE=function(ne,ue){return ne>>>=0,ue||V(ne,4,this.length),i.read(this,ne,!1,23,4)},a.prototype.readDoubleLE=function(ne,ue){return ne>>>=0,ue||V(ne,8,this.length),i.read(this,ne,!0,52,8)},a.prototype.readDoubleBE=function(ne,ue){return ne>>>=0,ue||V(ne,8,this.length),i.read(this,ne,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(ne,ue,me,Te){ne=+ne,ue>>>=0,me>>>=0,Te||H(this,ne,ue,me,Math.pow(2,8*me)-1,0);var Ee=1,Ue=0;for(this[ue]=255≠++Ue>>=0,me>>>=0,Te||H(this,ne,ue,me,Math.pow(2,8*me)-1,0);var Ee=me-1,Ue=1;for(this[ue+Ee]=255≠--Ee>=0&&(Ue*=256);)this[ue+Ee]=ne/Ue&255;return ue+me},a.prototype.writeUint8=a.prototype.writeUInt8=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,1,255,0),this[ue]=255&ne,ue+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,2,65535,0),this[ue]=255&ne,this[ue+1]=ne>>>8,ue+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,2,65535,0),this[ue]=ne>>>8,this[ue+1]=255&ne,ue+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,4,4294967295,0),this[ue+3]=ne>>>24,this[ue+2]=ne>>>16,this[ue+1]=ne>>>8,this[ue]=255&ne,ue+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,4,4294967295,0),this[ue]=ne>>>24,this[ue+1]=ne>>>16,this[ue+2]=ne>>>8,this[ue+3]=255&ne,ue+4},a.prototype.writeBigUInt64LE=Me(function(ne){var ue=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return ee(this,ne,ue,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeBigUInt64BE=Me(function(ne){var ue=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Q(this,ne,ue,BigInt(0),BigInt("0xffffffffffffffff"))}),a.prototype.writeIntLE=function(ne,ue,me,Te){if(ne=+ne,ue>>>=0,!Te){var Ee=Math.pow(2,8*me-1);H(this,ne,ue,me,Ee-1,-Ee)}var Ue=0,De=1,je=0;for(this[ue]=255≠++Ue>0)-je&255;return ue+me},a.prototype.writeIntBE=function(ne,ue,me,Te){if(ne=+ne,ue>>>=0,!Te){var Ee=Math.pow(2,8*me-1);H(this,ne,ue,me,Ee-1,-Ee)}var Ue=me-1,De=1,je=0;for(this[ue+Ue]=255≠--Ue>=0&&(De*=256);)ne<0&&je===0&&this[ue+Ue+1]!==0&&(je=1),this[ue+Ue]=(ne/De>>0)-je&255;return ue+me},a.prototype.writeInt8=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,1,127,-128),ne<0&&(ne=255+ne+1),this[ue]=255&ne,ue+1},a.prototype.writeInt16LE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,2,32767,-32768),this[ue]=255&ne,this[ue+1]=ne>>>8,ue+2},a.prototype.writeInt16BE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,2,32767,-32768),this[ue]=ne>>>8,this[ue+1]=255&ne,ue+2},a.prototype.writeInt32LE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,4,2147483647,-2147483648),this[ue]=255&ne,this[ue+1]=ne>>>8,this[ue+2]=ne>>>16,this[ue+3]=ne>>>24,ue+4},a.prototype.writeInt32BE=function(ne,ue,me){return ne=+ne,ue>>>=0,me||H(this,ne,ue,4,2147483647,-2147483648),ne<0&&(ne=4294967295+ne+1),this[ue]=ne>>>24,this[ue+1]=ne>>>16,this[ue+2]=ne>>>8,this[ue+3]=255&ne,ue+4},a.prototype.writeBigInt64LE=Me(function(ne){var ue=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return ee(this,ne,ue,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeBigInt64BE=Me(function(ne){var ue=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Q(this,ne,ue,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),a.prototype.writeFloatLE=function(ne,ue,me){return Y(this,ne,ue,!0,me)},a.prototype.writeFloatBE=function(ne,ue,me){return Y(this,ne,ue,!1,me)},a.prototype.writeDoubleLE=function(ne,ue,me){return K(this,ne,ue,!0,me)},a.prototype.writeDoubleBE=function(ne,ue,me){return K(this,ne,ue,!1,me)},a.prototype.copy=function(ne,ue,me,Te){if(!a.isBuffer(ne))throw new TypeError("argument should be a Buffer");if(me||(me=0),Te||Te===0||(Te=this.length),ue>=ne.length&&(ue=ne.length),ue||(ue=0),Te>0&&Te=this.length)throw new RangeError("Index out of range");if(Te<0)throw new RangeError("sourceEnd out of bounds");Te>this.length&&(Te=this.length),ne.length-ue>>=0,me=me===void 0?this.length:me>>>0,ne||(ne=0),typeof ne=="number")for(Ue=ue;Ue"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}(),function(){var Se,Ne=f(De);if(je){var Ye=f(this).constructor;Se=Reflect.construct(Ne,arguments,Ye)}else Se=Ne.apply(this,arguments);return T(this,Se)});function be(){var Se;return _(this,be),Se=ge.call(this),Object.defineProperty(y(Se),"message",{value:ue.apply(y(Se),arguments),writable:!0,configurable:!0}),Se.name="".concat(Se.name," [").concat(ne,"]"),Se.stack,delete Se.name,Se}return Ee=be,(Ue=[{key:"code",get:function(){return ne},set:function(Se){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:Se,writable:!0})}},{key:"toString",value:function(){return"".concat(this.name," [").concat(ne,"]: ").concat(this.message)}}])&&w(Ee.prototype,Ue),Object.defineProperty(Ee,"prototype",{writable:!1}),be}(me)}function oe(ne){for(var ue="",me=ne.length,Te=ne[0]==="-"?1:0;me>=Te+4;me-=3)ue="_".concat(ne.slice(me-3,me)).concat(ue);return"".concat(ne.slice(0,me)).concat(ue)}function se(ne,ue,me,Te,Ee,Ue){if(ne>me||ne3?ue===0||ue===BigInt(0)?">= 0".concat(je," and < 2").concat(je," ** ").concat(8*(Ue+1)).concat(je):">= -(2".concat(je," ** ").concat(8*(Ue+1)-1).concat(je,") and < 2 ** ")+"".concat(8*(Ue+1)-1).concat(je):">= ".concat(ue).concat(je," and <= ").concat(me).concat(je),new te.ERR_OUT_OF_RANGE("value",De,ne)}(function(ge,be,Se){fe(be,"offset"),ge[be]!==void 0&&ge[be+Se]!==void 0||ye(be,ge.length-(Se+1))})(Te,Ee,Ue)}function fe(ne,ue){if(typeof ne!="number")throw new te.ERR_INVALID_ARG_TYPE(ue,"number",ne)}function ye(ne,ue,me){throw Math.floor(ne)!==ne?(fe(ne,me),new te.ERR_OUT_OF_RANGE(me||"offset","an integer",ne)):ue<0?new te.ERR_BUFFER_OUT_OF_BOUNDS:new te.ERR_OUT_OF_RANGE(me||"offset",">= ".concat(me?1:0," and <= ").concat(ue),ne)}ae("ERR_BUFFER_OUT_OF_BOUNDS",function(ne){return ne?"".concat(ne," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"},RangeError),ae("ERR_INVALID_ARG_TYPE",function(ne,ue){return'The "'.concat(ne,'" argument must be of type number. Received type ').concat(l(ue))},TypeError),ae("ERR_OUT_OF_RANGE",function(ne,ue,me){var Te='The value of "'.concat(ne,'" is out of range.'),Ee=me;return Number.isInteger(me)&&Math.abs(me)>Math.pow(2,32)?Ee=oe(String(me)):typeof me=="bigint"&&(Ee=String(me),(me>Math.pow(BigInt(2),BigInt(32))||me<-Math.pow(BigInt(2),BigInt(32)))&&(Ee=oe(Ee)),Ee+="n"),Te+" It must be ".concat(ue,". Received ").concat(Ee)},RangeError);var pe=/[^+/0-9A-Za-z-_]/g;function de(ne,ue){var me;ue=ue||1/0;for(var Te=ne.length,Ee=null,Ue=[],De=0;De55295&&me<57344){if(!Ee){if(me>56319){(ue-=3)>-1&&Ue.push(239,191,189);continue}if(De+1===Te){(ue-=3)>-1&&Ue.push(239,191,189);continue}Ee=me;continue}if(me<56320){(ue-=3)>-1&&Ue.push(239,191,189),Ee=me;continue}me=65536+(Ee-55296<<10|me-56320)}else Ee&&(ue-=3)>-1&&Ue.push(239,191,189);if(Ee=null,me<128){if((ue-=1)<0)break;Ue.push(me)}else if(me<2048){if((ue-=2)<0)break;Ue.push(me>>6|192,63&me|128)}else if(me<65536){if((ue-=3)<0)break;Ue.push(me>>12|224,me>>6&63|128,63&me|128)}else{if(!(me<1114112))throw new Error("Invalid code point");if((ue-=4)<0)break;Ue.push(me>>18|240,me>>12&63|128,me>>6&63|128,63&me|128)}}return Ue}function he(ne){return t.toByteArray(function(ue){if((ue=(ue=ue.split("=")[0]).trim().replace(pe,"")).length<2)return"";for(;ue.length%4!=0;)ue+="=";return ue}(ne))}function xe(ne,ue,me,Te){var Ee;for(Ee=0;Ee=ue.length||Ee>=ne.length);++Ee)ue[Ee+me]=ne[Ee];return Ee}function Re(ne,ue){return ne instanceof ue||ne!=null&&ne.constructor!=null&&ne.constructor.name!=null&&ne.constructor.name===ue.name}function we(ne){return ne!=ne}var Ae=function(){for(var ne="0123456789abcdef",ue=new Array(256),me=0;me<16;++me)for(var Te=16*me,Ee=0;Ee<16;++Ee)ue[Te+Ee]=ne[me]+ne[Ee];return ue}();function Me(ne){return typeof BigInt>"u"?Ce:ne}function Ce(){throw new Error("BigInt not supported")}},35791:function(D){D.exports=w,D.exports.isMobile=w,D.exports.default=w;var E=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,e=/CrOS/,_=/android|ipad|playbook|silk/i;function w(s){s||(s={});var T=s.ua;if(T||typeof navigator>"u"||(T=navigator.userAgent),T&&T.headers&&typeof T.headers["user-agent"]=="string"&&(T=T.headers["user-agent"]),typeof T!="string")return!1;var y=E.test(T)&&!e.test(T)||!!s.tablet&&_.test(T);return!y&&s.tablet&&s.featureDetect&&navigator&&navigator.maxTouchPoints>1&&T.indexOf("Macintosh")!==-1&&T.indexOf("Safari")!==-1&&(y=!0),y}},86781:function(D,E,e){e.r(E),e.d(E,{sankeyCenter:function(){return r},sankeyCircular:function(){return C},sankeyJustify:function(){return i},sankeyLeft:function(){return l},sankeyRight:function(){return t}});var _=e(33064),w=e(15140),s=e(45879),T=e(2502),y=e.n(T);function f(he){return he.target.depth}function l(he){return he.depth}function t(he,xe){return xe-1-he.height}function i(he,xe){return he.sourceLinks.length?he.depth:xe-1}function r(he){return he.targetLinks.length?he.depth:he.sourceLinks.length?(0,_.VV)(he.sourceLinks,f)-1:0}function n(he){return function(){return he}}var o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(he){return typeof he}:function(he){return he&&typeof Symbol=="function"&&he.constructor===Symbol&&he!==Symbol.prototype?"symbol":typeof he};function a(he,xe){return p(he.source,xe.source)||he.index-xe.index}function u(he,xe){return p(he.target,xe.target)||he.index-xe.index}function p(he,xe){return he.partOfCycle===xe.partOfCycle?he.y0-xe.y0:he.circularLinkType==="top"||xe.circularLinkType==="bottom"?-1:1}function c(he){return he.value}function b(he){return(he.y0+he.y1)/2}function d(he){return b(he.source)}function v(he){return b(he.target)}function x(he){return he.index}function g(he){return he.nodes}function m(he){return he.links}function k(he,xe){var Re=he.get(xe);if(!Re)throw new Error("missing: "+xe);return Re}function h(he,xe){return xe(he)}var M=25,A=10;function C(){var he,xe,Re=0,we=0,Ae=1,Me=1,Ce=24,ne=x,ue=i,me=g,Te=m,Ee=32,Ue=2,De=null;function je(){var Ze={nodes:me.apply(null,arguments),links:Te.apply(null,arguments)};ge(Ze),L(Ze,0,De),be(Ze),Se(Ze),O(Ze,ne),Ne(Ze,Ee,ne),Ye(Ze);for(var st=4,ot=0;ot0?Ke+M+A:Ke,bottom:Ge=Ge>0?Ge+M+A:Ge,left:ht=ht>0?ht+M+A:ht,right:nt=nt>0?nt+M+A:nt}}(Ze),Nt=function(Je,Ke){var Ge=(0,_.Fp)(Je.nodes,function(Qe){return Qe.column}),nt=Ae-Re,ht=Me-we,Oe=nt/(nt+Ke.right+Ke.left),Be=ht/(ht+Ke.top+Ke.bottom);return Re=Re*Oe+Ke.left,Ae=Ke.right==0?Ae:Ae*Oe,we=we*Be+Ke.top,Me*=Be,Je.nodes.forEach(function(Qe){Qe.x0=Re+Qe.column*((Ae-Re-Ce)/Ge),Qe.x1=Qe.x0+Ce}),Be}(Ze,qt);Ft*=Nt,Ze.links.forEach(function(Je){Je.width=Je.value*Ft}),ft.forEach(function(Je){var Ke=Je.length;Je.forEach(function(Ge,nt){Ge.depth==ft.length-1&&Ke==1||Ge.depth==0&&Ke==1?(Ge.y0=Me/2-Ge.value*Ft,Ge.y1=Ge.y0+Ge.value*Ft):Ge.partOfCycle?R(Ge,Dt)==0?(Ge.y0=Me/2+nt,Ge.y1=Ge.y0+Ge.value*Ft):Ge.circularLinkType=="top"?(Ge.y0=we+nt,Ge.y1=Ge.y0+Ge.value*Ft):(Ge.y0=Me-Ge.value*Ft-nt,Ge.y1=Ge.y0+Ge.value*Ft):qt.top==0||qt.bottom==0?(Ge.y0=(Me-we)/Ke*nt,Ge.y1=Ge.y0+Ge.value*Ft):(Ge.y0=(Me-we)/2-Ke/2+nt,Ge.y1=Ge.y0+Ge.value*Ft)})})})(ot),xt();for(var yt=1,Et=st;Et>0;--Et)Tt(yt*=.99,ot),xt();function Tt(Dt,It){var Ft=ft.length;ft.forEach(function(qt){var Nt=qt.length,Je=qt[0].depth;qt.forEach(function(Ke){var Ge;if((Ke.sourceLinks.length||Ke.targetLinks.length)&&!(Ke.partOfCycle&&R(Ke,It)>0))if(Je==0&&Nt==1)Ge=Ke.y1-Ke.y0,Ke.y0=Me/2-Ge/2,Ke.y1=Me/2+Ge/2;else if(Je==Ft-1&&Nt==1)Ge=Ke.y1-Ke.y0,Ke.y0=Me/2-Ge/2,Ke.y1=Me/2+Ge/2;else{var nt=(0,_.J6)(Ke.sourceLinks,v),ht=(0,_.J6)(Ke.targetLinks,d),Oe=((nt&&ht?(nt+ht)/2:nt||ht)-b(Ke))*Dt;Ke.y0+=Oe,Ke.y1+=Oe}})})}function xt(){ft.forEach(function(Dt){var It,Ft,qt,Nt=we,Je=Dt.length;for(Dt.sort(p),qt=0;qt0&&(It.y0+=Ft,It.y1+=Ft),Nt=It.y1+he;if((Ft=Nt-he-Me)>0)for(Nt=It.y0-=Ft,It.y1-=Ft,qt=Je-2;qt>=0;--qt)(Ft=(It=Dt[qt]).y1+he-Nt)>0&&(It.y0-=Ft,It.y1-=Ft),Nt=It.y0})}}function Ye(Ze){Ze.nodes.forEach(function(st){st.sourceLinks.sort(u),st.targetLinks.sort(a)}),Ze.nodes.forEach(function(st){var ot=st.y0,ft=ot,yt=st.y1,Et=yt;st.sourceLinks.forEach(function(Tt){Tt.circular?(Tt.y0=yt-Tt.width/2,yt-=Tt.width):(Tt.y0=ot+Tt.width/2,ot+=Tt.width)}),st.targetLinks.forEach(function(Tt){Tt.circular?(Tt.y1=Et-Tt.width/2,Et-=Tt.width):(Tt.y1=ft+Tt.width/2,ft+=Tt.width)})})}return je.nodeId=function(Ze){return arguments.length?(ne=typeof Ze=="function"?Ze:n(Ze),je):ne},je.nodeAlign=function(Ze){return arguments.length?(ue=typeof Ze=="function"?Ze:n(Ze),je):ue},je.nodeWidth=function(Ze){return arguments.length?(Ce=+Ze,je):Ce},je.nodePadding=function(Ze){return arguments.length?(he=+Ze,je):he},je.nodes=function(Ze){return arguments.length?(me=typeof Ze=="function"?Ze:n(Ze),je):me},je.links=function(Ze){return arguments.length?(Te=typeof Ze=="function"?Ze:n(Ze),je):Te},je.size=function(Ze){return arguments.length?(Re=we=0,Ae=+Ze[0],Me=+Ze[1],je):[Ae-Re,Me-we]},je.extent=function(Ze){return arguments.length?(Re=+Ze[0][0],Ae=+Ze[1][0],we=+Ze[0][1],Me=+Ze[1][1],je):[[Re,we],[Ae,Me]]},je.iterations=function(Ze){return arguments.length?(Ee=+Ze,je):Ee},je.circularLinkGap=function(Ze){return arguments.length?(Ue=+Ze,je):Ue},je.nodePaddingRatio=function(Ze){return arguments.length?(xe=+Ze,je):xe},je.sortNodes=function(Ze){return arguments.length?(De=Ze,je):De},je.update=function(Ze){return O(Ze,ne),Ye(Ze),Ze.links.forEach(function(st){st.circular&&(st.circularLinkType=st.y0+st.y11||Ae>1)}function B(he,xe,Re){return he.sort(N),he.forEach(function(we,Ae){var Me,Ce,ne=0;if(pe(we,Re)&&U(we))we.circularPathData.verticalBuffer=ne+we.width/2;else{for(var ue=0;ueCe.source.column)){var me=he[ue].circularPathData.verticalBuffer+he[ue].width/2+xe;ne=me>ne?me:ne}we.circularPathData.verticalBuffer=ne+we.width/2}}),he}function G(he,xe,Re,we){var Ae=(0,_.VV)(he.links,function(Me){return Me.source.y0});he.links.forEach(function(Me){Me.circular&&(Me.circularPathData={})}),B(he.links.filter(function(Me){return Me.circularLinkType=="top"}),xe,we),B(he.links.filter(function(Me){return Me.circularLinkType=="bottom"}),xe,we),he.links.forEach(function(Me){if(Me.circular){if(Me.circularPathData.arcRadius=Me.width+A,Me.circularPathData.leftNodeBuffer=5,Me.circularPathData.rightNodeBuffer=5,Me.circularPathData.sourceWidth=Me.source.x1-Me.source.x0,Me.circularPathData.sourceX=Me.source.x0+Me.circularPathData.sourceWidth,Me.circularPathData.targetX=Me.target.x0,Me.circularPathData.sourceY=Me.y0,Me.circularPathData.targetY=Me.y1,pe(Me,we)&&U(Me))Me.circularPathData.leftSmallArcRadius=A+Me.width/2,Me.circularPathData.leftLargeArcRadius=A+Me.width/2,Me.circularPathData.rightSmallArcRadius=A+Me.width/2,Me.circularPathData.rightLargeArcRadius=A+Me.width/2,Me.circularLinkType=="bottom"?(Me.circularPathData.verticalFullExtent=Me.source.y1+M+Me.circularPathData.verticalBuffer,Me.circularPathData.verticalLeftInnerExtent=Me.circularPathData.verticalFullExtent-Me.circularPathData.leftLargeArcRadius,Me.circularPathData.verticalRightInnerExtent=Me.circularPathData.verticalFullExtent-Me.circularPathData.rightLargeArcRadius):(Me.circularPathData.verticalFullExtent=Me.source.y0-M-Me.circularPathData.verticalBuffer,Me.circularPathData.verticalLeftInnerExtent=Me.circularPathData.verticalFullExtent+Me.circularPathData.leftLargeArcRadius,Me.circularPathData.verticalRightInnerExtent=Me.circularPathData.verticalFullExtent+Me.circularPathData.rightLargeArcRadius);else{var Ce=Me.source.column,ne=Me.circularLinkType,ue=he.links.filter(function(Ee){return Ee.source.column==Ce&&Ee.circularLinkType==ne});Me.circularLinkType=="bottom"?ue.sort(V):ue.sort(j);var me=0;ue.forEach(function(Ee,Ue){Ee.circularLinkID==Me.circularLinkID&&(Me.circularPathData.leftSmallArcRadius=A+Me.width/2+me,Me.circularPathData.leftLargeArcRadius=A+Me.width/2+Ue*xe+me),me+=Ee.width}),Ce=Me.target.column,ue=he.links.filter(function(Ee){return Ee.target.column==Ce&&Ee.circularLinkType==ne}),Me.circularLinkType=="bottom"?ue.sort(ee):ue.sort(H),me=0,ue.forEach(function(Ee,Ue){Ee.circularLinkID==Me.circularLinkID&&(Me.circularPathData.rightSmallArcRadius=A+Me.width/2+me,Me.circularPathData.rightLargeArcRadius=A+Me.width/2+Ue*xe+me),me+=Ee.width}),Me.circularLinkType=="bottom"?(Me.circularPathData.verticalFullExtent=Math.max(Re,Me.source.y1,Me.target.y1)+M+Me.circularPathData.verticalBuffer,Me.circularPathData.verticalLeftInnerExtent=Me.circularPathData.verticalFullExtent-Me.circularPathData.leftLargeArcRadius,Me.circularPathData.verticalRightInnerExtent=Me.circularPathData.verticalFullExtent-Me.circularPathData.rightLargeArcRadius):(Me.circularPathData.verticalFullExtent=Ae-M-Me.circularPathData.verticalBuffer,Me.circularPathData.verticalLeftInnerExtent=Me.circularPathData.verticalFullExtent+Me.circularPathData.leftLargeArcRadius,Me.circularPathData.verticalRightInnerExtent=Me.circularPathData.verticalFullExtent+Me.circularPathData.rightLargeArcRadius)}Me.circularPathData.leftInnerExtent=Me.circularPathData.sourceX+Me.circularPathData.leftNodeBuffer,Me.circularPathData.rightInnerExtent=Me.circularPathData.targetX-Me.circularPathData.rightNodeBuffer,Me.circularPathData.leftFullExtent=Me.circularPathData.sourceX+Me.circularPathData.leftLargeArcRadius+Me.circularPathData.leftNodeBuffer,Me.circularPathData.rightFullExtent=Me.circularPathData.targetX-Me.circularPathData.rightLargeArcRadius-Me.circularPathData.rightNodeBuffer}if(Me.circular)Me.path=function(Ee){return Ee.circularLinkType=="top"?"M"+Ee.circularPathData.sourceX+" "+Ee.circularPathData.sourceY+" L"+Ee.circularPathData.leftInnerExtent+" "+Ee.circularPathData.sourceY+" A"+Ee.circularPathData.leftLargeArcRadius+" "+Ee.circularPathData.leftSmallArcRadius+" 0 0 0 "+Ee.circularPathData.leftFullExtent+" "+(Ee.circularPathData.sourceY-Ee.circularPathData.leftSmallArcRadius)+" L"+Ee.circularPathData.leftFullExtent+" "+Ee.circularPathData.verticalLeftInnerExtent+" A"+Ee.circularPathData.leftLargeArcRadius+" "+Ee.circularPathData.leftLargeArcRadius+" 0 0 0 "+Ee.circularPathData.leftInnerExtent+" "+Ee.circularPathData.verticalFullExtent+" L"+Ee.circularPathData.rightInnerExtent+" "+Ee.circularPathData.verticalFullExtent+" A"+Ee.circularPathData.rightLargeArcRadius+" "+Ee.circularPathData.rightLargeArcRadius+" 0 0 0 "+Ee.circularPathData.rightFullExtent+" "+Ee.circularPathData.verticalRightInnerExtent+" L"+Ee.circularPathData.rightFullExtent+" "+(Ee.circularPathData.targetY-Ee.circularPathData.rightSmallArcRadius)+" A"+Ee.circularPathData.rightLargeArcRadius+" "+Ee.circularPathData.rightSmallArcRadius+" 0 0 0 "+Ee.circularPathData.rightInnerExtent+" "+Ee.circularPathData.targetY+" L"+Ee.circularPathData.targetX+" "+Ee.circularPathData.targetY:"M"+Ee.circularPathData.sourceX+" "+Ee.circularPathData.sourceY+" L"+Ee.circularPathData.leftInnerExtent+" "+Ee.circularPathData.sourceY+" A"+Ee.circularPathData.leftLargeArcRadius+" "+Ee.circularPathData.leftSmallArcRadius+" 0 0 1 "+Ee.circularPathData.leftFullExtent+" "+(Ee.circularPathData.sourceY+Ee.circularPathData.leftSmallArcRadius)+" L"+Ee.circularPathData.leftFullExtent+" "+Ee.circularPathData.verticalLeftInnerExtent+" A"+Ee.circularPathData.leftLargeArcRadius+" "+Ee.circularPathData.leftLargeArcRadius+" 0 0 1 "+Ee.circularPathData.leftInnerExtent+" "+Ee.circularPathData.verticalFullExtent+" L"+Ee.circularPathData.rightInnerExtent+" "+Ee.circularPathData.verticalFullExtent+" A"+Ee.circularPathData.rightLargeArcRadius+" "+Ee.circularPathData.rightLargeArcRadius+" 0 0 1 "+Ee.circularPathData.rightFullExtent+" "+Ee.circularPathData.verticalRightInnerExtent+" L"+Ee.circularPathData.rightFullExtent+" "+(Ee.circularPathData.targetY+Ee.circularPathData.rightSmallArcRadius)+" A"+Ee.circularPathData.rightLargeArcRadius+" "+Ee.circularPathData.rightSmallArcRadius+" 0 0 1 "+Ee.circularPathData.rightInnerExtent+" "+Ee.circularPathData.targetY+" L"+Ee.circularPathData.targetX+" "+Ee.circularPathData.targetY}(Me);else{var Te=(0,s.h5)().source(function(Ee){return[Ee.source.x0+(Ee.source.x1-Ee.source.x0),Ee.y0]}).target(function(Ee){return[Ee.target.x0,Ee.y1]});Me.path=Te(Me)}})}function N(he,xe){return Q(he)==Q(xe)?he.circularLinkType=="bottom"?V(he,xe):j(he,xe):Q(xe)-Q(he)}function j(he,xe){return he.y0-xe.y0}function V(he,xe){return xe.y0-he.y0}function H(he,xe){return he.y1-xe.y1}function ee(he,xe){return xe.y1-he.y1}function Q(he){return he.target.column-he.source.column}function X(he){return he.target.x0-he.source.x1}function Y(he,xe){var Re=I(he),we=X(xe)/Math.tan(Re);return ye(he)=="up"?he.y1+we:he.y1-we}function K(he,xe){var Re=I(he),we=X(xe)/Math.tan(Re);return ye(he)=="up"?he.y1-we:he.y1+we}function te(he,xe,Re,we){he.links.forEach(function(Ae){if(!Ae.circular&&Ae.target.column-Ae.source.column>1){var Me=Ae.source.column+1,Ce=Ae.target.column-1,ne=1,ue=Ce-Me+1;for(ne=1;Me<=Ce;Me++,ne++)he.nodes.forEach(function(me){if(me.column==Me){var Te,Ee=ne/(ue+1),Ue=Math.pow(1-Ee,3),De=3*Ee*Math.pow(1-Ee,2),je=3*Math.pow(Ee,2)*(1-Ee),ge=Math.pow(Ee,3),be=Ue*Ae.y0+De*Ae.y0+je*Ae.y1+ge*Ae.y1,Se=be-Ae.width/2,Ne=be+Ae.width/2;Se>me.y0&&Sest.y0&&Ze.y0st.y0&&Ze.y1st.y1)&&ae(Ye,Te,xe,Re)})):(Ne>me.y0&&Neme.y1)&&(Te=Ne-me.y0+10,me=ae(me,Te,xe,Re),he.nodes.forEach(function(Ye){h(Ye,we)!=h(me,we)&&Ye.column==me.column&&Ye.y0me.y1&&ae(Ye,Te,xe,Re)}))}})}})}function ae(he,xe,Re,we){return he.y0+xe>=Re&&he.y1+xe<=we&&(he.y0=he.y0+xe,he.y1=he.y1+xe,he.targetLinks.forEach(function(Ae){Ae.y1=Ae.y1+xe}),he.sourceLinks.forEach(function(Ae){Ae.y0=Ae.y0+xe})),he}function oe(he,xe,Re,we){he.nodes.forEach(function(Ae){we&&Ae.y+(Ae.y1-Ae.y0)>xe&&(Ae.y=Ae.y-(Ae.y+(Ae.y1-Ae.y0)-xe));var Me=he.links.filter(function(ue){return h(ue.source,Re)==h(Ae,Re)}),Ce=Me.length;Ce>1&&Me.sort(function(ue,me){if(!ue.circular&&!me.circular){if(ue.target.column==me.target.column||!fe(ue,me))return ue.y1-me.y1;if(ue.target.column>me.target.column){var Te=K(me,ue);return ue.y1-Te}if(me.target.column>ue.target.column)return K(ue,me)-me.y1}return ue.circular&&!me.circular?ue.circularLinkType=="top"?-1:1:me.circular&&!ue.circular?me.circularLinkType=="top"?1:-1:ue.circular&&me.circular?ue.circularLinkType===me.circularLinkType&&ue.circularLinkType=="top"?ue.target.column===me.target.column?ue.target.y1-me.target.y1:me.target.column-ue.target.column:ue.circularLinkType===me.circularLinkType&&ue.circularLinkType=="bottom"?ue.target.column===me.target.column?me.target.y1-ue.target.y1:ue.target.column-me.target.column:ue.circularLinkType=="top"?-1:1:void 0});var ne=Ae.y0;Me.forEach(function(ue){ue.y0=ne+ue.width/2,ne+=ue.width}),Me.forEach(function(ue,me){if(ue.circularLinkType=="bottom"){for(var Te=me+1,Ee=0;Te1&&Ae.sort(function(ne,ue){if(!ne.circular&&!ue.circular){if(ne.source.column==ue.source.column||!fe(ne,ue))return ne.y0-ue.y0;if(ue.source.column0?"up":"down"}function pe(he,xe){return h(he.source,xe)==h(he.target,xe)}function de(he,xe,Re){var we=he.nodes,Ae=he.links,Me=!1,Ce=!1;if(Ae.forEach(function(me){me.circularLinkType=="top"?Me=!0:me.circularLinkType=="bottom"&&(Ce=!0)}),Me==0||Ce==0){var ne=(0,_.VV)(we,function(me){return me.y0}),ue=(Re-xe)/((0,_.Fp)(we,function(me){return me.y1})-ne);we.forEach(function(me){var Te=(me.y1-me.y0)*ue;me.y0=(me.y0-ne)*ue,me.y1=me.y0+Te}),Ae.forEach(function(me){me.y0=(me.y0-ne)*ue,me.y1=(me.y1-ne)*ue,me.width=me.width*ue})}}},30838:function(D,E,e){e.r(E),e.d(E,{sankey:function(){return x},sankeyCenter:function(){return l},sankeyJustify:function(){return f},sankeyLeft:function(){return T},sankeyLinkHorizontal:function(){return h},sankeyRight:function(){return y}});var _=e(33064),w=e(15140);function s(M){return M.target.depth}function T(M){return M.depth}function y(M,A){return A-1-M.height}function f(M,A){return M.sourceLinks.length?M.depth:A-1}function l(M){return M.targetLinks.length?M.depth:M.sourceLinks.length?(0,_.VV)(M.sourceLinks,s)-1:0}function t(M){return function(){return M}}function i(M,A){return n(M.source,A.source)||M.index-A.index}function r(M,A){return n(M.target,A.target)||M.index-A.index}function n(M,A){return M.y0-A.y0}function o(M){return M.value}function a(M){return(M.y0+M.y1)/2}function u(M){return a(M.source)*M.value}function p(M){return a(M.target)*M.value}function c(M){return M.index}function b(M){return M.nodes}function d(M){return M.links}function v(M,A){var C=M.get(A);if(!C)throw new Error("missing: "+A);return C}function x(){var M=0,A=0,C=1,L=1,O=24,I=8,R=c,U=f,B=b,G=d,N=32;function j(){var Y={nodes:B.apply(null,arguments),links:G.apply(null,arguments)};return V(Y),H(Y),ee(Y),Q(Y),X(Y),Y}function V(Y){Y.nodes.forEach(function(te,ae){te.index=ae,te.sourceLinks=[],te.targetLinks=[]});var K=(0,w.UI)(Y.nodes,R);Y.links.forEach(function(te,ae){te.index=ae;var oe=te.source,se=te.target;typeof oe!="object"&&(oe=te.source=v(K,oe)),typeof se!="object"&&(se=te.target=v(K,se)),oe.sourceLinks.push(te),se.targetLinks.push(te)})}function H(Y){Y.nodes.forEach(function(K){K.value=Math.max((0,_.Sm)(K.sourceLinks,o),(0,_.Sm)(K.targetLinks,o))})}function ee(Y){var K,te,ae;for(K=Y.nodes,te=[],ae=0;K.length;++ae,K=te,te=[])K.forEach(function(se){se.depth=ae,se.sourceLinks.forEach(function(fe){te.indexOf(fe.target)<0&&te.push(fe.target)})});for(K=Y.nodes,te=[],ae=0;K.length;++ae,K=te,te=[])K.forEach(function(se){se.height=ae,se.targetLinks.forEach(function(fe){te.indexOf(fe.source)<0&&te.push(fe.source)})});var oe=(C-M-O)/(ae-1);Y.nodes.forEach(function(se){se.x1=(se.x0=M+Math.max(0,Math.min(ae-1,Math.floor(U.call(null,se,ae))))*oe)+O})}function Q(Y){var K=(0,w.b1)().key(function(ye){return ye.x0}).sortKeys(_.j2).entries(Y.nodes).map(function(ye){return ye.values});(function(){var ye=(0,_.Fp)(K,function(he){return he.length}),pe=.6666666666666666*(L-A)/(ye-1);I>pe&&(I=pe);var de=(0,_.VV)(K,function(he){return(L-A-(he.length-1)*I)/(0,_.Sm)(he,o)});K.forEach(function(he){he.forEach(function(xe,Re){xe.y1=(xe.y0=Re)+xe.value*de})}),Y.links.forEach(function(he){he.width=he.value*de})})(),fe();for(var te=1,ae=N;ae>0;--ae)se(te*=.99),fe(),oe(te),fe();function oe(ye){K.forEach(function(pe){pe.forEach(function(de){if(de.targetLinks.length){var he=((0,_.Sm)(de.targetLinks,u)/(0,_.Sm)(de.targetLinks,o)-a(de))*ye;de.y0+=he,de.y1+=he}})})}function se(ye){K.slice().reverse().forEach(function(pe){pe.forEach(function(de){if(de.sourceLinks.length){var he=((0,_.Sm)(de.sourceLinks,p)/(0,_.Sm)(de.sourceLinks,o)-a(de))*ye;de.y0+=he,de.y1+=he}})})}function fe(){K.forEach(function(ye){var pe,de,he,xe=A,Re=ye.length;for(ye.sort(n),he=0;he0&&(pe.y0+=de,pe.y1+=de),xe=pe.y1+I;if((de=xe-I-L)>0)for(xe=pe.y0-=de,pe.y1-=de,he=Re-2;he>=0;--he)(de=(pe=ye[he]).y1+I-xe)>0&&(pe.y0-=de,pe.y1-=de),xe=pe.y0})}}function X(Y){Y.nodes.forEach(function(K){K.sourceLinks.sort(r),K.targetLinks.sort(i)}),Y.nodes.forEach(function(K){var te=K.y0,ae=te;K.sourceLinks.forEach(function(oe){oe.y0=te+oe.width/2,te+=oe.width}),K.targetLinks.forEach(function(oe){oe.y1=ae+oe.width/2,ae+=oe.width})})}return j.update=function(Y){return X(Y),Y},j.nodeId=function(Y){return arguments.length?(R=typeof Y=="function"?Y:t(Y),j):R},j.nodeAlign=function(Y){return arguments.length?(U=typeof Y=="function"?Y:t(Y),j):U},j.nodeWidth=function(Y){return arguments.length?(O=+Y,j):O},j.nodePadding=function(Y){return arguments.length?(I=+Y,j):I},j.nodes=function(Y){return arguments.length?(B=typeof Y=="function"?Y:t(Y),j):B},j.links=function(Y){return arguments.length?(G=typeof Y=="function"?Y:t(Y),j):G},j.size=function(Y){return arguments.length?(M=A=0,C=+Y[0],L=+Y[1],j):[C-M,L-A]},j.extent=function(Y){return arguments.length?(M=+Y[0][0],C=+Y[1][0],A=+Y[0][1],L=+Y[1][1],j):[[M,A],[C,L]]},j.iterations=function(Y){return arguments.length?(N=+Y,j):N},j}var g=e(45879);function m(M){return[M.source.x1,M.y0]}function k(M){return[M.target.x0,M.y1]}function h(){return(0,g.h5)().source(m).target(k)}},39898:function(D,E,e){var _,w;(function(){var s={version:"3.8.0"},T=[].slice,y=function(re){return T.call(re)},f=self.document;function l(re){return re&&(re.ownerDocument||re.document||re).documentElement}function t(re){return re&&(re.ownerDocument&&re.ownerDocument.defaultView||re.document&&re||re.defaultView)}if(f)try{y(f.documentElement.childNodes)[0].nodeType}catch{y=function(ve){for(var Le=ve.length,Fe=new Array(Le);Le--;)Fe[Le]=ve[Le];return Fe}}if(Date.now||(Date.now=function(){return+new Date}),f)try{f.createElement("DIV").style.setProperty("opacity",0,"")}catch{var i=this.Element.prototype,r=i.setAttribute,n=i.setAttributeNS,o=this.CSSStyleDeclaration.prototype,a=o.setProperty;i.setAttribute=function(ve,Le){r.call(this,ve,Le+"")},i.setAttributeNS=function(ve,Le,Fe){n.call(this,ve,Le,Fe+"")},o.setProperty=function(ve,Le,Fe){a.call(this,ve,Le+"",Fe)}}function u(re,ve){return reve?1:re>=ve?0:NaN}function p(re){return re===null?NaN:+re}function c(re){return!isNaN(re)}function b(re){return{left:function(ve,Le,Fe,Ve){for(arguments.length<3&&(Fe=0),arguments.length<4&&(Ve=ve.length);Fe>>1;re(ve[We],Le)<0?Fe=We+1:Ve=We}return Fe},right:function(ve,Le,Fe,Ve){for(arguments.length<3&&(Fe=0),arguments.length<4&&(Ve=ve.length);Fe>>1;re(ve[We],Le)>0?Ve=We:Fe=We+1}return Fe}}}s.ascending=u,s.descending=function(re,ve){return vere?1:ve>=re?0:NaN},s.min=function(re,ve){var Le,Fe,Ve=-1,We=re.length;if(arguments.length===1){for(;++Ve=Fe){Le=Fe;break}for(;++VeFe&&(Le=Fe)}else{for(;++Ve=Fe){Le=Fe;break}for(;++VeFe&&(Le=Fe)}return Le},s.max=function(re,ve){var Le,Fe,Ve=-1,We=re.length;if(arguments.length===1){for(;++Ve=Fe){Le=Fe;break}for(;++VeLe&&(Le=Fe)}else{for(;++Ve=Fe){Le=Fe;break}for(;++VeLe&&(Le=Fe)}return Le},s.extent=function(re,ve){var Le,Fe,Ve,We=-1,$e=re.length;if(arguments.length===1){for(;++We<$e;)if((Fe=re[We])!=null&&Fe>=Fe){Le=Ve=Fe;break}for(;++We<$e;)(Fe=re[We])!=null&&(Le>Fe&&(Le=Fe),Ve=Fe){Le=Ve=Fe;break}for(;++We<$e;)(Fe=ve.call(re,re[We],We))!=null&&(Le>Fe&&(Le=Fe),Ve1)return $e/(lt-1)},s.deviation=function(){var re=s.variance.apply(this,arguments);return re&&Math.sqrt(re)};var d=b(u);function v(re){return re.length}s.bisectLeft=d.left,s.bisect=s.bisectRight=d.right,s.bisector=function(re){return b(re.length===1?function(ve,Le){return u(re(ve),Le)}:re)},s.shuffle=function(re,ve,Le){(We=arguments.length)<3&&(Le=re.length,We<2&&(ve=0));for(var Fe,Ve,We=Le-ve;We;)Ve=Math.random()*We--|0,Fe=re[We+ve],re[We+ve]=re[Ve+ve],re[Ve+ve]=Fe;return re},s.permute=function(re,ve){for(var Le=ve.length,Fe=new Array(Le);Le--;)Fe[Le]=re[ve[Le]];return Fe},s.pairs=function(re){for(var ve=0,Le=re.length-1,Fe=re[0],Ve=new Array(Le<0?0:Le);ve=0;)for(ve=(Fe=re[Ve]).length;--ve>=0;)Le[--$e]=Fe[ve];return Le};var x=Math.abs;function g(re){for(var ve=1;re*ve%1;)ve*=10;return ve}function m(re,ve){for(var Le in ve)Object.defineProperty(re.prototype,Le,{value:ve[Le],enumerable:!1})}function k(){this._=Object.create(null)}function h(re){return(re+="")=="__proto__"||re[0]==="\0"?"\0"+re:re}function M(re){return(re+="")[0]==="\0"?re.slice(1):re}function A(re){return h(re)in this._}function C(re){return(re=h(re))in this._&&delete this._[re]}function L(){var re=[];for(var ve in this._)re.push(M(ve));return re}function O(){var re=0;for(var ve in this._)++re;return re}function I(){for(var re in this._)return!1;return!0}function R(){this._=Object.create(null)}function U(re){return re}function B(re,ve,Le){return function(){var Fe=Le.apply(ve,arguments);return Fe===ve?re:Fe}}function G(re,ve){if(ve in re)return ve;ve=ve.charAt(0).toUpperCase()+ve.slice(1);for(var Le=0,Fe=N.length;Leve;)Ve.push(Fe/We);else for(;(Fe=re+Le*++$e)=Fe.length)return ve?ve.call(Le,lt):re?lt.sort(re):lt;for(var zt,Ut,Vt,Qt,gn=-1,en=lt.length,sn=Fe[gt++],rn=new k;++gn=Fe.length)return tt;var gt=[],zt=Ve[lt++];return tt.forEach(function(Ut,Vt){gt.push({key:Ut,values:$e(Vt,lt)})}),zt?gt.sort(function(Ut,Vt){return zt(Ut.key,Vt.key)}):gt}return Le.map=function(tt,lt){return We(lt,tt,0)},Le.entries=function(tt){return $e(We(s.map,tt,0),0)},Le.key=function(tt){return Fe.push(tt),Le},Le.sortKeys=function(tt){return Ve[Fe.length-1]=tt,Le},Le.sortValues=function(tt){return re=tt,Le},Le.rollup=function(tt){return ve=tt,Le},Le},s.set=function(re){var ve=new R;if(re)for(var Le=0,Fe=re.length;Le=0&&(Fe=re.slice(Le+1),re=re.slice(0,Le)),re)return arguments.length<2?this[re].on(Fe):this[re].on(Fe,ve);if(arguments.length===2){if(ve==null)for(re in this)this.hasOwnProperty(re)&&this[re].on(Fe,null);return this}},s.event=null,s.requote=function(re){return re.replace(Y,"\\$&")};var Y=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,K={}.__proto__?function(re,ve){re.__proto__=ve}:function(re,ve){for(var Le in ve)re[Le]=ve[Le]};function te(re){return K(re,fe),re}var ae=function(re,ve){return ve.querySelector(re)},oe=function(re,ve){return ve.querySelectorAll(re)},se=function(re,ve){var Le=re.matches||re[G(re,"matchesSelector")];return se=function(Fe,Ve){return Le.call(Fe,Ve)},se(re,ve)};typeof Sizzle=="function"&&(ae=function(re,ve){return Sizzle(re,ve)[0]||null},oe=Sizzle,se=Sizzle.matchesSelector),s.selection=function(){return s.select(f.documentElement)};var fe=s.selection.prototype=[];function ye(re){return typeof re=="function"?re:function(){return ae(re,this)}}function pe(re){return typeof re=="function"?re:function(){return oe(re,this)}}fe.select=function(re){var ve,Le,Fe,Ve,We=[];re=ye(re);for(var $e=-1,tt=this.length;++$e=0&&(Le=re.slice(0,ve))!=="xmlns"&&(re=re.slice(ve+1)),he.hasOwnProperty(Le)?{space:he[Le],local:re}:re}},fe.attr=function(re,ve){if(arguments.length<2){if(typeof re=="string"){var Le=this.node();return(re=s.ns.qualify(re)).local?Le.getAttributeNS(re.space,re.local):Le.getAttribute(re)}for(ve in re)this.each(xe(ve,re[ve]));return this}return this.each(xe(re,ve))},fe.classed=function(re,ve){if(arguments.length<2){if(typeof re=="string"){var Le=this.node(),Fe=(re=Ae(re)).length,Ve=-1;if(ve=Le.classList){for(;++Ve=0;)(Le=Fe[Ve])&&(We&&We!==Le.nextSibling&&We.parentNode.insertBefore(Le,We),We=Le);return this},fe.sort=function(re){re=De.apply(this,arguments);for(var ve=-1,Le=this.length;++ve=ve&&(ve=Ve+1);!($e=tt[ve])&&++ve0&&(re=re.slice(0,Ve));var $e=Ye.get(re);function tt(){var lt=this[Fe];lt&&(this.removeEventListener(re,lt,lt.$),delete this[Fe])}return $e&&(re=$e,We=st),Ve?ve?function(){var lt=We(ve,y(arguments));tt.call(this),this.addEventListener(re,this[Fe]=lt,lt.$=Le),lt._=ve}:tt:ve?j:function(){var lt,gt=new RegExp("^__on([^.]+)"+s.requote(re)+"$");for(var zt in this)if(lt=zt.match(gt)){var Ut=this[zt];this.removeEventListener(lt[1],Ut,Ut.$),delete this[zt]}}}s.selection.enter=ge,s.selection.enter.prototype=be,be.append=fe.append,be.empty=fe.empty,be.node=fe.node,be.call=fe.call,be.size=fe.size,be.select=function(re){for(var ve,Le,Fe,Ve,We,$e=[],tt=-1,lt=this.length;++tt1?Nt:re<-1?-Nt:Math.asin(re)}function nt(re){return((re=Math.exp(re))+1/re)/2}var ht=Math.SQRT2;s.interpolateZoom=function(re,ve){var Le,Fe,Ve=re[0],We=re[1],$e=re[2],tt=ve[0],lt=ve[1],gt=ve[2],zt=tt-Ve,Ut=lt-We,Vt=zt*zt+Ut*Ut;if(Vt<1e-12)Fe=Math.log(gt/$e)/ht,Le=function(Mn){return[Ve+Mn*zt,We+Mn*Ut,$e*Math.exp(ht*Mn*Fe)]};else{var Qt=Math.sqrt(Vt),gn=(gt*gt-$e*$e+4*Vt)/(2*$e*2*Qt),en=(gt*gt-$e*$e-4*Vt)/(2*gt*2*Qt),sn=Math.log(Math.sqrt(gn*gn+1)-gn),rn=Math.log(Math.sqrt(en*en+1)-en);Fe=(rn-sn)/ht,Le=function(Mn){var xn,an=Mn*Fe,zn=nt(sn),Vn=$e/(2*Qt)*(zn*(xn=ht*an+sn,((xn=Math.exp(2*xn))-1)/(xn+1))-function(nr){return((nr=Math.exp(nr))-1/nr)/2}(sn));return[Ve+Vn*zt,We+Vn*Ut,$e*zn/nt(ht*an+sn)]}}return Le.duration=1e3*Fe,Le},s.behavior.zoom=function(){var re,ve,Le,Fe,Ve,We,$e,tt,lt,gt={x:0,y:0,k:1},zt=[960,500],Ut=Qe,Vt=250,Qt=0,gn="mousedown.zoom",en="mousemove.zoom",sn="mouseup.zoom",rn="touchstart.zoom",Mn=X(xn,"zoomstart","zoom","zoomend");function xn(xr){xr.on(gn,wr).on(Be+".zoom",Jr).on("dblclick.zoom",Kr).on(rn,Rr)}function an(xr){return[(xr[0]-gt.x)/gt.k,(xr[1]-gt.y)/gt.k]}function zn(xr){gt.k=Math.max(Ut[0],Math.min(Ut[1],xr))}function Vn(xr,zr){zr=function(Wr){return[Wr[0]*gt.k+gt.x,Wr[1]*gt.k+gt.y]}(zr),gt.x+=xr[0]-zr[0],gt.y+=xr[1]-zr[1]}function nr(xr,zr,Wr,Gr){xr.__chart__={x:gt.x,y:gt.y,k:gt.k},zn(Math.pow(2,Gr)),Vn(ve=zr,Wr),xr=s.select(xr),Vt>0&&(xr=xr.transition().duration(Vt)),xr.call(xn.event)}function rr(){$e&&$e.domain(We.range().map(function(xr){return(xr-gt.x)/gt.k}).map(We.invert)),lt&<.domain(tt.range().map(function(xr){return(xr-gt.y)/gt.k}).map(tt.invert))}function Tr(xr){Qt++||xr({type:"zoomstart"})}function Ar(xr){rr(),xr({type:"zoom",scale:gt.k,translate:[gt.x,gt.y]})}function mr(xr){--Qt||(xr({type:"zoomend"}),ve=null)}function wr(){var xr=this,zr=Mn.of(xr,arguments),Wr=0,Gr=s.select(t(xr)).on(en,ui).on(sn,ki),ii=an(s.mouse(xr)),ti=yt(xr);function ui(){Wr=1,Vn(s.mouse(xr),ii),Ar(zr)}function ki(){Gr.on(en,null).on(sn,null),ti(Wr),mr(zr)}Si.call(xr),Tr(zr)}function Rr(){var xr,zr=this,Wr=Mn.of(zr,arguments),Gr={},ii=0,ti=".zoom-"+s.event.changedTouches[0].identifier,ui="touchmove"+ti,ki="touchend"+ti,Ii=[],Ei=s.select(zr),wi=yt(zr);function Ai(){var ta=s.touches(zr);return xr=gt.k,ta.forEach(function(Yr){Yr.identifier in Gr&&(Gr[Yr.identifier]=an(Yr))}),ta}function Ci(){var ta=s.event.target;s.select(ta).on(ui,qi).on(ki,_s),Ii.push(ta);for(var Yr=s.event.changedTouches,pa=0,wa=Yr.length;pa1){ai=Ui[0];var na=Ui[1],Ba=ai[0]-na[0],Kl=ai[1]-na[1];ii=Ba*Ba+Kl*Kl}}function qi(){var ta,Yr,pa,wa,Ui=s.touches(zr);Si.call(zr);for(var ko=0,ai=Ui.length;ko360?tt-=360:tt<0&&(tt+=360),tt<60?Fe+(Ve-Fe)*tt/60:tt<180?Ve:tt<240?Fe+(Ve-Fe)*(240-tt)/60:Fe}($e))}return re=isNaN(re)?0:(re%=360)<0?re+360:re,ve=isNaN(ve)||ve<0?0:ve>1?1:ve,Fe=2*(Le=Le<0?0:Le>1?1:Le)-(Ve=Le<=.5?Le*(1+ve):Le+ve-Le*ve),new kn(We(re+120),We(re),We(re-120))}function Ct(re,ve,Le){return this instanceof Ct?(this.h=+re,this.c=+ve,void(this.l=+Le)):arguments.length<2?re instanceof Ct?new Ct(re.h,re.c,re.l):Kt(re instanceof _t?re.l:(re=In((re=s.rgb(re)).r,re.g,re.b)).l,re.a,re.b):new Ct(re,ve,Le)}bt.brighter=function(re){return re=Math.pow(.7,arguments.length?re:1),new pt(this.h,this.s,this.l/re)},bt.darker=function(re){return re=Math.pow(.7,arguments.length?re:1),new pt(this.h,this.s,re*this.l)},bt.rgb=function(){return Lt(this.h,this.s,this.l)},s.hcl=Ct;var mt=Ct.prototype=new ut;function Ot(re,ve,Le){return isNaN(re)&&(re=0),isNaN(ve)&&(ve=0),new _t(Le,Math.cos(re*=Je)*ve,Math.sin(re)*ve)}function _t(re,ve,Le){return this instanceof _t?(this.l=+re,this.a=+ve,void(this.b=+Le)):arguments.length<2?re instanceof _t?new _t(re.l,re.a,re.b):re instanceof Ct?Ot(re.h,re.c,re.l):In((re=kn(re)).r,re.g,re.b):new _t(re,ve,Le)}mt.brighter=function(re){return new Ct(this.h,this.c,Math.min(100,this.l+Pt*(arguments.length?re:1)))},mt.darker=function(re){return new Ct(this.h,this.c,Math.max(0,this.l-Pt*(arguments.length?re:1)))},mt.rgb=function(){return Ot(this.h,this.c,this.l).rgb()},s.lab=_t;var Pt=18,Bt=.95047,Wt=1.08883,Gt=_t.prototype=new ut;function Xt(re,ve,Le){var Fe=(re+16)/116,Ve=Fe+ve/500,We=Fe-Le/200;return new kn(ln(3.2404542*(Ve=nn(Ve)*Bt)-1.5371385*(Fe=1*nn(Fe))-.4985314*(We=nn(We)*Wt)),ln(-.969266*Ve+1.8760108*Fe+.041556*We),ln(.0556434*Ve-.2040259*Fe+1.0572252*We))}function Kt(re,ve,Le){return re>0?new Ct(Math.atan2(Le,ve)*Ke,Math.sqrt(ve*ve+Le*Le),re):new Ct(NaN,NaN,re)}function nn(re){return re>.206893034?re*re*re:(re-.13793103448275862)/7.787037}function yn(re){return re>.008856?Math.pow(re,.3333333333333333):7.787037*re+.13793103448275862}function ln(re){return Math.round(255*(re<=.00304?12.92*re:1.055*Math.pow(re,.4166666666666667)-.055))}function kn(re,ve,Le){return this instanceof kn?(this.r=~~re,this.g=~~ve,void(this.b=~~Le)):arguments.length<2?re instanceof kn?new kn(re.r,re.g,re.b):fn(""+re,kn,Lt):new kn(re,ve,Le)}function Wn(re){return new kn(re>>16,re>>8&255,255&re)}function wn(re){return Wn(re)+""}Gt.brighter=function(re){return new _t(Math.min(100,this.l+Pt*(arguments.length?re:1)),this.a,this.b)},Gt.darker=function(re){return new _t(Math.max(0,this.l-Pt*(arguments.length?re:1)),this.a,this.b)},Gt.rgb=function(){return Xt(this.l,this.a,this.b)},s.rgb=kn;var on=kn.prototype=new ut;function _n(re){return re<16?"0"+Math.max(0,re).toString(16):Math.min(255,re).toString(16)}function fn(re,ve,Le){var Fe,Ve,We,$e=0,tt=0,lt=0;if(Fe=/([a-z]+)\((.*)\)/.exec(re=re.toLowerCase()))switch(Ve=Fe[2].split(","),Fe[1]){case"hsl":return Le(parseFloat(Ve[0]),parseFloat(Ve[1])/100,parseFloat(Ve[2])/100);case"rgb":return ve(Nn(Ve[0]),Nn(Ve[1]),Nn(Ve[2]))}return(We=Hn.get(re))?ve(We.r,We.g,We.b):(re==null||re.charAt(0)!=="#"||isNaN(We=parseInt(re.slice(1),16))||(re.length===4?($e=(3840&We)>>4,$e|=$e>>4,tt=240&We,tt|=tt>>4,lt=15&We,lt|=lt<<4):re.length===7&&($e=(16711680&We)>>16,tt=(65280&We)>>8,lt=255&We)),ve($e,tt,lt))}function hn(re,ve,Le){var Fe,Ve,We=Math.min(re/=255,ve/=255,Le/=255),$e=Math.max(re,ve,Le),tt=$e-We,lt=($e+We)/2;return tt?(Ve=lt<.5?tt/($e+We):tt/(2-$e-We),Fe=re==$e?(ve-Le)/tt+(ve0&<<1?0:Fe),new pt(Fe,Ve,lt)}function In(re,ve,Le){var Fe=yn((.4124564*(re=Cn(re))+.3575761*(ve=Cn(ve))+.1804375*(Le=Cn(Le)))/Bt),Ve=yn((.2126729*re+.7151522*ve+.072175*Le)/1);return _t(116*Ve-16,500*(Fe-Ve),200*(Ve-yn((.0193339*re+.119192*ve+.9503041*Le)/Wt)))}function Cn(re){return(re/=255)<=.04045?re/12.92:Math.pow((re+.055)/1.055,2.4)}function Nn(re){var ve=parseFloat(re);return re.charAt(re.length-1)==="%"?Math.round(2.55*ve):ve}on.brighter=function(re){re=Math.pow(.7,arguments.length?re:1);var ve=this.r,Le=this.g,Fe=this.b,Ve=30;return ve||Le||Fe?(ve&&ve=200&&Ut<300||Ut===304){try{zt=Le.call(Ve,tt)}catch(Vt){return void We.error.call(Ve,Vt)}We.load.call(Ve,zt)}else We.error.call(Ve,tt)}return self.XDomainRequest&&!("withCredentials"in tt)&&/^(http(s)?:)?\/\//.test(re)&&(tt=new XDomainRequest),"onload"in tt?tt.onload=tt.onerror=gt:tt.onreadystatechange=function(){tt.readyState>3&>()},tt.onprogress=function(zt){var Ut=s.event;s.event=zt;try{We.progress.call(Ve,tt)}finally{s.event=Ut}},Ve.header=function(zt,Ut){return zt=(zt+"").toLowerCase(),arguments.length<2?$e[zt]:(Ut==null?delete $e[zt]:$e[zt]=Ut+"",Ve)},Ve.mimeType=function(zt){return arguments.length?(ve=zt==null?null:zt+"",Ve):ve},Ve.responseType=function(zt){return arguments.length?(lt=zt,Ve):lt},Ve.response=function(zt){return Le=zt,Ve},["get","post"].forEach(function(zt){Ve[zt]=function(){return Ve.send.apply(Ve,[zt].concat(y(arguments)))}}),Ve.send=function(zt,Ut,Vt){if(arguments.length===2&&typeof Ut=="function"&&(Vt=Ut,Ut=null),tt.open(zt,re,!0),ve==null||"accept"in $e||($e.accept=ve+",*/*"),tt.setRequestHeader)for(var Qt in $e)tt.setRequestHeader(Qt,$e[Qt]);return ve!=null&&tt.overrideMimeType&&tt.overrideMimeType(ve),lt!=null&&(tt.responseType=lt),Vt!=null&&Ve.on("error",Vt).on("load",function(gn){Vt(null,gn)}),We.beforesend.call(Ve,tt),tt.send(Ut??null),Ve},Ve.abort=function(){return tt.abort(),Ve},s.rebind(Ve,We,"on"),Fe==null?Ve:Ve.get(function(zt){return zt.length===1?function(Ut,Vt){zt(Ut==null?Vt:null)}:zt}(Fe))}Hn.forEach(function(re,ve){Hn.set(re,Wn(ve))}),s.functor=qn,s.xhr=or(U),s.dsv=function(re,ve){var Le=new RegExp('["'+re+` +]`),Fe=re.charCodeAt(0);function Ve(gt,zt,Ut){arguments.length<3&&(Ut=zt,zt=null);var Vt=tr(gt,ve,zt==null?We:$e(zt),Ut);return Vt.row=function(Qt){return arguments.length?Vt.response((zt=Qt)==null?We:$e(Qt)):zt},Vt}function We(gt){return Ve.parse(gt.responseText)}function $e(gt){return function(zt){return Ve.parse(zt.responseText,gt)}}function tt(gt){return gt.map(lt).join(re)}function lt(gt){return Le.test(gt)?'"'+gt.replace(/\"/g,'""')+'"':gt}return Ve.parse=function(gt,zt){var Ut;return Ve.parseRows(gt,function(Vt,Qt){if(Ut)return Ut(Vt,Qt-1);var gn=function(en){for(var sn={},rn=Vt.length,Mn=0;Mn=sn)return gn;if(Vt)return Vt=!1,Qt;var zn=rn;if(gt.charCodeAt(zn)===34){for(var Vn=zn;Vn++24?(isFinite(ve)&&(clearTimeout(dr),dr=setTimeout(mn,ve)),ir=0):(ir=1,yr(mn))}function Ln(){for(var re=Date.now(),ve=kr;ve;)re>=ve.t&&ve.c(re-ve.t)&&(ve.c=null),ve=ve.n;return re}function En(){for(var re,ve=kr,Le=1/0;ve;)ve.c?(ve.t1&&(ve=re[We[$e-2]],Le=re[We[$e-1]],Fe=re[tt],(Le[0]-ve[0])*(Fe[1]-ve[1])-(Le[1]-ve[1])*(Fe[0]-ve[0])<=0);)--$e;We[$e++]=tt}return We.slice(0,$e)}function Qn(re,ve){return re[0]-ve[0]||re[1]-ve[1]}s.timer=function(){$t.apply(this,arguments)},s.timer.flush=function(){Ln(),En()},s.round=function(re,ve){return ve?Math.round(re*(ve=Math.pow(10,ve)))/ve:Math.round(re)},s.geom={},s.geom.hull=function(re){var ve=jn,Le=$n;if(arguments.length)return Fe(re);function Fe(Ve){if(Ve.length<3)return[];var We,$e=qn(ve),tt=qn(Le),lt=Ve.length,gt=[],zt=[];for(We=0;We=0;--We)en.push(Ve[gt[Ut[We]][2]]);for(We=+Qt;WeDt)tt=tt.L;else{if(!((Ve=We-Jn(tt,$e))>Dt)){Fe>-Dt?(ve=tt.P,Le=tt):Ve>-Dt?(ve=tt,Le=tt.N):ve=Le=tt;break}if(!tt.R){ve=tt;break}tt=tt.R}var lt=vn(re);if(Rn.insert(ve,lt),ve||Le){if(ve===Le)return vr(ve),Le=vn(ve.site),Rn.insert(lt,Le),lt.edge=Le.edge=Lr(ve.site,lt.site),cr(ve),void cr(Le);if(Le){vr(ve),vr(Le);var gt=ve.site,zt=gt.x,Ut=gt.y,Vt=re.x-zt,Qt=re.y-Ut,gn=Le.site,en=gn.x-zt,sn=gn.y-Ut,rn=2*(Vt*sn-Qt*en),Mn=Vt*Vt+Qt*Qt,xn=en*en+sn*sn,an={x:(sn*Mn-Qt*xn)/rn+zt,y:(Vt*xn-en*Mn)/rn+Ut};pr(Le.edge,gt,gn,an),lt.edge=Lr(gt,re,null,an),Le.edge=Lr(re,gn,null,an),cr(ve),cr(Le)}else lt.edge=Lr(ve.site,lt.site)}}function er(re,ve){var Le=re.site,Fe=Le.x,Ve=Le.y,We=Ve-ve;if(!We)return Fe;var $e=re.P;if(!$e)return-1/0;var tt=(Le=$e.site).x,lt=Le.y,gt=lt-ve;if(!gt)return tt;var zt=tt-Fe,Ut=1/We-1/gt,Vt=zt/gt;return Ut?(-Vt+Math.sqrt(Vt*Vt-2*Ut*(zt*zt/(-2*gt)-lt+gt/2+Ve-We/2)))/Ut+Fe:(Fe+tt)/2}function Jn(re,ve){var Le=re.N;if(Le)return er(Le,ve);var Fe=re.site;return Fe.y===ve?Fe.x:1/0}function lr(re){this.site=re,this.edges=[]}function sr(re,ve){return ve.angle-re.angle}function fr(){ci(this),this.x=this.y=this.arc=this.site=this.cy=null}function cr(re){var ve=re.P,Le=re.N;if(ve&&Le){var Fe=ve.site,Ve=re.site,We=Le.site;if(Fe!==We){var $e=Ve.x,tt=Ve.y,lt=Fe.x-$e,gt=Fe.y-tt,zt=We.x-$e,Ut=2*(lt*(sn=We.y-tt)-gt*zt);if(!(Ut>=-1e-12)){var Vt=lt*lt+gt*gt,Qt=zt*zt+sn*sn,gn=(sn*Vt-gt*Qt)/Ut,en=(lt*Qt-zt*Vt)/Ut,sn=en+tt,rn=bn.pop()||new fr;rn.arc=re,rn.site=Ve,rn.x=gn+$e,rn.y=sn+Math.sqrt(gn*gn+en*en),rn.cy=sn,re.circle=rn;for(var Mn=null,xn=Sn._;xn;)if(rn.y=tt)return;if(Vt>gn){if(We){if(We.y>=gt)return}else We={x:sn,y:lt};Le={x:sn,y:gt}}else{if(We){if(We.y1)if(Vt>gn){if(We){if(We.y>=gt)return}else We={x:(lt-Ve)/Fe,y:lt};Le={x:(gt-Ve)/Fe,y:gt}}else{if(We){if(We.y=tt)return}else We={x:$e,y:Fe*$e+Ve};Le={x:tt,y:Fe*tt+Ve}}else{if(We){if(We.x<$e)return}else We={x:tt,y:Fe*tt+Ve};Le={x:$e,y:Fe*$e+Ve}}return re.a=We,re.b=Le,!0}function Mr(re,ve){this.l=re,this.r=ve,this.a=this.b=null}function Lr(re,ve,Le,Fe){var Ve=new Mr(re,ve);return Jt.push(Ve),Le&&pr(Ve,re,ve,Le),Fe&&pr(Ve,ve,re,Fe),un[re.i].edges.push(new Pr(Ve,re,ve)),un[ve.i].edges.push(new Pr(Ve,ve,re)),Ve}function pr(re,ve,Le,Fe){re.a||re.b?re.l===Le?re.b=Fe:re.a=Fe:(re.a=Fe,re.l=ve,re.r=Le)}function Pr(re,ve,Le){var Fe=re.a,Ve=re.b;this.edge=re,this.site=ve,this.angle=Le?Math.atan2(Le.y-ve.y,Le.x-ve.x):re.l===ve?Math.atan2(Ve.x-Fe.x,Fe.y-Ve.y):Math.atan2(Fe.x-Ve.x,Ve.y-Fe.y)}function Hr(){this._=null}function ci(re){re.U=re.C=re.L=re.R=re.P=re.N=null}function Ti(re,ve){var Le=ve,Fe=ve.R,Ve=Le.U;Ve?Ve.L===Le?Ve.L=Fe:Ve.R=Fe:re._=Fe,Fe.U=Ve,Le.U=Fe,Le.R=Fe.L,Le.R&&(Le.R.U=Le),Fe.L=Le}function Mi(re,ve){var Le=ve,Fe=ve.L,Ve=Le.U;Ve?Ve.L===Le?Ve.L=Fe:Ve.R=Fe:re._=Fe,Fe.U=Ve,Le.U=Fe,Le.L=Fe.R,Le.L&&(Le.L.U=Le),Fe.R=Le}function fa(re){for(;re.L;)re=re.L;return re}function Hi(re,ve){var Le,Fe,Ve,We=re.sort(xi).pop();for(Jt=[],un=new Array(re.length),Rn=new Hr,Sn=new Hr;;)if(Ve=On,We&&(!Ve||We.y0)){if(rn/=rr,rr<0){if(rn0){if(rn>nr)return;rn>Vn&&(Vn=rn)}if(rn=Ut-an,rr||!(rn<0)){if(rn/=rr,rr<0){if(rn>nr)return;rn>Vn&&(Vn=rn)}else if(rr>0){if(rn0)){if(rn/=Tr,Tr<0){if(rn0){if(rn>nr)return;rn>Vn&&(Vn=rn)}if(rn=Vt-zn,Tr||!(rn<0)){if(rn/=Tr,Tr<0){if(rn>nr)return;rn>Vn&&(Vn=rn)}else if(Tr>0){if(rn0&&(sn.a={x:an+Vn*rr,y:zn+Vn*Tr}),nr<1&&(sn.b={x:an+nr*rr,y:zn+nr*Tr}),sn}}}}}),en=Qt.length;en--;)(!Sr(lt=Qt[en],tt)||!gn(lt)||x(lt.a.x-lt.b.x)Dt||x(Ut-gt)>Dt)&&(gn.splice(Qt,0,new Pr((rr=Vt.site,Tr=rn,Ar=x(zt-Mn)Dt?{x:Mn,y:x(lt-Mn)Dt?{x:x(gt-zn)Dt?{x:xn,y:x(lt-xn)Dt?{x:x(gt-an)=zt&&rn.x<=Vt&&rn.y>=Ut&&rn.y<=Qt?[[zt,Qt],[Vt,Qt],[Vt,Ut],[zt,Ut]]:[]).point=lt[en]}),gt}function tt(lt){return lt.map(function(gt,zt){return{x:Math.round(Fe(gt,zt)/Dt)*Dt,y:Math.round(Ve(gt,zt)/Dt)*Dt,i:zt}})}return $e.links=function(lt){return Hi(tt(lt)).edges.filter(function(gt){return gt.l&>.r}).map(function(gt){return{source:lt[gt.l.i],target:lt[gt.r.i]}})},$e.triangles=function(lt){var gt=[];return Hi(tt(lt)).cells.forEach(function(zt,Ut){for(var Vt,Qt,gn,en,sn=zt.site,rn=zt.edges.sort(sr),Mn=-1,xn=rn.length,an=rn[xn-1].edge,zn=an.l===sn?an.r:an.l;++MnWe||Vt>$e||Qt=Vn)<<1|ve>=zn,rr=nr+4;nrWe&&(Ve=ve.slice(We,Ve),tt[$e]?tt[$e]+=Ve:tt[++$e]=Ve),(Le=Le[0])===(Fe=Fe[0])?tt[$e]?tt[$e]+=Fe:tt[++$e]=Fe:(tt[++$e]=null,lt.push({i:$e,x:Qa(Le,Fe)})),We=yl.lastIndex;return Wern&&(rn=zt.x),zt.y>Mn&&(Mn=zt.y),Ut.push(zt.x),Vt.push(zt.y);else for(Qt=0;Qtrn&&(rn=zn),Vn>Mn&&(Mn=Vn),Ut.push(zn),Vt.push(Vn)}var nr=rn-en,rr=Mn-sn;function Tr(wr,Rr,Jr,Kr,xr,zr,Wr,Gr){if(!isNaN(Jr)&&!isNaN(Kr))if(wr.leaf){var ii=wr.x,ti=wr.y;if(ii!=null)if(x(ii-Jr)+x(ti-Kr)<.01)Ar(wr,Rr,Jr,Kr,xr,zr,Wr,Gr);else{var ui=wr.point;wr.x=wr.y=wr.point=null,Ar(wr,ui,ii,ti,xr,zr,Wr,Gr),Ar(wr,Rr,Jr,Kr,xr,zr,Wr,Gr)}else wr.x=Jr,wr.y=Kr,wr.point=Rr}else Ar(wr,Rr,Jr,Kr,xr,zr,Wr,Gr)}function Ar(wr,Rr,Jr,Kr,xr,zr,Wr,Gr){var ii=.5*(xr+Wr),ti=.5*(zr+Gr),ui=Jr>=ii,ki=Kr>=ti,Ii=ki<<1|ui;wr.leaf=!1,ui?xr=ii:Wr=ii,ki?zr=ti:Gr=ti,Tr(wr=wr.nodes[Ii]||(wr.nodes[Ii]={leaf:!0,nodes:[],point:null,x:null,y:null}),Rr,Jr,Kr,xr,zr,Wr,Gr)}nr>rr?Mn=sn+nr:rn=en+rr;var mr={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(wr){Tr(mr,wr,+xn(wr,++Qt),+an(wr,Qt),en,sn,rn,Mn)},visit:function(wr){Xs(wr,mr,en,sn,rn,Mn)},find:function(wr){return Uu(mr,wr[0],wr[1],en,sn,rn,Mn)}};if(Qt=-1,ve==null){for(;++Qt=0&&!(Le=s.interpolators[Fe](re,ve)););return Le}function eo(re,ve){var Le,Fe=[],Ve=[],We=re.length,$e=ve.length,tt=Math.min(re.length,ve.length);for(Le=0;Le=1?1:re(ve)}}function bo(re){return function(ve){return 1-re(1-ve)}}function Ro(re){return function(ve){return .5*(ve<.5?re(2*ve):2-re(2-2*ve))}}function xl(re){return re*re}function Vu(re){return re*re*re}function Xo(re){if(re<=0)return 0;if(re>=1)return 1;var ve=re*re,Le=ve*re;return 4*(re<.5?Le:3*(re-ve)+Le-.75)}function Hu(re){return 1-Math.cos(re*Nt)}function qu(re){return Math.pow(2,10*(re-1))}function Ec(re){return 1-Math.sqrt(1-re*re)}function gu(re){return re<.36363636363636365?7.5625*re*re:re<.7272727272727273?7.5625*(re-=.5454545454545454)*re+.75:re<.9090909090909091?7.5625*(re-=.8181818181818182)*re+.9375:7.5625*(re-=.9545454545454546)*re+.984375}function Gu(re,ve){return ve-=re,function(Le){return Math.round(re+ve*Le)}}function vu(re){var ve,Le,Fe,Ve=[re.a,re.b],We=[re.c,re.d],$e=Jo(Ve),tt=$o(Ve,We),lt=Jo(((ve=We)[0]+=(Fe=-tt)*(Le=Ve)[0],ve[1]+=Fe*Le[1],ve))||0;Ve[0]*We[1]=0?re.slice(0,ve):re,Fe=ve>=0?re.slice(ve+1):"in";return Le=fi.get(Le)||fs,ao((Fe=hs.get(Fe)||U)(Le.apply(null,T.call(arguments,1))))},s.interpolateHcl=function(re,ve){re=s.hcl(re),ve=s.hcl(ve);var Le=re.h,Fe=re.c,Ve=re.l,We=ve.h-Le,$e=ve.c-Fe,tt=ve.l-Ve;return isNaN($e)&&($e=0,Fe=isNaN(Fe)?ve.c:Fe),isNaN(We)?(We=0,Le=isNaN(Le)?ve.h:Le):We>180?We-=360:We<-180&&(We+=360),function(lt){return Ot(Le+We*lt,Fe+$e*lt,Ve+tt*lt)+""}},s.interpolateHsl=function(re,ve){re=s.hsl(re),ve=s.hsl(ve);var Le=re.h,Fe=re.s,Ve=re.l,We=ve.h-Le,$e=ve.s-Fe,tt=ve.l-Ve;return isNaN($e)&&($e=0,Fe=isNaN(Fe)?ve.s:Fe),isNaN(We)?(We=0,Le=isNaN(Le)?ve.h:Le):We>180?We-=360:We<-180&&(We+=360),function(lt){return Lt(Le+We*lt,Fe+$e*lt,Ve+tt*lt)+""}},s.interpolateLab=function(re,ve){re=s.lab(re),ve=s.lab(ve);var Le=re.l,Fe=re.a,Ve=re.b,We=ve.l-Le,$e=ve.a-Fe,tt=ve.b-Ve;return function(lt){return Xt(Le+We*lt,Fe+$e*lt,Ve+tt*lt)+""}},s.interpolateRound=Gu,s.transform=function(re){var ve=f.createElementNS(s.ns.prefix.svg,"g");return(s.transform=function(Le){if(Le!=null){ve.setAttribute("transform",Le);var Fe=ve.transform.baseVal.consolidate()}return new vu(Fe?Fe.matrix:Js)})(re)},vu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Js={a:1,b:0,c:0,d:1,e:0,f:0};function Ko(re){return re.length?re.pop()+",":""}function mu(re,ve){var Le=[],Fe=[];return re=s.transform(re),ve=s.transform(ve),function(Ve,We,$e,tt){if(Ve[0]!==We[0]||Ve[1]!==We[1]){var lt=$e.push("translate(",null,",",null,")");tt.push({i:lt-4,x:Qa(Ve[0],We[0])},{i:lt-2,x:Qa(Ve[1],We[1])})}else(We[0]||We[1])&&$e.push("translate("+We+")")}(re.translate,ve.translate,Le,Fe),function(Ve,We,$e,tt){Ve!==We?(Ve-We>180?We+=360:We-Ve>180&&(Ve+=360),tt.push({i:$e.push(Ko($e)+"rotate(",null,")")-2,x:Qa(Ve,We)})):We&&$e.push(Ko($e)+"rotate("+We+")")}(re.rotate,ve.rotate,Le,Fe),function(Ve,We,$e,tt){Ve!==We?tt.push({i:$e.push(Ko($e)+"skewX(",null,")")-2,x:Qa(Ve,We)}):We&&$e.push(Ko($e)+"skewX("+We+")")}(re.skew,ve.skew,Le,Fe),function(Ve,We,$e,tt){if(Ve[0]!==We[0]||Ve[1]!==We[1]){var lt=$e.push(Ko($e)+"scale(",null,",",null,")");tt.push({i:lt-4,x:Qa(Ve[0],We[0])},{i:lt-2,x:Qa(Ve[1],We[1])})}else We[0]===1&&We[1]===1||$e.push(Ko($e)+"scale("+We+")")}(re.scale,ve.scale,Le,Fe),re=ve=null,function(Ve){for(var We,$e=-1,tt=Fe.length;++$e0?Le=an:(re.c=null,re.t=NaN,re=null,tt.end({type:"end",alpha:Le=0})):an>0&&(tt.start({type:"start",alpha:Le=an}),re=$t($e.tick)),$e):Le},$e.start=function(){var an,zn,Vn,nr=sn.length,rr=rn.length,Tr=lt[0],Ar=lt[1];for(an=0;an=0;)Le.push(Ve[Fe])}function oo(re,ve){for(var Le=[re],Fe=[];(re=Le.pop())!=null;)if(Fe.push(re),(We=re.children)&&(Ve=We.length))for(var Ve,We,$e=-1;++$e=0;)$e.push(zt=gt[lt]),zt.parent=We,zt.depth=We.depth+1;Le&&(We.value=0),We.children=gt}else Le&&(We.value=+Le.call(Fe,We,We.depth)||0),delete We.children;return oo(Ve,function(Ut){var Vt,Qt;re&&(Vt=Ut.children)&&Vt.sort(re),Le&&(Qt=Ut.parent)&&(Qt.value+=Ut.value)}),tt}return Fe.sort=function(Ve){return arguments.length?(re=Ve,Fe):re},Fe.children=function(Ve){return arguments.length?(ve=Ve,Fe):ve},Fe.value=function(Ve){return arguments.length?(Le=Ve,Fe):Le},Fe.revalue=function(Ve){return Le&&(Qs(Ve,function(We){We.children&&(We.value=0)}),oo(Ve,function(We){var $e;We.children||(We.value=+Le.call(Fe,We,We.depth)||0),($e=We.parent)&&($e.value+=We.value)})),Ve},Fe},s.layout.partition=function(){var re=s.layout.hierarchy(),ve=[1,1];function Le(We,$e,tt,lt){var gt=We.children;if(We.x=$e,We.y=We.depth*lt,We.dx=tt,We.dy=lt,gt&&(zt=gt.length)){var zt,Ut,Vt,Qt=-1;for(tt=We.value?tt/We.value:0;++Qttt&&(tt=Fe),$e.push(Fe)}for(Le=0;LeVe&&(Fe=Le,Ve=ve);return Fe}function gs(re){return re.reduce(ql,0)}function ql(re,ve){return re+ve[1]}function Sl(re,ve){return _u(re,Math.ceil(Math.log(ve.length)/Math.LN2+1))}function _u(re,ve){for(var Le=-1,Fe=+re[0],Ve=(re[1]-Fe)/ve,We=[];++Le<=ve;)We[Le]=Ve*Le+Fe;return We}function El(re){return[s.min(re),s.max(re)]}function nl(re,ve){return re.value-ve.value}function zs(re,ve){var Le=re._pack_next;re._pack_next=ve,ve._pack_prev=re,ve._pack_next=Le,Le._pack_prev=ve}function Ds(re,ve){re._pack_next=ve,ve._pack_prev=re}function bi(re,ve){var Le=ve.x-re.x,Fe=ve.y-re.y,Ve=re.r+ve.r;return .999*Ve*Ve>Le*Le+Fe*Fe}function vs(re){if((ve=re.children)&&(lt=ve.length)){var ve,Le,Fe,Ve,We,$e,tt,lt,gt=1/0,zt=-1/0,Ut=1/0,Vt=-1/0;if(ve.forEach(ms),(Le=ve[0]).x=-Le.r,Le.y=0,xn(Le),lt>1&&((Fe=ve[1]).x=Fe.r,Fe.y=0,xn(Fe),lt>2))for(li(Le,Fe,Ve=ve[2]),xn(Ve),zs(Le,Ve),Le._pack_prev=Ve,zs(Ve,Fe),Fe=Le._pack_next,We=3;We0)for($e=-1;++$e=Ut[0]&<<=Ut[1]&&((tt=gt[s.bisect(Vt,lt,1,gn)-1]).y+=en,tt.push(We[$e]));return gt}return Ve.value=function(We){return arguments.length?(ve=We,Ve):ve},Ve.range=function(We){return arguments.length?(Le=qn(We),Ve):Le},Ve.bins=function(We){return arguments.length?(Fe=typeof We=="number"?function($e){return _u($e,We)}:qn(We),Ve):Fe},Ve.frequency=function(We){return arguments.length?(re=!!We,Ve):re},Ve},s.layout.pack=function(){var re,ve=s.layout.hierarchy().sort(nl),Le=0,Fe=[1,1];function Ve(We,$e){var tt=ve.call(this,We,$e),lt=tt[0],gt=Fe[0],zt=Fe[1],Ut=re==null?Math.sqrt:typeof re=="function"?re:function(){return re};if(lt.x=lt.y=0,oo(lt,function(Qt){Qt.r=+Ut(Qt.value)}),oo(lt,vs),Le){var Vt=Le*(re?1:Math.max(2*lt.r/gt,2*lt.r/zt))/2;oo(lt,function(Qt){Qt.r+=Vt}),oo(lt,vs),oo(lt,function(Qt){Qt.r-=Vt})}return oi(lt,gt/2,zt/2,re?1:1/Math.max(2*lt.r/gt,2*lt.r/zt)),tt}return Ve.size=function(We){return arguments.length?(Fe=We,Ve):Fe},Ve.radius=function(We){return arguments.length?(re=We==null||typeof We=="function"?We:+We,Ve):re},Ve.padding=function(We){return arguments.length?(Le=+We,Ve):Le},Os(Ve,ve)},s.layout.tree=function(){var re=s.layout.hierarchy().sort(null).value(null),ve=es,Le=[1,1],Fe=null;function Ve(lt,gt){var zt=re.call(this,lt,gt),Ut=zt[0],Vt=function(xn){for(var an,zn={A:null,children:[xn]},Vn=[zn];(an=Vn.pop())!=null;)for(var nr,rr=an.children,Tr=0,Ar=rr.length;Trgn.x&&(gn=xn),xn.depth>en.depth&&(en=xn)});var sn=ve(Qt,gn)/2-Qt.x,rn=Le[0]/(gn.x+ve(gn,Qt)/2+sn),Mn=Le[1]/(en.depth||1);Qs(Ut,function(xn){xn.x=(xn.x+sn)*rn,xn.y=xn.depth*Mn})}return zt}function We(lt){var gt=lt.children,zt=lt.parent.children,Ut=lt.i?zt[lt.i-1]:null;if(gt.length){(function(Qt){for(var gn,en=0,sn=0,rn=Qt.children,Mn=rn.length;--Mn>=0;)(gn=rn[Mn]).z+=en,gn.m+=en,en+=gn.s+(sn+=gn.c)})(lt);var Vt=(gt[0].z+gt[gt.length-1].z)/2;Ut?(lt.z=Ut.z+ve(lt._,Ut._),lt.m=lt.z-Vt):lt.z=Vt}else Ut&&(lt.z=Ut.z+ve(lt._,Ut._));lt.parent.A=function(Qt,gn,en){if(gn){for(var sn,rn=Qt,Mn=Qt,xn=gn,an=rn.parent.children[0],zn=rn.m,Vn=Mn.m,nr=xn.m,rr=an.m;xn=Gl(xn),rn=zo(rn),xn&&rn;)an=zo(an),(Mn=Gl(Mn)).a=Qt,(sn=xn.z+nr-rn.z-zn+ve(xn._,rn._))>0&&(wu(Fs(xn,Qt,en),Qt,sn),zn+=sn,Vn+=sn),nr+=xn.m,zn+=rn.m,rr+=an.m,Vn+=Mn.m;xn&&!Gl(Mn)&&(Mn.t=xn,Mn.m+=nr-Vn),rn&&!zo(an)&&(an.t=rn,an.m+=zn-rr,en=Qt)}return en}(lt,Ut,lt.parent.A||zt[0])}function $e(lt){lt._.x=lt.z+lt.parent.m,lt.m+=lt.parent.m}function tt(lt){lt.x*=Le[0],lt.y=lt.depth*Le[1]}return Ve.separation=function(lt){return arguments.length?(ve=lt,Ve):ve},Ve.size=function(lt){return arguments.length?(Fe=(Le=lt)==null?tt:null,Ve):Fe?null:Le},Ve.nodeSize=function(lt){return arguments.length?(Fe=(Le=lt)==null?null:tt,Ve):Fe?Le:null},Os(Ve,re)},s.layout.cluster=function(){var re=s.layout.hierarchy().sort(null).value(null),ve=es,Le=[1,1],Fe=!1;function Ve(We,$e){var tt,lt=re.call(this,We,$e),gt=lt[0],zt=0;oo(gt,function(en){var sn=en.children;sn&&sn.length?(en.x=function(rn){return rn.reduce(function(Mn,xn){return Mn+xn.x},0)/rn.length}(sn),en.y=function(rn){return 1+s.max(rn,function(Mn){return Mn.y})}(sn)):(en.x=tt?zt+=ve(en,tt):0,en.y=0,tt=en)});var Ut=Tu(gt),Vt=Bs(gt),Qt=Ut.x-ve(Ut,Vt)/2,gn=Vt.x+ve(Vt,Ut)/2;return oo(gt,Fe?function(en){en.x=(en.x-gt.x)*Le[0],en.y=(gt.y-en.y)*Le[1]}:function(en){en.x=(en.x-Qt)/(gn-Qt)*Le[0],en.y=(1-(gt.y?en.y/gt.y:1))*Le[1]}),lt}return Ve.separation=function(We){return arguments.length?(ve=We,Ve):ve},Ve.size=function(We){return arguments.length?(Fe=(Le=We)==null,Ve):Fe?null:Le},Ve.nodeSize=function(We){return arguments.length?(Fe=(Le=We)!=null,Ve):Fe?Le:null},Os(Ve,re)},s.layout.treemap=function(){var re,ve=s.layout.hierarchy(),Le=Math.round,Fe=[1,1],Ve=null,We=ts,$e=!1,tt="squarify",lt=.5*(1+Math.sqrt(5));function gt(en,sn){for(var rn,Mn,xn=-1,an=en.length;++xn0;)zn.push(rn=Vn[xn-1]),zn.area+=rn.area,tt!=="squarify"||(Mn=Vt(zn,rr))<=nr?(Vn.pop(),nr=Mn):(zn.area-=zn.pop().area,Qt(zn,rr,an,!1),rr=Math.min(an.dx,an.dy),zn.length=zn.area=0,nr=1/0);zn.length&&(Qt(zn,rr,an,!0),zn.length=zn.area=0),sn.forEach(zt)}}function Ut(en){var sn=en.children;if(sn&&sn.length){var rn,Mn=We(en),xn=sn.slice(),an=[];for(gt(xn,Mn.dx*Mn.dy/en.value),an.area=0;rn=xn.pop();)an.push(rn),an.area+=rn.area,rn.z!=null&&(Qt(an,rn.z?Mn.dx:Mn.dy,Mn,!xn.length),an.length=an.area=0);sn.forEach(Ut)}}function Vt(en,sn){for(var rn,Mn=en.area,xn=0,an=1/0,zn=-1,Vn=en.length;++znxn&&(xn=rn));return sn*=sn,(Mn*=Mn)?Math.max(sn*xn*lt/Mn,Mn/(sn*an*lt)):1/0}function Qt(en,sn,rn,Mn){var xn,an=-1,zn=en.length,Vn=rn.x,nr=rn.y,rr=sn?Le(en.area/sn):0;if(sn==rn.dx){for((Mn||rr>rn.dy)&&(rr=rn.dy);++anrn.dx)&&(rr=rn.dx);++an1);return re+ve*Fe*Math.sqrt(-2*Math.log(We)/We)}},logNormal:function(){var re=s.random.normal.apply(s,arguments);return function(){return Math.exp(re())}},bates:function(re){var ve=s.random.irwinHall(re);return function(){return ve()/re}},irwinHall:function(re){return function(){for(var ve=0,Le=0;Le2?ha:js,gt=Fe?Ls:yu;return Ve=lt(re,ve,gt,Le),We=lt(ve,re,gt,qa),tt}function tt(lt){return Ve(lt)}return tt.invert=function(lt){return We(lt)},tt.domain=function(lt){return arguments.length?(re=lt.map(Number),$e()):re},tt.range=function(lt){return arguments.length?(ve=lt,$e()):ve},tt.rangeRound=function(lt){return tt.range(lt).interpolate(Gu)},tt.clamp=function(lt){return arguments.length?(Fe=lt,$e()):Fe},tt.interpolate=function(lt){return arguments.length?(Le=lt,$e()):Le},tt.ticks=function(lt){return Ga(re,lt)},tt.tickFormat=function(lt,gt){return d3_scale_linearTickFormat(re,lt,gt)},tt.nice=function(lt){return lo(re,lt),$e()},tt.copy=function(){return Ia(re,ve,Le,Fe)},$e()}function ys(re,ve){return s.rebind(re,ve,"range","rangeRound","interpolate","clamp")}function lo(re,ve){return $i(re,va(ea(re,ve)[2])),$i(re,va(ea(re,ve)[2])),re}function ea(re,ve){ve==null&&(ve=10);var Le=Oi(re),Fe=Le[1]-Le[0],Ve=Math.pow(10,Math.floor(Math.log(Fe/ve)/Math.LN10)),We=ve/Fe*Ve;return We<=.15?Ve*=10:We<=.35?Ve*=5:We<=.75&&(Ve*=2),Le[0]=Math.ceil(Le[0]/Ve)*Ve,Le[1]=Math.floor(Le[1]/Ve)*Ve+.5*Ve,Le[2]=Ve,Le}function Ga(re,ve){return s.range.apply(s,ea(re,ve))}function Wl(re,ve,Le,Fe){function Ve(tt){return(Le?Math.log(tt<0?0:tt):-Math.log(tt>0?0:-tt))/Math.log(ve)}function We(tt){return Le?Math.pow(ve,tt):-Math.pow(ve,-tt)}function $e(tt){return re(Ve(tt))}return $e.invert=function(tt){return We(re.invert(tt))},$e.domain=function(tt){return arguments.length?(Le=tt[0]>=0,re.domain((Fe=tt.map(Number)).map(Ve)),$e):Fe},$e.base=function(tt){return arguments.length?(ve=+tt,re.domain(Fe.map(Ve)),$e):ve},$e.nice=function(){var tt=$i(Fe.map(Ve),Le?Math:Zl);return re.domain(tt),Fe=tt.map(We),$e},$e.ticks=function(){var tt=Oi(Fe),lt=[],gt=tt[0],zt=tt[1],Ut=Math.floor(Ve(gt)),Vt=Math.ceil(Ve(zt)),Qt=ve%1?2:ve;if(isFinite(Vt-Ut)){if(Le){for(;Ut0;gn--)lt.push(We(Ut)*gn);for(Ut=0;lt[Ut]zt;Vt--);lt=lt.slice(Ut,Vt)}return lt},$e.copy=function(){return Wl(re.copy(),ve,Le,Fe)},ys($e,re)}s.scale.linear=function(){return Ia([0,1],[0,1],qa,!1)},s.scale.log=function(){return Wl(s.scale.linear().domain([0,1]),10,!0,[1,10])};var Zl={floor:function(re){return-Math.ceil(-re)},ceil:function(re){return-Math.floor(-re)}};function Sa(re,ve,Le){var Fe=Cr(ve),Ve=Cr(1/ve);function We($e){return re(Fe($e))}return We.invert=function($e){return Ve(re.invert($e))},We.domain=function($e){return arguments.length?(re.domain((Le=$e.map(Number)).map(Fe)),We):Le},We.ticks=function($e){return Ga(Le,$e)},We.tickFormat=function($e,tt){return d3_scale_linearTickFormat(Le,$e,tt)},We.nice=function($e){return We.domain(lo(Le,$e))},We.exponent=function($e){return arguments.length?(Fe=Cr(ve=$e),Ve=Cr(1/ve),re.domain(Le.map(Fe)),We):ve},We.copy=function(){return Sa(re.copy(),ve,Le)},ys(We,re)}function Cr(re){return function(ve){return ve<0?-Math.pow(-ve,re):Math.pow(ve,re)}}function Us(re,ve){var Le,Fe,Ve;function We(tt){return Fe[((Le.get(tt)||(ve.t==="range"?Le.set(tt,re.push(tt)):NaN))-1)%Fe.length]}function $e(tt,lt){return s.range(re.length).map(function(gt){return tt+lt*gt})}return We.domain=function(tt){if(!arguments.length)return re;re=[],Le=new k;for(var lt,gt=-1,zt=tt.length;++gt0?Le[We-1]:re[0],WeVt?0:1;if(zt=qt)return lt(zt,gn)+(gt?lt(gt,1-gn):"")+"Z";var en,sn,rn,Mn,xn,an,zn,Vn,nr,rr,Tr,Ar,mr=0,wr=0,Rr=[];if((Mn=(+$e.apply(this,arguments)||0)/2)&&(rn=Fe===Cl?Math.sqrt(gt*gt+zt*zt):+Fe.apply(this,arguments),gn||(wr*=-1),zt&&(wr=Ge(rn/zt*Math.sin(Mn))),gt&&(mr=Ge(rn/gt*Math.sin(Mn)))),zt){xn=zt*Math.cos(Ut+wr),an=zt*Math.sin(Ut+wr),zn=zt*Math.cos(Vt-wr),Vn=zt*Math.sin(Vt-wr);var Jr=Math.abs(Vt-Ut-2*wr)<=It?0:1;if(wr&&_o(xn,an,zn,Vn)===gn^Jr){var Kr=(Ut+Vt)/2;xn=zt*Math.cos(Kr),an=zt*Math.sin(Kr),zn=Vn=null}}else xn=an=0;if(gt){nr=gt*Math.cos(Vt-mr),rr=gt*Math.sin(Vt-mr),Tr=gt*Math.cos(Ut+mr),Ar=gt*Math.sin(Ut+mr);var xr=Math.abs(Ut-Vt+2*mr)<=It?0:1;if(mr&&_o(nr,rr,Tr,Ar)===1-gn^xr){var zr=(Ut+Vt)/2;nr=gt*Math.cos(zr),rr=gt*Math.sin(zr),Tr=Ar=null}}else nr=rr=0;if(Qt>Dt&&(en=Math.min(Math.abs(zt-gt)/2,+Le.apply(this,arguments)))>.001){sn=gt0?0:1}function co(re,ve,Le,Fe,Ve){var We=re[0]-ve[0],$e=re[1]-ve[1],tt=(Ve?Fe:-Fe)/Math.sqrt(We*We+$e*$e),lt=tt*$e,gt=-tt*We,zt=re[0]+lt,Ut=re[1]+gt,Vt=ve[0]+lt,Qt=ve[1]+gt,gn=(zt+Vt)/2,en=(Ut+Qt)/2,sn=Vt-zt,rn=Qt-Ut,Mn=sn*sn+rn*rn,xn=Le-Fe,an=zt*Qt-Vt*Ut,zn=(rn<0?-1:1)*Math.sqrt(Math.max(0,xn*xn*Mn-an*an)),Vn=(an*rn-sn*zn)/Mn,nr=(-an*sn-rn*zn)/Mn,rr=(an*rn+sn*zn)/Mn,Tr=(-an*sn+rn*zn)/Mn,Ar=Vn-gn,mr=nr-en,wr=rr-gn,Rr=Tr-en;return Ar*Ar+mr*mr>wr*wr+Rr*Rr&&(Vn=rr,nr=Tr),[[Vn-lt,nr-gt],[Vn*Le/xn,nr*Le/xn]]}function Hs(){return!0}function xa(re){var ve=jn,Le=$n,Fe=Hs,Ve=vi,We=Ve.key,$e=.7;function tt(lt){var gt,zt=[],Ut=[],Vt=-1,Qt=lt.length,gn=qn(ve),en=qn(Le);function sn(){zt.push("M",Ve(re(Ut),$e))}for(;++Vt1&&Ve.push("H",Fe[0]),Ve.join("")},"step-before":to,"step-after":ho,basis:di,"basis-open":function(re){if(re.length<4)return vi(re);for(var ve,Le=[],Fe=-1,Ve=re.length,We=[0],$e=[0];++Fe<3;)ve=re[Fe],We.push(ve[0]),$e.push(ve[1]);for(Le.push(oa(Bo,We)+","+oa(Bo,$e)),--Fe;++Fe9&&(We=3*Le/Math.sqrt(We),tt[lt]=We*Fe,tt[lt+1]=We*Ve);for(lt=-1;++lt<=gt;)We=(ve[Math.min(gt,lt+1)][0]-ve[Math.max(0,lt-1)][0])/(6*(1+tt[lt]*tt[lt])),$e.push([We||0,tt[lt]*We||0]);return $e}(re))}});function vi(re){return re.length>1?re.join("L"):re+"Z"}function Ll(re){return re.join("L")+"Z"}function to(re){for(var ve=0,Le=re.length,Fe=re[0],Ve=[Fe[0],",",Fe[1]];++ve1){tt=ve[1],We=re[lt],lt++,Fe+="C"+(Ve[0]+$e[0])+","+(Ve[1]+$e[1])+","+(We[0]-tt[0])+","+(We[1]-tt[1])+","+We[0]+","+We[1];for(var gt=2;gtIt)+",1 "+zt}function lt(gt,zt,Ut,Vt){return"Q 0,0 "+Vt}return We.radius=function(gt){return arguments.length?(Le=qn(gt),We):Le},We.source=function(gt){return arguments.length?(re=qn(gt),We):re},We.target=function(gt){return arguments.length?(ve=qn(gt),We):ve},We.startAngle=function(gt){return arguments.length?(Fe=qn(gt),We):Fe},We.endAngle=function(gt){return arguments.length?(Ve=qn(gt),We):Ve},We},s.svg.diagonal=function(){var re=Fr,ve=Ur,Le=is;function Fe(Ve,We){var $e=re.call(this,Ve,We),tt=ve.call(this,Ve,We),lt=($e.y+tt.y)/2,gt=[$e,{x:$e.x,y:lt},{x:tt.x,y:lt},tt];return"M"+(gt=gt.map(Le))[0]+"C"+gt[1]+" "+gt[2]+" "+gt[3]}return Fe.source=function(Ve){return arguments.length?(re=qn(Ve),Fe):re},Fe.target=function(Ve){return arguments.length?(ve=qn(Ve),Fe):ve},Fe.projection=function(Ve){return arguments.length?(Le=Ve,Fe):Le},Fe},s.svg.diagonal.radial=function(){var re=s.svg.diagonal(),ve=is,Le=re.projection;return re.projection=function(Fe){return arguments.length?Le(To(ve=Fe)):ve},re},s.svg.symbol=function(){var re=$l,ve=_a;function Le(Fe,Ve){return(ll.get(re.call(this,Fe,Ve))||Fa)(ve.call(this,Fe,Ve))}return Le.type=function(Fe){return arguments.length?(re=qn(Fe),Le):re},Le.size=function(Fe){return arguments.length?(ve=qn(Fe),Le):ve},Le};var ll=s.map({circle:Fa,cross:function(re){var ve=Math.sqrt(re/5)/2;return"M"+-3*ve+","+-ve+"H"+-ve+"V"+-3*ve+"H"+ve+"V"+-ve+"H"+3*ve+"V"+ve+"H"+ve+"V"+3*ve+"H"+-ve+"V"+ve+"H"+-3*ve+"Z"},diamond:function(re){var ve=Math.sqrt(re/(2*_i)),Le=ve*_i;return"M0,"+-ve+"L"+Le+",0 0,"+ve+" "+-Le+",0Z"},square:function(re){var ve=Math.sqrt(re)/2;return"M"+-ve+","+-ve+"L"+ve+","+-ve+" "+ve+","+ve+" "+-ve+","+ve+"Z"},"triangle-down":function(re){var ve=Math.sqrt(re/as),Le=ve*as/2;return"M0,"+Le+"L"+ve+","+-Le+" "+-ve+","+-Le+"Z"},"triangle-up":function(re){var ve=Math.sqrt(re/as),Le=ve*as/2;return"M0,"+-Le+"L"+ve+","+Le+" "+-ve+","+Le+"Z"}});s.svg.symbolTypes=ll.keys();var as=Math.sqrt(3),_i=Math.tan(30*Je);fe.transition=function(re){for(var ve,Le,Fe=rt||++Mt,Ve=$(re),We=[],$e=ct||{time:Date.now(),ease:Xo,delay:0,duration:250},tt=-1,lt=this.length;++tt0;)gt[--rn].call(re,sn);if(en>=1)return Ut.event&&Ut.event.end.call(re,re.__data__,ve),--zt.count?delete zt[Fe]:delete re[Le],1}Ut||(We=Ve.time,$e=$t(function(gn){var en=Ut.delay;if($e.t=en+We,en<=gn)return Vt(gn-en);$e.c=Vt},0,We),Ut=zt[Fe]={tween:new k,time:We,timer:$e,delay:Ve.delay,duration:Ve.duration,ease:Ve.ease,index:ve},Ve=null,++zt.count)}vt.call=fe.call,vt.empty=fe.empty,vt.node=fe.node,vt.size=fe.size,s.transition=function(re,ve){return re&&re.transition?rt?re.transition(ve):re:s.selection().transition(re)},s.transition.prototype=vt,vt.select=function(re){var ve,Le,Fe,Ve=this.id,We=this.namespace,$e=[];re=ye(re);for(var tt=-1,lt=this.length;++ttrect,.s>rect").attr("width",We[1]-We[0])}function Qt(en){en.select(".extent").attr("y",$e[0]),en.selectAll(".extent,.e>rect,.w>rect").attr("height",$e[1]-$e[0])}function gn(){var en,sn,rn=this,Mn=s.select(s.event.target),xn=Le.of(rn,arguments),an=s.select(rn),zn=Mn.datum(),Vn=!/^(n|s)$/.test(zn)&&Fe,nr=!/^(e|w)$/.test(zn)&&Ve,rr=Mn.classed("extent"),Tr=yt(rn),Ar=s.mouse(rn),mr=s.select(t(rn)).on("keydown.brush",Jr).on("keyup.brush",Kr);if(s.event.changedTouches?mr.on("touchmove.brush",xr).on("touchend.brush",Wr):mr.on("mousemove.brush",xr).on("mouseup.brush",Wr),an.interrupt().selectAll("*").interrupt(),rr)Ar[0]=We[0]-Ar[0],Ar[1]=$e[0]-Ar[1];else if(zn){var wr=+/w$/.test(zn),Rr=+/^n/.test(zn);sn=[We[1-wr]-Ar[0],$e[1-Rr]-Ar[1]],Ar[0]=We[wr],Ar[1]=$e[Rr]}else s.event.altKey&&(en=Ar.slice());function Jr(){s.event.keyCode==32&&(rr||(en=null,Ar[0]-=We[1],Ar[1]-=$e[1],rr=2),ee())}function Kr(){s.event.keyCode==32&&rr==2&&(Ar[0]+=We[1],Ar[1]+=$e[1],rr=0,ee())}function xr(){var Gr=s.mouse(rn),ii=!1;sn&&(Gr[0]+=sn[0],Gr[1]+=sn[1]),rr||(s.event.altKey?(en||(en=[(We[0]+We[1])/2,($e[0]+$e[1])/2]),Ar[0]=We[+(Gr[0]>>1;a.dtype||(a.dtype="array"),typeof a.dtype=="string"?c=new(i(a.dtype))(d):a.dtype&&(c=a.dtype,Array.isArray(c)&&(c.length=d));for(var v=0;vu||H>1073741824){for(var K=0;Khe+Re||ae>xe+Re||oe=fe||Ae===Me)){var Ce=x[we];Me===void 0&&(Me=Ce.length);for(var ne=Ae;ne=ee&&me<=X&&Te>=Q&&Te<=Y&&ye.push(ue)}var Ee=g[we],Ue=Ee[4*Ae+0],De=Ee[4*Ae+1],je=Ee[4*Ae+2],ge=Ee[4*Ae+3],be=de(Ee,Ae+1),Se=.5*Re,Ne=we+1;pe(he,xe,Se,Ne,Ue,De||je||ge||be),pe(he,xe+Se,Se,Ne,De,je||ge||be),pe(he+Se,xe,Se,Ne,je,ge||be),pe(he+Se,xe+Se,Se,Ne,ge,be)}}function de(he,xe){for(var Re=null,we=0;Re===null;)if(Re=he[4*xe+we],++we>he.length)return null;return Re}return pe(0,0,1,0,0,1),ye},c;function I(U,B,G,N,j){for(var V=[],H=0;H0){l+=Math.abs(T(f[0]));for(var t=1;t2){for(o=0;o=0))throw new Error("precision must be a positive number");var u=Math.pow(10,a||0);return Math.round(o*u)/u},E.radiansToLength=t,E.lengthToRadians=i,E.lengthToDegrees=function(o,a){return r(i(o,a))},E.bearingToAzimuth=function(o){var a=o%360;return a<0&&(a+=360),a},E.radiansToDegrees=r,E.degreesToRadians=function(o){return o%360*Math.PI/180},E.convertLength=function(o,a,u){if(a===void 0&&(a="kilometers"),u===void 0&&(u="kilometers"),!(o>=0))throw new Error("length must be a positive number");return t(i(o,a),u)},E.convertArea=function(o,a,u){if(a===void 0&&(a="meters"),u===void 0&&(u="kilometers"),!(o>=0))throw new Error("area must be a positive number");var p=E.areaFactors[a];if(!p)throw new Error("invalid original units");var c=E.areaFactors[u];if(!c)throw new Error("invalid final units");return o/p*c},E.isNumber=n,E.isObject=function(o){return!!o&&o.constructor===Object},E.validateBBox=function(o){if(!o)throw new Error("bbox is required");if(!Array.isArray(o))throw new Error("bbox must be an Array");if(o.length!==4&&o.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");o.forEach(function(a){if(!n(a))throw new Error("bbox must only contain numbers")})},E.validateId=function(o){if(!o)throw new Error("id is required");if(["string","number"].indexOf(typeof o)===-1)throw new Error("id must be a number or a string")}},60302:function(D,E,e){Object.defineProperty(E,"__esModule",{value:!0});var _=e(23132);function w(i,r,n){if(i!==null)for(var o,a,u,p,c,b,d,v,x=0,g=0,m=i.type,k=m==="FeatureCollection",h=m==="Feature",M=k?i.features.length:1,A=0;Ab||k>d||h>v)return c=x,b=o,d=k,v=h,void(u=0);var M=_.lineString([c,x],n.properties);if(r(M,o,a,h,u)===!1)return!1;u++,c=x})!==!1&&void 0}}})}function t(i,r){if(!i)throw new Error("geojson is required");f(i,function(n,o,a){if(n.geometry!==null){var u=n.geometry.type,p=n.geometry.coordinates;switch(u){case"LineString":if(r(n,o,a,0,0)===!1)return!1;break;case"Polygon":for(var c=0;cy[0]&&(T[0]=y[0]),T[1]>y[1]&&(T[1]=y[1]),T[2]=0))throw new Error("precision must be a positive number");var u=Math.pow(10,a||0);return Math.round(o*u)/u},E.radiansToLength=t,E.lengthToRadians=i,E.lengthToDegrees=function(o,a){return r(i(o,a))},E.bearingToAzimuth=function(o){var a=o%360;return a<0&&(a+=360),a},E.radiansToDegrees=r,E.degreesToRadians=function(o){return o%360*Math.PI/180},E.convertLength=function(o,a,u){if(a===void 0&&(a="kilometers"),u===void 0&&(u="kilometers"),!(o>=0))throw new Error("length must be a positive number");return t(i(o,a),u)},E.convertArea=function(o,a,u){if(a===void 0&&(a="meters"),u===void 0&&(u="kilometers"),!(o>=0))throw new Error("area must be a positive number");var p=E.areaFactors[a];if(!p)throw new Error("invalid original units");var c=E.areaFactors[u];if(!c)throw new Error("invalid final units");return o/p*c},E.isNumber=n,E.isObject=function(o){return!!o&&o.constructor===Object},E.validateBBox=function(o){if(!o)throw new Error("bbox is required");if(!Array.isArray(o))throw new Error("bbox must be an Array");if(o.length!==4&&o.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");o.forEach(function(a){if(!n(a))throw new Error("bbox must only contain numbers")})},E.validateId=function(o){if(!o)throw new Error("id is required");if(["string","number"].indexOf(typeof o)===-1)throw new Error("id must be a number or a string")}},27138:function(D,E,e){Object.defineProperty(E,"__esModule",{value:!0});var _=e(94228);function w(i,r,n){if(i!==null)for(var o,a,u,p,c,b,d,v,x=0,g=0,m=i.type,k=m==="FeatureCollection",h=m==="Feature",M=k?i.features.length:1,A=0;Ab||k>d||h>v)return c=x,b=o,d=k,v=h,void(u=0);var M=_.lineString([c,x],n.properties);if(r(M,o,a,h,u)===!1)return!1;u++,c=x})!==!1&&void 0}}})}function t(i,r){if(!i)throw new Error("geojson is required");f(i,function(n,o,a){if(n.geometry!==null){var u=n.geometry.type,p=n.geometry.coordinates;switch(u){case"LineString":if(r(n,o,a,0,0)===!1)return!1;break;case"Polygon":for(var c=0;c=0))throw new Error("precision must be a positive number");var u=Math.pow(10,a||0);return Math.round(o*u)/u},E.radiansToLength=t,E.lengthToRadians=i,E.lengthToDegrees=function(o,a){return r(i(o,a))},E.bearingToAzimuth=function(o){var a=o%360;return a<0&&(a+=360),a},E.radiansToDegrees=r,E.degreesToRadians=function(o){return o%360*Math.PI/180},E.convertLength=function(o,a,u){if(a===void 0&&(a="kilometers"),u===void 0&&(u="kilometers"),!(o>=0))throw new Error("length must be a positive number");return t(i(o,a),u)},E.convertArea=function(o,a,u){if(a===void 0&&(a="meters"),u===void 0&&(u="kilometers"),!(o>=0))throw new Error("area must be a positive number");var p=E.areaFactors[a];if(!p)throw new Error("invalid original units");var c=E.areaFactors[u];if(!c)throw new Error("invalid final units");return o/p*c},E.isNumber=n,E.isObject=function(o){return!!o&&o.constructor===Object},E.validateBBox=function(o){if(!o)throw new Error("bbox is required");if(!Array.isArray(o))throw new Error("bbox must be an Array");if(o.length!==4&&o.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");o.forEach(function(a){if(!n(a))throw new Error("bbox must only contain numbers")})},E.validateId=function(o){if(!o)throw new Error("id is required");if(["string","number"].indexOf(typeof o)===-1)throw new Error("id must be a number or a string")},E.radians2degrees=function(){throw new Error("method has been renamed to `radiansToDegrees`")},E.degrees2radians=function(){throw new Error("method has been renamed to `degreesToRadians`")},E.distanceToDegrees=function(){throw new Error("method has been renamed to `lengthToDegrees`")},E.distanceToRadians=function(){throw new Error("method has been renamed to `lengthToRadians`")},E.radiansToDistance=function(){throw new Error("method has been renamed to `radiansToLength`")},E.bearingToAngle=function(){throw new Error("method has been renamed to `bearingToAzimuth`")},E.convertDistance=function(){throw new Error("method has been renamed to `convertLength`")}},88553:function(D,E,e){Object.defineProperty(E,"__esModule",{value:!0});var _=e(64182);function w(i,r,n){if(i!==null)for(var o,a,u,p,c,b,d,v,x=0,g=0,m=i.type,k=m==="FeatureCollection",h=m==="Feature",M=k?i.features.length:1,A=0;Ab||k>d||h>v)return c=x,b=o,d=k,v=h,void(u=0);var M=_.lineString([c,x],n.properties);if(r(M,o,a,h,u)===!1)return!1;u++,c=x})!==!1&&void 0}}})}function t(i,r){if(!i)throw new Error("geojson is required");f(i,function(n,o,a){if(n.geometry!==null){var u=n.geometry.type,p=n.geometry.coordinates;switch(u){case"LineString":if(r(n,o,a,0,0)===!1)return!1;break;case"Polygon":for(var c=0;cs&&(s=E[y]),E[y]1?j-1:0),H=1;H1?j-1:0),H=1;H1?j-1:0),H=1;H1?j-1:0),H=1;H"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function t(k,h,M){return t=l()?Reflect.construct:function(A,C,L){var O=[null];O.push.apply(O,C);var I=new(Function.bind.apply(A,O));return L&&i(I,L.prototype),I},t.apply(null,arguments)}function i(k,h){return i=Object.setPrototypeOf||function(M,A){return M.__proto__=A,M},i(k,h)}function r(k){return r=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},r(k)}function n(k){return n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(h){return typeof h}:function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},n(k)}var o=e(43827).inspect,a=e(79616).codes.ERR_INVALID_ARG_TYPE;function u(k,h,M){return(M===void 0||M>k.length)&&(M=k.length),k.substring(M-h.length,M)===h}var p="",c="",b="",d="",v={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function x(k){var h=Object.keys(k),M=Object.create(Object.getPrototypeOf(k));return h.forEach(function(A){M[A]=k[A]}),Object.defineProperty(M,"message",{value:k.message}),M}function g(k){return o(k,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var m=function(k){function h(C){var L;if(function(Q,X){if(!(Q instanceof X))throw new TypeError("Cannot call a class as a function")}(this,h),n(C)!=="object"||C===null)throw new a("options","Object",C);var O=C.message,I=C.operator,R=C.stackStartFn,U=C.actual,B=C.expected,G=Error.stackTraceLimit;if(Error.stackTraceLimit=0,O!=null)L=T(this,r(h).call(this,String(O)));else if(_.stderr&&_.stderr.isTTY&&(_.stderr&&_.stderr.getColorDepth&&_.stderr.getColorDepth()!==1?(p="\x1B[34m",c="\x1B[32m",d="\x1B[39m",b="\x1B[31m"):(p="",c="",d="",b="")),n(U)==="object"&&U!==null&&n(B)==="object"&&B!==null&&"stack"in U&&U instanceof Error&&"stack"in B&&B instanceof Error&&(U=x(U),B=x(B)),I==="deepStrictEqual"||I==="strictEqual")L=T(this,r(h).call(this,function(Q,X,Y){var K="",te="",ae=0,oe="",se=!1,fe=g(Q),ye=fe.split(` +`),pe=g(X).split(` +`),de=0,he="";if(Y==="strictEqual"&&n(Q)==="object"&&n(X)==="object"&&Q!==null&&X!==null&&(Y="strictEqualObject"),ye.length===1&&pe.length===1&&ye[0]!==pe[0]){var xe=ye[0].length+pe[0].length;if(xe<=10){if(!(n(Q)==="object"&&Q!==null||n(X)==="object"&&X!==null||Q===0&&X===0))return"".concat(v[Y],` + +`)+"".concat(ye[0]," !== ").concat(pe[0],` +`)}else if(Y!=="strictEqualObject"&&xe<(_.stderr&&_.stderr.isTTY?_.stderr.columns:80)){for(;ye[0][de]===pe[0][de];)de++;de>2&&(he=` + `.concat(function(De,je){if(je=Math.floor(je),De.length==0||je==0)return"";var ge=De.length*je;for(je=Math.floor(Math.log(je)/Math.log(2));je;)De+=De,je--;return De+De.substring(0,ge-De.length)}(" ",de),"^"),de=0)}}for(var Re=ye[ye.length-1],we=pe[pe.length-1];Re===we&&(de++<2?oe=` + `.concat(Re).concat(oe):K=Re,ye.pop(),pe.pop(),ye.length!==0&&pe.length!==0);)Re=ye[ye.length-1],we=pe[pe.length-1];var Ae=Math.max(ye.length,pe.length);if(Ae===0){var Me=fe.split(` +`);if(Me.length>30)for(Me[26]="".concat(p,"...").concat(d);Me.length>27;)Me.pop();return"".concat(v.notIdentical,` + +`).concat(Me.join(` +`),` +`)}de>3&&(oe=` +`.concat(p,"...").concat(d).concat(oe),se=!0),K!==""&&(oe=` + `.concat(K).concat(oe),K="");var Ce=0,ne=v[Y]+` +`.concat(c,"+ actual").concat(d," ").concat(b,"- expected").concat(d),ue=" ".concat(p,"...").concat(d," Lines skipped");for(de=0;de1&&de>2&&(me>4?(te+=` +`.concat(p,"...").concat(d),se=!0):me>3&&(te+=` + `.concat(pe[de-2]),Ce++),te+=` + `.concat(pe[de-1]),Ce++),ae=de,K+=` +`.concat(b,"-").concat(d," ").concat(pe[de]),Ce++;else if(pe.length1&&de>2&&(me>4?(te+=` +`.concat(p,"...").concat(d),se=!0):me>3&&(te+=` + `.concat(ye[de-2]),Ce++),te+=` + `.concat(ye[de-1]),Ce++),ae=de,te+=` +`.concat(c,"+").concat(d," ").concat(ye[de]),Ce++;else{var Te=pe[de],Ee=ye[de],Ue=Ee!==Te&&(!u(Ee,",")||Ee.slice(0,-1)!==Te);Ue&&u(Te,",")&&Te.slice(0,-1)===Ee&&(Ue=!1,Ee+=","),Ue?(me>1&&de>2&&(me>4?(te+=` +`.concat(p,"...").concat(d),se=!0):me>3&&(te+=` + `.concat(ye[de-2]),Ce++),te+=` + `.concat(ye[de-1]),Ce++),ae=de,te+=` +`.concat(c,"+").concat(d," ").concat(Ee),K+=` +`.concat(b,"-").concat(d," ").concat(Te),Ce+=2):(te+=K,K="",me!==1&&de!==0||(te+=` + `.concat(Ee),Ce++))}if(Ce>20&&de30)for(j[26]="".concat(p,"...").concat(d);j.length>27;)j.pop();L=j.length===1?T(this,r(h).call(this,"".concat(N," ").concat(j[0]))):T(this,r(h).call(this,"".concat(N,` + +`).concat(j.join(` +`),` +`)))}else{var V=g(U),H="",ee=v[I];I==="notDeepEqual"||I==="notEqual"?(V="".concat(v[I],` + +`).concat(V)).length>1024&&(V="".concat(V.slice(0,1021),"...")):(H="".concat(g(B)),V.length>512&&(V="".concat(V.slice(0,509),"...")),H.length>512&&(H="".concat(H.slice(0,509),"...")),I==="deepEqual"||I==="equal"?V="".concat(ee,` + +`).concat(V,` + +should equal + +`):H=" ".concat(I," ").concat(H)),L=T(this,r(h).call(this,"".concat(V).concat(H)))}return Error.stackTraceLimit=G,L.generatedMessage=!O,Object.defineProperty(y(L),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),L.code="ERR_ASSERTION",L.actual=U,L.expected=B,L.operator=I,Error.captureStackTrace&&Error.captureStackTrace(y(L),R),L.stack,L.name="AssertionError",T(L)}var M,A;return function(C,L){if(typeof L!="function"&&L!==null)throw new TypeError("Super expression must either be null or a function");C.prototype=Object.create(L&&L.prototype,{constructor:{value:C,writable:!0,configurable:!0}}),L&&i(C,L)}(h,k),M=h,A=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:o.custom,value:function(C,L){return o(this,function(O){for(var I=1;I2?"one of ".concat(r," ").concat(i.slice(0,n-1).join(", "),", or ")+i[n-1]:n===2?"one of ".concat(r," ").concat(i[0]," or ").concat(i[1]):"of ".concat(r," ").concat(i[0])}return"of ".concat(r," ").concat(String(i))}l("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),l("ERR_INVALID_ARG_TYPE",function(i,r,n){var o,a,u,p,c;if(T===void 0&&(T=e(32791)),T(typeof i=="string","'name' must be a string"),typeof r=="string"&&(a="not ",r.substr(0,a.length)===a)?(o="must not be",r=r.replace(/^not /,"")):o="must be",function(d,v,x){return(x===void 0||x>d.length)&&(x=d.length),d.substring(x-v.length,x)===v}(i," argument"))u="The ".concat(i," ").concat(o," ").concat(t(r,"type"));else{var b=(typeof c!="number"&&(c=0),c+1>(p=i).length||p.indexOf(".",c)===-1?"argument":"property");u='The "'.concat(i,'" ').concat(b," ").concat(o," ").concat(t(r,"type"))}return u+". Received type ".concat(_(n))},TypeError),l("ERR_INVALID_ARG_VALUE",function(i,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";y===void 0&&(y=e(43827));var o=y.inspect(r);return o.length>128&&(o="".concat(o.slice(0,128),"...")),"The argument '".concat(i,"' ").concat(n,". Received ").concat(o)},TypeError),l("ERR_INVALID_RETURN_VALUE",function(i,r,n){var o;return o=n&&n.constructor&&n.constructor.name?"instance of ".concat(n.constructor.name):"type ".concat(_(n)),"Expected ".concat(i,' to be returned from the "').concat(r,'"')+" function but got ".concat(o,".")},TypeError),l("ERR_MISSING_ARGS",function(){for(var i=arguments.length,r=new Array(i),n=0;n0,"At least one arg needs to be specified");var o="The ",a=r.length;switch(r=r.map(function(u){return'"'.concat(u,'"')}),a){case 1:o+="".concat(r[0]," argument");break;case 2:o+="".concat(r[0]," and ").concat(r[1]," arguments");break;default:o+=r.slice(0,a-1).join(", "),o+=", and ".concat(r[a-1]," arguments")}return"".concat(o," must be specified")},TypeError),D.exports.codes=f},74061:function(D,E,e){function _(X,Y){return function(K){if(Array.isArray(K))return K}(X)||function(K,te){var ae=[],oe=!0,se=!1,fe=void 0;try{for(var ye,pe=K[Symbol.iterator]();!(oe=(ye=pe.next()).done)&&(ae.push(ye.value),!te||ae.length!==te);oe=!0);}catch(de){se=!0,fe=de}finally{try{oe||pe.return==null||pe.return()}finally{if(se)throw fe}}return ae}(X,Y)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function w(X){return w=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(Y){return typeof Y}:function(Y){return Y&&typeof Symbol=="function"&&Y.constructor===Symbol&&Y!==Symbol.prototype?"symbol":typeof Y},w(X)}var s=/a/g.flags!==void 0,T=function(X){var Y=[];return X.forEach(function(K){return Y.push(K)}),Y},y=function(X){var Y=[];return X.forEach(function(K,te){return Y.push([te,K])}),Y},f=Object.is?Object.is:e(64003),l=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},t=Number.isNaN?Number.isNaN:e(15567);function i(X){return X.call.bind(X)}var r=i(Object.prototype.hasOwnProperty),n=i(Object.prototype.propertyIsEnumerable),o=i(Object.prototype.toString),a=e(43827).types,u=a.isAnyArrayBuffer,p=a.isArrayBufferView,c=a.isDate,b=a.isMap,d=a.isRegExp,v=a.isSet,x=a.isNativeError,g=a.isBoxedPrimitive,m=a.isNumberObject,k=a.isStringObject,h=a.isBooleanObject,M=a.isBigIntObject,A=a.isSymbolObject,C=a.isFloat32Array,L=a.isFloat64Array;function O(X){if(X.length===0||X.length>10)return!0;for(var Y=0;Y57)return!0}return X.length===10&&X>=Math.pow(2,32)}function I(X){return Object.keys(X).filter(O).concat(l(X).filter(Object.prototype.propertyIsEnumerable.bind(X)))}function R(X,Y){if(X===Y)return 0;for(var K=X.length,te=Y.length,ae=0,oe=Math.min(K,te);ae0?o-4:o;for(r=0;r>16&255,u[p++]=i>>8&255,u[p++]=255&i;return a===2&&(i=_[t.charCodeAt(r)]<<2|_[t.charCodeAt(r+1)]>>4,u[p++]=255&i),a===1&&(i=_[t.charCodeAt(r)]<<10|_[t.charCodeAt(r+1)]<<4|_[t.charCodeAt(r+2)]>>2,u[p++]=i>>8&255,u[p++]=255&i),u},E.fromByteArray=function(t){for(var i,r=t.length,n=r%3,o=[],a=16383,u=0,p=r-n;up?p:u+a));return n===1?(i=t[r-1],o.push(e[i>>2]+e[i<<4&63]+"==")):n===2&&(i=(t[r-2]<<8)+t[r-1],o.push(e[i>>10]+e[i>>4&63]+e[i<<2&63]+"=")),o.join("")};for(var e=[],_=[],w=typeof Uint8Array<"u"?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=0,y=s.length;T0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return r===-1&&(r=i),[r,r===i?0:4-r%4]}function l(t,i,r){for(var n,o,a=[],u=i;u>18&63]+e[o>>12&63]+e[o>>6&63]+e[63&o]);return a.join("")}_["-".charCodeAt(0)]=62,_["_".charCodeAt(0)]=63},91358:function(D){function E(y,f,l,t,i){for(var r=i+1;t<=i;){var n=t+i>>>1,o=y[n];(l!==void 0?l(o,f):o-f)>=0?(r=n,i=n-1):t=n+1}return r}function e(y,f,l,t,i){for(var r=i+1;t<=i;){var n=t+i>>>1,o=y[n];(l!==void 0?l(o,f):o-f)>0?(r=n,i=n-1):t=n+1}return r}function _(y,f,l,t,i){for(var r=t-1;t<=i;){var n=t+i>>>1,o=y[n];(l!==void 0?l(o,f):o-f)<0?(r=n,t=n+1):i=n-1}return r}function w(y,f,l,t,i){for(var r=t-1;t<=i;){var n=t+i>>>1,o=y[n];(l!==void 0?l(o,f):o-f)<=0?(r=n,t=n+1):i=n-1}return r}function s(y,f,l,t,i){for(;t<=i;){var r=t+i>>>1,n=y[r],o=l!==void 0?l(n,f):n-f;if(o===0)return r;o<=0?t=r+1:i=r-1}return-1}function T(y,f,l,t,i,r){return typeof l=="function"?r(y,f,l,t===void 0?0:0|t,i===void 0?y.length-1:0|i):r(y,f,void 0,l===void 0?0:0|l,t===void 0?y.length-1:0|t)}D.exports={ge:function(y,f,l,t,i){return T(y,f,l,t,i,E)},gt:function(y,f,l,t,i){return T(y,f,l,t,i,e)},lt:function(y,f,l,t,i){return T(y,f,l,t,i,_)},le:function(y,f,l,t,i){return T(y,f,l,t,i,w)},eq:function(y,f,l,t,i){return T(y,f,l,t,i,s)}}},13547:function(D,E){function e(w){var s=32;return(w&=-w)&&s--,65535&w&&(s-=16),16711935&w&&(s-=8),252645135&w&&(s-=4),858993459&w&&(s-=2),1431655765&w&&(s-=1),s}E.INT_BITS=32,E.INT_MAX=2147483647,E.INT_MIN=-2147483648,E.sign=function(w){return(w>0)-(w<0)},E.abs=function(w){var s=w>>31;return(w^s)-s},E.min=function(w,s){return s^(w^s)&-(w65535)<<4,s|=T=((w>>>=s)>255)<<3,s|=T=((w>>>=T)>15)<<2,(s|=T=((w>>>=T)>3)<<1)|(w>>>=T)>>1},E.log10=function(w){return w>=1e9?9:w>=1e8?8:w>=1e7?7:w>=1e6?6:w>=1e5?5:w>=1e4?4:w>=1e3?3:w>=100?2:w>=10?1:0},E.popCount=function(w){return 16843009*((w=(858993459&(w-=w>>>1&1431655765))+(w>>>2&858993459))+(w>>>4)&252645135)>>>24},E.countTrailingZeros=e,E.nextPow2=function(w){return w+=w===0,--w,w|=w>>>1,w|=w>>>2,w|=w>>>4,w|=w>>>8,1+(w|=w>>>16)},E.prevPow2=function(w){return w|=w>>>1,w|=w>>>2,w|=w>>>4,w|=w>>>8,(w|=w>>>16)-(w>>>1)},E.parity=function(w){return w^=w>>>16,w^=w>>>8,w^=w>>>4,27030>>>(w&=15)&1};var _=new Array(256);(function(w){for(var s=0;s<256;++s){var T=s,y=s,f=7;for(T>>>=1;T;T>>>=1)y<<=1,y|=1&T,--f;w[s]=y<>>8&255]<<16|_[w>>>16&255]<<8|_[w>>>24&255]},E.interleave2=function(w,s){return(w=1431655765&((w=858993459&((w=252645135&((w=16711935&((w&=65535)|w<<8))|w<<4))|w<<2))|w<<1))|(s=1431655765&((s=858993459&((s=252645135&((s=16711935&((s&=65535)|s<<8))|s<<4))|s<<2))|s<<1))<<1},E.deinterleave2=function(w,s){return(w=65535&((w=16711935&((w=252645135&((w=858993459&((w=w>>>s&1431655765)|w>>>1))|w>>>2))|w>>>4))|w>>>16))<<16>>16},E.interleave3=function(w,s,T){return w=1227133513&((w=3272356035&((w=251719695&((w=4278190335&((w&=1023)|w<<16))|w<<8))|w<<4))|w<<2),(w|=(s=1227133513&((s=3272356035&((s=251719695&((s=4278190335&((s&=1023)|s<<16))|s<<8))|s<<4))|s<<2))<<1)|(T=1227133513&((T=3272356035&((T=251719695&((T=4278190335&((T&=1023)|T<<16))|T<<8))|T<<4))|T<<2))<<2},E.deinterleave3=function(w,s){return(w=1023&((w=4278190335&((w=251719695&((w=3272356035&((w=w>>>s&1227133513)|w>>>2))|w>>>4))|w>>>8))|w>>>16))<<22>>22},E.nextCombination=function(w){var s=w|w-1;return s+1|(~s&-~s)-1>>>e(w)+1}},44781:function(D,E,e){var _=e(53435);D.exports=function(y,f){f||(f={});var l,t,i,r,n,o,a,u,p,c,b,d=f.cutoff==null?.25:f.cutoff,v=f.radius==null?8:f.radius,x=f.channel||0;if(ArrayBuffer.isView(y)||Array.isArray(y)){if(!f.width||!f.height)throw Error("For raw data width and height should be provided by options");l=f.width,t=f.height,r=y,o=f.stride?f.stride:Math.floor(y.length/l/t)}else window.HTMLCanvasElement&&y instanceof window.HTMLCanvasElement?(a=(u=y).getContext("2d"),l=u.width,t=u.height,r=(p=a.getImageData(0,0,l,t)).data,o=4):window.CanvasRenderingContext2D&&y instanceof window.CanvasRenderingContext2D?(a=y,l=(u=y.canvas).width,t=u.height,r=(p=a.getImageData(0,0,l,t)).data,o=4):window.ImageData&&y instanceof window.ImageData&&(p=y,l=y.width,t=y.height,r=p.data,o=4);if(i=Math.max(l,t),window.Uint8ClampedArray&&r instanceof window.Uint8ClampedArray||window.Uint8Array&&r instanceof window.Uint8Array)for(n=r,r=Array(l*t),c=0,b=n.length;c-1?w(f):f}},68222:function(D,E,e){var _=e(77575),w=e(68318),s=w("%Function.prototype.apply%"),T=w("%Function.prototype.call%"),y=w("%Reflect.apply%",!0)||_.call(T,s),f=w("%Object.getOwnPropertyDescriptor%",!0),l=w("%Object.defineProperty%",!0),t=w("%Math.max%");if(l)try{l({},"a",{value:1})}catch{l=null}D.exports=function(r){var n=y(_,T,arguments);if(f&&l){var o=f(n,"length");o.configurable&&l(n,"length",{value:1+t(0,r.length-(arguments.length-1))})}return n};var i=function(){return y(_,s,arguments)};l?l(D.exports,"apply",{value:i}):D.exports.apply=i},53435:function(D){D.exports=function(E,e,_){return e<_?E_?_:E:E<_?_:E>e?e:E}},6475:function(D,E,e){var _=e(53435);function w(s,T){T==null&&(T=!0);var y=s[0],f=s[1],l=s[2],t=s[3];return t==null&&(t=T?1:255),T&&(y*=255,f*=255,l*=255,t*=255),16777216*(y=255&_(y,0,255))+((f=255&_(f,0,255))<<16)+((l=255&_(l,0,255))<<8)+(255&_(t,0,255))}D.exports=w,D.exports.to=w,D.exports.from=function(s,T){var y=(s=+s)>>>24,f=(16711680&s)>>>16,l=(65280&s)>>>8,t=255&s;return T===!1?[y,f,l,t]:[y/255,f/255,l/255,t/255]}},76857:function(D){D.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},25075:function(D,E,e){var _=e(36652),w=e(53435),s=e(90660);D.exports=function(T,y){y!=="float"&&y||(y="array"),y==="uint"&&(y="uint8"),y==="uint_clamped"&&(y="uint8_clamped");var f=new(s(y))(4),l=y!=="uint8"&&y!=="uint8_clamped";return T.length&&typeof T!="string"||((T=_(T))[0]/=255,T[1]/=255,T[2]/=255),function(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||!!(Array.isArray(t)&&(t[0]>1||t[0]===0)&&(t[1]>1||t[1]===0)&&(t[2]>1||t[2]===0)&&(!t[3]||t[3]>1))}(T)?(f[0]=T[0],f[1]=T[1],f[2]=T[2],f[3]=T[3]!=null?T[3]:255,l&&(f[0]/=255,f[1]/=255,f[2]/=255,f[3]/=255),f):(l?(f[0]=T[0],f[1]=T[1],f[2]=T[2],f[3]=T[3]!=null?T[3]:1):(f[0]=w(Math.floor(255*T[0]),0,255),f[1]=w(Math.floor(255*T[1]),0,255),f[2]=w(Math.floor(255*T[2]),0,255),f[3]=T[3]==null?255:w(Math.floor(255*T[3]),0,255)),f)}},90736:function(D,E,e){var _=e(76857),w=e(10973),s=e(46775);D.exports=function(y){var f,l,t=[],i=1;if(typeof y=="string")if(_[y])t=_[y].slice(),l="rgb";else if(y==="transparent")i=0,l="rgb",t=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(y)){var r=(a=y.slice(1)).length;i=1,r<=4?(t=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],r===4&&(i=parseInt(a[3]+a[3],16)/255)):(t=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],r===8&&(i=parseInt(a[6]+a[7],16)/255)),t[0]||(t[0]=0),t[1]||(t[1]=0),t[2]||(t[2]=0),l="rgb"}else if(f=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(y)){var n=f[1],o=n==="rgb",a=n.replace(/a$/,"");l=a,r=a==="cmyk"?4:a==="gray"?1:3,t=f[2].trim().split(/\s*,\s*/).map(function(p,c){if(/%$/.test(p))return c===r?parseFloat(p)/100:a==="rgb"?255*parseFloat(p)/100:parseFloat(p);if(a[c]==="h"){if(/deg$/.test(p))return parseFloat(p);if(T[p]!==void 0)return T[p]}return parseFloat(p)}),n===a&&t.push(1),i=o||t[r]===void 0?1:t[r],t=t.slice(0,r)}else y.length>10&&/[0-9](?:\s|\/)/.test(y)&&(t=y.match(/([0-9]+)/g).map(function(p){return parseFloat(p)}),l=y.match(/([a-z])/gi).join("").toLowerCase());else if(isNaN(y))if(w(y)){var u=s(y.r,y.red,y.R,null);u!==null?(l="rgb",t=[u,s(y.g,y.green,y.G),s(y.b,y.blue,y.B)]):(l="hsl",t=[s(y.h,y.hue,y.H),s(y.s,y.saturation,y.S),s(y.l,y.lightness,y.L,y.b,y.brightness)]),i=s(y.a,y.alpha,y.opacity,1),y.opacity!=null&&(i/=100)}else(Array.isArray(y)||e.g.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(y))&&(t=[y[0],y[1],y[2]],l="rgb",i=y.length===4?y[3]:1);else l="rgb",t=[y>>>16,(65280&y)>>>8,255&y];return{space:l,values:t,alpha:i}};var T={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}},36652:function(D,E,e){var _=e(90736),w=e(80009),s=e(53435);D.exports=function(T){var y,f=_(T);return f.space?((y=Array(3))[0]=s(f.values[0],0,255),y[1]=s(f.values[1],0,255),y[2]=s(f.values[2],0,255),f.space[0]==="h"&&(y=w.rgb(y)),y.push(s(f.alpha,0,1)),y):[]}},80009:function(D,E,e){var _=e(6866);D.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(w){var s,T,y,f,l,t=w[0]/360,i=w[1]/100,r=w[2]/100;if(i===0)return[l=255*r,l,l];s=2*r-(T=r<.5?r*(1+i):r+i-r*i),f=[0,0,0];for(var n=0;n<3;n++)(y=t+.3333333333333333*-(n-1))<0?y++:y>1&&y--,l=6*y<1?s+6*(T-s)*y:2*y<1?T:3*y<2?s+(T-s)*(.6666666666666666-y)*6:s,f[n]=255*l;return f}},_.hsl=function(w){var s,T,y=w[0]/255,f=w[1]/255,l=w[2]/255,t=Math.min(y,f,l),i=Math.max(y,f,l),r=i-t;return i===t?s=0:y===i?s=(f-l)/r:f===i?s=2+(l-y)/r:l===i&&(s=4+(y-f)/r),(s=Math.min(60*s,360))<0&&(s+=360),T=(t+i)/2,[s,100*(i===t?0:T<=.5?r/(i+t):r/(2-i-t)),100*T]}},6866:function(D){D.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}},24138:function(D){D.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|ç)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|é)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|é)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|ã)o.?tom(e|é)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}},72791:function(D,E,e){D.exports={parse:e(41004),stringify:e(53313)}},63625:function(D,E,e){var _=e(40402);D.exports={isSize:function(w){return/^[\d\.]/.test(w)||w.indexOf("/")!==-1||_.indexOf(w)!==-1}}},41004:function(D,E,e){var _=e(90448),w=e(38732),s=e(41901),T=e(15659),y=e(96209),f=e(83794),l=e(99011),t=e(63625).isSize;D.exports=r;var i=r.cache={};function r(o){if(typeof o!="string")throw new Error("Font argument must be a string.");if(i[o])return i[o];if(o==="")throw new Error("Cannot parse an empty string.");if(s.indexOf(o)!==-1)return i[o]={system:o};for(var a,u={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},p=l(o,/\s+/);a=p.shift();){if(w.indexOf(a)!==-1)return["style","variant","weight","stretch"].forEach(function(b){u[b]=a}),i[o]=u;if(y.indexOf(a)===-1)if(a!=="normal"&&a!=="small-caps")if(f.indexOf(a)===-1){if(T.indexOf(a)===-1){if(t(a)){var c=l(a,"/");if(u.size=c[0],c[1]!=null?u.lineHeight=n(c[1]):p[0]==="/"&&(p.shift(),u.lineHeight=n(p.shift())),!p.length)throw new Error("Missing required font-family.");return u.family=l(p.join(" "),/\s*,\s*/).map(_),i[o]=u}throw new Error("Unknown or unsupported font token: "+a)}u.weight=a}else u.stretch=a;else u.variant=a;else u.style=a}throw new Error("Missing required font-size.")}function n(o){var a=parseFloat(o);return a.toString()===o?a:o}},53313:function(D,E,e){var _=e(71299),w=e(63625).isSize,s=o(e(38732)),T=o(e(41901)),y=o(e(15659)),f=o(e(96209)),l=o(e(83794)),t={normal:1,"small-caps":1},i={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},r="serif";function n(a,u){if(a&&!u[a]&&!s[a])throw Error("Unknown keyword `"+a+"`");return a}function o(a){for(var u={},p=0;po?1:n>=o?0:NaN}e.d(E,{j2:function(){return _},Fp:function(){return T},J6:function(){return f},TS:function(){return l},VV:function(){return t},w6:function(){return i},Sm:function(){return r}}),(w=_).length===1&&(s=w,w=function(n,o){return _(s(n),o)});var w,s;function T(n,o){var a,u,p=n.length,c=-1;if(o==null){for(;++c=a)for(u=a;++cu&&(u=a)}else for(;++c=a)for(u=a;++cu&&(u=a);return u}function y(n){return n===null?NaN:+n}function f(n,o){var a,u=n.length,p=u,c=-1,b=0;if(o==null)for(;++c=0;)for(o=(u=n[p]).length;--o>=0;)a[--b]=u[o];return a}function t(n,o){var a,u,p=n.length,c=-1;if(o==null){for(;++c=a)for(u=a;++ca&&(u=a)}else for(;++c=a)for(u=a;++ca&&(u=a);return u}function i(n,o,a){n=+n,o=+o,a=(p=arguments.length)<2?(o=n,n=0,1):p<3?1:+a;for(var u=-1,p=0|Math.max(0,Math.ceil((o-n)/a)),c=new Array(p);++u=p.length)return o!=null&&v.sort(o),a!=null?a(v):v;for(var k,h,M,A=-1,C=v.length,L=p[x++],O=T(),I=g();++Ap.length)return v;var g,m=c[x-1];return a!=null&&x>=p.length?g=v.entries():(g=[],v.each(function(k,h){g.push({key:h,values:d(k,x)})})),m!=null?g.sort(function(k,h){return m(k.key,h.key)}):g}return u={object:function(v){return b(v,0,f,l)},map:function(v){return b(v,0,t,i)},entries:function(v){return d(b(v,0,t,i),0)},key:function(v){return p.push(v),u},sortKeys:function(v){return c[p.length-1]=v,u},sortValues:function(v){return o=v,u},rollup:function(v){return a=v,u}}}function f(){return{}}function l(o,a,u){o[a]=u}function t(){return T()}function i(o,a,u){o.set(a,u)}function r(){}var n=T.prototype;r.prototype={constructor:r,has:n.has,add:function(o){return this[_+(o+="")]=o,this},remove:n.remove,clear:n.clear,values:n.keys,size:n.size,empty:n.empty,each:n.each}},49887:function(D,E,e){function _(de,he){var xe;function Re(){var we,Ae,Me=xe.length,Ce=0,ne=0;for(we=0;we=(Ae=(je+be)/2))?je=Ae:be=Ae,(me=xe>=(Me=(ge+Se)/2))?ge=Me:Se=Me,we=Ue,!(Ue=Ue[Te=me<<1|ue]))return we[Te]=De,de;if(Ce=+de._x.call(null,Ue.data),ne=+de._y.call(null,Ue.data),he===Ce&&xe===ne)return De.next=Ue,we?we[Te]=De:de._root=De,de;do we=we?we[Te]=new Array(4):de._root=new Array(4),(ue=he>=(Ae=(je+be)/2))?je=Ae:be=Ae,(me=xe>=(Me=(ge+Se)/2))?ge=Me:Se=Me;while((Te=me<<1|ue)==(Ee=(ne>=Me)<<1|Ce>=Ae));return we[Ee]=Ue,we[Te]=De,de}function y(de,he,xe,Re,we){this.node=de,this.x0=he,this.y0=xe,this.x1=Re,this.y1=we}function f(de){return de[0]}function l(de){return de[1]}function t(de,he,xe){var Re=new i(he??f,xe??l,NaN,NaN,NaN,NaN);return de==null?Re:Re.addAll(de)}function i(de,he,xe,Re,we,Ae){this._x=de,this._y=he,this._x0=xe,this._y0=Re,this._x1=we,this._y1=Ae,this._root=void 0}function r(de){for(var he={data:de.data},xe=he;de=de.next;)xe=xe.next={data:de.data};return he}e.r(E),e.d(E,{forceCenter:function(){return _},forceCollide:function(){return u},forceLink:function(){return d},forceManyBody:function(){return se},forceRadial:function(){return fe},forceSimulation:function(){return oe},forceX:function(){return ye},forceY:function(){return pe}});var n=t.prototype=i.prototype;function o(de){return de.x+de.vx}function a(de){return de.y+de.vy}function u(de){var he,xe,Re=1,we=1;function Ae(){for(var ne,ue,me,Te,Ee,Ue,De,je=he.length,ge=0;geTe+yt||ZeEe+yt||stme.index){var Et=Te-ot.x-ot.vx,Tt=Ee-ot.y-ot.vy,xt=Et*Et+Tt*Tt;xtne.r&&(ne.r=ne[ue].r)}function Ce(){if(he){var ne,ue,me=he.length;for(xe=new Array(me),ne=0;neme&&(me=Re),weTe&&(Te=we));if(ne>me||ue>Te)return this;for(this.cover(ne,ue).cover(me,Te),xe=0;xede||de>=we||Re>he||he>=Ae;)switch(Ce=(heEe||(Ae=ne.y0)>Ue||(Me=ne.x1)=be)<<1|de>=ge)&&(ne=De[De.length-1],De[De.length-1]=De[De.length-1-ue],De[De.length-1-ue]=ne)}else{var Se=de-+this._x.call(null,je.data),Ne=he-+this._y.call(null,je.data),Ye=Se*Se+Ne*Ne;if(Ye=(Ce=(De+ge)/2))?De=Ce:ge=Ce,(me=Me>=(ne=(je+be)/2))?je=ne:be=ne,he=Ue,!(Ue=Ue[Te=me<<1|ue]))return this;if(!Ue.length)break;(he[Te+1&3]||he[Te+2&3]||he[Te+3&3])&&(xe=he,Ee=Te)}for(;Ue.data!==de;)if(Re=Ue,!(Ue=Ue.next))return this;return(we=Ue.next)&&delete Ue.next,Re?(we?Re.next=we:delete Re.next,this):he?(we?he[Te]=we:delete he[Te],(Ue=he[0]||he[1]||he[2]||he[3])&&Ue===(he[3]||he[2]||he[1]||he[0])&&!Ue.length&&(xe?xe[Ee]=Ue:this._root=Ue),this):(this._root=we,this)},n.removeAll=function(de){for(var he=0,xe=de.length;he=0&&(Re=xe.slice(we+1),xe=xe.slice(0,we)),xe&&!he.hasOwnProperty(xe))throw new Error("unknown type: "+xe);return{type:xe,name:Re}})}function k(de,he){for(var xe,Re=0,we=de.length;Re0)for(var xe,Re,we=new Array(xe),Ae=0;Ae=0&&he._call.call(null,de),he=he._next;--L})()}finally{L=0,function(){for(var de,he,xe=M,Re=1/0;xe;)xe._call?(Re>xe._time&&(Re=xe._time),de=xe,xe=xe._next):(he=xe._next,xe._next=null,xe=de?de._next=he:M=he);A=de,Y(Re)}(),U=0}}function X(){var de=G.now(),he=de-R;he>1e3&&(B-=he,R=de)}function Y(de){L||(O&&(O=clearTimeout(O)),de-U>24?(de<1/0&&(O=setTimeout(Q,de-G.now()-B)),I&&(I=clearInterval(I))):(I||(R=G.now(),I=setInterval(X,1e3)),L=1,N(Q)))}function K(de){return de.x}function te(de){return de.y}H.prototype=ee.prototype={constructor:H,restart:function(de,he,xe){if(typeof de!="function")throw new TypeError("callback is not a function");xe=(xe==null?j():+xe)+(he==null?0:+he),this._next||A===this||(A?A._next=this:M=this,A=this),this._call=de,this._time=xe,Y()},stop:function(){this._call&&(this._call=null,this._time=1/0,Y())}};var ae=Math.PI*(3-Math.sqrt(5));function oe(de){var he,xe=1,Re=.001,we=1-Math.pow(Re,1/300),Ae=0,Me=.6,Ce=(0,p.UI)(),ne=ee(me),ue=C("tick","end");function me(){Te(),ue.call("tick",he),xe1?(je==null?Ce.remove(De):Ce.set(De,Ue(je)),he):Ce.get(De)},find:function(De,je,ge){var be,Se,Ne,Ye,Ze,st=0,ot=de.length;for(ge==null?ge=1/0:ge*=ge,st=0;st1?(ue.on(De,je),he):ue.on(De)}}}function se(){var de,he,xe,Re,we=w(-30),Ae=1,Me=1/0,Ce=.81;function ne(Ee){var Ue,De=de.length,je=t(de,K,te).visitAfter(me);for(xe=Ee,Ue=0;Ue=Me)){(Ee.data!==he||Ee.next)&&(ge===0&&(Ne+=(ge=s())*ge),be===0&&(Ne+=(be=s())*be),Ne1?b[0]+b.slice(2):b,+u.slice(c+1)]}e.d(E,{WU:function(){return r},FF:function(){return a}});var w,s=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function T(u){if(!(p=s.exec(u)))throw new Error("invalid format: "+u);var p;return new y({fill:p[1],align:p[2],sign:p[3],symbol:p[4],zero:p[5],width:p[6],comma:p[7],precision:p[8]&&p[8].slice(1),trim:p[9],type:p[10]})}function y(u){this.fill=u.fill===void 0?" ":u.fill+"",this.align=u.align===void 0?">":u.align+"",this.sign=u.sign===void 0?"-":u.sign+"",this.symbol=u.symbol===void 0?"":u.symbol+"",this.zero=!!u.zero,this.width=u.width===void 0?void 0:+u.width,this.comma=!!u.comma,this.precision=u.precision===void 0?void 0:+u.precision,this.trim=!!u.trim,this.type=u.type===void 0?"":u.type+""}function f(u,p){var c=_(u,p);if(!c)return u+"";var b=c[0],d=c[1];return d<0?"0."+new Array(-d).join("0")+b:b.length>d+1?b.slice(0,d+1)+"."+b.slice(d+1):b+new Array(d-b.length+2).join("0")}T.prototype=y.prototype,y.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,0|this.width))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var l={"%":function(u,p){return(100*u).toFixed(p)},b:function(u){return Math.round(u).toString(2)},c:function(u){return u+""},d:function(u){return Math.abs(u=Math.round(u))>=1e21?u.toLocaleString("en").replace(/,/g,""):u.toString(10)},e:function(u,p){return u.toExponential(p)},f:function(u,p){return u.toFixed(p)},g:function(u,p){return u.toPrecision(p)},o:function(u){return Math.round(u).toString(8)},p:function(u,p){return f(100*u,p)},r:f,s:function(u,p){var c=_(u,p);if(!c)return u+"";var b=c[0],d=c[1],v=d-(w=3*Math.max(-8,Math.min(8,Math.floor(d/3))))+1,x=b.length;return v===x?b:v>x?b+new Array(v-x+1).join("0"):v>0?b.slice(0,v)+"."+b.slice(v):"0."+new Array(1-v).join("0")+_(u,Math.max(0,p+v-1))[0]},X:function(u){return Math.round(u).toString(16).toUpperCase()},x:function(u){return Math.round(u).toString(16)}};function t(u){return u}var i,r,n=Array.prototype.map,o=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function a(u){var p,c,b=u.grouping===void 0||u.thousands===void 0?t:(p=n.call(u.grouping,Number),c=u.thousands+"",function(A,C){for(var L=A.length,O=[],I=0,R=p[0],U=0;L>0&&R>0&&(U+R+1>C&&(R=Math.max(1,C-U)),O.push(A.substring(L-=R,L+R)),!((U+=R+1)>C));)R=p[I=(I+1)%p.length];return O.reverse().join(c)}),d=u.currency===void 0?"":u.currency[0]+"",v=u.currency===void 0?"":u.currency[1]+"",x=u.decimal===void 0?".":u.decimal+"",g=u.numerals===void 0?t:function(A){return function(C){return C.replace(/[0-9]/g,function(L){return A[+L]})}}(n.call(u.numerals,String)),m=u.percent===void 0?"%":u.percent+"",k=u.minus===void 0?"-":u.minus+"",h=u.nan===void 0?"NaN":u.nan+"";function M(A){var C=(A=T(A)).fill,L=A.align,O=A.sign,I=A.symbol,R=A.zero,U=A.width,B=A.comma,G=A.precision,N=A.trim,j=A.type;j==="n"?(B=!0,j="g"):l[j]||(G===void 0&&(G=12),N=!0,j="g"),(R||C==="0"&&L==="=")&&(R=!0,C="0",L="=");var V=I==="$"?d:I==="#"&&/[boxX]/.test(j)?"0"+j.toLowerCase():"",H=I==="$"?v:/[%p]/.test(j)?m:"",ee=l[j],Q=/[defgprs%]/.test(j);function X(Y){var K,te,ae,oe=V,se=H;if(j==="c")se=ee(Y)+se,Y="";else{var fe=(Y=+Y)<0||1/Y<0;if(Y=isNaN(Y)?h:ee(Math.abs(Y),G),N&&(Y=function(de){e:for(var he,xe=de.length,Re=1,we=-1;Re0&&(we=0)}return we>0?de.slice(0,we)+de.slice(he+1):de}(Y)),fe&&+Y==0&&O!=="+"&&(fe=!1),oe=(fe?O==="("?O:k:O==="-"||O==="("?"":O)+oe,se=(j==="s"?o[8+w/3]:"")+se+(fe&&O==="("?")":""),Q){for(K=-1,te=Y.length;++K(ae=Y.charCodeAt(K))||ae>57){se=(ae===46?x+Y.slice(K+1):Y.slice(K))+se,Y=Y.slice(0,K);break}}}B&&!R&&(Y=b(Y,1/0));var ye=oe.length+Y.length+se.length,pe=ye>1)+oe+Y+se+pe.slice(ye);break;default:Y=pe+oe+Y+se}return g(Y)}return G=G===void 0?6:/[gprs]/.test(j)?Math.max(1,Math.min(21,G)):Math.max(0,Math.min(20,G)),X.toString=function(){return A+""},X}return{format:M,formatPrefix:function(A,C){var L,O=M(((A=T(A)).type="f",A)),I=3*Math.max(-8,Math.min(8,Math.floor((L=C,((L=_(Math.abs(L)))?L[1]:NaN)/3)))),R=Math.pow(10,-I),U=o[8+I/3];return function(B){return O(R*B)+U}}}}i=a({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),r=i.format,i.formatPrefix},65704:function(D,E,e){e.r(E),e.d(E,{geoAiry:function(){return B},geoAiryRaw:function(){return U},geoAitoff:function(){return N},geoAitoffRaw:function(){return G},geoArmadillo:function(){return V},geoArmadilloRaw:function(){return j},geoAugust:function(){return ee},geoAugustRaw:function(){return H},geoBaker:function(){return K},geoBakerRaw:function(){return Y},geoBerghaus:function(){return oe},geoBerghausRaw:function(){return ae},geoBertin1953:function(){return Re},geoBertin1953Raw:function(){return xe},geoBoggs:function(){return Te},geoBoggsRaw:function(){return me},geoBonne:function(){return ge},geoBonneRaw:function(){return je},geoBottomley:function(){return Se},geoBottomleyRaw:function(){return be},geoBromley:function(){return Ye},geoBromleyRaw:function(){return Ne},geoChamberlin:function(){return Dt},geoChamberlinAfrica:function(){return xt},geoChamberlinRaw:function(){return Et},geoCollignon:function(){return Ft},geoCollignonRaw:function(){return It},geoCraig:function(){return Nt},geoCraigRaw:function(){return qt},geoCraster:function(){return Ge},geoCrasterRaw:function(){return Ke},geoCylindricalEqualArea:function(){return ht},geoCylindricalEqualAreaRaw:function(){return nt},geoCylindricalStereographic:function(){return Be},geoCylindricalStereographicRaw:function(){return Oe},geoEckert1:function(){return ut},geoEckert1Raw:function(){return Qe},geoEckert2:function(){return bt},geoEckert2Raw:function(){return pt},geoEckert3:function(){return Ct},geoEckert3Raw:function(){return Lt},geoEckert4:function(){return Ot},geoEckert4Raw:function(){return mt},geoEckert5:function(){return Pt},geoEckert5Raw:function(){return _t},geoEckert6:function(){return Wt},geoEckert6Raw:function(){return Bt},geoEisenlohr:function(){return Kt},geoEisenlohrRaw:function(){return Xt},geoFahey:function(){return ln},geoFaheyRaw:function(){return yn},geoFoucaut:function(){return Wn},geoFoucautRaw:function(){return kn},geoFoucautSinusoidal:function(){return on},geoFoucautSinusoidalRaw:function(){return wn},geoGilbert:function(){return Cn},geoGingery:function(){return or},geoGingeryRaw:function(){return Nn},geoGinzburg4:function(){return gr},geoGinzburg4Raw:function(){return kr},geoGinzburg5:function(){return dr},geoGinzburg5Raw:function(){return ir},geoGinzburg6:function(){return $t},geoGinzburg6Raw:function(){return yr},geoGinzburg8:function(){return Ln},geoGinzburg8Raw:function(){return mn},geoGinzburg9:function(){return jn},geoGinzburg9Raw:function(){return En},geoGringorten:function(){return Qn},geoGringortenQuincuncial:function(){return Wl},geoGringortenRaw:function(){return Zn},geoGuyou:function(){return jt},geoGuyouRaw:function(){return Pn},geoHammer:function(){return pe},geoHammerRaw:function(){return fe},geoHammerRetroazimuthal:function(){return On},geoHammerRetroazimuthalRaw:function(){return un},geoHealpix:function(){return er},geoHealpixRaw:function(){return vn},geoHill:function(){return lr},geoHillRaw:function(){return Jn},geoHomolosine:function(){return Mr},geoHomolosineRaw:function(){return Sr},geoHufnagel:function(){return pr},geoHufnagelRaw:function(){return Lr},geoHyperelliptical:function(){return Ti},geoHyperellipticalRaw:function(){return ci},geoInterrupt:function(){return xi},geoInterruptedBoggs:function(){return Ka},geoInterruptedHomolosine:function(){return Xs},geoInterruptedMollweide:function(){return pu},geoInterruptedMollweideHemispheres:function(){return Qa},geoInterruptedQuarticAuthalic:function(){return Rs},geoInterruptedSinuMollweide:function(){return Qi},geoInterruptedSinusoidal:function(){return qa},geoKavrayskiy7:function(){return fs},geoKavrayskiy7Raw:function(){return eo},geoLagrange:function(){return hs},geoLagrangeRaw:function(){return fi},geoLarrivee:function(){return Ro},geoLarriveeRaw:function(){return bo},geoLaskowski:function(){return Vu},geoLaskowskiRaw:function(){return xl},geoLittrow:function(){return Hu},geoLittrowRaw:function(){return Xo},geoLoximuthal:function(){return Ec},geoLoximuthalRaw:function(){return qu},geoMiller:function(){return Gu},geoMillerRaw:function(){return gu},geoModifiedStereographic:function(){return Ps},geoModifiedStereographicAlaska:function(){return yu},geoModifiedStereographicGs48:function(){return Ls},geoModifiedStereographicGs50:function(){return Vl},geoModifiedStereographicLee:function(){return Ks},geoModifiedStereographicMiller:function(){return ps},geoModifiedStereographicRaw:function(){return vu},geoMollweide:function(){return Ce},geoMollweideRaw:function(){return Me},geoMtFlatPolarParabolic:function(){return Cc},geoMtFlatPolarParabolicRaw:function(){return ds},geoMtFlatPolarQuartic:function(){return bl},geoMtFlatPolarQuarticRaw:function(){return Hl},geoMtFlatPolarSinusoidal:function(){return Qs},geoMtFlatPolarSinusoidalRaw:function(){return Os},geoNaturalEarth:function(){return oo.Z},geoNaturalEarth2:function(){return _l},geoNaturalEarth2Raw:function(){return xu},geoNaturalEarthRaw:function(){return oo.K},geoNellHammer:function(){return wl},geoNellHammerRaw:function(){return el},geoNicolosi:function(){return Tl},geoNicolosiRaw:function(){return tl},geoPatterson:function(){return ql},geoPattersonRaw:function(){return gs},geoPeirceQuincuncial:function(){return Zl},geoPierceQuincuncial:function(){return Zl},geoPolyconic:function(){return _u},geoPolyconicRaw:function(){return Sl},geoPolyhedral:function(){return vs},geoPolyhedralButterfly:function(){return Gl},geoPolyhedralCollignon:function(){return Tu},geoPolyhedralWaterman:function(){return Bs},geoProject:function(){return js},geoQuantize:function(){return Sa},geoQuincuncial:function(){return Ga},geoRectangularPolyconic:function(){return Us},geoRectangularPolyconicRaw:function(){return Cr},geoRobinson:function(){return rl},geoRobinsonRaw:function(){return Yl},geoSatellite:function(){return al},geoSatelliteRaw:function(){return il},geoSinuMollweide:function(){return vr},geoSinuMollweideRaw:function(){return cr},geoSinusoidal:function(){return De},geoSinusoidalRaw:function(){return Ue},geoStitch:function(){return Hs},geoTimes:function(){return fo},geoTimesRaw:function(){return xa},geoTwoPointAzimuthal:function(){return ho},geoTwoPointAzimuthalRaw:function(){return Ll},geoTwoPointAzimuthalUsa:function(){return to},geoTwoPointEquidistant:function(){return di},geoTwoPointEquidistantRaw:function(){return Fo},geoTwoPointEquidistantUsa:function(){return za},geoVanDerGrinten:function(){return wo},geoVanDerGrinten2:function(){return Bo},geoVanDerGrinten2Raw:function(){return Da},geoVanDerGrinten3:function(){return rs},geoVanDerGrinten3Raw:function(){return bs},geoVanDerGrinten4:function(){return po},geoVanDerGrinten4Raw:function(){return ba},geoVanDerGrintenRaw:function(){return oa},geoWagner:function(){return Ur},geoWagner4:function(){return $l},geoWagner4Raw:function(){return _a},geoWagner6:function(){return ll},geoWagner6Raw:function(){return Fa},geoWagner7:function(){return sl},geoWagnerRaw:function(){return Fr},geoWiechel:function(){return _i},geoWiechelRaw:function(){return as},geoWinkel3:function(){return Jl},geoWinkel3Raw:function(){return Si}});var _=e(15002),w=Math.abs,s=Math.atan,T=Math.atan2,y=Math.cos,f=Math.exp,l=Math.floor,t=Math.log,i=Math.max,r=Math.min,n=Math.pow,o=Math.round,a=Math.sign||function(et){return et>0?1:et<0?-1:0},u=Math.sin,p=Math.tan,c=1e-6,b=1e-12,d=Math.PI,v=d/2,x=d/4,g=Math.SQRT1_2,m=O(2),k=O(d),h=2*d,M=180/d,A=d/180;function C(et){return et>1?v:et<-1?-v:Math.asin(et)}function L(et){return et>1?0:et<-1?d:Math.acos(et)}function O(et){return et>0?Math.sqrt(et):0}function I(et){return(f(et)-f(-et))/2}function R(et){return(f(et)+f(-et))/2}function U(et){var rt=p(et/2),ct=2*t(y(et/2))/(rt*rt);function vt(Mt,kt){var q=y(Mt),$=y(kt),W=u(kt),ie=$*q,_e=-((1-ie?t((1+ie)/2)/(1-ie):-.5)+ct/(1+ie));return[_e*$*u(Mt),_e*W]}return vt.invert=function(Mt,kt){var q,$=O(Mt*Mt+kt*kt),W=-et/2,ie=50;if(!$)return[0,0];do{var _e=W/2,ze=y(_e),He=u(_e),Xe=He/ze,at=-t(w(ze));W-=q=(2/Xe*at-ct*Xe-$)/(-at/(He*He)+1-ct/(2*ze*ze))*(ze<0?.7:1)}while(w(q)>c&&--ie>0);var wt=u(W);return[T(Mt*wt,$*y(W)),C(kt*wt/$)]},vt}function B(){var et=v,rt=(0,_.r)(U),ct=rt(et);return ct.radius=function(vt){return arguments.length?rt(et=vt*A):et*M},ct.scale(179.976).clipAngle(147)}function G(et,rt){var ct=y(rt),vt=function(Mt){return Mt?Mt/Math.sin(Mt):1}(L(ct*y(et/=2)));return[2*ct*u(et)*vt,u(rt)*vt]}function N(){return(0,_.Z)(G).scale(152.63)}function j(et){var rt=u(et),ct=y(et),vt=et>=0?1:-1,Mt=p(vt*et),kt=(1+rt-ct)/2;function q($,W){var ie=y(W),_e=y($/=2);return[(1+ie)*u($),(vt*W>-T(_e,Mt)-.001?0:10*-vt)+kt+u(W)*ct-(1+ie)*rt*_e]}return q.invert=function($,W){var ie=0,_e=0,ze=50;do{var He=y(ie),Xe=u(ie),at=y(_e),wt=u(_e),At=1+at,re=At*Xe-$,ve=kt+wt*ct-At*rt*He-W,Le=At*He/2,Fe=-Xe*wt,Ve=rt*At*Xe/2,We=ct*at+rt*He*wt,$e=Fe*Ve-We*Le,tt=(ve*Fe-re*We)/$e/2,lt=(re*Ve-ve*Le)/$e;w(lt)>2&&(lt/=2),ie-=tt,_e-=lt}while((w(tt)>c||w(lt)>c)&&--ze>0);return vt*_e>-T(y(ie),Mt)-.001?[2*ie,_e]:null},q}function V(){var et=20*A,rt=et>=0?1:-1,ct=p(rt*et),vt=(0,_.r)(j),Mt=vt(et),kt=Mt.stream;return Mt.parallel=function(q){return arguments.length?(ct=p((rt=(et=q*A)>=0?1:-1)*et),vt(et)):et*M},Mt.stream=function(q){var $=Mt.rotate(),W=kt(q),ie=(Mt.rotate([0,0]),kt(q)),_e=Mt.precision();return Mt.rotate($),W.sphere=function(){ie.polygonStart(),ie.lineStart();for(var ze=-180*rt;rt*ze<180;ze+=90*rt)ie.point(ze,90*rt);if(et)for(;rt*(ze-=3*rt*_e)>=-180;)ie.point(ze,rt*-T(y(ze*A/2),ct)*M);ie.lineEnd(),ie.polygonEnd()},W},Mt.scale(218.695).center([0,28.0974])}function H(et,rt){var ct=p(rt/2),vt=O(1-ct*ct),Mt=1+vt*y(et/=2),kt=u(et)*vt/Mt,q=ct/Mt,$=kt*kt,W=q*q;return[1.3333333333333333*kt*(3+$-3*W),1.3333333333333333*q*(3+3*$-W)]}function ee(){return(0,_.Z)(H).scale(66.1603)}G.invert=function(et,rt){if(!(et*et+4*rt*rt>d*d+c)){var ct=et,vt=rt,Mt=25;do{var kt,q=u(ct),$=u(ct/2),W=y(ct/2),ie=u(vt),_e=y(vt),ze=u(2*vt),He=ie*ie,Xe=_e*_e,at=$*$,wt=1-Xe*W*W,At=wt?L(_e*W)*O(kt=1/wt):kt=0,re=2*At*_e*$-et,ve=At*ie-rt,Le=kt*(Xe*at+At*_e*W*He),Fe=kt*(.5*q*ze-2*At*ie*$),Ve=.25*kt*(ze*$-At*ie*Xe*q),We=kt*(He*W+At*at*_e),$e=Fe*Ve-We*Le;if(!$e)break;var tt=(ve*Fe-re*We)/$e,lt=(re*Ve-ve*Le)/$e;ct-=tt,vt-=lt}while((w(tt)>c||w(lt)>c)&&--Mt>0);return[ct,vt]}},H.invert=function(et,rt){if(rt*=.375,!(et*=.375)&&w(rt)>1)return null;var ct=1+et*et+rt*rt,vt=O((ct-O(ct*ct-4*rt*rt))/2),Mt=C(vt)/3,kt=vt?function(ie){return t(ie+O(ie*ie-1))}(w(rt/vt))/3:function(ie){return t(ie+O(ie*ie+1))}(w(et))/3,q=y(Mt),$=R(kt),W=$*$-q*q;return[2*a(et)*T(I(kt)*q,.25-W),2*a(rt)*T($*u(Mt),.25+W)]};var Q=O(8),X=t(1+m);function Y(et,rt){var ct=w(rt);return ctb&&--kt>0);return[et/(y(Mt)*(Q-1/u(Mt))),a(rt)*Mt]};var te=e(17889);function ae(et){var rt=2*d/et;function ct(vt,Mt){var kt=(0,te.N)(vt,Mt);if(w(vt)>v){var q=T(kt[1],kt[0]),$=O(kt[0]*kt[0]+kt[1]*kt[1]),W=rt*o((q-v)/rt)+v,ie=T(u(q-=W),2-y(q));q=W+C(d/$*u(ie))-ie,kt[0]=$*y(q),kt[1]=$*u(q)}return kt}return ct.invert=function(vt,Mt){var kt=O(vt*vt+Mt*Mt);if(kt>v){var q=T(Mt,vt),$=rt*o((q-v)/rt)+v,W=q>$?-1:1,ie=kt*y($-q),_e=1/p(W*L((ie-d)/O(d*(d-2*ie)+kt*kt)));q=$+2*s((_e+W*O(_e*_e-3))/3),vt=kt*y(q),Mt=kt*u(q)}return te.N.invert(vt,Mt)},ct}function oe(){var et=5,rt=(0,_.r)(ae),ct=rt(et),vt=ct.stream,Mt=.01,kt=-y(Mt*A),q=u(Mt*A);return ct.lobes=function($){return arguments.length?rt(et=+$):et},ct.stream=function($){var W=ct.rotate(),ie=vt($),_e=(ct.rotate([0,0]),vt($));return ct.rotate(W),ie.sphere=function(){_e.polygonStart(),_e.lineStart();for(var ze=0,He=360/et,Xe=2*d/et,at=90-180/et,wt=v;ze0&&w(vt)>c);return q<0?NaN:ct}function he(et,rt,ct){return rt===void 0&&(rt=40),ct===void 0&&(ct=b),function(vt,Mt,kt,q){var $,W,ie;kt=kt===void 0?0:+kt,q=q===void 0?0:+q;for(var _e=0;_e$)kt-=W/=2,q-=ie/=2;else{$=at;var wt=(kt>0?-1:1)*ct,At=(q>0?-1:1)*ct,re=et(kt+wt,q),ve=et(kt,q+At),Le=(re[0]-ze[0])/wt,Fe=(re[1]-ze[1])/wt,Ve=(ve[0]-ze[0])/At,We=(ve[1]-ze[1])/At,$e=We*Le-Fe*Ve,tt=(w($e)<.5?.5:1)/$e;if(kt+=W=(Xe*Ve-He*We)*tt,q+=ie=(He*Fe-Xe*Le)*tt,w(W)0&&(kt[1]*=1+q/1.5*kt[0]*kt[0]),kt}return rt.invert=he(rt),rt}function Re(){return(0,_.Z)(xe()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function we(et,rt){var ct,vt=et*u(rt),Mt=30;do rt-=ct=(rt+u(rt)-vt)/(1+y(rt));while(w(ct)>c&&--Mt>0);return rt/2}function Ae(et,rt,ct){function vt(Mt,kt){return[et*Mt*y(kt=we(ct,kt)),rt*u(kt)]}return vt.invert=function(Mt,kt){return kt=C(kt/rt),[Mt/(et*y(kt)),C((2*kt+u(2*kt))/ct)]},vt}ye.invert=function(et,rt){var ct=2*C(rt/2);return[et*y(ct/2)/y(ct),ct]};var Me=Ae(m/v,m,d);function Ce(){return(0,_.Z)(Me).scale(169.529)}var ne=2.00276,ue=1.11072;function me(et,rt){var ct=we(d,rt);return[ne*et/(1/y(rt)+ue/y(ct)),(rt+m*u(ct))/ne]}function Te(){return(0,_.Z)(me).scale(160.857)}function Ee(et){var rt=0,ct=(0,_.r)(et),vt=ct(rt);return vt.parallel=function(Mt){return arguments.length?ct(rt=Mt*A):rt*M},vt}function Ue(et,rt){return[et*y(rt),rt]}function De(){return(0,_.Z)(Ue).scale(152.63)}function je(et){if(!et)return Ue;var rt=1/p(et);function ct(vt,Mt){var kt=rt+et-Mt,q=kt&&vt*y(Mt)/kt;return[kt*u(q),rt-kt*y(q)]}return ct.invert=function(vt,Mt){var kt=O(vt*vt+(Mt=rt-Mt)*Mt),q=rt+et-kt;return[kt/y(q)*T(vt,Mt),q]},ct}function ge(){return Ee(je).scale(123.082).center([0,26.1441]).parallel(45)}function be(et){function rt(ct,vt){var Mt=v-vt,kt=Mt&&ct*et*u(Mt)/Mt;return[Mt*u(kt)/et,v-Mt*y(kt)]}return rt.invert=function(ct,vt){var Mt=ct*et,kt=v-vt,q=O(Mt*Mt+kt*kt),$=T(Mt,kt);return[(q?q/u(q):1)*$/et,v-q]},rt}function Se(){var et=.5,rt=(0,_.r)(be),ct=rt(et);return ct.fraction=function(vt){return arguments.length?rt(et=+vt):et},ct.scale(158.837)}me.invert=function(et,rt){var ct,vt,Mt=ne*rt,kt=rt<0?-x:x,q=25;do vt=Mt-m*u(kt),kt-=ct=(u(2*kt)+2*kt-d*u(vt))/(2*y(2*kt)+2+d*y(vt)*m*y(kt));while(w(ct)>c&&--q>0);return vt=Mt-m*u(kt),[et*(1/y(vt)+ue/y(kt))/ne,vt]},Ue.invert=function(et,rt){return[et/y(rt),rt]};var Ne=Ae(1,4/d,d);function Ye(){return(0,_.Z)(Ne).scale(152.63)}var Ze=e(66624),st=e(49386);function ot(et,rt,ct,vt,Mt,kt){var q,$=y(kt);if(w(et)>1||w(kt)>1)q=L(ct*Mt+rt*vt*$);else{var W=u(et/2),ie=u(kt/2);q=2*C(O(W*W+rt*vt*ie*ie))}return w(q)>c?[q,T(vt*u(kt),rt*Mt-ct*vt*$)]:[0,0]}function ft(et,rt,ct){return L((et*et+rt*rt-ct*ct)/(2*et*rt))}function yt(et){return et-2*d*l((et+d)/(2*d))}function Et(et,rt,ct){for(var vt,Mt=[[et[0],et[1],u(et[1]),y(et[1])],[rt[0],rt[1],u(rt[1]),y(rt[1])],[ct[0],ct[1],u(ct[1]),y(ct[1])]],kt=Mt[2],q=0;q<3;++q,kt=vt)vt=Mt[q],kt.v=ot(vt[1]-kt[1],kt[3],kt[2],vt[3],vt[2],vt[0]-kt[0]),kt.point=[0,0];var $=ft(Mt[0].v[0],Mt[2].v[0],Mt[1].v[0]),W=ft(Mt[0].v[0],Mt[1].v[0],Mt[2].v[0]),ie=d-$;Mt[2].point[1]=0,Mt[0].point[0]=-(Mt[1].point[0]=Mt[0].v[0]/2);var _e=[Mt[2].point[0]=Mt[0].point[0]+Mt[2].v[0]*y($),2*(Mt[0].point[1]=Mt[1].point[1]=Mt[2].v[0]*u($))];return function(ze,He){var Xe,at=u(He),wt=y(He),At=new Array(3);for(Xe=0;Xe<3;++Xe){var re=Mt[Xe];if(At[Xe]=ot(He-re[1],re[3],re[2],wt,at,ze-re[0]),!At[Xe][0])return re.point;At[Xe][1]=yt(At[Xe][1]-re.v[1])}var ve=_e.slice();for(Xe=0;Xe<3;++Xe){var Le=Xe==2?0:Xe+1,Fe=ft(Mt[Xe].v[0],At[Xe][0],At[Le][0]);At[Xe][1]<0&&(Fe=-Fe),Xe?Xe==1?(Fe=W-Fe,ve[0]-=At[Xe][0]*y(Fe),ve[1]-=At[Xe][0]*u(Fe)):(Fe=ie-Fe,ve[0]+=At[Xe][0]*y(Fe),ve[1]+=At[Xe][0]*u(Fe)):(ve[0]+=At[Xe][0]*y(Fe),ve[1]-=At[Xe][0]*u(Fe))}return ve[0]/=3,ve[1]/=3,ve}}function Tt(et){return et[0]*=A,et[1]*=A,et}function xt(){return Dt([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Dt(et,rt,ct){var vt=(0,Ze.Z)({type:"MultiPoint",coordinates:[et,rt,ct]}),Mt=[-vt[0],-vt[1]],kt=(0,st.Z)(Mt),q=Et(Tt(kt(et)),Tt(kt(rt)),Tt(kt(ct)));q.invert=he(q);var $=(0,_.Z)(q).rotate(Mt),W=$.center;return delete $.rotate,$.center=function(ie){return arguments.length?W(kt(ie)):kt.invert(W())},$.clipAngle(90)}function It(et,rt){var ct=O(1-u(rt));return[2/k*et*ct,k*(1-ct)]}function Ft(){return(0,_.Z)(It).scale(95.6464).center([0,30])}function qt(et){var rt=p(et);function ct(vt,Mt){return[vt,(vt?vt/u(vt):1)*(u(Mt)*y(vt)-rt*y(Mt))]}return ct.invert=rt?function(vt,Mt){vt&&(Mt*=u(vt)/vt);var kt=y(vt);return[vt,2*T(O(kt*kt+rt*rt-Mt*Mt)-kt,rt-Mt)]}:function(vt,Mt){return[vt,C(vt?Mt*p(vt)/vt:Mt)]},ct}function Nt(){return Ee(qt).scale(249.828).clipAngle(90)}It.invert=function(et,rt){var ct=(ct=rt/k-1)*ct;return[ct>0?et*O(d/ct)/2:0,C(1-ct)]};var Je=O(3);function Ke(et,rt){return[Je*et*(2*y(2*rt/3)-1)/k,Je*k*u(rt/3)]}function Ge(){return(0,_.Z)(Ke).scale(156.19)}function nt(et){var rt=y(et);function ct(vt,Mt){return[vt*rt,u(Mt)/rt]}return ct.invert=function(vt,Mt){return[vt/rt,C(Mt*rt)]},ct}function ht(){return Ee(nt).parallel(38.58).scale(195.044)}function Oe(et){var rt=y(et);function ct(vt,Mt){return[vt*rt,(1+rt)*p(Mt/2)]}return ct.invert=function(vt,Mt){return[vt/rt,2*s(Mt/(1+rt))]},ct}function Be(){return Ee(Oe).scale(124.75)}function Qe(et,rt){var ct=O(8/(3*d));return[ct*et*(1-w(rt)/d),ct*rt]}function ut(){return(0,_.Z)(Qe).scale(165.664)}function pt(et,rt){var ct=O(4-3*u(w(rt)));return[2/O(6*d)*et*ct,a(rt)*O(2*d/3)*(2-ct)]}function bt(){return(0,_.Z)(pt).scale(165.664)}function Lt(et,rt){var ct=O(d*(4+d));return[2/ct*et*(1+O(1-4*rt*rt/(d*d))),4/ct*rt]}function Ct(){return(0,_.Z)(Lt).scale(180.739)}function mt(et,rt){var ct=(2+v)*u(rt);rt/=2;for(var vt=0,Mt=1/0;vt<10&&w(Mt)>c;vt++){var kt=y(rt);rt-=Mt=(rt+u(rt)*(kt+2)-ct)/(2*kt*(1+kt))}return[2/O(d*(4+d))*et*(1+y(rt)),2*O(d/(4+d))*u(rt)]}function Ot(){return(0,_.Z)(mt).scale(180.739)}function _t(et,rt){return[et*(1+y(rt))/O(2+d),2*rt/O(2+d)]}function Pt(){return(0,_.Z)(_t).scale(173.044)}function Bt(et,rt){for(var ct=(1+v)*u(rt),vt=0,Mt=1/0;vt<10&&w(Mt)>c;vt++)rt-=Mt=(rt+u(rt)-ct)/(1+y(rt));return ct=O(2+d),[et*(1+y(rt))/ct,2*rt/ct]}function Wt(){return(0,_.Z)(Bt).scale(173.044)}Ke.invert=function(et,rt){var ct=3*C(rt/(Je*k));return[k*et/(Je*(2*y(2*ct/3)-1)),ct]},Qe.invert=function(et,rt){var ct=O(8/(3*d)),vt=rt/ct;return[et/(ct*(1-w(vt)/d)),vt]},pt.invert=function(et,rt){var ct=2-w(rt)/O(2*d/3);return[et*O(6*d)/(2*ct),a(rt)*C((4-ct*ct)/3)]},Lt.invert=function(et,rt){var ct=O(d*(4+d))/2;return[et*ct/(1+O(1-rt*rt*(4+d)/(4*d))),rt*ct/2]},mt.invert=function(et,rt){var ct=rt*O((4+d)/d)/2,vt=C(ct),Mt=y(vt);return[et/(2/O(d*(4+d))*(1+Mt)),C((vt+ct*(Mt+2))/(2+v))]},_t.invert=function(et,rt){var ct=O(2+d),vt=rt*ct/2;return[ct*et/(1+y(vt)),vt]},Bt.invert=function(et,rt){var ct=1+v,vt=O(ct/2);return[2*et*vt/(1+y(rt*=vt)),C((rt+u(rt))/ct)]};var Gt=3+2*m;function Xt(et,rt){var ct=u(et/=2),vt=y(et),Mt=O(y(rt)),kt=y(rt/=2),q=u(rt)/(kt+m*vt*Mt),$=O(2/(1+q*q)),W=O((m*kt+(vt+ct)*Mt)/(m*kt+(vt-ct)*Mt));return[Gt*($*(W-1/W)-2*t(W)),Gt*($*q*(W+1/W)-2*s(q))]}function Kt(){return(0,_.Z)(Xt).scale(62.5271)}Xt.invert=function(et,rt){if(!(ct=H.invert(et/1.2,1.065*rt)))return null;var ct,vt=ct[0],Mt=ct[1],kt=20;et/=Gt,rt/=Gt;do{var q=vt/2,$=Mt/2,W=u(q),ie=y(q),_e=u($),ze=y($),He=y(Mt),Xe=O(He),at=_e/(ze+m*ie*Xe),wt=at*at,At=O(2/(1+wt)),re=(m*ze+(ie+W)*Xe)/(m*ze+(ie-W)*Xe),ve=O(re),Le=ve-1/ve,Fe=ve+1/ve,Ve=At*Le-2*t(ve)-et,We=At*at*Fe-2*s(at)-rt,$e=_e&&g*Xe*W*wt/_e,tt=(m*ie*ze+Xe)/(2*(ze+m*ie*Xe)*(ze+m*ie*Xe)*Xe),lt=-.5*at*At*At*At,gt=lt*$e,zt=lt*tt,Ut=(Ut=2*ze+m*Xe*(ie-W))*Ut*ve,Vt=(m*ie*ze*Xe+He)/Ut,Qt=-m*W*_e/(Xe*Ut),gn=Le*gt-2*Vt/ve+At*(Vt+Vt/re),en=Le*zt-2*Qt/ve+At*(Qt+Qt/re),sn=at*Fe*gt-2*$e/(1+wt)+At*Fe*$e+At*at*(Vt-Vt/re),rn=at*Fe*zt-2*tt/(1+wt)+At*Fe*tt+At*at*(Qt-Qt/re),Mn=en*sn-rn*gn;if(!Mn)break;var xn=(We*en-Ve*rn)/Mn,an=(Ve*sn-We*gn)/Mn;vt-=xn,Mt=i(-v,r(v,Mt-an))}while((w(xn)>c||w(an)>c)&&--kt>0);return w(w(Mt)-v)vt){var ze=O(_e),He=T(ie,W),Xe=ct*o(He/ct),at=He-Xe,wt=et*y(at),At=(et*u(at)-at*u(wt))/(v-wt),re=Hn(at,At),ve=(d-et)/qn(re,wt,d);W=ze;var Le,Fe=50;do W-=Le=(et+qn(re,wt,W)*ve-ze)/(re(W)*ve);while(w(Le)>c&&--Fe>0);ie=at*u(W),Wvt){var W=O($),ie=T(q,kt),_e=ct*o(ie/ct),ze=ie-_e;kt=W*y(ze),q=W*u(ze);for(var He=kt-v,Xe=u(kt),at=q/Xe,wt=ktc||w(He)>c)&&--wt>0);return[Xe,at]},W}var kr=tr(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function gr(){return(0,_.Z)(kr).scale(149.995)}var ir=tr(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function dr(){return(0,_.Z)(ir).scale(153.93)}var yr=tr(5/6*d,-.62636,-.0344,0,1.3493,-.05524,0,.045);function $t(){return(0,_.Z)(yr).scale(130.945)}function mn(et,rt){var ct=et*et,vt=rt*rt;return[et*(1-.162388*vt)*(.87-952426e-9*ct*ct),rt*(1+vt/12)]}function Ln(){return(0,_.Z)(mn).scale(131.747)}mn.invert=function(et,rt){var ct,vt=et,Mt=rt,kt=50;do{var q=Mt*Mt;Mt-=ct=(Mt*(1+q/12)-rt)/(1+q/4)}while(w(ct)>c&&--kt>0);kt=50,et/=1-.162388*q;do{var $=($=vt*vt)*$;vt-=ct=(vt*(.87-952426e-9*$)-et)/(.87-.00476213*$)}while(w(ct)>c&&--kt>0);return[vt,Mt]};var En=tr(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function jn(){return(0,_.Z)(En).scale(131.087)}function $n(et){var rt=et(v,0)[0]-et(-v,0)[0];function ct(vt,Mt){var kt=vt>0?-.5:.5,q=et(vt+kt*d,Mt);return q[0]-=kt*rt,q}return et.invert&&(ct.invert=function(vt,Mt){var kt=vt>0?-.5:.5,q=et.invert(vt+kt*rt,Mt),$=q[0]-kt*d;return $<-d?$+=2*d:$>d&&($-=2*d),q[0]=$,q}),ct}function Zn(et,rt){var ct=a(et),vt=a(rt),Mt=y(rt),kt=y(et)*Mt,q=u(et)*Mt,$=u(vt*rt);et=w(T(q,$)),rt=C(kt),w(et-v)>c&&(et%=v);var W=function(ie,_e){if(_e===v)return[0,0];var ze,He,Xe=u(_e),at=Xe*Xe,wt=at*at,At=1+wt,re=1+3*wt,ve=1-wt,Le=C(1/O(At)),Fe=ve+at*At*Le,Ve=(1-Xe)/Fe,We=O(Ve),$e=Ve*At,tt=O($e),lt=We*ve;if(ie===0)return[0,-(lt+at*tt)];var gt,zt=y(_e),Ut=1/zt,Vt=2*Xe*zt,Qt=(-Fe*zt-(-3*at+Le*re)*Vt*(1-Xe))/(Fe*Fe),gn=-Ut*Vt,en=-Ut*(at*At*Qt+Ve*re*Vt),sn=-2*Ut*(ve*(.5*Qt/We)-2*at*We*Vt),rn=4*ie/d;if(ie>.222*d||_e.175*d){if(ze=(lt+at*O($e*(1+wt)-lt*lt))/(1+wt),ie>d/4)return[ze,ze];var Mn=ze,xn=.5*ze;ze=.5*(xn+Mn),He=50;do{var an=ze*(sn+gn*O($e-ze*ze))+en*C(ze/tt)-rn;if(!an)break;an<0?xn=ze:Mn=ze,ze=.5*(xn+Mn)}while(w(Mn-xn)>c&&--He>0)}else{ze=c,He=25;do{var zn=ze*ze,Vn=O($e-zn),nr=sn+gn*Vn,rr=ze*nr+en*C(ze/tt)-rn;ze-=gt=Vn?rr/(nr+(en-gn*zn)/Vn):0}while(w(gt)>c&&--He>0)}return[ze,-lt-at*O($e-ze*ze)]}(et>d/4?v-et:et,rt);return et>d/4&&($=W[0],W[0]=-W[1],W[1]=-$),W[0]*=ct,W[1]*=-vt,W}function Qn(){return(0,_.Z)($n(Zn)).scale(239.75)}function hr(et,rt){var ct,vt,Mt,kt,q,$;if(rt=.999999)return ct=(1-rt)/4,Mt=1/(vt=R(et)),[(kt=(($=f(2*($=et)))-1)/($+1))+ct*((q=vt*I(et))-et)/(vt*vt),Mt-ct*kt*Mt*(q-et),Mt+ct*kt*Mt*(q+et),2*s(f(et))-v+ct*(q-et)/vt];var W=[1,0,0,0,0,0,0,0,0],ie=[O(rt),0,0,0,0,0,0,0,0],_e=0;for(vt=O(1-rt),q=1;w(ie[_e]/W[_e])>c&&_e<8;)ct=W[_e++],ie[_e]=(ct-vt)/2,W[_e]=(ct+vt)/2,vt=O(ct*vt),q*=2;Mt=q*W[_e]*et;do Mt=(C(kt=ie[_e]*u(vt=Mt)/W[_e])+Mt)/2;while(--_e);return[u(Mt),kt=y(Mt),kt/y(Mt-vt),Mt]}function tn(et,rt){if(!rt)return et;if(rt===1)return t(p(et/2+x));for(var ct=1,vt=O(1-rt),Mt=O(rt),kt=0;w(Mt)>c;kt++){if(et%d){var q=s(vt*p(et)/ct);q<0&&(q+=d),et+=q+~~(et/d)*d}else et+=et;Mt=(ct+vt)/2,vt=O(ct*vt),Mt=((ct=Mt)-vt)/2}return et/(n(2,kt)*ct)}function Pn(et,rt){var ct=(m-1)/(m+1),vt=O(1-ct*ct),Mt=tn(v,vt*vt),kt=t(p(d/4+w(rt)/2)),q=f(-1*kt)/O(ct),$=function(ie,_e){var ze=ie*ie,He=_e+1,Xe=1-ze-_e*_e;return[.5*((ie>=0?v:-v)-T(Xe,2*ie)),-.25*t(Xe*Xe+4*ze)+.5*t(He*He+ze)]}(q*y(-1*et),q*u(-1*et)),W=function(ie,_e,ze){var He=w(ie),Xe=I(w(_e));if(He){var at=1/u(He),wt=1/(p(He)*p(He)),At=-(wt+ze*(Xe*Xe*at*at)-1+ze),re=(-At+O(At*At-(ze-1)*wt*4))/2;return[tn(s(1/O(re)),ze)*a(ie),tn(s(O((re/wt-1)/ze)),1-ze)*a(_e)]}return[0,tn(s(Xe),1-ze)*a(_e)]}($[0],$[1],vt*vt);return[-W[1],(rt>=0?1:-1)*(.5*Mt-W[0])]}function jt(){return(0,_.Z)($n(Pn)).scale(151.496)}Zn.invert=function(et,rt){w(et)>1&&(et=2*a(et)-et),w(rt)>1&&(rt=2*a(rt)-rt);var ct=a(et),vt=a(rt),Mt=-ct*et,kt=-vt*rt,q=kt/Mt<1,$=function(ze,He){for(var Xe=0,at=1,wt=.5,At=50;;){var re=wt*wt,ve=O(wt),Le=C(1/O(1+re)),Fe=1-re+wt*(1+re)*Le,Ve=(1-ve)/Fe,We=O(Ve),$e=Ve*(1+re),tt=We*(1-re),lt=O($e-ze*ze),gt=He+tt+wt*lt;if(w(at-Xe)0?Xe=wt:at=wt,wt=.5*(Xe+at)}if(!At)return null;var zt=C(ve),Ut=y(zt),Vt=1/Ut,Qt=2*ve*Ut,gn=(-Fe*Ut-(-3*wt+Le*(1+3*re))*Qt*(1-ve))/(Fe*Fe);return[d/4*(ze*(-2*Vt*(.5*gn/We*(1-re)-2*wt*We*Qt)+-Vt*Qt*lt)+-Vt*(wt*(1+re)*gn+Ve*(1+3*re)*Qt)*C(ze/O($e))),zt]}(q?kt:Mt,q?Mt:kt),W=$[0],ie=$[1],_e=y(ie);return q&&(W=-v-W),[ct*(T(u(W)*_e,-u(ie))+d),vt*C(y(W)*_e)]},Pn.invert=function(et,rt){var ct,vt,Mt,kt,q,$,W=(m-1)/(m+1),ie=O(1-W*W),_e=(vt=-et,Mt=ie*ie,(ct=.5*tn(v,ie*ie)-rt)?(kt=hr(ct,Mt),vt?($=(q=hr(vt,1-Mt))[1]*q[1]+Mt*kt[0]*kt[0]*q[0]*q[0],[[kt[0]*q[2]/$,kt[1]*kt[2]*q[0]*q[1]/$],[kt[1]*q[1]/$,-kt[0]*kt[2]*q[0]*q[2]/$],[kt[2]*q[1]*q[2]/$,-Mt*kt[0]*kt[1]*q[0]/$]]):[[kt[0],0],[kt[1],0],[kt[2],0]]):[[0,(q=hr(vt,1-Mt))[0]/q[1]],[1/q[1],0],[q[2]/q[1],0]]),ze=function(He,Xe){var at=Xe[0]*Xe[0]+Xe[1]*Xe[1];return[(He[0]*Xe[0]+He[1]*Xe[1])/at,(He[1]*Xe[0]-He[0]*Xe[1])/at]}(_e[0],_e[1]);return[T(ze[1],ze[0])/-1,2*s(f(-.5*t(W*ze[0]*ze[0]+W*ze[1]*ze[1])))-v]};var Jt=e(7613);function un(et){var rt=u(et),ct=y(et),vt=Rn(et);function Mt(kt,q){var $=vt(kt,q);kt=$[0],q=$[1];var W=u(q),ie=y(q),_e=y(kt),ze=L(rt*W+ct*ie*_e),He=u(ze),Xe=w(He)>c?ze/He:1;return[Xe*ct*u(kt),(w(kt)>v?Xe:-Xe)*(rt*ie-ct*W*_e)]}return vt.invert=Rn(-et),Mt.invert=function(kt,q){var $=O(kt*kt+q*q),W=-u($),ie=y($),_e=$*ie,ze=-q*W,He=$*rt,Xe=O(_e*_e+ze*ze-He*He),at=T(_e*He+ze*Xe,ze*He-_e*Xe),wt=($>v?-1:1)*T(kt*W,$*y(at)*ie+q*u(at)*W);return vt.invert(wt,at)},Mt}function Rn(et){var rt=u(et),ct=y(et);return function(vt,Mt){var kt=y(Mt),q=y(vt)*kt,$=u(vt)*kt,W=u(Mt);return[T($,q*ct-W*rt),C(W*ct+q*rt)]}}function On(){var et=0,rt=(0,_.r)(un),ct=rt(et),vt=ct.rotate,Mt=ct.stream,kt=(0,Jt.Z)();return ct.parallel=function(q){if(!arguments.length)return et*M;var $=ct.rotate();return rt(et=q*A).rotate($)},ct.rotate=function(q){return arguments.length?(vt.call(ct,[q[0],q[1]-et*M]),kt.center([-q[0],-q[1]]),ct):((q=vt.call(ct))[1]+=et*M,q)},ct.stream=function(q){return(q=Mt(q)).sphere=function(){q.polygonStart();var $,W=kt.radius(89.99)().coordinates[0],ie=W.length-1,_e=-1;for(q.lineStart();++_e=0;)q.point(($=W[_e])[0],$[1]);q.lineEnd(),q.polygonEnd()},q},ct.scale(79.4187).parallel(45).clipAngle(179.999)}var Sn=e(33064),pn=e(72736),bn=C(1-1/3)*M,dn=nt(0);function vn(et){var rt=bn*A,ct=It(d,rt)[0]-It(-d,rt)[0],vt=dn(0,rt)[1],Mt=It(0,rt)[1],kt=k-Mt,q=h/et,$=4/h,W=vt+kt*kt*4/h;function ie(_e,ze){var He,Xe=w(ze);if(Xe>rt){var at=r(et-1,i(0,l((_e+d)/q)));(He=It(_e+=d*(et-1)/et-at*q,Xe))[0]=He[0]*h/ct-h*(et-1)/(2*et)+at*h/et,He[1]=vt+4*(He[1]-Mt)*kt/h,ze<0&&(He[1]=-He[1])}else He=dn(_e,ze);return He[0]*=$,He[1]/=W,He}return ie.invert=function(_e,ze){_e/=$;var He=w(ze*=W);if(He>vt){var Xe=r(et-1,i(0,l((_e+d)/q)));_e=(_e+d*(et-1)/et-Xe*q)*ct/h;var at=It.invert(_e,.25*(He-vt)*h/kt+Mt);return at[0]-=d*(et-1)/et-Xe*q,ze<0&&(at[1]=-at[1]),at}return dn.invert(_e,ze)},ie}function An(et,rt){return[et,1&rt?89.999999:bn]}function Bn(et,rt){return[et,1&rt?-89.999999:-bn]}function Xn(et){return[.999999*et[0],et[1]]}function er(){var et=4,rt=(0,_.r)(vn),ct=rt(et),vt=ct.stream;return ct.lobes=function(Mt){return arguments.length?rt(et=+Mt):et},ct.stream=function(Mt){var kt=ct.rotate(),q=vt(Mt),$=(ct.rotate([0,0]),vt(Mt));return ct.rotate(kt),q.sphere=function(){var W,ie;(0,pn.Z)((W=180/et,ie=[].concat((0,Sn.w6)(-180,180+W/2,W).map(An),(0,Sn.w6)(180,-180-W/2,-W).map(Bn)),{type:"Polygon",coordinates:[W===180?ie.map(Xn):ie]}),$)},q},ct.scale(239.75)}function Jn(et){var rt,ct=1+et,vt=C(u(1/ct)),Mt=2*O(d/(rt=d+4*vt*ct)),kt=.5*Mt*(ct+O(et*(2+et))),q=et*et,$=ct*ct;function W(ie,_e){var ze,He,Xe=1-u(_e);if(Xe&&Xe<2){var at,wt=v-_e,At=25;do{var re=u(wt),ve=y(wt),Le=vt+T(re,ct-ve),Fe=1+$-2*ct*ve;wt-=at=(wt-q*vt-ct*re+Fe*Le-.5*Xe*rt)/(2*ct*re*Le)}while(w(at)>b&&--At>0);ze=Mt*O(Fe),He=ie*Le/d}else ze=Mt*(et+Xe),He=ie*vt/d;return[ze*u(He),kt-ze*y(He)]}return W.invert=function(ie,_e){var ze=ie*ie+(_e-=kt)*_e,He=(1+$-ze/(Mt*Mt))/(2*ct),Xe=L(He),at=u(Xe),wt=vt+T(at,ct-He);return[C(ie/O(ze))*d/wt,C(1-2*(Xe-q*vt-ct*at+(1+$-2*ct*He)*wt)/rt)]},W}function lr(){var et=1,rt=(0,_.r)(Jn),ct=rt(et);return ct.ratio=function(vt){return arguments.length?rt(et=+vt):et},ct.scale(167.774).center([0,18.67])}var sr=.7109889596207567,fr=.0528035274542;function cr(et,rt){return rt>-sr?((et=Me(et,rt))[1]+=fr,et):Ue(et,rt)}function vr(){return(0,_.Z)(cr).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function Sr(et,rt){return w(rt)>sr?((et=Me(et,rt))[1]-=rt>0?fr:-fr,et):Ue(et,rt)}function Mr(){return(0,_.Z)(Sr).scale(152.63)}function Lr(et,rt,ct,vt){var Mt=O(4*d/(2*ct+(1+et-rt/2)*u(2*ct)+(et+rt)/2*u(4*ct)+rt/2*u(6*ct))),kt=O(vt*u(ct)*O((1+et*y(2*ct)+rt*y(4*ct))/(1+et+rt))),q=ct*W(1);function $(ze){return O(1+et*y(2*ze)+rt*y(4*ze))}function W(ze){var He=ze*ct;return(2*He+(1+et-rt/2)*u(2*He)+(et+rt)/2*u(4*He)+rt/2*u(6*He))/ct}function ie(ze){return $(ze)*u(ze)}var _e=function(ze,He){var Xe=ct*de(W,q*u(He)/ct,He/d);isNaN(Xe)&&(Xe=ct*a(He));var at=Mt*$(Xe);return[at*kt*ze/d*y(Xe),at/kt*u(Xe)]};return _e.invert=function(ze,He){var Xe=de(ie,He*kt/Mt);return[ze*d/(y(Xe)*Mt*kt*$(Xe)),C(ct*W(Xe/ct)/q)]},ct===0&&(Mt=O(vt/d),(_e=function(ze,He){return[ze*Mt,u(He)/Mt]}).invert=function(ze,He){return[ze/Mt,C(He*Mt)]}),_e}function pr(){var et=1,rt=0,ct=45*A,vt=2,Mt=(0,_.r)(Lr),kt=Mt(et,rt,ct,vt);return kt.a=function(q){return arguments.length?Mt(et=+q,rt,ct,vt):et},kt.b=function(q){return arguments.length?Mt(et,rt=+q,ct,vt):rt},kt.psiMax=function(q){return arguments.length?Mt(et,rt,ct=+q*A,vt):ct*M},kt.ratio=function(q){return arguments.length?Mt(et,rt,ct,vt=+q):vt},kt.scale(180.739)}function Pr(et,rt,ct,vt,Mt,kt,q,$,W,ie,_e){if(_e.nanEncountered)return NaN;var ze,He,Xe,at,wt,At,re,ve,Le,Fe;if(He=et(rt+.25*(ze=ct-rt)),Xe=et(ct-.25*ze),isNaN(He))_e.nanEncountered=!0;else{if(!isNaN(Xe))return Fe=((At=(at=ze*(vt+4*He+Mt)/12)+(wt=ze*(Mt+4*Xe+kt)/12))-q)/15,ie>W?(_e.maxDepthCount++,At+Fe):Math.abs(Fe)<$?At+Fe:(ve=Pr(et,rt,re=rt+.5*ze,vt,He,Mt,at,.5*$,W,ie+1,_e),isNaN(ve)?(_e.nanEncountered=!0,NaN):(Le=Pr(et,re,ct,Mt,Xe,kt,wt,.5*$,W,ie+1,_e),isNaN(Le)?(_e.nanEncountered=!0,NaN):ve+Le));_e.nanEncountered=!0}}function Hr(et,rt,ct,vt,Mt){vt===void 0&&(vt=1e-8),Mt===void 0&&(Mt=20);var kt=et(rt),q=et(.5*(rt+ct)),$=et(ct);return Pr(et,rt,ct,kt,q,$,(kt+4*q+$)*(ct-rt)/6,vt,Mt,1,{maxDepthCount:0,nanEncountered:!1})}function ci(et,rt,ct){function vt(Xe){return et+(1-et)*n(1-n(Xe,rt),1/rt)}function Mt(Xe){return Hr(vt,0,Xe,1e-4)}for(var kt=1/Mt(1),q=1e3,$=1.00000001*kt,W=[],ie=0;ie<=q;ie++)W.push(Mt(ie/q)*$);function _e(Xe){var at=0,wt=q,At=500;do W[At]>Xe?wt=At:at=At,At=at+wt>>1;while(At>at);var re=W[At+1]-W[At];return re&&(re=(Xe-W[At+1])/re),(At+1+re)/q}var ze=2*_e(1)/d*kt/ct,He=function(Xe,at){var wt=_e(w(u(at))),At=vt(wt)*Xe;return wt/=ze,[At,at>=0?wt:-wt]};return He.invert=function(Xe,at){var wt;return w(at*=ze)<1&&(wt=a(at)*C(Mt(w(at))*kt)),[Xe/vt(w(at)),wt]},He}function Ti(){var et=0,rt=2.5,ct=1.183136,vt=(0,_.r)(ci),Mt=vt(et,rt,ct);return Mt.alpha=function(kt){return arguments.length?vt(et=+kt,rt,ct):et},Mt.k=function(kt){return arguments.length?vt(et,rt=+kt,ct):rt},Mt.gamma=function(kt){return arguments.length?vt(et,rt,ct=+kt):ct},Mt.scale(152.63)}function Mi(et,rt){return w(et[0]-rt[0])=0;--$)ct=(rt=et[1][$])[0][0],vt=rt[0][1],Mt=rt[1][1],kt=rt[2][0],q=rt[2][1],W.push(fa([[kt-c,q-c],[kt-c,Mt+c],[ct+c,Mt+c],[ct+c,vt-c]],30));return{type:"Polygon",coordinates:[(0,Sn.TS)(W)]}}function xi(et,rt,ct){var vt,Mt;function kt(W,ie){for(var _e=ie<0?-1:1,ze=rt[+(ie<0)],He=0,Xe=ze.length-1;Heze[He][2][0];++He);var at=et(W-ze[He][1][0],ie);return at[0]+=et(ze[He][1][0],_e*ie>_e*ze[He][0][1]?ze[He][0][1]:ie)[0],at}ct?kt.invert=ct(kt):et.invert&&(kt.invert=function(W,ie){for(var _e=Mt[+(ie<0)],ze=rt[+(ie<0)],He=0,Xe=_e.length;Hewt&&(ze=at,at=wt,wt=ze),[[He,at],[Xe,wt]]})}),q):rt.map(function(ie){return ie.map(function(_e){return[[_e[0][0]*M,_e[0][1]*M],[_e[1][0]*M,_e[1][1]*M],[_e[2][0]*M,_e[2][1]*M]]})})},rt!=null&&q.lobes(rt),q}cr.invert=function(et,rt){return rt>-sr?Me.invert(et,rt-fr):Ue.invert(et,rt)},Sr.invert=function(et,rt){return w(rt)>sr?Me.invert(et,rt+(rt>0?fr:-fr)):Ue.invert(et,rt)};var Oa=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Ka(){return xi(me,Oa).scale(160.857)}var Yo=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Xs(){return xi(Sr,Yo).scale(152.63)}var Uu=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function pu(){return xi(Me,Uu).scale(169.529)}var $s=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function Qa(){return xi(Me,$s).scale(169.529).rotate([20,0])}var du=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function Qi(){return xi(cr,du,he).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var yl=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function qa(){return xi(Ue,yl).scale(152.63).rotate([-20,0])}function eo(et,rt){return[3/h*et*O(d*d/3-rt*rt),rt]}function fs(){return(0,_.Z)(eo).scale(158.837)}function fi(et){function rt(ct,vt){if(w(w(vt)-v)2)return null;var kt=(ct/=2)*ct,q=(vt/=2)*vt,$=2*vt/(1+kt+q);return $=n((1+$)/(1-$),1/et),[T(2*ct,1-kt-q)/et,C(($-1)/($+1))]},rt}function hs(){var et=.5,rt=(0,_.r)(fi),ct=rt(et);return ct.spacing=function(vt){return arguments.length?rt(et=+vt):et},ct.scale(124.75)}eo.invert=function(et,rt){return[h/3*et/O(d*d/3-rt*rt),rt]};var ao=d/m;function bo(et,rt){return[et*(1+O(y(rt)))/2,rt/(y(rt/2)*y(et/6))]}function Ro(){return(0,_.Z)(bo).scale(97.2672)}function xl(et,rt){var ct=et*et,vt=rt*rt;return[et*(.975534+vt*(-.0143059*ct-.119161+-.0547009*vt)),rt*(1.00384+ct*(.0802894+-.02855*vt+199025e-9*ct)+vt*(.0998909+-.0491032*vt))]}function Vu(){return(0,_.Z)(xl).scale(139.98)}function Xo(et,rt){return[u(et)/y(rt),p(rt)*y(et)]}function Hu(){return(0,_.Z)(Xo).scale(144.049).clipAngle(89.999)}function qu(et){var rt=y(et),ct=p(x+et/2);function vt(Mt,kt){var q=kt-et,$=w(q)=0;)He=(ze=et[_e])[0]+W*(kt=He)-ie*Xe,Xe=ze[1]+W*Xe+ie*kt;return[He=W*(kt=He)-ie*Xe,Xe=W*Xe+ie*kt]}return ct.invert=function(vt,Mt){var kt=20,q=vt,$=Mt;do{for(var W,ie=rt,_e=et[ie],ze=_e[0],He=_e[1],Xe=0,at=0;--ie>=0;)Xe=ze+q*(W=Xe)-$*at,at=He+q*at+$*W,ze=(_e=et[ie])[0]+q*(W=ze)-$*He,He=_e[1]+q*He+$*W;var wt,At,re=(Xe=ze+q*(W=Xe)-$*at)*Xe+(at=He+q*at+$*W)*at;q-=wt=((ze=q*(W=ze)-$*He-vt)*Xe+(He=q*He+$*W-Mt)*at)/re,$-=At=(He*Xe-ze*at)/re}while(w(wt)+w(At)>1e-12&&--kt>0);if(kt){var ve=O(q*q+$*$),Le=2*s(.5*ve),Fe=u(Le);return[T(q*Fe,ve*y(Le)),ve?C($*Fe/ve):0]}},ct}bo.invert=function(et,rt){var ct=w(et),vt=w(rt),Mt=c,kt=v;vtc||w(At)>c)&&--Mt>0);return Mt&&[ct,vt]},Xo.invert=function(et,rt){var ct=et*et,vt=rt*rt+1,Mt=ct+vt,kt=et?g*O((Mt-O(Mt*Mt-4*ct))/ct):1/O(vt);return[C(et*kt),a(rt)*L(kt)]},gu.invert=function(et,rt){return[et,2.5*s(f(.8*rt))-.625*d]};var $o=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Jo=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Js=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Ko=[[.9245,0],[0,0],[.01943,0]],mu=[[.721316,0],[0,0],[-.00881625,-.00617325]];function yu(){return Ps($o,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function Ls(){return Ps(Jo,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Vl(){return Ps(Js,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function ps(){return Ps(Ko,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function Ks(){return Ps(mu,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Ps(et,rt){var ct=(0,_.Z)(vu(et)).rotate(rt).clipAngle(90),vt=(0,st.Z)(rt),Mt=ct.center;return delete ct.rotate,ct.center=function(kt){return arguments.length?Mt(vt(kt)):vt.invert(Mt())},ct}var Qo=O(6),hi=O(7);function ds(et,rt){var ct=C(7*u(rt)/(3*Qo));return[Qo*et*(2*y(2*ct/3)-1)/hi,9*u(ct/3)/hi]}function Cc(){return(0,_.Z)(ds).scale(164.859)}function Hl(et,rt){for(var ct,vt=(1+g)*u(rt),Mt=rt,kt=0;kt<25&&(Mt-=ct=(u(Mt/2)+u(Mt)-vt)/(.5*y(Mt/2)+y(Mt)),!(w(ct)b&&--$>0);return[et/(.84719-.13063*(vt=q*q)+(kt=vt*(Mt=vt*vt))*kt*(.05494*vt-.04515-.02326*Mt+.00331*kt)),q]},el.invert=function(et,rt){for(var ct=rt/2,vt=0,Mt=1/0;vt<10&&w(Mt)>c;++vt){var kt=y(rt/2);rt-=Mt=(rt-p(rt/2)-ct)/(1-.5/(kt*kt))}return[2*et/(1+y(rt)),rt]};var Is=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function Rs(){return xi(fe(1/0),Is).rotate([20,0]).scale(152.63)}function tl(et,rt){var ct=u(rt),vt=y(rt),Mt=a(et);if(et===0||w(rt)===v)return[0,rt];if(rt===0)return[et,0];if(w(et)===v)return[et*vt,v*ct];var kt=d/(2*et)-2*et/d,q=2*rt/d,$=(1-q*q)/(ct-q),W=kt*kt,ie=$*$,_e=1+W/ie,ze=1+ie/W,He=(kt*ct/$-kt/2)/_e,Xe=(ie*ct/W+$/2)/ze,at=Xe*Xe-(ie*ct*ct/W+$*ct-1)/ze;return[v*(He+O(He*He+vt*vt/_e)*Mt),v*(Xe+O(at<0?0:at)*a(-rt*kt)*Mt)]}function Tl(){return(0,_.Z)(tl).scale(127.267)}tl.invert=function(et,rt){var ct=(et/=v)*et,vt=ct+(rt/=v)*rt,Mt=d*d;return[et?(vt-1+O((1-vt)*(1-vt)+4*ct))/(2*et)*v:0,de(function(kt){return vt*(d*u(kt)-2*kt)*d+4*kt*kt*(rt-u(kt))+2*d*kt-Mt*rt},0)]};var kl=1.0148,so=.23185,Al=-.14499,Ml=.02406,bu=1.790857183;function gs(et,rt){var ct=rt*rt;return[et,rt*(kl+ct*ct*(so+ct*(Al+Ml*ct)))]}function ql(){return(0,_.Z)(gs).scale(139.319)}function Sl(et,rt){if(w(rt)bu?rt=bu:rt<-1.790857183&&(rt=-1.790857183);var ct,vt=rt;do{var Mt=vt*vt;vt-=ct=(vt*(kl+Mt*Mt*(so+Mt*(Al+Ml*Mt)))-rt)/(1.0148+Mt*Mt*(1.1592500000000001+Mt*(.21654*Mt-1.01493)))}while(w(ct)>c);return[et,vt]},Sl.invert=function(et,rt){if(w(rt)c&&--kt>0);return q=p(Mt),[(w(rt)=0;)if(tt=We[Ut],$e[0]===tt[0]&&$e[1]===tt[1]){if(gt)return[gt,$e];gt=$e}}}(W.face,ie.face),ze=(wt=_e.map(ie.project),At=_e.map(W.project),re=Ds(wt[1],wt[0]),ve=Ds(At[1],At[0]),Le=function(Ve,We){return T(Ve[0]*We[1]-Ve[1]*We[0],Ve[0]*We[0]+Ve[1]*We[1])}(re,ve),Fe=bi(re)/bi(ve),zs([1,0,wt[0][0],0,1,wt[0][1]],zs([Fe,0,0,0,Fe,0],zs([y(Le),u(Le),0,-u(Le),y(Le),0],[1,0,-At[0][0],0,1,-At[0][1]]))));W.transform=ie.transform?zs(ie.transform,ze):ze;for(var He=ie.edges,Xe=0,at=He.length;Xe0?[-vt[0],0]:[180-vt[0],180])};var rt=zo.map(function(ct){return{face:ct,project:et(ct)}});return[-1,0,0,1,0,1,4,5].forEach(function(ct,vt){var Mt=rt[ct];Mt&&(Mt.children||(Mt.children=[])).push(rt[vt])}),vs(rt[0],function(ct,vt){return rt[ct<-d/2?vt<0?6:4:ct<0?vt<0?2:0:ctW^ve>W&&$<(re-at)*(W-wt)/(ve-wt)+at&&(ie=!ie)}return ie}(Mt[0],vt))return Mt.push(ct),!0})||et.push([ct])}),Ia=[],et.length?et.length>1?{type:"MultiPolygon",coordinates:et}:{type:"Polygon",coordinates:et[0]}:null}};function Ga(et){var rt=et(v,0)[0]-et(-v,0)[0];function ct(vt,Mt){var kt=w(vt)0?vt-d:vt+d,Mt),$=(q[0]-q[1])*g,W=(q[0]+q[1])*g;if(kt)return[$,W];var ie=rt*g,_e=$>0^W>0?-1:1;return[_e*$-a(W)*ie,_e*W-a($)*ie]}return et.invert&&(ct.invert=function(vt,Mt){var kt=(vt+Mt)*g,q=(Mt-vt)*g,$=w(kt)<.5*rt&&w(q)<.5*rt;if(!$){var W=rt*g,ie=kt>0^q>0?-1:1,_e=-ie*vt+(q>0?1:-1)*W,ze=-ie*Mt+(kt>0?1:-1)*W;kt=(-_e-ze)*g,q=(_e-ze)*g}var He=et.invert(kt,q);return $||(He[0]+=kt>0?d:-d),He}),(0,_.Z)(ct).rotate([-90,-90,45]).clipAngle(179.999)}function Wl(){return Ga(Zn).scale(176.423)}function Zl(){return Ga(Pn).scale(111.48)}function Sa(et,rt){if(!(0<=(rt=+rt)&&rt<=20))throw new Error("invalid digits");function ct(ie){var _e=ie.length,ze=2,He=new Array(_e);for(He[0]=+ie[0].toFixed(rt),He[1]=+ie[1].toFixed(rt);ze<_e;)He[ze]=ie[ze],++ze;return He}function vt(ie){return ie.map(ct)}function Mt(ie){for(var _e=ct(ie[0]),ze=[_e],He=1;He2||Xe[0]!=_e[0]||Xe[1]!=_e[1])&&(ze.push(Xe),_e=Xe)}return ze.length===1&&ie.length>1&&ze.push(ct(ie[ie.length-1])),ze}function kt(ie){return ie.map(Mt)}function q(ie){if(ie==null)return ie;var _e;switch(ie.type){case"GeometryCollection":_e={type:"GeometryCollection",geometries:ie.geometries.map(q)};break;case"Point":_e={type:"Point",coordinates:ct(ie.coordinates)};break;case"MultiPoint":_e={type:ie.type,coordinates:vt(ie.coordinates)};break;case"LineString":_e={type:ie.type,coordinates:Mt(ie.coordinates)};break;case"MultiLineString":case"Polygon":_e={type:ie.type,coordinates:kt(ie.coordinates)};break;case"MultiPolygon":_e={type:"MultiPolygon",coordinates:ie.coordinates.map(kt)};break;default:return ie}return ie.bbox!=null&&(_e.bbox=ie.bbox),_e}function $(ie){var _e={type:"Feature",properties:ie.properties,geometry:q(ie.geometry)};return ie.id!=null&&(_e.id=ie.id),ie.bbox!=null&&(_e.bbox=ie.bbox),_e}if(et!=null)switch(et.type){case"Feature":return $(et);case"FeatureCollection":var W={type:"FeatureCollection",features:et.features.map($)};return et.bbox!=null&&(W.bbox=et.bbox),W;default:return q(et)}return et}function Cr(et){var rt=u(et);function ct(vt,Mt){var kt=rt?p(vt*rt/2)/rt:vt/2;if(!Mt)return[2*kt,-et];var q=2*s(kt*u(Mt)),$=1/p(Mt);return[u(q)*$,Mt+(1-y(q))*$-et]}return ct.invert=function(vt,Mt){if(w(Mt+=et)c&&--W>0);var He=vt*(ie=p($)),Xe=p(w(Mt)0?v:-v)*(ie+kt*(ze-$)/2+kt*kt*(ze-2*ie+$)/2)]}function rl(){return(0,_.Z)(Yl).scale(152.63)}function il(et,rt){var ct=function(q){function $(W,ie){var _e=y(ie),ze=(q-1)/(q-_e*y(W));return[ze*_e*u(W),ze*u(ie)]}return $.invert=function(W,ie){var _e=W*W+ie*ie,ze=O(_e),He=(q-O(1-_e*(q+1)/(q-1)))/((q-1)/ze+ze/(q-1));return[T(W*He,ze*O(1-He*He)),ze?C(ie*He/ze):0]},$}(et);if(!rt)return ct;var vt=y(rt),Mt=u(rt);function kt(q,$){var W=ct(q,$),ie=W[1],_e=ie*Mt/(et-1)+vt;return[W[0]*vt/_e,ie/_e]}return kt.invert=function(q,$){var W=(et-1)/(et-1-$*Mt);return ct.invert(W*q,W*$*vt)},kt}function al(){var et=2,rt=0,ct=(0,_.r)(il),vt=ct(et,rt);return vt.distance=function(Mt){return arguments.length?ct(et=+Mt,rt):et},vt.tilt=function(Mt){return arguments.length?ct(et,rt=Mt*A):rt*M},vt.scale(432.147).clipAngle(L(1/et)*M-1e-6)}Ra.forEach(function(et){et[1]*=1.0144}),Yl.invert=function(et,rt){var ct=rt/v,vt=90*ct,Mt=r(18,w(vt/5)),kt=i(0,l(Mt));do{var q=Ra[kt][1],$=Ra[kt+1][1],W=Ra[r(19,kt+2)][1],ie=W-q,_e=W-2*$+q,ze=2*(w(ct)-$)/ie,He=_e/ie,Xe=ze*(1-He*ze*(1-2*He*ze));if(Xe>=0||kt===1){vt=(rt>=0?5:-5)*(Xe+Mt);var at,wt=50;do Xe=(Mt=r(18,w(vt)/5))-(kt=l(Mt)),q=Ra[kt][1],$=Ra[kt+1][1],W=Ra[r(19,kt+2)][1],vt-=(at=(rt>=0?v:-v)*($+Xe*(W-q)/2+Xe*Xe*(W-2*$+q)/2)-rt)*M;while(w(at)>b&&--wt>0);break}}while(--kt>=0);var At=Ra[kt][0],re=Ra[kt+1][0],ve=Ra[r(19,kt+2)][0];return[et/(re+Xe*(ve-At)/2+Xe*Xe*(ve-2*re+At)/2),vt*A]};var Or=-179.9999,ol=179.9999,uo=-89.9999,Xl=89.9999;function Cl(et){return et.length>0}function ya(et){return et===-90||et===90?[0,et]:[-180,(rt=et,Math.floor(1e4*rt)/1e4)];var rt}function Vs(et){var rt=et[0],ct=et[1],vt=!1;return rt<=Or?(rt=-180,vt=!0):rt>=ol&&(rt=180,vt=!0),ct<=uo?(ct=-90,vt=!0):ct>=Xl&&(ct=90,vt=!0),vt?[rt,ct]:et}function ns(et){return et.map(Vs)}function Wa(et,rt,ct){for(var vt=0,Mt=et.length;vt=ol||_e<=uo||_e>=Xl){kt[q]=Vs(W);for(var ze=q+1;ze<$;++ze){var He=kt[ze],Xe=He[0],at=He[1];if(Xe>Or&&Xeuo&&at=$)break;ct.push({index:-1,polygon:rt,ring:kt=kt.slice(ze-1)}),kt[0]=ya(kt[0][1]),q=-1,$=kt.length}}}}function xs(et){var rt,ct,vt,Mt,kt,q,$=et.length,W={},ie={};for(rt=0;rt<$;++rt)vt=(ct=et[rt]).ring[0],kt=ct.ring[ct.ring.length-1],vt[0]!==kt[0]||vt[1]!==kt[1]?(ct.index=rt,W[vt]=ie[kt]=ct):(ct.polygon.push(ct.ring),et[rt]=null);for(rt=0;rt<$;++rt)if(ct=et[rt]){if(vt=ct.ring[0],kt=ct.ring[ct.ring.length-1],Mt=ie[vt],q=W[kt],delete W[vt],delete ie[kt],vt[0]===kt[0]&&vt[1]===kt[1]){ct.polygon.push(ct.ring);continue}Mt?(delete ie[vt],delete W[Mt.ring[0]],Mt.ring.pop(),et[Mt.index]=null,ct={index:-1,polygon:Mt.polygon,ring:Mt.ring.concat(ct.ring)},Mt===q?ct.polygon.push(ct.ring):(ct.index=$++,et.push(W[ct.ring[0]]=ie[ct.ring[ct.ring.length-1]]=ct))):q?(delete W[kt],delete ie[q.ring[q.ring.length-1]],ct.ring.pop(),ct={index:$++,polygon:q.polygon,ring:ct.ring.concat(q.ring)},et[q.index]=null,et.push(W[ct.ring[0]]=ie[ct.ring[ct.ring.length-1]]=ct)):(ct.ring.push(ct.ring[0]),ct.polygon.push(ct.ring))}}function _o(et){var rt={type:"Feature",geometry:co(et.geometry)};return et.id!=null&&(rt.id=et.id),et.bbox!=null&&(rt.bbox=et.bbox),et.properties!=null&&(rt.properties=et.properties),rt}function co(et){if(et==null)return et;var rt,ct,vt,Mt;switch(et.type){case"GeometryCollection":rt={type:"GeometryCollection",geometries:et.geometries.map(co)};break;case"Point":rt={type:"Point",coordinates:Vs(et.coordinates)};break;case"MultiPoint":case"LineString":rt={type:et.type,coordinates:ns(et.coordinates)};break;case"MultiLineString":rt={type:"MultiLineString",coordinates:et.coordinates.map(ns)};break;case"Polygon":var kt=[];Wa(et.coordinates,kt,ct=[]),xs(ct),rt={type:"Polygon",coordinates:kt};break;case"MultiPolygon":ct=[],vt=-1,Mt=et.coordinates.length;for(var q=new Array(Mt);++vt0?d-$:$)*M],ie=(0,_.Z)(et(q)).rotate(W),_e=(0,st.Z)(W),ze=ie.center;return delete ie.rotate,ie.center=function(He){return arguments.length?ze(_e(He)):_e.invert(ze())},ie.clipAngle(90)}function Ll(et){var rt=y(et);function ct(vt,Mt){var kt=(0,li.M)(vt,Mt);return kt[0]*=rt,kt}return ct.invert=function(vt,Mt){return li.M.invert(vt/rt,Mt)},ct}function to(){return ho([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function ho(et,rt){return vi(Ll,et,rt)}function Fo(et){if(!(et*=2))return te.N;var rt=-et/2,ct=-rt,vt=et*et,Mt=p(ct),kt=.5/u(ct);function q($,W){var ie=L(y(W)*y($-rt)),_e=L(y(W)*y($-ct));return[((ie*=ie)-(_e*=_e))/(2*et),(W<0?-1:1)*O(4*vt*_e-(vt-ie+_e)*(vt-ie+_e))/(2*et)]}return q.invert=function($,W){var ie,_e,ze=W*W,He=y(O(ze+(ie=$+rt)*ie)),Xe=y(O(ze+(ie=$+ct)*ie));return[T(_e=He-Xe,ie=(He+Xe)*Mt),(W<0?-1:1)*L(O(ie*ie+_e*_e)*kt)]},q}function za(){return di([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function di(et,rt){return vi(Fo,et,rt)}function oa(et,rt){if(w(rt)c&&--$>0);return[a(et)*(O(Mt*Mt+4)+Mt)*d/4,v*q]};var is=4*d+3*O(3),To=2*O(2*d*O(3)/is),_a=Ae(To*O(3)/d,To,is/6);function $l(){return(0,_.Z)(_a).scale(176.84)}function Fa(et,rt){return[et*O(1-3*rt*rt/(d*d)),rt]}function ll(){return(0,_.Z)(Fa).scale(152.63)}function as(et,rt){var ct=y(rt),vt=y(et)*ct,Mt=1-vt,kt=y(et=T(u(et)*ct,-u(rt))),q=u(et);return[q*(ct=O(1-vt*vt))-kt*Mt,-kt*ct-q*Mt]}function _i(){return(0,_.Z)(as).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)}function Si(et,rt){var ct=G(et,rt);return[(ct[0]+et/v)/2,(ct[1]+rt)/2]}function Jl(){return(0,_.Z)(Si).scale(158.837)}Fa.invert=function(et,rt){return[et/O(1-3*rt*rt/(d*d)),rt]},as.invert=function(et,rt){var ct=(et*et+rt*rt)/-2,vt=O(-ct*(2+ct)),Mt=rt*ct+et*vt,kt=et*ct-rt*vt,q=O(kt*kt+Mt*Mt);return[T(vt*Mt,q*(1+ct)),q?-C(vt*kt/q):0]},Si.invert=function(et,rt){var ct=et,vt=rt,Mt=25;do{var kt,q=y(vt),$=u(vt),W=u(2*vt),ie=$*$,_e=q*q,ze=u(ct),He=y(ct/2),Xe=u(ct/2),at=Xe*Xe,wt=1-_e*He*He,At=wt?L(q*He)*O(kt=1/wt):kt=0,re=.5*(2*At*q*Xe+ct/v)-et,ve=.5*(At*$+vt)-rt,Le=.5*kt*(_e*at+At*q*He*ie)+.5/v,Fe=kt*(ze*W/4-At*$*Xe),Ve=.125*kt*(W*Xe-At*$*_e*ze),We=.5*kt*(ie*He+At*at*q)+.5,$e=Fe*Ve-We*Le,tt=(ve*Fe-re*We)/$e,lt=(re*Ve-ve*Le)/$e;ct-=tt,vt-=lt}while((w(tt)>c||w(lt)>c)&&--Mt>0);return[ct,vt]}},33940:function(D,E,e){function _(){return new w}function w(){this.reset()}e.d(E,{Z:function(){return _}}),w.prototype={constructor:w,reset:function(){this.s=this.t=0},add:function(y){T(s,y,this.t),T(this,s.s,this.s),this.s?this.t+=s.t:this.s=s.t},valueOf:function(){return this.s}};var s=new w;function T(y,f,l){var t=y.s=f+l,i=t-f,r=t-i;y.t=f-r+(l-i)}},97860:function(D,E,e){e.d(E,{L9:function(){return r},ZP:function(){return b},gL:function(){return o}});var _,w,s,T,y,f=e(33940),l=e(39695),t=e(73182),i=e(72736),r=(0,f.Z)(),n=(0,f.Z)(),o={point:t.Z,lineStart:t.Z,lineEnd:t.Z,polygonStart:function(){r.reset(),o.lineStart=a,o.lineEnd=u},polygonEnd:function(){var d=+r;n.add(d<0?l.BZ+d:d),this.lineStart=this.lineEnd=this.point=t.Z},sphere:function(){n.add(l.BZ)}};function a(){o.point=p}function u(){c(_,w)}function p(d,v){o.point=c,_=d,w=v,d*=l.uR,v*=l.uR,s=d,T=(0,l.mC)(v=v/2+l.pu),y=(0,l.O$)(v)}function c(d,v){d*=l.uR,v=(v*=l.uR)/2+l.pu;var x=d-s,g=x>=0?1:-1,m=g*x,k=(0,l.mC)(v),h=(0,l.O$)(v),M=y*h,A=T*k+M*(0,l.mC)(m),C=M*g*(0,l.O$)(m);r.add((0,l.fv)(C,A)),s=d,T=k,y=h}function b(d){return n.reset(),(0,i.Z)(d,o),2*n}},77338:function(D,E,e){e.d(E,{Z:function(){return L}});var _,w,s,T,y,f,l,t,i,r,n=e(33940),o=e(97860),a=e(7620),u=e(39695),p=e(72736),c=(0,n.Z)(),b={point:d,lineStart:x,lineEnd:g,polygonStart:function(){b.point=m,b.lineStart=k,b.lineEnd=h,c.reset(),o.gL.polygonStart()},polygonEnd:function(){o.gL.polygonEnd(),b.point=d,b.lineStart=x,b.lineEnd=g,o.L9<0?(_=-(s=180),w=-(T=90)):c>u.Ho?T=90:c<-u.Ho&&(w=-90),r[0]=_,r[1]=s},sphere:function(){_=-(s=180),w=-(T=90)}};function d(O,I){i.push(r=[_=O,s=O]),IT&&(T=I)}function v(O,I){var R=(0,a.Og)([O*u.uR,I*u.uR]);if(t){var U=(0,a.T5)(t,R),B=[U[1],-U[0],0],G=(0,a.T5)(B,U);(0,a.iJ)(G),G=(0,a.Y1)(G);var N,j=O-y,V=j>0?1:-1,H=G[0]*u.RW*V,ee=(0,u.Wn)(j)>180;ee^(V*yT&&(T=N):ee^(V*y<(H=(H+360)%360-180)&&HT&&(T=I)),ee?OM(_,s)&&(s=O):M(O,s)>M(_,s)&&(_=O):s>=_?(O<_&&(_=O),O>s&&(s=O)):O>y?M(_,O)>M(_,s)&&(s=O):M(O,s)>M(_,s)&&(_=O)}else i.push(r=[_=O,s=O]);IT&&(T=I),t=R,y=O}function x(){b.point=v}function g(){r[0]=_,r[1]=s,b.point=d,t=null}function m(O,I){if(t){var R=O-y;c.add((0,u.Wn)(R)>180?R+(R>0?360:-360):R)}else f=O,l=I;o.gL.point(O,I),v(O,I)}function k(){o.gL.lineStart()}function h(){m(f,l),o.gL.lineEnd(),(0,u.Wn)(c)>u.Ho&&(_=-(s=180)),r[0]=_,r[1]=s,t=null}function M(O,I){return(I-=O)<0?I+360:I}function A(O,I){return O[0]-I[0]}function C(O,I){return O[0]<=O[1]?O[0]<=I&&I<=O[1]:IM(U[0],U[1])&&(U[1]=B[1]),M(B[0],U[1])>M(U[0],U[1])&&(U[0]=B[0])):G.push(U=B);for(N=-1/0,I=0,U=G[R=G.length-1];I<=R;U=B,++I)B=G[I],(j=M(U[1],B[0]))>N&&(N=j,_=B[0],s=U[1])}return i=r=null,_===1/0||w===1/0?[[NaN,NaN],[NaN,NaN]]:[[_,w],[s,T]]}},7620:function(D,E,e){e.d(E,{Og:function(){return s},T:function(){return l},T5:function(){return y},Y1:function(){return w},iJ:function(){return t},j9:function(){return T},s0:function(){return f}});var _=e(39695);function w(i){return[(0,_.fv)(i[1],i[0]),(0,_.ZR)(i[2])]}function s(i){var r=i[0],n=i[1],o=(0,_.mC)(n);return[o*(0,_.mC)(r),o*(0,_.O$)(r),(0,_.O$)(n)]}function T(i,r){return i[0]*r[0]+i[1]*r[1]+i[2]*r[2]}function y(i,r){return[i[1]*r[2]-i[2]*r[1],i[2]*r[0]-i[0]*r[2],i[0]*r[1]-i[1]*r[0]]}function f(i,r){i[0]+=r[0],i[1]+=r[1],i[2]+=r[2]}function l(i,r){return[i[0]*r,i[1]*r,i[2]*r]}function t(i){var r=(0,_._b)(i[0]*i[0]+i[1]*i[1]+i[2]*i[2]);i[0]/=r,i[1]/=r,i[2]/=r}},66624:function(D,E,e){e.d(E,{Z:function(){return R}});var _,w,s,T,y,f,l,t,i,r,n,o,a,u,p,c,b=e(39695),d=e(73182),v=e(72736),x={sphere:d.Z,point:g,lineStart:k,lineEnd:A,polygonStart:function(){x.lineStart=C,x.lineEnd=L},polygonEnd:function(){x.lineStart=k,x.lineEnd=A}};function g(U,B){U*=b.uR,B*=b.uR;var G=(0,b.mC)(B);m(G*(0,b.mC)(U),G*(0,b.O$)(U),(0,b.O$)(B))}function m(U,B,G){++_,s+=(U-s)/_,T+=(B-T)/_,y+=(G-y)/_}function k(){x.point=h}function h(U,B){U*=b.uR,B*=b.uR;var G=(0,b.mC)(B);u=G*(0,b.mC)(U),p=G*(0,b.O$)(U),c=(0,b.O$)(B),x.point=M,m(u,p,c)}function M(U,B){U*=b.uR,B*=b.uR;var G=(0,b.mC)(B),N=G*(0,b.mC)(U),j=G*(0,b.O$)(U),V=(0,b.O$)(B),H=(0,b.fv)((0,b._b)((H=p*V-c*j)*H+(H=c*N-u*V)*H+(H=u*j-p*N)*H),u*N+p*j+c*V);w+=H,f+=H*(u+(u=N)),l+=H*(p+(p=j)),t+=H*(c+(c=V)),m(u,p,c)}function A(){x.point=g}function C(){x.point=O}function L(){I(o,a),x.point=g}function O(U,B){o=U,a=B,U*=b.uR,B*=b.uR,x.point=I;var G=(0,b.mC)(B);u=G*(0,b.mC)(U),p=G*(0,b.O$)(U),c=(0,b.O$)(B),m(u,p,c)}function I(U,B){U*=b.uR,B*=b.uR;var G=(0,b.mC)(B),N=G*(0,b.mC)(U),j=G*(0,b.O$)(U),V=(0,b.O$)(B),H=p*V-c*j,ee=c*N-u*V,Q=u*j-p*N,X=(0,b._b)(H*H+ee*ee+Q*Q),Y=(0,b.ZR)(X),K=X&&-Y/X;i+=K*H,r+=K*ee,n+=K*Q,w+=Y,f+=Y*(u+(u=N)),l+=Y*(p+(p=j)),t+=Y*(c+(c=V)),m(u,p,c)}function R(U){_=w=s=T=y=f=l=t=i=r=n=0,(0,v.Z)(U,x);var B=i,G=r,N=n,j=B*B+G*G+N*N;return j0?oa)&&(o+=n*s.BZ));for(var b,d=o;n>0?d>a:d0?w.pi:-w.pi,n=(0,w.Wn)(t-y);(0,w.Wn)(n-w.pi)0?w.ou:-w.ou),s.point(l,f),s.lineEnd(),s.lineStart(),s.point(r,f),s.point(t,f),T=0):l!==r&&n>=w.pi&&((0,w.Wn)(y-l)w.Ho?(0,w.z4)(((0,w.O$)(a)*(b=(0,w.mC)(p))*(0,w.O$)(u)-(0,w.O$)(p)*(c=(0,w.mC)(a))*(0,w.O$)(o))/(c*b*d)):(a+p)/2}(y,f,t,i),s.point(l,f),s.lineEnd(),s.lineStart(),s.point(r,f),T=0),s.point(y=t,f=i),l=r},lineEnd:function(){s.lineEnd(),y=f=NaN},clean:function(){return 2-T}}},function(s,T,y,f){var l;if(s==null)l=y*w.ou,f.point(-w.pi,l),f.point(0,l),f.point(w.pi,l),f.point(w.pi,0),f.point(w.pi,-l),f.point(0,-l),f.point(-w.pi,-l),f.point(-w.pi,0),f.point(-w.pi,l);else if((0,w.Wn)(s[0]-T[0])>w.Ho){var t=s[0]1&&T.push(T.pop().concat(T.shift()))},result:function(){var y=T;return T=[],s=null,y}}}},1457:function(D,E,e){e.d(E,{Z:function(){return f}});var _=e(7620),w=e(7613),s=e(39695),T=e(67108),y=e(97023);function f(l){var t=(0,s.mC)(l),i=6*s.uR,r=t>0,n=(0,s.Wn)(t)>s.Ho;function o(p,c){return(0,s.mC)(p)*(0,s.mC)(c)>t}function a(p,c,b){var d=(0,_.Og)(p),v=(0,_.Og)(c),x=[1,0,0],g=(0,_.T5)(d,v),m=(0,_.j9)(g,g),k=g[0],h=m-k*k;if(!h)return!b&&p;var M=t*m/h,A=-t*k/h,C=(0,_.T5)(x,g),L=(0,_.T)(x,M),O=(0,_.T)(g,A);(0,_.s0)(L,O);var I=C,R=(0,_.j9)(L,I),U=(0,_.j9)(I,I),B=R*R-U*((0,_.j9)(L,L)-1);if(!(B<0)){var G=(0,s._b)(B),N=(0,_.T)(I,(-R-G)/U);if((0,_.s0)(N,L),N=(0,_.Y1)(N),!b)return N;var j,V=p[0],H=c[0],ee=p[1],Q=c[1];H0^N[1]<((0,s.Wn)(N[0]-V)s.pi^(V<=N[0]&&N[0]<=H)){var K=(0,_.T)(I,(-R+G)/U);return(0,_.s0)(K,L),[N,(0,_.Y1)(K)]}}}function u(p,c){var b=r?l:s.pi-l,d=0;return p<-b?d|=1:p>b&&(d|=2),c<-b?d|=4:c>b&&(d|=8),d}return(0,y.Z)(o,function(p){var c,b,d,v,x;return{lineStart:function(){v=d=!1,x=1},point:function(g,m){var k,h=[g,m],M=o(g,m),A=r?M?0:u(g,m):M?u(g+(g<0?s.pi:-s.pi),m):0;if(!c&&(v=d=M)&&p.lineStart(),M!==d&&(!(k=a(c,h))||(0,T.Z)(c,k)||(0,T.Z)(h,k))&&(h[2]=1),M!==d)x=0,M?(p.lineStart(),k=a(h,c),p.point(k[0],k[1])):(k=a(c,h),p.point(k[0],k[1],2),p.lineEnd()),c=k;else if(n&&c&&r^M){var C;A&b||!(C=a(h,c,!0))||(x=0,r?(p.lineStart(),p.point(C[0][0],C[0][1]),p.point(C[1][0],C[1][1]),p.lineEnd()):(p.point(C[1][0],C[1][1]),p.lineEnd(),p.lineStart(),p.point(C[0][0],C[0][1],3)))}!M||c&&(0,T.Z)(c,h)||p.point(h[0],h[1]),c=h,d=M,b=A},lineEnd:function(){d&&p.lineEnd(),c=null},clean:function(){return x|(v&&d)<<1}}},function(p,c,b,d){(0,w.m)(d,l,i,b,p,c)},r?[0,-l]:[-s.pi,l-s.pi])}},97023:function(D,E,e){e.d(E,{Z:function(){return f}});var _=e(85272),w=e(46225),s=e(39695),T=e(23071),y=e(33064);function f(i,r,n,o){return function(a){var u,p,c,b=r(a),d=(0,_.Z)(),v=r(d),x=!1,g={point:m,lineStart:h,lineEnd:M,polygonStart:function(){g.point=A,g.lineStart=C,g.lineEnd=L,p=[],u=[]},polygonEnd:function(){g.point=m,g.lineStart=h,g.lineEnd=M,p=(0,y.TS)(p);var O=(0,T.Z)(u,o);p.length?(x||(a.polygonStart(),x=!0),(0,w.Z)(p,t,O,n,a)):O&&(x||(a.polygonStart(),x=!0),a.lineStart(),n(null,null,1,a),a.lineEnd()),x&&(a.polygonEnd(),x=!1),p=u=null},sphere:function(){a.polygonStart(),a.lineStart(),n(null,null,1,a),a.lineEnd(),a.polygonEnd()}};function m(O,I){i(O,I)&&a.point(O,I)}function k(O,I){b.point(O,I)}function h(){g.point=k,b.lineStart()}function M(){g.point=m,b.lineEnd()}function A(O,I){c.push([O,I]),v.point(O,I)}function C(){v.lineStart(),c=[]}function L(){A(c[0][0],c[0][1]),v.lineEnd();var O,I,R,U,B=v.clean(),G=d.result(),N=G.length;if(c.pop(),u.push(c),c=null,N)if(1&B){if((I=(R=G[0]).length-1)>0){for(x||(a.polygonStart(),x=!0),a.lineStart(),O=0;O1&&2&B&&G.push(G.pop().concat(G.shift())),p.push(G.filter(l))}return g}}function l(i){return i.length>1}function t(i,r){return((i=i.x)[0]<0?i[1]-s.ou-s.Ho:s.ou-i[1])-((r=r.x)[0]<0?r[1]-s.ou-s.Ho:s.ou-r[1])}},87605:function(D,E,e){e.d(E,{Z:function(){return l}});var _=e(39695),w=e(85272),s=e(46225),T=e(33064),y=1e9,f=-y;function l(t,i,r,n){function o(b,d){return t<=b&&b<=r&&i<=d&&d<=n}function a(b,d,v,x){var g=0,m=0;if(b==null||(g=u(b,v))!==(m=u(d,v))||c(b,d)<0^v>0)do x.point(g===0||g===3?t:r,g>1?n:i);while((g=(g+v+4)%4)!==m);else x.point(d[0],d[1])}function u(b,d){return(0,_.Wn)(b[0]-t)<_.Ho?d>0?0:3:(0,_.Wn)(b[0]-r)<_.Ho?d>0?2:1:(0,_.Wn)(b[1]-i)<_.Ho?d>0?1:0:d>0?3:2}function p(b,d){return c(b.x,d.x)}function c(b,d){var v=u(b,1),x=u(d,1);return v!==x?v-x:v===0?d[1]-b[1]:v===1?b[0]-d[0]:v===2?b[1]-d[1]:d[0]-b[0]}return function(b){var d,v,x,g,m,k,h,M,A,C,L,O=b,I=(0,w.Z)(),R={point:U,lineStart:function(){R.point=B,v&&v.push(x=[]),C=!0,A=!1,h=M=NaN},lineEnd:function(){d&&(B(g,m),k&&A&&I.rejoin(),d.push(I.result())),R.point=U,A&&O.lineEnd()},polygonStart:function(){O=I,d=[],v=[],L=!0},polygonEnd:function(){var G=function(){for(var V=0,H=0,ee=v.length;Hn&&(oe-Q)*(n-X)>(se-X)*(t-Q)&&++V:se<=n&&(oe-Q)*(n-X)<(se-X)*(t-Q)&&--V;return V}(),N=L&&G,j=(d=(0,T.TS)(d)).length;(N||j)&&(b.polygonStart(),N&&(b.lineStart(),a(null,null,1,b),b.lineEnd()),j&&(0,s.Z)(d,p,G,a,b),b.polygonEnd()),O=b,d=v=x=null}};function U(G,N){o(G,N)&&O.point(G,N)}function B(G,N){var j=o(G,N);if(v&&x.push([G,N]),C)g=G,m=N,k=j,C=!1,j&&(O.lineStart(),O.point(G,N));else if(j&&A)O.point(G,N);else{var V=[h=Math.max(f,Math.min(y,h)),M=Math.max(f,Math.min(y,M))],H=[G=Math.max(f,Math.min(y,G)),N=Math.max(f,Math.min(y,N))];(function(ee,Q,X,Y,K,te){var ae,oe=ee[0],se=ee[1],fe=0,ye=1,pe=Q[0]-oe,de=Q[1]-se;if(ae=X-oe,pe||!(ae>0)){if(ae/=pe,pe<0){if(ae0){if(ae>ye)return;ae>fe&&(fe=ae)}if(ae=K-oe,pe||!(ae<0)){if(ae/=pe,pe<0){if(ae>ye)return;ae>fe&&(fe=ae)}else if(pe>0){if(ae0)){if(ae/=de,de<0){if(ae0){if(ae>ye)return;ae>fe&&(fe=ae)}if(ae=te-se,de||!(ae<0)){if(ae/=de,de<0){if(ae>ye)return;ae>fe&&(fe=ae)}else if(de>0){if(ae0&&(ee[0]=oe+fe*pe,ee[1]=se+fe*de),ye<1&&(Q[0]=oe+ye*pe,Q[1]=se+ye*de),!0}}}}})(V,H,t,i,r,n)?(A||(O.lineStart(),O.point(V[0],V[1])),O.point(H[0],H[1]),j||O.lineEnd(),L=!1):j&&(O.lineStart(),O.point(G,N),L=!1)}h=G,M=N,A=j}return R}}},46225:function(D,E,e){e.d(E,{Z:function(){return T}});var _=e(67108),w=e(39695);function s(f,l,t,i){this.x=f,this.z=l,this.o=t,this.e=i,this.v=!1,this.n=this.p=null}function T(f,l,t,i,r){var n,o,a=[],u=[];if(f.forEach(function(x){if(!((g=x.length-1)<=0)){var g,m,k=x[0],h=x[g];if((0,_.Z)(k,h)){if(!k[2]&&!h[2]){for(r.lineStart(),n=0;n=0;--n)r.point((c=p[n])[0],c[1]);else i(d.x,d.p.x,-1,r);d=d.p}p=(d=d.o).z,v=!v}while(!d.v);r.lineEnd()}}}function y(f){if(l=f.length){for(var l,t,i=0,r=f[0];++i0&&(jn=M($t[$n],$t[$n-1]))>0&&Ln<=jn&&En<=jn&&(Ln+En-jn)*(1-Math.pow((Ln-En)/jn,2))u.Ho}).map(hr)).concat((0,N.w6)((0,u.mD)($n/un)*un,jn,un).filter(function(dn){return(0,u.Wn)(dn%On)>u.Ho}).map(tn))}return pn.lines=function(){return bn().map(function(dn){return{type:"LineString",coordinates:dn}})},pn.outline=function(){return{type:"Polygon",coordinates:[Pn(En).concat(jt(Zn).slice(1),Pn(Ln).reverse().slice(1),jt(Qn).reverse().slice(1))]}},pn.extent=function(dn){return arguments.length?pn.extentMajor(dn).extentMinor(dn):pn.extentMinor()},pn.extentMajor=function(dn){return arguments.length?(En=+dn[0][0],Ln=+dn[1][0],Qn=+dn[0][1],Zn=+dn[1][1],En>Ln&&(dn=En,En=Ln,Ln=dn),Qn>Zn&&(dn=Qn,Qn=Zn,Zn=dn),pn.precision(Sn)):[[En,Qn],[Ln,Zn]]},pn.extentMinor=function(dn){return arguments.length?(mn=+dn[0][0],$t=+dn[1][0],$n=+dn[0][1],jn=+dn[1][1],mn>$t&&(dn=mn,mn=$t,$t=dn),$n>jn&&(dn=$n,$n=jn,jn=dn),pn.precision(Sn)):[[mn,$n],[$t,jn]]},pn.step=function(dn){return arguments.length?pn.stepMajor(dn).stepMinor(dn):pn.stepMinor()},pn.stepMajor=function(dn){return arguments.length?(Rn=+dn[0],On=+dn[1],pn):[Rn,On]},pn.stepMinor=function(dn){return arguments.length?(Jt=+dn[0],un=+dn[1],pn):[Jt,un]},pn.precision=function(dn){return arguments.length?(Sn=+dn,hr=j($n,jn,90),tn=V(mn,$t,Sn),Pn=j(Qn,Zn,90),jt=V(En,Ln,Sn),pn):Sn},pn.extentMajor([[-180,-90+u.Ho],[180,90-u.Ho]]).extentMinor([[-180,-80-u.Ho],[180,80+u.Ho]])}function ee(){return H()()}var Q,X,Y,K,te=e(83074),ae=e(8593),oe=(0,a.Z)(),se=(0,a.Z)(),fe={point:p.Z,lineStart:p.Z,lineEnd:p.Z,polygonStart:function(){fe.lineStart=ye,fe.lineEnd=he},polygonEnd:function(){fe.lineStart=fe.lineEnd=fe.point=p.Z,oe.add((0,u.Wn)(se)),se.reset()},result:function(){var $t=oe/2;return oe.reset(),$t}};function ye(){fe.point=pe}function pe($t,mn){fe.point=de,Q=Y=$t,X=K=mn}function de($t,mn){se.add(K*$t-Y*mn),Y=$t,K=mn}function he(){de(Q,X)}var xe,Re,we,Ae,Me=fe,Ce=e(3559),ne=0,ue=0,me=0,Te=0,Ee=0,Ue=0,De=0,je=0,ge=0,be={point:Se,lineStart:Ne,lineEnd:st,polygonStart:function(){be.lineStart=ot,be.lineEnd=ft},polygonEnd:function(){be.point=Se,be.lineStart=Ne,be.lineEnd=st},result:function(){var $t=ge?[De/ge,je/ge]:Ue?[Te/Ue,Ee/Ue]:me?[ne/me,ue/me]:[NaN,NaN];return ne=ue=me=Te=Ee=Ue=De=je=ge=0,$t}};function Se($t,mn){ne+=$t,ue+=mn,++me}function Ne(){be.point=Ye}function Ye($t,mn){be.point=Ze,Se(we=$t,Ae=mn)}function Ze($t,mn){var Ln=$t-we,En=mn-Ae,jn=(0,u._b)(Ln*Ln+En*En);Te+=jn*(we+$t)/2,Ee+=jn*(Ae+mn)/2,Ue+=jn,Se(we=$t,Ae=mn)}function st(){be.point=Se}function ot(){be.point=yt}function ft(){Et(xe,Re)}function yt($t,mn){be.point=Et,Se(xe=we=$t,Re=Ae=mn)}function Et($t,mn){var Ln=$t-we,En=mn-Ae,jn=(0,u._b)(Ln*Ln+En*En);Te+=jn*(we+$t)/2,Ee+=jn*(Ae+mn)/2,Ue+=jn,De+=(jn=Ae*$t-we*mn)*(we+$t),je+=jn*(Ae+mn),ge+=3*jn,Se(we=$t,Ae=mn)}var Tt=be;function xt($t){this._context=$t}xt.prototype={_radius:4.5,pointRadius:function($t){return this._radius=$t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function($t,mn){switch(this._point){case 0:this._context.moveTo($t,mn),this._point=1;break;case 1:this._context.lineTo($t,mn);break;default:this._context.moveTo($t+this._radius,mn),this._context.arc($t,mn,this._radius,0,u.BZ)}},result:p.Z};var Dt,It,Ft,qt,Nt,Je=(0,a.Z)(),Ke={point:p.Z,lineStart:function(){Ke.point=Ge},lineEnd:function(){Dt&&nt(It,Ft),Ke.point=p.Z},polygonStart:function(){Dt=!0},polygonEnd:function(){Dt=null},result:function(){var $t=+Je;return Je.reset(),$t}};function Ge($t,mn){Ke.point=nt,It=qt=$t,Ft=Nt=mn}function nt($t,mn){qt-=$t,Nt-=mn,Je.add((0,u._b)(qt*qt+Nt*Nt)),qt=$t,Nt=mn}var ht=Ke;function Oe(){this._string=[]}function Be($t){return"m0,"+$t+"a"+$t+","+$t+" 0 1,1 0,"+-2*$t+"a"+$t+","+$t+" 0 1,1 0,"+2*$t+"z"}function Qe($t,mn){var Ln,En,jn=4.5;function $n(Zn){return Zn&&(typeof jn=="function"&&En.pointRadius(+jn.apply(this,arguments)),(0,c.Z)(Zn,Ln(En))),En.result()}return $n.area=function(Zn){return(0,c.Z)(Zn,Ln(Me)),Me.result()},$n.measure=function(Zn){return(0,c.Z)(Zn,Ln(ht)),ht.result()},$n.bounds=function(Zn){return(0,c.Z)(Zn,Ln(Ce.Z)),Ce.Z.result()},$n.centroid=function(Zn){return(0,c.Z)(Zn,Ln(Tt)),Tt.result()},$n.projection=function(Zn){return arguments.length?(Ln=Zn==null?($t=null,ae.Z):($t=Zn).stream,$n):$t},$n.context=function(Zn){return arguments.length?(En=Zn==null?(mn=null,new Oe):new xt(mn=Zn),typeof jn!="function"&&En.pointRadius(jn),$n):mn},$n.pointRadius=function(Zn){return arguments.length?(jn=typeof Zn=="function"?Zn:(En.pointRadius(+Zn),+Zn),$n):jn},$n.projection($t).context(mn)}Oe.prototype={_radius:4.5,_circle:Be(4.5),pointRadius:function($t){return($t=+$t)!==this._radius&&(this._radius=$t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function($t,mn){switch(this._point){case 0:this._string.push("M",$t,",",mn),this._point=1;break;case 1:this._string.push("L",$t,",",mn);break;default:this._circle==null&&(this._circle=Be(this._radius)),this._string.push("M",$t,",",mn,this._circle)}},result:function(){if(this._string.length){var $t=this._string.join("");return this._string=[],$t}return null}};var ut=e(15002);function pt($t){var mn=0,Ln=u.pi/3,En=(0,ut.r)($t),jn=En(mn,Ln);return jn.parallels=function($n){return arguments.length?En(mn=$n[0]*u.uR,Ln=$n[1]*u.uR):[mn*u.RW,Ln*u.RW]},jn}function bt($t,mn){var Ln=(0,u.O$)($t),En=(Ln+(0,u.O$)(mn))/2;if((0,u.Wn)(En)=.12&&Sn<.234&&On>=-.425&&On<-.214?Qn:Sn>=.166&&Sn<.234&&On>=-.214&&On<-.115?hr:Zn).invert(Jt)},Pn.stream=function(Jt){return $t&&mn===Jt?$t:(un=[Zn.stream(mn=Jt),Qn.stream(Jt),hr.stream(Jt)],Rn=un.length,$t={point:function(On,Sn){for(var pn=-1;++pn0?Qn<-u.ou+u.Ho&&(Qn=-u.ou+u.Ho):Qn>u.ou-u.Ho&&(Qn=u.ou-u.Ho);var hr=jn/(0,u.sQ)(Kt(Qn),En);return[hr*(0,u.O$)(En*Zn),jn-hr*(0,u.mC)(En*Zn)]}return $n.invert=function(Zn,Qn){var hr=jn-Qn,tn=(0,u.Xx)(En)*(0,u._b)(Zn*Zn+hr*hr),Pn=(0,u.fv)(Zn,(0,u.Wn)(hr))*(0,u.Xx)(hr);return hr*En<0&&(Pn-=u.pi*(0,u.Xx)(Zn)*(0,u.Xx)(hr)),[Pn/En,2*(0,u.z4)((0,u.sQ)(jn/tn,1/En))-u.ou]},$n}function yn(){return pt(nn).scale(109.5).parallels([30,30])}Wt.invert=function($t,mn){return[$t,2*(0,u.z4)((0,u.Qq)(mn))-u.ou]};var ln=e(97492);function kn($t,mn){var Ln=(0,u.mC)($t),En=$t===mn?(0,u.O$)($t):(Ln-(0,u.mC)(mn))/(mn-$t),jn=Ln/En+$t;if((0,u.Wn)(En)2?En[2]+90:90]):[(En=Ln())[0],En[1],En[2]-90]},Ln([0,0,90]).scale(159.155)}gr.invert=(0,kr.O)(function($t){return 2*(0,u.z4)($t)}),dr.invert=function($t,mn){return[-mn,2*(0,u.z4)((0,u.Qq)($t))-u.ou]}},83074:function(D,E,e){e.d(E,{Z:function(){return w}});var _=e(39695);function w(s,T){var y=s[0]*_.uR,f=s[1]*_.uR,l=T[0]*_.uR,t=T[1]*_.uR,i=(0,_.mC)(f),r=(0,_.O$)(f),n=(0,_.mC)(t),o=(0,_.O$)(t),a=i*(0,_.mC)(y),u=i*(0,_.O$)(y),p=n*(0,_.mC)(l),c=n*(0,_.O$)(l),b=2*(0,_.ZR)((0,_._b)((0,_.Jy)(t-f)+i*n*(0,_.Jy)(l-y))),d=(0,_.O$)(b),v=b?function(x){var g=(0,_.O$)(x*=b)/d,m=(0,_.O$)(b-x)/d,k=m*a+g*p,h=m*u+g*c,M=m*r+g*o;return[(0,_.fv)(h,k)*_.RW,(0,_.fv)(M,(0,_._b)(k*k+h*h))*_.RW]}:function(){return[y*_.RW,f*_.RW]};return v.distance=b,v}},39695:function(D,E,e){e.d(E,{BZ:function(){return f},Ho:function(){return _},Jy:function(){return k},Kh:function(){return g},O$:function(){return b},OR:function(){return x},Qq:function(){return u},RW:function(){return l},Wn:function(){return i},Xx:function(){return d},ZR:function(){return m},_b:function(){return v},aW:function(){return w},cM:function(){return p},fv:function(){return n},mC:function(){return o},mD:function(){return a},ou:function(){return T},pi:function(){return s},pu:function(){return y},sQ:function(){return c},uR:function(){return t},z4:function(){return r}});var _=1e-6,w=1e-12,s=Math.PI,T=s/2,y=s/4,f=2*s,l=180/s,t=s/180,i=Math.abs,r=Math.atan,n=Math.atan2,o=Math.cos,a=Math.ceil,u=Math.exp,p=Math.log,c=Math.pow,b=Math.sin,d=Math.sign||function(h){return h>0?1:h<0?-1:0},v=Math.sqrt,x=Math.tan;function g(h){return h>1?0:h<-1?s:Math.acos(h)}function m(h){return h>1?T:h<-1?-T:Math.asin(h)}function k(h){return(h=b(h/2))*h}},73182:function(D,E,e){function _(){}e.d(E,{Z:function(){return _}})},3559:function(D,E,e){var _=e(73182),w=1/0,s=w,T=-w,y=T,f={point:function(l,t){lT&&(T=l),ty&&(y=t)},lineStart:_.Z,lineEnd:_.Z,polygonStart:_.Z,polygonEnd:_.Z,result:function(){var l=[[w,s],[T,y]];return T=y=-(s=w=1/0),l}};E.Z=f},67108:function(D,E,e){e.d(E,{Z:function(){return w}});var _=e(39695);function w(s,T){return(0,_.Wn)(s[0]-T[0])<_.Ho&&(0,_.Wn)(s[1]-T[1])<_.Ho}},23071:function(D,E,e){e.d(E,{Z:function(){return f}});var _=e(33940),w=e(7620),s=e(39695),T=(0,_.Z)();function y(l){return(0,s.Wn)(l[0])<=s.pi?l[0]:(0,s.Xx)(l[0])*(((0,s.Wn)(l[0])+s.pi)%s.BZ-s.pi)}function f(l,t){var i=y(t),r=t[1],n=(0,s.O$)(r),o=[(0,s.O$)(i),-(0,s.mC)(i),0],a=0,u=0;T.reset(),n===1?r=s.ou+s.Ho:n===-1&&(r=-s.ou-s.Ho);for(var p=0,c=l.length;p=0?1:-1,U=R*I,B=U>s.pi,G=m*L;if(T.add((0,s.fv)(G*R*(0,s.O$)(U),k*O+G*(0,s.mC)(U))),a+=B?I+R*s.BZ:I,B^x>=i^A>=i){var N=(0,w.T5)((0,w.Og)(v),(0,w.Og)(M));(0,w.iJ)(N);var j=(0,w.T5)(o,N);(0,w.iJ)(j);var V=(B^I>=0?-1:1)*(0,s.ZR)(j[2]);(r>V||r===V&&(N[0]||N[1]))&&(u+=B^I>=0?1:-1)}}return(a<-s.Ho||a4*g&&N--){var Q=A+U,X=C+B,Y=L+G,K=(0,f._b)(Q*Q+X*X+Y*Y),te=(0,f.ZR)(Y/=K),ae=(0,f.Wn)((0,f.Wn)(Y)-1)g||(0,f.Wn)((V*ye+H*pe)/ee-.5)>.3||A*U+C*B+L*G2?ye[2]%360*f.uR:0,se()):[G*f.RW,N*f.RW,j*f.RW]},ae.angle=function(ye){return arguments.length?(V=ye%360*f.uR,se()):V*f.RW},ae.reflectX=function(ye){return arguments.length?(H=ye?-1:1,se()):H<0},ae.reflectY=function(ye){return arguments.length?(ee=ye?-1:1,se()):ee<0},ae.precision=function(ye){return arguments.length?(h=o(M,te=ye*ye),fe()):(0,f._b)(te)},ae.fitExtent=function(ye,pe){return(0,i.qg)(ae,ye,pe)},ae.fitSize=function(ye,pe){return(0,i.mF)(ae,ye,pe)},ae.fitWidth=function(ye,pe){return(0,i.V6)(ae,ye,pe)},ae.fitHeight=function(ye,pe){return(0,i.rf)(ae,ye,pe)},function(){return v=d.apply(this,arguments),ae.invert=v.invert&&oe,se()}}},26867:function(D,E,e){e.d(E,{K:function(){return s},Z:function(){return T}});var _=e(15002),w=e(39695);function s(y,f){var l=f*f,t=l*l;return[y*(.8707-.131979*l+t*(t*(.003971*l-.001529*t)-.013791)),f*(1.007226+l*(.015085+t*(.028874*l-.044475-.005916*t)))]}function T(){return(0,_.Z)(s).scale(175.295)}s.invert=function(y,f){var l,t=f,i=25;do{var r=t*t,n=r*r;t-=l=(t*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))-f)/(1.007226+r*(.045255+n*(.259866*r-.311325-.06507600000000001*n)))}while((0,w.Wn)(l)>w.Ho&&--i>0);return[y/(.8707+(r=t*t)*(r*(r*r*r*(.003971-.001529*r)-.013791)-.131979)),t]}},57962:function(D,E,e){e.d(E,{I:function(){return T},Z:function(){return y}});var _=e(39695),w=e(25382),s=e(15002);function T(f,l){return[(0,_.mC)(l)*(0,_.O$)(f),(0,_.O$)(l)]}function y(){return(0,s.Z)(T).scale(249.5).clipAngle(90+_.Ho)}T.invert=(0,w.O)(_.ZR)},49386:function(D,E,e){e.d(E,{I:function(){return T},Z:function(){return t}});var _=e(96059),w=e(39695);function s(i,r){return[(0,w.Wn)(i)>w.pi?i+Math.round(-i/w.BZ)*w.BZ:i,r]}function T(i,r,n){return(i%=w.BZ)?r||n?(0,_.Z)(f(i),l(r,n)):f(i):r||n?l(r,n):s}function y(i){return function(r,n){return[(r+=i)>w.pi?r-w.BZ:r<-w.pi?r+w.BZ:r,n]}}function f(i){var r=y(i);return r.invert=y(-i),r}function l(i,r){var n=(0,w.mC)(i),o=(0,w.O$)(i),a=(0,w.mC)(r),u=(0,w.O$)(r);function p(c,b){var d=(0,w.mC)(b),v=(0,w.mC)(c)*d,x=(0,w.O$)(c)*d,g=(0,w.O$)(b),m=g*n+v*o;return[(0,w.fv)(x*a-m*u,v*n-g*o),(0,w.ZR)(m*a+x*u)]}return p.invert=function(c,b){var d=(0,w.mC)(b),v=(0,w.mC)(c)*d,x=(0,w.O$)(c)*d,g=(0,w.O$)(b),m=g*a-x*u;return[(0,w.fv)(x*a+g*u,v*n+m*o),(0,w.ZR)(m*n-v*o)]},p}function t(i){function r(n){return(n=i(n[0]*w.uR,n[1]*w.uR))[0]*=w.RW,n[1]*=w.RW,n}return i=T(i[0]*w.uR,i[1]*w.uR,i.length>2?i[2]*w.uR:0),r.invert=function(n){return(n=i.invert(n[0]*w.uR,n[1]*w.uR))[0]*=w.RW,n[1]*=w.RW,n},r}s.invert=s},72736:function(D,E,e){function _(l,t){l&&s.hasOwnProperty(l.type)&&s[l.type](l,t)}e.d(E,{Z:function(){return f}});var w={Feature:function(l,t){_(l.geometry,t)},FeatureCollection:function(l,t){for(var i=l.features,r=-1,n=i.length;++r=0;)ne+=ue[me].value;else ne=1;Ce.value=ne}function f(Ce,ne){var ue,me,Te,Ee,Ue,De=new r(Ce),je=+Ce.value&&(De.value=Ce.value),ge=[De];for(ne==null&&(ne=l);ue=ge.pop();)if(je&&(ue.value=+ue.data.value),(Te=ne(ue.data))&&(Ue=Te.length))for(ue.children=new Array(Ue),Ee=Ue-1;Ee>=0;--Ee)ge.push(me=ue.children[Ee]=new r(Te[Ee])),me.parent=ue,me.depth=ue.depth+1;return De.eachBefore(i)}function l(Ce){return Ce.children}function t(Ce){Ce.data=Ce.data.data}function i(Ce){var ne=0;do Ce.height=ne;while((Ce=Ce.parent)&&Ce.height<++ne)}function r(Ce){this.data=Ce,this.depth=this.height=0,this.parent=null}e.r(E),e.d(E,{cluster:function(){return T},hierarchy:function(){return f},pack:function(){return R},packEnclose:function(){return o},packSiblings:function(){return M},partition:function(){return V},stratify:function(){return Y},tree:function(){return ye},treemap:function(){return Re},treemapBinary:function(){return we},treemapDice:function(){return j},treemapResquarify:function(){return Me},treemapSlice:function(){return pe},treemapSliceDice:function(){return Ae},treemapSquarify:function(){return xe}}),r.prototype=f.prototype={constructor:r,count:function(){return this.eachAfter(y)},each:function(Ce){var ne,ue,me,Te,Ee=this,Ue=[Ee];do for(ne=Ue.reverse(),Ue=[];Ee=ne.pop();)if(Ce(Ee),ue=Ee.children)for(me=0,Te=ue.length;me=0;--ue)Te.push(ne[ue]);return this},sum:function(Ce){return this.eachAfter(function(ne){for(var ue=+Ce(ne.data)||0,me=ne.children,Te=me&&me.length;--Te>=0;)ue+=me[Te].value;ne.value=ue})},sort:function(Ce){return this.eachBefore(function(ne){ne.children&&ne.children.sort(Ce)})},path:function(Ce){for(var ne=this,ue=function(Ee,Ue){if(Ee===Ue)return Ee;var De=Ee.ancestors(),je=Ue.ancestors(),ge=null;for(Ee=De.pop(),Ue=je.pop();Ee===Ue;)ge=Ee,Ee=De.pop(),Ue=je.pop();return ge}(ne,Ce),me=[ne];ne!==ue;)ne=ne.parent,me.push(ne);for(var Te=me.length;Ce!==ue;)me.splice(Te,0,Ce),Ce=Ce.parent;return me},ancestors:function(){for(var Ce=this,ne=[Ce];Ce=Ce.parent;)ne.push(Ce);return ne},descendants:function(){var Ce=[];return this.each(function(ne){Ce.push(ne)}),Ce},leaves:function(){var Ce=[];return this.eachBefore(function(ne){ne.children||Ce.push(ne)}),Ce},links:function(){var Ce=this,ne=[];return Ce.each(function(ue){ue!==Ce&&ne.push({source:ue.parent,target:ue})}),ne},copy:function(){return f(this).eachBefore(t)}};var n=Array.prototype.slice;function o(Ce){for(var ne,ue,me=0,Te=(Ce=function(Ue){for(var De,je,ge=Ue.length;ge;)je=Math.random()*ge--|0,De=Ue[ge],Ue[ge]=Ue[je],Ue[je]=De;return Ue}(n.call(Ce))).length,Ee=[];me0&&ue*ue>me*me+Te*Te}function c(Ce,ne){for(var ue=0;ue(Ue*=Ue)?(me=(ge+Ue-Te)/(2*ge),Ee=Math.sqrt(Math.max(0,Ue/ge-me*me)),ue.x=Ce.x-me*De-Ee*je,ue.y=Ce.y-me*je+Ee*De):(me=(ge+Te-Ue)/(2*ge),Ee=Math.sqrt(Math.max(0,Te/ge-me*me)),ue.x=ne.x+me*De-Ee*je,ue.y=ne.y+me*je+Ee*De)):(ue.x=ne.x+ue.r,ue.y=ne.y)}function g(Ce,ne){var ue=Ce.r+ne.r-1e-6,me=ne.x-Ce.x,Te=ne.y-Ce.y;return ue>0&&ue*ue>me*me+Te*Te}function m(Ce){var ne=Ce._,ue=Ce.next._,me=ne.r+ue.r,Te=(ne.x*ue.r+ue.x*ne.r)/me,Ee=(ne.y*ue.r+ue.y*ne.r)/me;return Te*Te+Ee*Ee}function k(Ce){this._=Ce,this.next=null,this.previous=null}function h(Ce){if(!(Te=Ce.length))return 0;var ne,ue,me,Te,Ee,Ue,De,je,ge,be,Se;if((ne=Ce[0]).x=0,ne.y=0,!(Te>1))return ne.r;if(ue=Ce[1],ne.x=-ue.r,ue.x=ne.r,ue.y=0,!(Te>2))return ne.r+ue.r;x(ue,ne,me=Ce[2]),ne=new k(ne),ue=new k(ue),me=new k(me),ne.next=me.previous=ue,ue.next=ne.previous=me,me.next=ue.previous=ne;e:for(De=3;De0)throw new Error("cycle");return Ue}return ue.id=function(me){return arguments.length?(Ce=C(me),ue):Ce},ue.parentId=function(me){return arguments.length?(ne=C(me),ue):ne},ue}function K(Ce,ne){return Ce.parent===ne.parent?1:2}function te(Ce){var ne=Ce.children;return ne?ne[0]:Ce.t}function ae(Ce){var ne=Ce.children;return ne?ne[ne.length-1]:Ce.t}function oe(Ce,ne,ue){var me=ue/(ne.i-Ce.i);ne.c-=me,ne.s+=ue,Ce.c+=me,ne.z+=ue,ne.m+=ue}function se(Ce,ne,ue){return Ce.a.parent===ne.parent?Ce.a:ue}function fe(Ce,ne){this._=Ce,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=ne}function ye(){var Ce=K,ne=1,ue=1,me=null;function Te(je){var ge=function(ft){for(var yt,Et,Tt,xt,Dt,It=new fe(ft,0),Ft=[It];yt=Ft.pop();)if(Tt=yt._.children)for(yt.children=new Array(Dt=Tt.length),xt=Dt-1;xt>=0;--xt)Ft.push(Et=yt.children[xt]=new fe(Tt[xt],xt)),Et.parent=yt;return(It.parent=new fe(null,0)).children=[It],It}(je);if(ge.eachAfter(Ee),ge.parent.m=-ge.z,ge.eachBefore(Ue),me)je.eachBefore(De);else{var be=je,Se=je,Ne=je;je.eachBefore(function(ft){ft.xSe.x&&(Se=ft),ft.depth>Ne.depth&&(Ne=ft)});var Ye=be===Se?1:Ce(be,Se)/2,Ze=Ye-be.x,st=ne/(Se.x+Ye+Ze),ot=ue/(Ne.depth||1);je.eachBefore(function(ft){ft.x=(ft.x+Ze)*st,ft.y=ft.depth*ot})}return je}function Ee(je){var ge=je.children,be=je.parent.children,Se=je.i?be[je.i-1]:null;if(ge){(function(Ye){for(var Ze,st=0,ot=0,ft=Ye.children,yt=ft.length;--yt>=0;)(Ze=ft[yt]).z+=st,Ze.m+=st,st+=Ze.s+(ot+=Ze.c)})(je);var Ne=(ge[0].z+ge[ge.length-1].z)/2;Se?(je.z=Se.z+Ce(je._,Se._),je.m=je.z-Ne):je.z=Ne}else Se&&(je.z=Se.z+Ce(je._,Se._));je.parent.A=function(Ye,Ze,st){if(Ze){for(var ot,ft=Ye,yt=Ye,Et=Ze,Tt=ft.parent.children[0],xt=ft.m,Dt=yt.m,It=Et.m,Ft=Tt.m;Et=ae(Et),ft=te(ft),Et&&ft;)Tt=te(Tt),(yt=ae(yt)).a=Ye,(ot=Et.z+It-ft.z-xt+Ce(Et._,ft._))>0&&(oe(se(Et,Ye,st),Ye,ot),xt+=ot,Dt+=ot),It+=Et.m,xt+=ft.m,Ft+=Tt.m,Dt+=yt.m;Et&&!ae(yt)&&(yt.t=Et,yt.m+=It-Dt),ft&&!te(Tt)&&(Tt.t=ft,Tt.m+=xt-Ft,st=Ye)}return st}(je,Se,je.parent.A||be[0])}function Ue(je){je._.x=je.z+je.parent.m,je.m+=je.parent.m}function De(je){je.x*=ne,je.y=je.depth*ue}return Te.separation=function(je){return arguments.length?(Ce=je,Te):Ce},Te.size=function(je){return arguments.length?(me=!1,ne=+je[0],ue=+je[1],Te):me?null:[ne,ue]},Te.nodeSize=function(je){return arguments.length?(me=!0,ne=+je[0],ue=+je[1],Te):me?[ne,ue]:null},Te}function pe(Ce,ne,ue,me,Te){for(var Ee,Ue=Ce.children,De=-1,je=Ue.length,ge=Ce.value&&(Te-ue)/Ce.value;++DeNe&&(Ne=De),ot=be*be*st,(Ye=Math.max(Ne/ot,ot/Se))>Ze){be-=De;break}Ze=Ye}ft.push(Ue={value:be,dice:je1?me:1)},ue}(de);function Re(){var Ce=xe,ne=!1,ue=1,me=1,Te=[0],Ee=L,Ue=L,De=L,je=L,ge=L;function be(Ne){return Ne.x0=Ne.y0=0,Ne.x1=ue,Ne.y1=me,Ne.eachBefore(Se),Te=[0],ne&&Ne.eachBefore(N),Ne}function Se(Ne){var Ye=Te[Ne.depth],Ze=Ne.x0+Ye,st=Ne.y0+Ye,ot=Ne.x1-Ye,ft=Ne.y1-Ye;ot=Ne-1){var yt=De[Se];return yt.x0=Ze,yt.y0=st,yt.x1=ot,void(yt.y1=ft)}for(var Et=ge[Se],Tt=Ye/2+Et,xt=Se+1,Dt=Ne-1;xt>>1;ge[It]ft-st){var Nt=(Ze*qt+ot*Ft)/Ye;be(Se,xt,Ft,Ze,st,Nt,ft),be(xt,Ne,qt,Nt,st,ot,ft)}else{var Je=(st*qt+ft*Ft)/Ye;be(Se,xt,Ft,Ze,st,ot,Je),be(xt,Ne,qt,Ze,Je,ot,ft)}})(0,je,Ce.value,ne,ue,me,Te)}function Ae(Ce,ne,ue,me,Te){(1&Ce.depth?pe:j)(Ce,ne,ue,me,Te)}var Me=function Ce(ne){function ue(me,Te,Ee,Ue,De){if((je=me._squarify)&&je.ratio===ne)for(var je,ge,be,Se,Ne,Ye=-1,Ze=je.length,st=me.value;++Ye1?me:1)},ue}(de)},45879:function(D,E,e){e.d(E,{h5:function(){return p}});var _=Math.PI,w=2*_,s=1e-6,T=w-s;function y(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function f(){return new y}y.prototype=f.prototype={constructor:y,moveTo:function(c,b){this._+="M"+(this._x0=this._x1=+c)+","+(this._y0=this._y1=+b)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(c,b){this._+="L"+(this._x1=+c)+","+(this._y1=+b)},quadraticCurveTo:function(c,b,d,v){this._+="Q"+ +c+","+ +b+","+(this._x1=+d)+","+(this._y1=+v)},bezierCurveTo:function(c,b,d,v,x,g){this._+="C"+ +c+","+ +b+","+ +d+","+ +v+","+(this._x1=+x)+","+(this._y1=+g)},arcTo:function(c,b,d,v,x){c=+c,b=+b,d=+d,v=+v,x=+x;var g=this._x1,m=this._y1,k=d-c,h=v-b,M=g-c,A=m-b,C=M*M+A*A;if(x<0)throw new Error("negative radius: "+x);if(this._x1===null)this._+="M"+(this._x1=c)+","+(this._y1=b);else if(C>s)if(Math.abs(A*k-h*M)>s&&x){var L=d-g,O=v-m,I=k*k+h*h,R=L*L+O*O,U=Math.sqrt(I),B=Math.sqrt(C),G=x*Math.tan((_-Math.acos((I+C-R)/(2*U*B)))/2),N=G/B,j=G/U;Math.abs(N-1)>s&&(this._+="L"+(c+N*M)+","+(b+N*A)),this._+="A"+x+","+x+",0,0,"+ +(A*L>M*O)+","+(this._x1=c+j*k)+","+(this._y1=b+j*h)}else this._+="L"+(this._x1=c)+","+(this._y1=b)},arc:function(c,b,d,v,x,g){c=+c,b=+b,g=!!g;var m=(d=+d)*Math.cos(v),k=d*Math.sin(v),h=c+m,M=b+k,A=1^g,C=g?v-x:x-v;if(d<0)throw new Error("negative radius: "+d);this._x1===null?this._+="M"+h+","+M:(Math.abs(this._x1-h)>s||Math.abs(this._y1-M)>s)&&(this._+="L"+h+","+M),d&&(C<0&&(C=C%w+w),C>T?this._+="A"+d+","+d+",0,1,"+A+","+(c-m)+","+(b-k)+"A"+d+","+d+",0,1,"+A+","+(this._x1=h)+","+(this._y1=M):C>s&&(this._+="A"+d+","+d+",0,"+ +(C>=_)+","+A+","+(this._x1=c+d*Math.cos(x))+","+(this._y1=b+d*Math.sin(x))))},rect:function(c,b,d,v){this._+="M"+(this._x0=this._x1=+c)+","+(this._y0=this._y1=+b)+"h"+ +d+"v"+ +v+"h"+-d+"Z"},toString:function(){return this._}};var l=f,t=Array.prototype.slice;function i(c){return function(){return c}}function r(c){return c[0]}function n(c){return c[1]}function o(c){return c.source}function a(c){return c.target}function u(c,b,d,v,x){c.moveTo(b,d),c.bezierCurveTo(b=(b+v)/2,d,b,x,v,x)}function p(){return function(c){var b=o,d=a,v=r,x=n,g=null;function m(){var k,h=t.call(arguments),M=b.apply(this,h),A=d.apply(this,h);if(g||(g=k=l()),c(g,+v.apply(this,(h[0]=M,h)),+x.apply(this,h),+v.apply(this,(h[0]=A,h)),+x.apply(this,h)),k)return g=null,k+""||null}return m.source=function(k){return arguments.length?(b=k,m):b},m.target=function(k){return arguments.length?(d=k,m):d},m.x=function(k){return arguments.length?(v=typeof k=="function"?k:i(+k),m):v},m.y=function(k){return arguments.length?(x=typeof k=="function"?k:i(+k),m):x},m.context=function(k){return arguments.length?(g=k??null,m):g},m}(u)}},84096:function(D,E,e){e.d(E,{i$:function(){return o},Dq:function(){return r},g0:function(){return a}});var _=e(58176),w=e(48480),s=e(59879),T=e(82301),y=e(34823),f=e(79791);function l(xt){if(0<=xt.y&&xt.y<100){var Dt=new Date(-1,xt.m,xt.d,xt.H,xt.M,xt.S,xt.L);return Dt.setFullYear(xt.y),Dt}return new Date(xt.y,xt.m,xt.d,xt.H,xt.M,xt.S,xt.L)}function t(xt){if(0<=xt.y&&xt.y<100){var Dt=new Date(Date.UTC(-1,xt.m,xt.d,xt.H,xt.M,xt.S,xt.L));return Dt.setUTCFullYear(xt.y),Dt}return new Date(Date.UTC(xt.y,xt.m,xt.d,xt.H,xt.M,xt.S,xt.L))}function i(xt,Dt,It){return{y:xt,m:Dt,d:It,H:0,M:0,S:0,L:0}}function r(xt){var Dt=xt.dateTime,It=xt.date,Ft=xt.time,qt=xt.periods,Nt=xt.days,Je=xt.shortDays,Ke=xt.months,Ge=xt.shortMonths,nt=x(qt),ht=g(qt),Oe=x(Nt),Be=g(Nt),Qe=x(Je),ut=g(Je),pt=x(Ke),bt=g(Ke),Lt=x(Ge),Ct=g(Ge),mt={a:function(Gt){return Je[Gt.getDay()]},A:function(Gt){return Nt[Gt.getDay()]},b:function(Gt){return Ge[Gt.getMonth()]},B:function(Gt){return Ke[Gt.getMonth()]},c:null,d:Y,e:Y,f:se,H:K,I:te,j:ae,L:oe,m:fe,M:ye,p:function(Gt){return qt[+(Gt.getHours()>=12)]},q:function(Gt){return 1+~~(Gt.getMonth()/3)},Q:Et,s:Tt,S:pe,u:de,U:he,V:xe,w:Re,W:we,x:null,X:null,y:Ae,Y:Me,Z:Ce,"%":yt},Ot={a:function(Gt){return Je[Gt.getUTCDay()]},A:function(Gt){return Nt[Gt.getUTCDay()]},b:function(Gt){return Ge[Gt.getUTCMonth()]},B:function(Gt){return Ke[Gt.getUTCMonth()]},c:null,d:ne,e:ne,f:Ue,H:ue,I:me,j:Te,L:Ee,m:De,M:je,p:function(Gt){return qt[+(Gt.getUTCHours()>=12)]},q:function(Gt){return 1+~~(Gt.getUTCMonth()/3)},Q:Et,s:Tt,S:ge,u:be,U:Se,V:Ne,w:Ye,W:Ze,x:null,X:null,y:st,Y:ot,Z:ft,"%":yt},_t={a:function(Gt,Xt,Kt){var nn=Qe.exec(Xt.slice(Kt));return nn?(Gt.w=ut[nn[0].toLowerCase()],Kt+nn[0].length):-1},A:function(Gt,Xt,Kt){var nn=Oe.exec(Xt.slice(Kt));return nn?(Gt.w=Be[nn[0].toLowerCase()],Kt+nn[0].length):-1},b:function(Gt,Xt,Kt){var nn=Lt.exec(Xt.slice(Kt));return nn?(Gt.m=Ct[nn[0].toLowerCase()],Kt+nn[0].length):-1},B:function(Gt,Xt,Kt){var nn=pt.exec(Xt.slice(Kt));return nn?(Gt.m=bt[nn[0].toLowerCase()],Kt+nn[0].length):-1},c:function(Gt,Xt,Kt){return Wt(Gt,Dt,Xt,Kt)},d:U,e:U,f:H,H:G,I:G,j:B,L:V,m:R,M:N,p:function(Gt,Xt,Kt){var nn=nt.exec(Xt.slice(Kt));return nn?(Gt.p=ht[nn[0].toLowerCase()],Kt+nn[0].length):-1},q:I,Q,s:X,S:j,u:k,U:h,V:M,w:m,W:A,x:function(Gt,Xt,Kt){return Wt(Gt,It,Xt,Kt)},X:function(Gt,Xt,Kt){return Wt(Gt,Ft,Xt,Kt)},y:L,Y:C,Z:O,"%":ee};function Pt(Gt,Xt){return function(Kt){var nn,yn,ln,kn=[],Wn=-1,wn=0,on=Gt.length;for(Kt instanceof Date||(Kt=new Date(+Kt));++Wn53)return null;"w"in ln||(ln.w=1),"Z"in ln?(yn=(nn=t(i(ln.y,0,1))).getUTCDay(),nn=yn>4||yn===0?_.l6.ceil(nn):(0,_.l6)(nn),nn=w.Z.offset(nn,7*(ln.V-1)),ln.y=nn.getUTCFullYear(),ln.m=nn.getUTCMonth(),ln.d=nn.getUTCDate()+(ln.w+6)%7):(yn=(nn=l(i(ln.y,0,1))).getDay(),nn=yn>4||yn===0?s.wA.ceil(nn):(0,s.wA)(nn),nn=T.Z.offset(nn,7*(ln.V-1)),ln.y=nn.getFullYear(),ln.m=nn.getMonth(),ln.d=nn.getDate()+(ln.w+6)%7)}else("W"in ln||"U"in ln)&&("w"in ln||(ln.w="u"in ln?ln.u%7:"W"in ln?1:0),yn="Z"in ln?t(i(ln.y,0,1)).getUTCDay():l(i(ln.y,0,1)).getDay(),ln.m=0,ln.d="W"in ln?(ln.w+6)%7+7*ln.W-(yn+5)%7:ln.w+7*ln.U-(yn+6)%7);return"Z"in ln?(ln.H+=ln.Z/100|0,ln.M+=ln.Z%100,t(ln)):l(ln)}}function Wt(Gt,Xt,Kt,nn){for(var yn,ln,kn=0,Wn=Xt.length,wn=Kt.length;kn=wn)return-1;if((yn=Xt.charCodeAt(kn++))===37){if(yn=Xt.charAt(kn++),!(ln=_t[yn in u?Xt.charAt(kn++):yn])||(nn=ln(Gt,Kt,nn))<0)return-1}else if(yn!=Kt.charCodeAt(nn++))return-1}return nn}return mt.x=Pt(It,mt),mt.X=Pt(Ft,mt),mt.c=Pt(Dt,mt),Ot.x=Pt(It,Ot),Ot.X=Pt(Ft,Ot),Ot.c=Pt(Dt,Ot),{format:function(Gt){var Xt=Pt(Gt+="",mt);return Xt.toString=function(){return Gt},Xt},parse:function(Gt){var Xt=Bt(Gt+="",!1);return Xt.toString=function(){return Gt},Xt},utcFormat:function(Gt){var Xt=Pt(Gt+="",Ot);return Xt.toString=function(){return Gt},Xt},utcParse:function(Gt){var Xt=Bt(Gt+="",!0);return Xt.toString=function(){return Gt},Xt}}}var n,o,a,u={"-":"",_:" ",0:"0"},p=/^\s*\d+/,c=/^%/,b=/[\\^$*+?|[\]().{}]/g;function d(xt,Dt,It){var Ft=xt<0?"-":"",qt=(Ft?-xt:xt)+"",Nt=qt.length;return Ft+(Nt68?1900:2e3),It+Ft[0].length):-1}function O(xt,Dt,It){var Ft=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Dt.slice(It,It+6));return Ft?(xt.Z=Ft[1]?0:-(Ft[2]+(Ft[3]||"00")),It+Ft[0].length):-1}function I(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+1));return Ft?(xt.q=3*Ft[0]-3,It+Ft[0].length):-1}function R(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+2));return Ft?(xt.m=Ft[0]-1,It+Ft[0].length):-1}function U(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+2));return Ft?(xt.d=+Ft[0],It+Ft[0].length):-1}function B(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+3));return Ft?(xt.m=0,xt.d=+Ft[0],It+Ft[0].length):-1}function G(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+2));return Ft?(xt.H=+Ft[0],It+Ft[0].length):-1}function N(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+2));return Ft?(xt.M=+Ft[0],It+Ft[0].length):-1}function j(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+2));return Ft?(xt.S=+Ft[0],It+Ft[0].length):-1}function V(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+3));return Ft?(xt.L=+Ft[0],It+Ft[0].length):-1}function H(xt,Dt,It){var Ft=p.exec(Dt.slice(It,It+6));return Ft?(xt.L=Math.floor(Ft[0]/1e3),It+Ft[0].length):-1}function ee(xt,Dt,It){var Ft=c.exec(Dt.slice(It,It+1));return Ft?It+Ft[0].length:-1}function Q(xt,Dt,It){var Ft=p.exec(Dt.slice(It));return Ft?(xt.Q=+Ft[0],It+Ft[0].length):-1}function X(xt,Dt,It){var Ft=p.exec(Dt.slice(It));return Ft?(xt.s=+Ft[0],It+Ft[0].length):-1}function Y(xt,Dt){return d(xt.getDate(),Dt,2)}function K(xt,Dt){return d(xt.getHours(),Dt,2)}function te(xt,Dt){return d(xt.getHours()%12||12,Dt,2)}function ae(xt,Dt){return d(1+T.Z.count((0,y.Z)(xt),xt),Dt,3)}function oe(xt,Dt){return d(xt.getMilliseconds(),Dt,3)}function se(xt,Dt){return oe(xt,Dt)+"000"}function fe(xt,Dt){return d(xt.getMonth()+1,Dt,2)}function ye(xt,Dt){return d(xt.getMinutes(),Dt,2)}function pe(xt,Dt){return d(xt.getSeconds(),Dt,2)}function de(xt){var Dt=xt.getDay();return Dt===0?7:Dt}function he(xt,Dt){return d(s.OM.count((0,y.Z)(xt)-1,xt),Dt,2)}function xe(xt,Dt){var It=xt.getDay();return xt=It>=4||It===0?(0,s.bL)(xt):s.bL.ceil(xt),d(s.bL.count((0,y.Z)(xt),xt)+((0,y.Z)(xt).getDay()===4),Dt,2)}function Re(xt){return xt.getDay()}function we(xt,Dt){return d(s.wA.count((0,y.Z)(xt)-1,xt),Dt,2)}function Ae(xt,Dt){return d(xt.getFullYear()%100,Dt,2)}function Me(xt,Dt){return d(xt.getFullYear()%1e4,Dt,4)}function Ce(xt){var Dt=xt.getTimezoneOffset();return(Dt>0?"-":(Dt*=-1,"+"))+d(Dt/60|0,"0",2)+d(Dt%60,"0",2)}function ne(xt,Dt){return d(xt.getUTCDate(),Dt,2)}function ue(xt,Dt){return d(xt.getUTCHours(),Dt,2)}function me(xt,Dt){return d(xt.getUTCHours()%12||12,Dt,2)}function Te(xt,Dt){return d(1+w.Z.count((0,f.Z)(xt),xt),Dt,3)}function Ee(xt,Dt){return d(xt.getUTCMilliseconds(),Dt,3)}function Ue(xt,Dt){return Ee(xt,Dt)+"000"}function De(xt,Dt){return d(xt.getUTCMonth()+1,Dt,2)}function je(xt,Dt){return d(xt.getUTCMinutes(),Dt,2)}function ge(xt,Dt){return d(xt.getUTCSeconds(),Dt,2)}function be(xt){var Dt=xt.getUTCDay();return Dt===0?7:Dt}function Se(xt,Dt){return d(_.Ox.count((0,f.Z)(xt)-1,xt),Dt,2)}function Ne(xt,Dt){var It=xt.getUTCDay();return xt=It>=4||It===0?(0,_.hB)(xt):_.hB.ceil(xt),d(_.hB.count((0,f.Z)(xt),xt)+((0,f.Z)(xt).getUTCDay()===4),Dt,2)}function Ye(xt){return xt.getUTCDay()}function Ze(xt,Dt){return d(_.l6.count((0,f.Z)(xt)-1,xt),Dt,2)}function st(xt,Dt){return d(xt.getUTCFullYear()%100,Dt,2)}function ot(xt,Dt){return d(xt.getUTCFullYear()%1e4,Dt,4)}function ft(){return"+0000"}function yt(){return"%"}function Et(xt){return+xt}function Tt(xt){return Math.floor(+xt/1e3)}n=r({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),o=n.format,n.parse,a=n.utcFormat,n.utcParse},82301:function(D,E,e){e.d(E,{a:function(){return T}});var _=e(30052),w=e(54263),s=(0,_.Z)(function(y){y.setHours(0,0,0,0)},function(y,f){y.setDate(y.getDate()+f)},function(y,f){return(f-y-(f.getTimezoneOffset()-y.getTimezoneOffset())*w.yB)/w.UD},function(y){return y.getDate()-1});E.Z=s;var T=s.range},54263:function(D,E,e){e.d(E,{UD:function(){return T},Y2:function(){return s},Ym:function(){return _},iM:function(){return y},yB:function(){return w}});var _=1e3,w=6e4,s=36e5,T=864e5,y=6048e5},81041:function(D,E,e){e.r(E),e.d(E,{timeDay:function(){return p.Z},timeDays:function(){return p.a},timeFriday:function(){return c.mC},timeFridays:function(){return c.b$},timeHour:function(){return a},timeHours:function(){return u},timeInterval:function(){return _.Z},timeMillisecond:function(){return s},timeMilliseconds:function(){return T},timeMinute:function(){return r},timeMinutes:function(){return n},timeMonday:function(){return c.wA},timeMondays:function(){return c.bJ},timeMonth:function(){return d},timeMonths:function(){return v},timeSaturday:function(){return c.EY},timeSaturdays:function(){return c.Ff},timeSecond:function(){return l},timeSeconds:function(){return t},timeSunday:function(){return c.OM},timeSundays:function(){return c.vm},timeThursday:function(){return c.bL},timeThursdays:function(){return c.$t},timeTuesday:function(){return c.sy},timeTuesdays:function(){return c.aU},timeWednesday:function(){return c.zg},timeWednesdays:function(){return c.Ld},timeWeek:function(){return c.OM},timeWeeks:function(){return c.vm},timeYear:function(){return x.Z},timeYears:function(){return x.g},utcDay:function(){return C.Z},utcDays:function(){return C.y},utcFriday:function(){return L.QQ},utcFridays:function(){return L.fz},utcHour:function(){return M},utcHours:function(){return A},utcMillisecond:function(){return s},utcMilliseconds:function(){return T},utcMinute:function(){return m},utcMinutes:function(){return k},utcMonday:function(){return L.l6},utcMondays:function(){return L.$3},utcMonth:function(){return I},utcMonths:function(){return R},utcSaturday:function(){return L.g4},utcSaturdays:function(){return L.Q_},utcSecond:function(){return l},utcSeconds:function(){return t},utcSunday:function(){return L.Ox},utcSundays:function(){return L.SU},utcThursday:function(){return L.hB},utcThursdays:function(){return L.xj},utcTuesday:function(){return L.J1},utcTuesdays:function(){return L.DK},utcWednesday:function(){return L.b3},utcWednesdays:function(){return L.uy},utcWeek:function(){return L.Ox},utcWeeks:function(){return L.SU},utcYear:function(){return U.Z},utcYears:function(){return U.D}});var _=e(30052),w=(0,_.Z)(function(){},function(B,G){B.setTime(+B+G)},function(B,G){return G-B});w.every=function(B){return B=Math.floor(B),isFinite(B)&&B>0?B>1?(0,_.Z)(function(G){G.setTime(Math.floor(G/B)*B)},function(G,N){G.setTime(+G+N*B)},function(G,N){return(N-G)/B}):w:null};var s=w,T=w.range,y=e(54263),f=(0,_.Z)(function(B){B.setTime(B-B.getMilliseconds())},function(B,G){B.setTime(+B+G*y.Ym)},function(B,G){return(G-B)/y.Ym},function(B){return B.getUTCSeconds()}),l=f,t=f.range,i=(0,_.Z)(function(B){B.setTime(B-B.getMilliseconds()-B.getSeconds()*y.Ym)},function(B,G){B.setTime(+B+G*y.yB)},function(B,G){return(G-B)/y.yB},function(B){return B.getMinutes()}),r=i,n=i.range,o=(0,_.Z)(function(B){B.setTime(B-B.getMilliseconds()-B.getSeconds()*y.Ym-B.getMinutes()*y.yB)},function(B,G){B.setTime(+B+G*y.Y2)},function(B,G){return(G-B)/y.Y2},function(B){return B.getHours()}),a=o,u=o.range,p=e(82301),c=e(59879),b=(0,_.Z)(function(B){B.setDate(1),B.setHours(0,0,0,0)},function(B,G){B.setMonth(B.getMonth()+G)},function(B,G){return G.getMonth()-B.getMonth()+12*(G.getFullYear()-B.getFullYear())},function(B){return B.getMonth()}),d=b,v=b.range,x=e(34823),g=(0,_.Z)(function(B){B.setUTCSeconds(0,0)},function(B,G){B.setTime(+B+G*y.yB)},function(B,G){return(G-B)/y.yB},function(B){return B.getUTCMinutes()}),m=g,k=g.range,h=(0,_.Z)(function(B){B.setUTCMinutes(0,0,0)},function(B,G){B.setTime(+B+G*y.Y2)},function(B,G){return(G-B)/y.Y2},function(B){return B.getUTCHours()}),M=h,A=h.range,C=e(48480),L=e(58176),O=(0,_.Z)(function(B){B.setUTCDate(1),B.setUTCHours(0,0,0,0)},function(B,G){B.setUTCMonth(B.getUTCMonth()+G)},function(B,G){return G.getUTCMonth()-B.getUTCMonth()+12*(G.getUTCFullYear()-B.getUTCFullYear())},function(B){return B.getUTCMonth()}),I=O,R=O.range,U=e(79791)},30052:function(D,E,e){e.d(E,{Z:function(){return s}});var _=new Date,w=new Date;function s(T,y,f,l){function t(i){return T(i=arguments.length===0?new Date:new Date(+i)),i}return t.floor=function(i){return T(i=new Date(+i)),i},t.ceil=function(i){return T(i=new Date(i-1)),y(i,1),T(i),i},t.round=function(i){var r=t(i),n=t.ceil(i);return i-r0))return a;do a.push(o=new Date(+i)),y(i,n),T(i);while(o=r)for(;T(r),!i(r);)r.setTime(r-1)},function(r,n){if(r>=r)if(n<0)for(;++n<=0;)for(;y(r,-1),!i(r););else for(;--n>=0;)for(;y(r,1),!i(r););})},f&&(t.count=function(i,r){return _.setTime(+i),w.setTime(+r),T(_),T(w),Math.floor(f(_,w))},t.every=function(i){return i=Math.floor(i),isFinite(i)&&i>0?i>1?t.filter(l?function(r){return l(r)%i==0}:function(r){return t.count(0,r)%i==0}):t:null}),t}},48480:function(D,E,e){e.d(E,{y:function(){return T}});var _=e(30052),w=e(54263),s=(0,_.Z)(function(y){y.setUTCHours(0,0,0,0)},function(y,f){y.setUTCDate(y.getUTCDate()+f)},function(y,f){return(f-y)/w.UD},function(y){return y.getUTCDate()-1});E.Z=s;var T=s.range},58176:function(D,E,e){e.d(E,{$3:function(){return o},DK:function(){return a},J1:function(){return f},Ox:function(){return T},QQ:function(){return i},Q_:function(){return b},SU:function(){return n},b3:function(){return l},fz:function(){return c},g4:function(){return r},hB:function(){return t},l6:function(){return y},uy:function(){return u},xj:function(){return p}});var _=e(30052),w=e(54263);function s(d){return(0,_.Z)(function(v){v.setUTCDate(v.getUTCDate()-(v.getUTCDay()+7-d)%7),v.setUTCHours(0,0,0,0)},function(v,x){v.setUTCDate(v.getUTCDate()+7*x)},function(v,x){return(x-v)/w.iM})}var T=s(0),y=s(1),f=s(2),l=s(3),t=s(4),i=s(5),r=s(6),n=T.range,o=y.range,a=f.range,u=l.range,p=t.range,c=i.range,b=r.range},79791:function(D,E,e){e.d(E,{D:function(){return s}});var _=e(30052),w=(0,_.Z)(function(T){T.setUTCMonth(0,1),T.setUTCHours(0,0,0,0)},function(T,y){T.setUTCFullYear(T.getUTCFullYear()+y)},function(T,y){return y.getUTCFullYear()-T.getUTCFullYear()},function(T){return T.getUTCFullYear()});w.every=function(T){return isFinite(T=Math.floor(T))&&T>0?(0,_.Z)(function(y){y.setUTCFullYear(Math.floor(y.getUTCFullYear()/T)*T),y.setUTCMonth(0,1),y.setUTCHours(0,0,0,0)},function(y,f){y.setUTCFullYear(y.getUTCFullYear()+f*T)}):null},E.Z=w;var s=w.range},59879:function(D,E,e){e.d(E,{$t:function(){return p},EY:function(){return r},Ff:function(){return b},Ld:function(){return u},OM:function(){return T},aU:function(){return a},b$:function(){return c},bJ:function(){return o},bL:function(){return t},mC:function(){return i},sy:function(){return f},vm:function(){return n},wA:function(){return y},zg:function(){return l}});var _=e(30052),w=e(54263);function s(d){return(0,_.Z)(function(v){v.setDate(v.getDate()-(v.getDay()+7-d)%7),v.setHours(0,0,0,0)},function(v,x){v.setDate(v.getDate()+7*x)},function(v,x){return(x-v-(x.getTimezoneOffset()-v.getTimezoneOffset())*w.yB)/w.iM})}var T=s(0),y=s(1),f=s(2),l=s(3),t=s(4),i=s(5),r=s(6),n=T.range,o=y.range,a=f.range,u=l.range,p=t.range,c=i.range,b=r.range},34823:function(D,E,e){e.d(E,{g:function(){return s}});var _=e(30052),w=(0,_.Z)(function(T){T.setMonth(0,1),T.setHours(0,0,0,0)},function(T,y){T.setFullYear(T.getFullYear()+y)},function(T,y){return y.getFullYear()-T.getFullYear()},function(T){return T.getFullYear()});w.every=function(T){return isFinite(T=Math.floor(T))&&T>0?(0,_.Z)(function(y){y.setFullYear(Math.floor(y.getFullYear()/T)*T),y.setMonth(0,1),y.setHours(0,0,0,0)},function(y,f){y.setFullYear(y.getFullYear()+f*T)}):null},E.Z=w;var s=w.range},17045:function(D,E,e){var _=e(8709),w=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",s=Object.prototype.toString,T=Array.prototype.concat,y=Object.defineProperty,f=e(55622)(),l=y&&f,t=function(r,n,o,a){if(n in r){if(a===!0){if(r[n]===o)return}else if(typeof(u=a)!="function"||s.call(u)!=="[object Function]"||!a())return}var u;l?y(r,n,{configurable:!0,enumerable:!1,value:o,writable:!0}):r[n]=o},i=function(r,n){var o=arguments.length>2?arguments[2]:{},a=_(n);w&&(a=T.call(a,Object.getOwnPropertySymbols(n)));for(var u=0;ul*t){var a=(o-n)/l;f[r]=1e3*a}}return f}function w(s){for(var T=[],y=s[0];y<=s[1];y++)for(var f=String.fromCharCode(y),l=s[0];l0)return function(w,s){var T,y;for(T=new Array(w),y=0;y80*C){L=I=M[0],O=R=M[1];for(var ee=C;eeI&&(I=U),B>R&&(R=B);G=(G=Math.max(I-L,R-O))!==0?1/G:0}return w(V,H,C,L,O,G),H}function e(M,A,C,L,O){var I,R;if(O===h(M,A,C,L)>0)for(I=A;I=A;I-=L)R=g(I,M[I],M[I+1],R);return R&&p(R,R.next)&&(m(R),R=R.next),R}function _(M,A){if(!M)return M;A||(A=M);var C,L=M;do if(C=!1,L.steiner||!p(L,L.next)&&u(L.prev,L,L.next)!==0)L=L.next;else{if(m(L),(L=A=L.prev)===L.next)break;C=!0}while(C||L!==A);return A}function w(M,A,C,L,O,I,R){if(M){!R&&I&&function(N,j,V,H){var ee=N;do ee.z===null&&(ee.z=r(ee.x,ee.y,j,V,H)),ee.prevZ=ee.prev,ee.nextZ=ee.next,ee=ee.next;while(ee!==N);ee.prevZ.nextZ=null,ee.prevZ=null,function(Q){var X,Y,K,te,ae,oe,se,fe,ye=1;do{for(Y=Q,Q=null,ae=null,oe=0;Y;){for(oe++,K=Y,se=0,X=0;X0||fe>0&&K;)se!==0&&(fe===0||!K||Y.z<=K.z)?(te=Y,Y=Y.nextZ,se--):(te=K,K=K.nextZ,fe--),ae?ae.nextZ=te:Q=te,te.prevZ=ae,ae=te;Y=K}ae.nextZ=null,ye*=2}while(oe>1)}(ee)}(M,L,O,I);for(var U,B,G=M;M.prev!==M.next;)if(U=M.prev,B=M.next,I?T(M,L,O,I):s(M))A.push(U.i/C),A.push(M.i/C),A.push(B.i/C),m(M),M=B.next,G=B.next;else if((M=B)===G){R?R===1?w(M=y(_(M),A,C),A,C,L,O,I,2):R===2&&f(M,A,C,L,O,I):w(_(M),A,C,L,O,I,1);break}}}function s(M){var A=M.prev,C=M,L=M.next;if(u(A,C,L)>=0)return!1;for(var O=M.next.next;O!==M.prev;){if(o(A.x,A.y,C.x,C.y,L.x,L.y,O.x,O.y)&&u(O.prev,O,O.next)>=0)return!1;O=O.next}return!0}function T(M,A,C,L){var O=M.prev,I=M,R=M.next;if(u(O,I,R)>=0)return!1;for(var U=O.xI.x?O.x>R.x?O.x:R.x:I.x>R.x?I.x:R.x,N=O.y>I.y?O.y>R.y?O.y:R.y:I.y>R.y?I.y:R.y,j=r(U,B,A,C,L),V=r(G,N,A,C,L),H=M.prevZ,ee=M.nextZ;H&&H.z>=j&&ee&&ee.z<=V;){if(H!==M.prev&&H!==M.next&&o(O.x,O.y,I.x,I.y,R.x,R.y,H.x,H.y)&&u(H.prev,H,H.next)>=0||(H=H.prevZ,ee!==M.prev&&ee!==M.next&&o(O.x,O.y,I.x,I.y,R.x,R.y,ee.x,ee.y)&&u(ee.prev,ee,ee.next)>=0))return!1;ee=ee.nextZ}for(;H&&H.z>=j;){if(H!==M.prev&&H!==M.next&&o(O.x,O.y,I.x,I.y,R.x,R.y,H.x,H.y)&&u(H.prev,H,H.next)>=0)return!1;H=H.prevZ}for(;ee&&ee.z<=V;){if(ee!==M.prev&&ee!==M.next&&o(O.x,O.y,I.x,I.y,R.x,R.y,ee.x,ee.y)&&u(ee.prev,ee,ee.next)>=0)return!1;ee=ee.nextZ}return!0}function y(M,A,C){var L=M;do{var O=L.prev,I=L.next.next;!p(O,I)&&c(O,L,L.next,I)&&v(O,I)&&v(I,O)&&(A.push(O.i/C),A.push(L.i/C),A.push(I.i/C),m(L),m(L.next),L=M=I),L=L.next}while(L!==M);return _(L)}function f(M,A,C,L,O,I){var R=M;do{for(var U=R.next.next;U!==R.prev;){if(R.i!==U.i&&a(R,U)){var B=x(R,U);return R=_(R,R.next),B=_(B,B.next),w(R,A,C,L,O,I),void w(B,A,C,L,O,I)}U=U.next}R=R.next}while(R!==M)}function l(M,A){return M.x-A.x}function t(M,A){if(A=function(L,O){var I,R=O,U=L.x,B=L.y,G=-1/0;do{if(B<=R.y&&B>=R.next.y&&R.next.y!==R.y){var N=R.x+(B-R.y)*(R.next.x-R.x)/(R.next.y-R.y);if(N<=U&&N>G){if(G=N,N===U){if(B===R.y)return R;if(B===R.next.y)return R.next}I=R.x=R.x&&R.x>=H&&U!==R.x&&o(BI.x||R.x===I.x&&i(I,R)))&&(I=R,Q=j)),R=R.next;while(R!==V);return I}(M,A),A){var C=x(A,M);_(A,A.next),_(C,C.next)}}function i(M,A){return u(M.prev,M,A.prev)<0&&u(A.next,M,M.next)<0}function r(M,A,C,L,O){return(M=1431655765&((M=858993459&((M=252645135&((M=16711935&((M=32767*(M-C)*O)|M<<8))|M<<4))|M<<2))|M<<1))|(A=1431655765&((A=858993459&((A=252645135&((A=16711935&((A=32767*(A-L)*O)|A<<8))|A<<4))|A<<2))|A<<1))<<1}function n(M){var A=M,C=M;do(A.x=0&&(M-R)*(L-U)-(C-R)*(A-U)>=0&&(C-R)*(I-U)-(O-R)*(L-U)>=0}function a(M,A){return M.next.i!==A.i&&M.prev.i!==A.i&&!function(C,L){var O=C;do{if(O.i!==C.i&&O.next.i!==C.i&&O.i!==L.i&&O.next.i!==L.i&&c(O,O.next,C,L))return!0;O=O.next}while(O!==C);return!1}(M,A)&&(v(M,A)&&v(A,M)&&function(C,L){var O=C,I=!1,R=(C.x+L.x)/2,U=(C.y+L.y)/2;do O.y>U!=O.next.y>U&&O.next.y!==O.y&&R<(O.next.x-O.x)*(U-O.y)/(O.next.y-O.y)+O.x&&(I=!I),O=O.next;while(O!==C);return I}(M,A)&&(u(M.prev,M,A.prev)||u(M,A.prev,A))||p(M,A)&&u(M.prev,M,M.next)>0&&u(A.prev,A,A.next)>0)}function u(M,A,C){return(A.y-M.y)*(C.x-A.x)-(A.x-M.x)*(C.y-A.y)}function p(M,A){return M.x===A.x&&M.y===A.y}function c(M,A,C,L){var O=d(u(M,A,C)),I=d(u(M,A,L)),R=d(u(C,L,M)),U=d(u(C,L,A));return O!==I&&R!==U||!(O!==0||!b(M,C,A))||!(I!==0||!b(M,L,A))||!(R!==0||!b(C,M,L))||!(U!==0||!b(C,A,L))}function b(M,A,C){return A.x<=Math.max(M.x,C.x)&&A.x>=Math.min(M.x,C.x)&&A.y<=Math.max(M.y,C.y)&&A.y>=Math.min(M.y,C.y)}function d(M){return M>0?1:M<0?-1:0}function v(M,A){return u(M.prev,M,M.next)<0?u(M,A,M.next)>=0&&u(M,M.prev,A)>=0:u(M,A,M.prev)<0||u(M,M.next,A)<0}function x(M,A){var C=new k(M.i,M.x,M.y),L=new k(A.i,A.x,A.y),O=M.next,I=A.prev;return M.next=A,A.prev=M,C.next=O,O.prev=C,L.next=C,C.prev=L,I.next=L,L.prev=I,L}function g(M,A,C,L){var O=new k(M,A,C);return L?(O.next=L.next,O.prev=L,L.next.prev=O,L.next=O):(O.prev=O,O.next=O),O}function m(M){M.next.prev=M.prev,M.prev.next=M.next,M.prevZ&&(M.prevZ.nextZ=M.nextZ),M.nextZ&&(M.nextZ.prevZ=M.prevZ)}function k(M,A,C){this.i=M,this.x=A,this.y=C,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function h(M,A,C,L){for(var O=0,I=A,R=C-L;I0&&(L+=M[O-1].length,C.holes.push(L))}return C}},2502:function(D,E,e){var _=e(68664);D.exports=function(w,s){var T,y=[],f=[],l=[],t={},i=[];function r(v){l[v]=!1,t.hasOwnProperty(v)&&Object.keys(t[v]).forEach(function(x){delete t[v][x],l[x]&&r(x)})}function n(v){var x,g,m=!1;for(f.push(v),l[v]=!0,x=0;x=C})})(v);for(var x,g=_(w).components.filter(function(C){return C.length>1}),m=1/0,k=0;k=55296&&v<=56319&&(k+=a[++p]),k=h?r.call(h,M,k,c):k,u?(n.value=k,o(b,c,n)):b[c]=k,++c;d=c}}if(d===void 0)for(d=T(a.length),u&&(b=new u(d)),p=0;p0?1:-1}},56247:function(D,E,e){var _=e(9953),w=Math.abs,s=Math.floor;D.exports=function(T){return isNaN(T)?0:(T=Number(T))!==0&&isFinite(T)?_(T)*s(w(T)):T}},35976:function(D,E,e){var _=e(56247),w=Math.max;D.exports=function(s){return w(0,_(s))}},67260:function(D,E,e){var _=e(78513),w=e(36672),s=Function.prototype.bind,T=Function.prototype.call,y=Object.keys,f=Object.prototype.propertyIsEnumerable;D.exports=function(l,t){return function(i,r){var n,o=arguments[2],a=arguments[3];return i=Object(w(i)),_(r),n=y(i),a&&n.sort(typeof a=="function"?s.call(a,i):void 0),typeof l!="function"&&(l=n[l]),T.call(l,n,function(u,p){return f.call(i,u)?T.call(r,o,i[u],u,i,p):t})}}},95879:function(D,E,e){D.exports=e(73583)()?Object.assign:e(34205)},73583:function(D){D.exports=function(){var E,e=Object.assign;return typeof e=="function"&&(e(E={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),E.foo+E.bar+E.trzy==="razdwatrzy")}},34205:function(D,E,e){var _=e(68700),w=e(36672),s=Math.max;D.exports=function(T,y){var f,l,t,i=s(arguments.length,2);for(T=Object(w(T)),t=function(r){try{T[r]=y[r]}catch(n){f||(f=n)}},l=1;l-1}},87963:function(D){var E=Object.prototype.toString,e=E.call("");D.exports=function(_){return typeof _=="string"||_&&typeof _=="object"&&(_ instanceof String||E.call(_)===e)||!1}},43043:function(D){var E=Object.create(null),e=Math.random;D.exports=function(){var _;do _=e().toString(36).slice(2);while(E[_]);return _}},32411:function(D,E,e){var _,w=e(1496),s=e(66741),T=e(62072),y=e(8260),f=e(95426),l=Object.defineProperty;_=D.exports=function(t,i){if(!(this instanceof _))throw new TypeError("Constructor requires 'new'");f.call(this,t),i=i?s.call(i,"key+value")?"key+value":s.call(i,"key")?"key":"value":"value",l(this,"__kind__",T("",i))},w&&w(_,f),delete _.prototype.constructor,_.prototype=Object.create(f.prototype,{_resolve:T(function(t){return this.__kind__==="value"?this.__list__[t]:this.__kind__==="key+value"?[t,this.__list__[t]]:t})}),l(_.prototype,y.toStringTag,T("c","Array Iterator"))},27515:function(D,E,e){var _=e(73051),w=e(78513),s=e(87963),T=e(66661),y=Array.isArray,f=Function.prototype.call,l=Array.prototype.some;D.exports=function(t,i){var r,n,o,a,u,p,c,b,d=arguments[2];if(y(t)||_(t)?r="array":s(t)?r="string":t=T(t),w(i),o=function(){a=!0},r!=="array")if(r!=="string")for(n=t.next();!n.done;){if(f.call(i,d,n.value,o),a)return;n=t.next()}else for(p=t.length,u=0;u=55296&&b<=56319&&(c+=t[++u]),f.call(i,d,c,o),!a);++u);else l.call(t,function(v){return f.call(i,d,v,o),a})}},66661:function(D,E,e){var _=e(73051),w=e(87963),s=e(32411),T=e(259),y=e(58095),f=e(8260).iterator;D.exports=function(l){return typeof y(l)[f]=="function"?l[f]():_(l)?new s(l):w(l)?new T(l):new s(l)}},95426:function(D,E,e){var _,w=e(16134),s=e(95879),T=e(78513),y=e(36672),f=e(62072),l=e(55174),t=e(8260),i=Object.defineProperty,r=Object.defineProperties;D.exports=_=function(n,o){if(!(this instanceof _))throw new TypeError("Constructor requires 'new'");r(this,{__list__:f("w",y(n)),__context__:f("w",o),__nextIndex__:f("w",0)}),o&&(T(o.on),o.on("_add",this._onAdd),o.on("_delete",this._onDelete),o.on("_clear",this._onClear))},delete _.prototype.constructor,r(_.prototype,s({_next:f(function(){var n;if(this.__list__)return this.__redo__&&(n=this.__redo__.shift())!==void 0?n:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(o,a){o>=n&&(this.__redo__[a]=++o)},this),this.__redo__.push(n)):i(this,"__redo__",f("c",[n])))}),_onDelete:f(function(n){var o;n>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&((o=this.__redo__.indexOf(n))!==-1&&this.__redo__.splice(o,1),this.__redo__.forEach(function(a,u){a>n&&(this.__redo__[u]=--a)},this)))}),_onClear:f(function(){this.__redo__&&w.call(this.__redo__),this.__nextIndex__=0})}))),i(_.prototype,t.iterator,f(function(){return this}))},35940:function(D,E,e){var _=e(73051),w=e(95296),s=e(87963),T=e(8260).iterator,y=Array.isArray;D.exports=function(f){return!(!w(f)||!y(f)&&!s(f)&&!_(f)&&typeof f[T]!="function")}},259:function(D,E,e){var _,w=e(1496),s=e(62072),T=e(8260),y=e(95426),f=Object.defineProperty;_=D.exports=function(l){if(!(this instanceof _))throw new TypeError("Constructor requires 'new'");l=String(l),y.call(this,l),f(this,"__length__",s("",l.length))},w&&w(_,y),delete _.prototype.constructor,_.prototype=Object.create(y.prototype,{_next:s(function(){if(this.__list__)return this.__nextIndex__=55296&&t<=56319?i+this.__list__[this.__nextIndex__++]:i})}),f(_.prototype,T.toStringTag,s("c","String Iterator"))},58095:function(D,E,e){var _=e(35940);D.exports=function(w){if(!_(w))throw new TypeError(w+" is not iterable");return w}},73523:function(D){function E(e,_){if(e==null)throw new TypeError("Cannot convert first argument to object");for(var w=Object(e),s=1;s0&&x.length>d&&!x.warned){x.warned=!0;var m=new Error("Possible EventEmitter memory leak detected. "+x.length+" "+String(p)+" listeners added. Use emitter.setMaxListeners() to increase limit");m.name="MaxListenersExceededWarning",m.emitter=u,m.type=p,m.count=x.length,g=m,console&&console.warn&&console.warn(g)}return u}function t(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function i(u,p,c){var b={fired:!1,wrapFn:void 0,target:u,type:p,listener:c},d=t.bind(b);return d.listener=c,b.wrapFn=d,d}function r(u,p,c){var b=u._events;if(b===void 0)return[];var d=b[p];return d===void 0?[]:typeof d=="function"?c?[d.listener||d]:[d]:c?function(v){for(var x=new Array(v.length),g=0;g0&&(v=p[0]),v instanceof Error)throw v;var x=new Error("Unhandled error."+(v?" ("+v.message+")":""));throw x.context=v,x}var g=d[u];if(g===void 0)return!1;if(typeof g=="function")_(g,this,p);else{var m=g.length,k=o(g,m);for(c=0;c=0;v--)if(c[v]===p||c[v].listener===p){x=c[v].listener,d=v;break}if(d<0)return this;d===0?c.shift():function(g,m){for(;m+1=0;b--)this.removeListener(u,p[b]);return this},s.prototype.listeners=function(u){return r(this,u,!0)},s.prototype.rawListeners=function(u){return r(this,u,!1)},s.listenerCount=function(u,p){return typeof u.listenerCount=="function"?u.listenerCount(p):n.call(u,p)},s.prototype.listenerCount=n,s.prototype.eventNames=function(){return this._eventsCount>0?E(this._events):[]}},60774:function(D){var E=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};D.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch{return E()}try{return __global__||E()}finally{delete Object.prototype.__global__}}()},94908:function(D,E,e){D.exports=e(51152)()?globalThis:e(60774)},51152:function(D){D.exports=function(){return typeof globalThis=="object"&&!!globalThis&&globalThis.Array===Array}},92770:function(D,E,e){var _=e(18546);D.exports=function(w){var s=typeof w;if(s==="string"){var T=w;if((w=+w)==0&&_(T))return!1}else if(s!=="number")return!1;return w-w<1}},30120:function(D,E,e){var _=e(90660);D.exports=function(w,s,T){if(!w)throw new TypeError("must specify data as first parameter");if(T=0|+(T||0),Array.isArray(w)&&w[0]&&typeof w[0][0]=="number"){var y,f,l,t,i=w[0].length,r=w.length*i;s&&typeof s!="string"||(s=new(_(s||"float32"))(r+T));var n=s.length-T;if(r!==n)throw new Error("source length "+r+" ("+i+"x"+w.length+") does not match destination length "+n);for(y=0,l=T;yT[0]-l[0]/2&&(a=l[0]/2,u+=l[1]);return y}},32879:function(D){function E(s,T){T||(T={}),(typeof s=="string"||Array.isArray(s))&&(T.family=s);var y=Array.isArray(T.family)?T.family.join(", "):T.family;if(!y)throw Error("`family` must be defined");var f=T.size||T.fontSize||T.em||48,l=T.weight||T.fontWeight||"",t=(s=[T.style||T.fontStyle||"",l,f].join(" ")+"px "+y,T.origin||"top");if(E.cache[y]&&f<=E.cache[y].em)return e(E.cache[y],t);var i=T.canvas||E.canvas,r=i.getContext("2d"),n={upper:T.upper!==void 0?T.upper:"H",lower:T.lower!==void 0?T.lower:"x",descent:T.descent!==void 0?T.descent:"p",ascent:T.ascent!==void 0?T.ascent:"h",tittle:T.tittle!==void 0?T.tittle:"i",overshoot:T.overshoot!==void 0?T.overshoot:"O"},o=Math.ceil(1.5*f);i.height=o,i.width=.5*o,r.font=s;var a="H",u={top:0};r.clearRect(0,0,o,o),r.textBaseline="top",r.fillStyle="black",r.fillText(a,0,0);var p=_(r.getImageData(0,0,o,o));r.clearRect(0,0,o,o),r.textBaseline="bottom",r.fillText(a,0,o);var c=_(r.getImageData(0,0,o,o));u.lineHeight=u.bottom=o-c+p,r.clearRect(0,0,o,o),r.textBaseline="alphabetic",r.fillText(a,0,o);var b=o-_(r.getImageData(0,0,o,o))-1+p;u.baseline=u.alphabetic=b,r.clearRect(0,0,o,o),r.textBaseline="middle",r.fillText(a,0,.5*o);var d=_(r.getImageData(0,0,o,o));u.median=u.middle=o-d-1+p-.5*o,r.clearRect(0,0,o,o),r.textBaseline="hanging",r.fillText(a,0,.5*o);var v=_(r.getImageData(0,0,o,o));u.hanging=o-v-1+p-.5*o,r.clearRect(0,0,o,o),r.textBaseline="ideographic",r.fillText(a,0,o);var x=_(r.getImageData(0,0,o,o));if(u.ideographic=o-x-1+p,n.upper&&(r.clearRect(0,0,o,o),r.textBaseline="top",r.fillText(n.upper,0,0),u.upper=_(r.getImageData(0,0,o,o)),u.capHeight=u.baseline-u.upper),n.lower&&(r.clearRect(0,0,o,o),r.textBaseline="top",r.fillText(n.lower,0,0),u.lower=_(r.getImageData(0,0,o,o)),u.xHeight=u.baseline-u.lower),n.tittle&&(r.clearRect(0,0,o,o),r.textBaseline="top",r.fillText(n.tittle,0,0),u.tittle=_(r.getImageData(0,0,o,o))),n.ascent&&(r.clearRect(0,0,o,o),r.textBaseline="top",r.fillText(n.ascent,0,0),u.ascent=_(r.getImageData(0,0,o,o))),n.descent&&(r.clearRect(0,0,o,o),r.textBaseline="top",r.fillText(n.descent,0,0),u.descent=w(r.getImageData(0,0,o,o))),n.overshoot){r.clearRect(0,0,o,o),r.textBaseline="top",r.fillText(n.overshoot,0,0);var g=w(r.getImageData(0,0,o,o));u.overshoot=g-b}for(var m in u)u[m]/=f;return u.em=f,E.cache[y]=u,e(u,t)}function e(s,T){var y={};for(var f in typeof T=="string"&&(T=s[T]),s)f!=="em"&&(y[f]=s[f]-T);return y}function _(s){for(var T=s.height,y=s.data,f=3;f0;f-=4)if(y[f]!==0)return Math.floor(.25*(f-3)/T)}D.exports=E,E.canvas=document.createElement("canvas"),E.cache={}},31353:function(D,E,e){var _=e(85395),w=Object.prototype.toString,s=Object.prototype.hasOwnProperty,T=function(l,t,i){for(var r=0,n=l.length;r=3&&(r=i),w.call(l)==="[object Array]"?T(l,t,r):typeof l=="string"?y(l,t,r):f(l,t,r)}},73047:function(D){var E="Function.prototype.bind called on incompatible ",e=Array.prototype.slice,_=Object.prototype.toString,w="[object Function]";D.exports=function(s){var T=this;if(typeof T!="function"||_.call(T)!==w)throw new TypeError(E+T);for(var y,f=e.call(arguments,1),l=function(){if(this instanceof y){var o=T.apply(this,f.concat(e.call(arguments)));return Object(o)===o?o:this}return T.apply(s,f.concat(e.call(arguments)))},t=Math.max(0,T.length-f.length),i=[],r=0;r"u"&&!e.canvas)return null;var _=e.canvas||document.createElement("canvas");typeof e.width=="number"&&(_.width=e.width),typeof e.height=="number"&&(_.height=e.height);var w,s=e;try{var T=[E];E.indexOf("webgl")===0&&T.push("experimental-"+E);for(var y=0;y"u"?_:r(Uint8Array),a={"%AggregateError%":typeof AggregateError>"u"?_:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?_:ArrayBuffer,"%ArrayIteratorPrototype%":i?r([][Symbol.iterator]()):_,"%AsyncFromSyncIteratorPrototype%":_,"%AsyncFunction%":n,"%AsyncGenerator%":n,"%AsyncGeneratorFunction%":n,"%AsyncIteratorPrototype%":n,"%Atomics%":typeof Atomics>"u"?_:Atomics,"%BigInt%":typeof BigInt>"u"?_:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?_:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?_:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?_:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?_:Float32Array,"%Float64Array%":typeof Float64Array>"u"?_:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?_:FinalizationRegistry,"%Function%":s,"%GeneratorFunction%":n,"%Int8Array%":typeof Int8Array>"u"?_:Int8Array,"%Int16Array%":typeof Int16Array>"u"?_:Int16Array,"%Int32Array%":typeof Int32Array>"u"?_:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":i?r(r([][Symbol.iterator]())):_,"%JSON%":typeof JSON=="object"?JSON:_,"%Map%":typeof Map>"u"?_:Map,"%MapIteratorPrototype%":typeof Map<"u"&&i?r(new Map()[Symbol.iterator]()):_,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?_:Promise,"%Proxy%":typeof Proxy>"u"?_:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?_:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?_:Set,"%SetIteratorPrototype%":typeof Set<"u"&&i?r(new Set()[Symbol.iterator]()):_,"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?_:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":i?r(""[Symbol.iterator]()):_,"%Symbol%":i?Symbol:_,"%SyntaxError%":w,"%ThrowTypeError%":t,"%TypedArray%":o,"%TypeError%":T,"%Uint8Array%":typeof Uint8Array>"u"?_:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?_:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?_:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?_:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?_:WeakMap,"%WeakRef%":typeof WeakRef>"u"?_:WeakRef,"%WeakSet%":typeof WeakSet>"u"?_:WeakSet};try{null.error}catch(L){var u=r(r(L));a["%Error.prototype%"]=u}var p=function L(O){var I;if(O==="%AsyncFunction%")I=y("async function () {}");else if(O==="%GeneratorFunction%")I=y("function* () {}");else if(O==="%AsyncGeneratorFunction%")I=y("async function* () {}");else if(O==="%AsyncGenerator%"){var R=L("%AsyncGeneratorFunction%");R&&(I=R.prototype)}else if(O==="%AsyncIteratorPrototype%"){var U=L("%AsyncGenerator%");U&&(I=r(U.prototype))}return a[O]=I,I},c={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},b=e(77575),d=e(35065),v=b.call(Function.call,Array.prototype.concat),x=b.call(Function.apply,Array.prototype.splice),g=b.call(Function.call,String.prototype.replace),m=b.call(Function.call,String.prototype.slice),k=b.call(Function.call,RegExp.prototype.exec),h=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,M=/\\(\\)?/g,A=function(L){var O=m(L,0,1),I=m(L,-1);if(O==="%"&&I!=="%")throw new w("invalid intrinsic syntax, expected closing `%`");if(I==="%"&&O!=="%")throw new w("invalid intrinsic syntax, expected opening `%`");var R=[];return g(L,h,function(U,B,G,N){R[R.length]=G?g(N,M,"$1"):B||U}),R},C=function(L,O){var I,R=L;if(d(c,R)&&(R="%"+(I=c[R])[0]+"%"),d(a,R)){var U=a[R];if(U===n&&(U=p(R)),U===void 0&&!O)throw new T("intrinsic "+L+" exists, but is not available. Please file an issue!");return{alias:I,name:R,value:U}}throw new w("intrinsic "+L+" does not exist!")};D.exports=function(L,O){if(typeof L!="string"||L.length===0)throw new T("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof O!="boolean")throw new T('"allowMissing" argument must be a boolean');if(k(/^%?[^%]*%?$/,L)===null)throw new w("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var I=A(L),R=I.length>0?I[0]:"",U=C("%"+R+"%",O),B=U.name,G=U.value,N=!1,j=U.alias;j&&(R=j[0],x(I,v([0,1],j)));for(var V=1,H=!0;V=I.length){var Y=f(G,ee);G=(H=!!Y)&&"get"in Y&&!("originalValue"in Y.get)?Y.get:G[ee]}else H=d(G,ee),G=G[ee];H&&!N&&(a[B]=G)}}return G}},85400:function(D){D.exports=function(E,e){var _=e[0],w=e[1],s=e[2],T=e[3],y=e[4],f=e[5],l=e[6],t=e[7],i=e[8],r=e[9],n=e[10],o=e[11],a=e[12],u=e[13],p=e[14],c=e[15];return E[0]=f*(n*c-o*p)-r*(l*c-t*p)+u*(l*o-t*n),E[1]=-(w*(n*c-o*p)-r*(s*c-T*p)+u*(s*o-T*n)),E[2]=w*(l*c-t*p)-f*(s*c-T*p)+u*(s*t-T*l),E[3]=-(w*(l*o-t*n)-f*(s*o-T*n)+r*(s*t-T*l)),E[4]=-(y*(n*c-o*p)-i*(l*c-t*p)+a*(l*o-t*n)),E[5]=_*(n*c-o*p)-i*(s*c-T*p)+a*(s*o-T*n),E[6]=-(_*(l*c-t*p)-y*(s*c-T*p)+a*(s*t-T*l)),E[7]=_*(l*o-t*n)-y*(s*o-T*n)+i*(s*t-T*l),E[8]=y*(r*c-o*u)-i*(f*c-t*u)+a*(f*o-t*r),E[9]=-(_*(r*c-o*u)-i*(w*c-T*u)+a*(w*o-T*r)),E[10]=_*(f*c-t*u)-y*(w*c-T*u)+a*(w*t-T*f),E[11]=-(_*(f*o-t*r)-y*(w*o-T*r)+i*(w*t-T*f)),E[12]=-(y*(r*p-n*u)-i*(f*p-l*u)+a*(f*n-l*r)),E[13]=_*(r*p-n*u)-i*(w*p-s*u)+a*(w*n-s*r),E[14]=-(_*(f*p-l*u)-y*(w*p-s*u)+a*(w*l-s*f)),E[15]=_*(f*n-l*r)-y*(w*n-s*r)+i*(w*l-s*f),E}},42331:function(D){D.exports=function(E){var e=new Float32Array(16);return e[0]=E[0],e[1]=E[1],e[2]=E[2],e[3]=E[3],e[4]=E[4],e[5]=E[5],e[6]=E[6],e[7]=E[7],e[8]=E[8],e[9]=E[9],e[10]=E[10],e[11]=E[11],e[12]=E[12],e[13]=E[13],e[14]=E[14],e[15]=E[15],e}},31042:function(D){D.exports=function(E,e){return E[0]=e[0],E[1]=e[1],E[2]=e[2],E[3]=e[3],E[4]=e[4],E[5]=e[5],E[6]=e[6],E[7]=e[7],E[8]=e[8],E[9]=e[9],E[10]=e[10],E[11]=e[11],E[12]=e[12],E[13]=e[13],E[14]=e[14],E[15]=e[15],E}},11902:function(D){D.exports=function(){var E=new Float32Array(16);return E[0]=1,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=1,E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=1,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},89887:function(D){D.exports=function(E){var e=E[0],_=E[1],w=E[2],s=E[3],T=E[4],y=E[5],f=E[6],l=E[7],t=E[8],i=E[9],r=E[10],n=E[11],o=E[12],a=E[13],u=E[14],p=E[15];return(e*y-_*T)*(r*p-n*u)-(e*f-w*T)*(i*p-n*a)+(e*l-s*T)*(i*u-r*a)+(_*f-w*y)*(t*p-n*o)-(_*l-s*y)*(t*u-r*o)+(w*l-s*f)*(t*a-i*o)}},27812:function(D){D.exports=function(E,e){var _=e[0],w=e[1],s=e[2],T=e[3],y=_+_,f=w+w,l=s+s,t=_*y,i=w*y,r=w*f,n=s*y,o=s*f,a=s*l,u=T*y,p=T*f,c=T*l;return E[0]=1-r-a,E[1]=i+c,E[2]=n-p,E[3]=0,E[4]=i-c,E[5]=1-t-a,E[6]=o+u,E[7]=0,E[8]=n+p,E[9]=o-u,E[10]=1-t-r,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},34045:function(D){D.exports=function(E,e,_){var w,s,T,y=_[0],f=_[1],l=_[2],t=Math.sqrt(y*y+f*f+l*l);return Math.abs(t)<1e-6?null:(y*=t=1/t,f*=t,l*=t,w=Math.sin(e),T=1-(s=Math.cos(e)),E[0]=y*y*T+s,E[1]=f*y*T+l*w,E[2]=l*y*T-f*w,E[3]=0,E[4]=y*f*T-l*w,E[5]=f*f*T+s,E[6]=l*f*T+y*w,E[7]=0,E[8]=y*l*T+f*w,E[9]=f*l*T-y*w,E[10]=l*l*T+s,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E)}},45973:function(D){D.exports=function(E,e,_){var w=e[0],s=e[1],T=e[2],y=e[3],f=w+w,l=s+s,t=T+T,i=w*f,r=w*l,n=w*t,o=s*l,a=s*t,u=T*t,p=y*f,c=y*l,b=y*t;return E[0]=1-(o+u),E[1]=r+b,E[2]=n-c,E[3]=0,E[4]=r-b,E[5]=1-(i+u),E[6]=a+p,E[7]=0,E[8]=n+c,E[9]=a-p,E[10]=1-(i+o),E[11]=0,E[12]=_[0],E[13]=_[1],E[14]=_[2],E[15]=1,E}},81472:function(D){D.exports=function(E,e){return E[0]=e[0],E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=e[1],E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=e[2],E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},14669:function(D){D.exports=function(E,e){return E[0]=1,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=1,E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=1,E[11]=0,E[12]=e[0],E[13]=e[1],E[14]=e[2],E[15]=1,E}},75262:function(D){D.exports=function(E,e){var _=Math.sin(e),w=Math.cos(e);return E[0]=1,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=w,E[6]=_,E[7]=0,E[8]=0,E[9]=-_,E[10]=w,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},331:function(D){D.exports=function(E,e){var _=Math.sin(e),w=Math.cos(e);return E[0]=w,E[1]=0,E[2]=-_,E[3]=0,E[4]=0,E[5]=1,E[6]=0,E[7]=0,E[8]=_,E[9]=0,E[10]=w,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},11049:function(D){D.exports=function(E,e){var _=Math.sin(e),w=Math.cos(e);return E[0]=w,E[1]=_,E[2]=0,E[3]=0,E[4]=-_,E[5]=w,E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=1,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},75195:function(D){D.exports=function(E,e,_,w,s,T,y){var f=1/(_-e),l=1/(s-w),t=1/(T-y);return E[0]=2*T*f,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=2*T*l,E[6]=0,E[7]=0,E[8]=(_+e)*f,E[9]=(s+w)*l,E[10]=(y+T)*t,E[11]=-1,E[12]=0,E[13]=0,E[14]=y*T*2*t,E[15]=0,E}},71551:function(D){D.exports=function(E){return E[0]=1,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=1,E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=1,E[11]=0,E[12]=0,E[13]=0,E[14]=0,E[15]=1,E}},79576:function(D,E,e){D.exports={create:e(11902),clone:e(42331),copy:e(31042),identity:e(71551),transpose:e(88654),invert:e(95874),adjoint:e(85400),determinant:e(89887),multiply:e(91362),translate:e(31283),scale:e(10789),rotate:e(65074),rotateX:e(35545),rotateY:e(94918),rotateZ:e(15692),fromRotation:e(34045),fromRotationTranslation:e(45973),fromScaling:e(81472),fromTranslation:e(14669),fromXRotation:e(75262),fromYRotation:e(331),fromZRotation:e(11049),fromQuat:e(27812),frustum:e(75195),perspective:e(7864),perspectiveFromFieldOfView:e(35279),ortho:e(60378),lookAt:e(65551),str:e(6726)}},95874:function(D){D.exports=function(E,e){var _=e[0],w=e[1],s=e[2],T=e[3],y=e[4],f=e[5],l=e[6],t=e[7],i=e[8],r=e[9],n=e[10],o=e[11],a=e[12],u=e[13],p=e[14],c=e[15],b=_*f-w*y,d=_*l-s*y,v=_*t-T*y,x=w*l-s*f,g=w*t-T*f,m=s*t-T*l,k=i*u-r*a,h=i*p-n*a,M=i*c-o*a,A=r*p-n*u,C=r*c-o*u,L=n*c-o*p,O=b*L-d*C+v*A+x*M-g*h+m*k;return O?(O=1/O,E[0]=(f*L-l*C+t*A)*O,E[1]=(s*C-w*L-T*A)*O,E[2]=(u*m-p*g+c*x)*O,E[3]=(n*g-r*m-o*x)*O,E[4]=(l*M-y*L-t*h)*O,E[5]=(_*L-s*M+T*h)*O,E[6]=(p*v-a*m-c*d)*O,E[7]=(i*m-n*v+o*d)*O,E[8]=(y*C-f*M+t*k)*O,E[9]=(w*M-_*C-T*k)*O,E[10]=(a*g-u*v+c*b)*O,E[11]=(r*v-i*g-o*b)*O,E[12]=(f*h-y*A-l*k)*O,E[13]=(_*A-w*h+s*k)*O,E[14]=(u*d-a*x-p*b)*O,E[15]=(i*x-r*d+n*b)*O,E):null}},65551:function(D,E,e){var _=e(71551);D.exports=function(w,s,T,y){var f,l,t,i,r,n,o,a,u,p,c=s[0],b=s[1],d=s[2],v=y[0],x=y[1],g=y[2],m=T[0],k=T[1],h=T[2];return Math.abs(c-m)<1e-6&&Math.abs(b-k)<1e-6&&Math.abs(d-h)<1e-6?_(w):(o=c-m,a=b-k,u=d-h,f=x*(u*=p=1/Math.sqrt(o*o+a*a+u*u))-g*(a*=p),l=g*(o*=p)-v*u,t=v*a-x*o,(p=Math.sqrt(f*f+l*l+t*t))?(f*=p=1/p,l*=p,t*=p):(f=0,l=0,t=0),i=a*t-u*l,r=u*f-o*t,n=o*l-a*f,(p=Math.sqrt(i*i+r*r+n*n))?(i*=p=1/p,r*=p,n*=p):(i=0,r=0,n=0),w[0]=f,w[1]=i,w[2]=o,w[3]=0,w[4]=l,w[5]=r,w[6]=a,w[7]=0,w[8]=t,w[9]=n,w[10]=u,w[11]=0,w[12]=-(f*c+l*b+t*d),w[13]=-(i*c+r*b+n*d),w[14]=-(o*c+a*b+u*d),w[15]=1,w)}},91362:function(D){D.exports=function(E,e,_){var w=e[0],s=e[1],T=e[2],y=e[3],f=e[4],l=e[5],t=e[6],i=e[7],r=e[8],n=e[9],o=e[10],a=e[11],u=e[12],p=e[13],c=e[14],b=e[15],d=_[0],v=_[1],x=_[2],g=_[3];return E[0]=d*w+v*f+x*r+g*u,E[1]=d*s+v*l+x*n+g*p,E[2]=d*T+v*t+x*o+g*c,E[3]=d*y+v*i+x*a+g*b,d=_[4],v=_[5],x=_[6],g=_[7],E[4]=d*w+v*f+x*r+g*u,E[5]=d*s+v*l+x*n+g*p,E[6]=d*T+v*t+x*o+g*c,E[7]=d*y+v*i+x*a+g*b,d=_[8],v=_[9],x=_[10],g=_[11],E[8]=d*w+v*f+x*r+g*u,E[9]=d*s+v*l+x*n+g*p,E[10]=d*T+v*t+x*o+g*c,E[11]=d*y+v*i+x*a+g*b,d=_[12],v=_[13],x=_[14],g=_[15],E[12]=d*w+v*f+x*r+g*u,E[13]=d*s+v*l+x*n+g*p,E[14]=d*T+v*t+x*o+g*c,E[15]=d*y+v*i+x*a+g*b,E}},60378:function(D){D.exports=function(E,e,_,w,s,T,y){var f=1/(e-_),l=1/(w-s),t=1/(T-y);return E[0]=-2*f,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=-2*l,E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=2*t,E[11]=0,E[12]=(e+_)*f,E[13]=(s+w)*l,E[14]=(y+T)*t,E[15]=1,E}},7864:function(D){D.exports=function(E,e,_,w,s){var T=1/Math.tan(e/2),y=1/(w-s);return E[0]=T/_,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=T,E[6]=0,E[7]=0,E[8]=0,E[9]=0,E[10]=(s+w)*y,E[11]=-1,E[12]=0,E[13]=0,E[14]=2*s*w*y,E[15]=0,E}},35279:function(D){D.exports=function(E,e,_,w){var s=Math.tan(e.upDegrees*Math.PI/180),T=Math.tan(e.downDegrees*Math.PI/180),y=Math.tan(e.leftDegrees*Math.PI/180),f=Math.tan(e.rightDegrees*Math.PI/180),l=2/(y+f),t=2/(s+T);return E[0]=l,E[1]=0,E[2]=0,E[3]=0,E[4]=0,E[5]=t,E[6]=0,E[7]=0,E[8]=-(y-f)*l*.5,E[9]=(s-T)*t*.5,E[10]=w/(_-w),E[11]=-1,E[12]=0,E[13]=0,E[14]=w*_/(_-w),E[15]=0,E}},65074:function(D){D.exports=function(E,e,_,w){var s,T,y,f,l,t,i,r,n,o,a,u,p,c,b,d,v,x,g,m,k,h,M,A,C=w[0],L=w[1],O=w[2],I=Math.sqrt(C*C+L*L+O*O);return Math.abs(I)<1e-6?null:(C*=I=1/I,L*=I,O*=I,s=Math.sin(_),y=1-(T=Math.cos(_)),f=e[0],l=e[1],t=e[2],i=e[3],r=e[4],n=e[5],o=e[6],a=e[7],u=e[8],p=e[9],c=e[10],b=e[11],d=C*C*y+T,v=L*C*y+O*s,x=O*C*y-L*s,g=C*L*y-O*s,m=L*L*y+T,k=O*L*y+C*s,h=C*O*y+L*s,M=L*O*y-C*s,A=O*O*y+T,E[0]=f*d+r*v+u*x,E[1]=l*d+n*v+p*x,E[2]=t*d+o*v+c*x,E[3]=i*d+a*v+b*x,E[4]=f*g+r*m+u*k,E[5]=l*g+n*m+p*k,E[6]=t*g+o*m+c*k,E[7]=i*g+a*m+b*k,E[8]=f*h+r*M+u*A,E[9]=l*h+n*M+p*A,E[10]=t*h+o*M+c*A,E[11]=i*h+a*M+b*A,e!==E&&(E[12]=e[12],E[13]=e[13],E[14]=e[14],E[15]=e[15]),E)}},35545:function(D){D.exports=function(E,e,_){var w=Math.sin(_),s=Math.cos(_),T=e[4],y=e[5],f=e[6],l=e[7],t=e[8],i=e[9],r=e[10],n=e[11];return e!==E&&(E[0]=e[0],E[1]=e[1],E[2]=e[2],E[3]=e[3],E[12]=e[12],E[13]=e[13],E[14]=e[14],E[15]=e[15]),E[4]=T*s+t*w,E[5]=y*s+i*w,E[6]=f*s+r*w,E[7]=l*s+n*w,E[8]=t*s-T*w,E[9]=i*s-y*w,E[10]=r*s-f*w,E[11]=n*s-l*w,E}},94918:function(D){D.exports=function(E,e,_){var w=Math.sin(_),s=Math.cos(_),T=e[0],y=e[1],f=e[2],l=e[3],t=e[8],i=e[9],r=e[10],n=e[11];return e!==E&&(E[4]=e[4],E[5]=e[5],E[6]=e[6],E[7]=e[7],E[12]=e[12],E[13]=e[13],E[14]=e[14],E[15]=e[15]),E[0]=T*s-t*w,E[1]=y*s-i*w,E[2]=f*s-r*w,E[3]=l*s-n*w,E[8]=T*w+t*s,E[9]=y*w+i*s,E[10]=f*w+r*s,E[11]=l*w+n*s,E}},15692:function(D){D.exports=function(E,e,_){var w=Math.sin(_),s=Math.cos(_),T=e[0],y=e[1],f=e[2],l=e[3],t=e[4],i=e[5],r=e[6],n=e[7];return e!==E&&(E[8]=e[8],E[9]=e[9],E[10]=e[10],E[11]=e[11],E[12]=e[12],E[13]=e[13],E[14]=e[14],E[15]=e[15]),E[0]=T*s+t*w,E[1]=y*s+i*w,E[2]=f*s+r*w,E[3]=l*s+n*w,E[4]=t*s-T*w,E[5]=i*s-y*w,E[6]=r*s-f*w,E[7]=n*s-l*w,E}},10789:function(D){D.exports=function(E,e,_){var w=_[0],s=_[1],T=_[2];return E[0]=e[0]*w,E[1]=e[1]*w,E[2]=e[2]*w,E[3]=e[3]*w,E[4]=e[4]*s,E[5]=e[5]*s,E[6]=e[6]*s,E[7]=e[7]*s,E[8]=e[8]*T,E[9]=e[9]*T,E[10]=e[10]*T,E[11]=e[11]*T,E[12]=e[12],E[13]=e[13],E[14]=e[14],E[15]=e[15],E}},6726:function(D){D.exports=function(E){return"mat4("+E[0]+", "+E[1]+", "+E[2]+", "+E[3]+", "+E[4]+", "+E[5]+", "+E[6]+", "+E[7]+", "+E[8]+", "+E[9]+", "+E[10]+", "+E[11]+", "+E[12]+", "+E[13]+", "+E[14]+", "+E[15]+")"}},31283:function(D){D.exports=function(E,e,_){var w,s,T,y,f,l,t,i,r,n,o,a,u=_[0],p=_[1],c=_[2];return e===E?(E[12]=e[0]*u+e[4]*p+e[8]*c+e[12],E[13]=e[1]*u+e[5]*p+e[9]*c+e[13],E[14]=e[2]*u+e[6]*p+e[10]*c+e[14],E[15]=e[3]*u+e[7]*p+e[11]*c+e[15]):(w=e[0],s=e[1],T=e[2],y=e[3],f=e[4],l=e[5],t=e[6],i=e[7],r=e[8],n=e[9],o=e[10],a=e[11],E[0]=w,E[1]=s,E[2]=T,E[3]=y,E[4]=f,E[5]=l,E[6]=t,E[7]=i,E[8]=r,E[9]=n,E[10]=o,E[11]=a,E[12]=w*u+f*p+r*c+e[12],E[13]=s*u+l*p+n*c+e[13],E[14]=T*u+t*p+o*c+e[14],E[15]=y*u+i*p+a*c+e[15]),E}},88654:function(D){D.exports=function(E,e){if(E===e){var _=e[1],w=e[2],s=e[3],T=e[6],y=e[7],f=e[11];E[1]=e[4],E[2]=e[8],E[3]=e[12],E[4]=_,E[6]=e[9],E[7]=e[13],E[8]=w,E[9]=T,E[11]=e[14],E[12]=s,E[13]=y,E[14]=f}else E[0]=e[0],E[1]=e[4],E[2]=e[8],E[3]=e[12],E[4]=e[1],E[5]=e[5],E[6]=e[9],E[7]=e[13],E[8]=e[2],E[9]=e[6],E[10]=e[10],E[11]=e[14],E[12]=e[3],E[13]=e[7],E[14]=e[11],E[15]=e[15];return E}},42505:function(D,E,e){var _=e(72791),w=e(71299),s=e(98580),T=e(12018),y=e(83522),f=e(25075),l=e(68016),t=e(58404),i=e(18863),r=e(10973),n=e(25677),o=e(75686),a=e(53545),u=e(56131),p=e(32879),c=e(30120),b=e(13547).nextPow2,d=new y,v=!1;if(document.body){var x=document.body.appendChild(document.createElement("div"));x.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(x).fontStretch&&(v=!0),document.body.removeChild(x)}var g=function(m){(function(k){return typeof k=="function"&&k._gl&&k.prop&&k.texture&&k.buffer})(m)?(m={regl:m},this.gl=m.regl._gl):this.gl=T(m),this.shader=d.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=m.regl||s({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),d.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(r(m)?m:{})};g.prototype.createShader=function(){var m=this.regl,k=m({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:m.prop("count"),offset:m.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:m.this("sizeBuffer")},width:{offset:0,stride:8,buffer:m.this("sizeBuffer")},char:m.this("charBuffer"),position:m.this("position")},uniforms:{atlasSize:function(h,M){return[M.atlas.width,M.atlas.height]},atlasDim:function(h,M){return[M.atlas.cols,M.atlas.rows]},atlas:function(h,M){return M.atlas.texture},charStep:function(h,M){return M.atlas.step},em:function(h,M){return M.atlas.em},color:m.prop("color"),opacity:m.prop("opacity"),viewport:m.this("viewportArray"),scale:m.this("scale"),align:m.prop("align"),baseline:m.prop("baseline"),translate:m.this("translate"),positionOffset:m.prop("positionOffset")},primitive:"points",viewport:m.this("viewport"),vert:` + precision highp float; + attribute float width, charOffset, char; + attribute vec2 position; + uniform float fontSize, charStep, em, align, baseline; + uniform vec4 viewport; + uniform vec4 color; + uniform vec2 atlasSize, atlasDim, scale, translate, positionOffset; + varying vec2 charCoord, charId; + varying float charWidth; + varying vec4 fontColor; + void main () { + vec2 offset = floor(em * (vec2(align + charOffset, baseline) + + vec2(positionOffset.x, -positionOffset.y))) + / (viewport.zw * scale.xy); + + vec2 position = (position + translate) * scale; + position += offset * scale; + + charCoord = position * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2. - 1., 0, 1); + + gl_PointSize = charStep; + + charId.x = mod(char, atlasDim.x); + charId.y = floor(char / atlasDim.x); + + charWidth = width * em; + + fontColor = color / 255.; + }`,frag:` + precision highp float; + uniform float fontSize, charStep, opacity; + uniform vec2 atlasSize; + uniform vec4 viewport; + uniform sampler2D atlas; + varying vec4 fontColor; + varying vec2 charCoord, charId; + varying float charWidth; + + float lightness(vec4 color) { + return color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + } + + void main () { + vec2 uv = gl_FragCoord.xy - charCoord + charStep * .5; + float halfCharStep = floor(charStep * .5 + .5); + + // invert y and shift by 1px (FF expecially needs that) + uv.y = charStep - uv.y; + + // ignore points outside of character bounding box + float halfCharWidth = ceil(charWidth * .5); + if (floor(uv.x) > halfCharStep + halfCharWidth || + floor(uv.x) < halfCharStep - halfCharWidth) return; + + uv += charId * charStep; + uv = uv / atlasSize; + + vec4 color = fontColor; + vec4 mask = texture2D(atlas, uv); + + float maskY = lightness(mask); + // float colorY = lightness(color); + color.a *= maskY; + color.a *= opacity; + + // color.a += .1; + + // antialiasing, see yiq color space y-channel formula + // color.rgb += (1. - color.rgb) * (1. - mask.rgb); + + gl_FragColor = color; + }`});return{regl:m,draw:k,atlas:{}}},g.prototype.update=function(m){var k=this;if(typeof m=="string")m={text:m};else if(!m)return;(m=w(m,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0)).opacity!=null&&(Array.isArray(m.opacity)?this.opacity=m.opacity.map(function(ne){return parseFloat(ne)}):this.opacity=parseFloat(m.opacity)),m.viewport!=null&&(this.viewport=i(m.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),m.kerning!=null&&(this.kerning=m.kerning),m.offset!=null&&(typeof m.offset=="number"&&(m.offset=[m.offset,0]),this.positionOffset=c(m.offset)),m.direction&&(this.direction=m.direction),m.range&&(this.range=m.range,this.scale=[1/(m.range[2]-m.range[0]),1/(m.range[3]-m.range[1])],this.translate=[-m.range[0],-m.range[1]]),m.scale&&(this.scale=m.scale),m.translate&&(this.translate=m.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||m.font||(m.font=g.baseFontSize+"px sans-serif");var h,M=!1,A=!1;if(m.font&&(Array.isArray(m.font)?m.font:[m.font]).forEach(function(ne,ue){if(typeof ne=="string")try{ne=_.parse(ne)}catch{ne=_.parse(g.baseFontSize+"px "+ne)}else ne=_.parse(_.stringify(ne));var me=_.stringify({size:g.baseFontSize,family:ne.family,stretch:v?ne.stretch:void 0,variant:ne.variant,weight:ne.weight,style:ne.style}),Te=n(ne.size),Ee=Math.round(Te[0]*o(Te[1]));if(Ee!==k.fontSize[ue]&&(A=!0,k.fontSize[ue]=Ee),!(k.font[ue]&&me==k.font[ue].baseString||(M=!0,k.font[ue]=g.fonts[me],k.font[ue]))){var Ue=ne.family.join(", "),De=[ne.style];ne.style!=ne.variant&&De.push(ne.variant),ne.variant!=ne.weight&&De.push(ne.weight),v&&ne.weight!=ne.stretch&&De.push(ne.stretch),k.font[ue]={baseString:me,family:Ue,weight:ne.weight,stretch:ne.stretch,style:ne.style,variant:ne.variant,width:{},kerning:{},metrics:p(Ue,{origin:"top",fontSize:g.baseFontSize,fontStyle:De.join(" ")})},g.fonts[me]=k.font[ue]}}),(M||A)&&this.font.forEach(function(ne,ue){var me=_.stringify({size:k.fontSize[ue],family:ne.family,stretch:v?ne.stretch:void 0,variant:ne.variant,weight:ne.weight,style:ne.style});if(k.fontAtlas[ue]=k.shader.atlas[me],!k.fontAtlas[ue]){var Te=ne.metrics;k.shader.atlas[me]=k.fontAtlas[ue]={fontString:me,step:2*Math.ceil(k.fontSize[ue]*Te.bottom*.5),em:k.fontSize[ue],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:k.regl.texture()}}m.text==null&&(m.text=k.text)}),typeof m.text=="string"&&m.position&&m.position.length>2){for(var C=Array(.5*m.position.length),L=0;L2){for(var I=!m.position[0].length,R=t.mallocFloat(2*this.count),U=0,B=0;U1?k.align[ue]:k.align[0]:k.align;if(typeof me=="number")return me;switch(me){case"right":case"end":return-ne;case"center":case"centre":case"middle":return .5*-ne}return 0})),this.baseline==null&&m.baseline==null&&(m.baseline=0),m.baseline!=null&&(this.baseline=m.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(ne,ue){var me=(k.font[ue]||k.font[0]).metrics,Te=0;return Te+=.5*me.bottom,-1*(Te+=typeof ne=="number"?ne-me.baseline:-me[ne])})),m.color!=null)if(m.color||(m.color="transparent"),typeof m.color!="string"&&isNaN(m.color)){var de;if(typeof m.color[0]=="number"&&m.color.length>this.counts.length){var he=m.color.length;de=t.mallocUint8(he);for(var xe=(m.color.subarray||m.color.slice).bind(m.color),Re=0;Re4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var Me=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(Me);for(var Ce=0;Ce1?this.counts[Ce]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Ce]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*Ce,4*Ce+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Ce]:this.opacity,baseline:this.baselineOffset[Ce]!=null?this.baselineOffset[Ce]:this.baselineOffset[0],align:this.align?this.alignOffset[Ce]!=null?this.alignOffset[Ce]:this.alignOffset[0]:0,atlas:this.fontAtlas[Ce]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*Ce,2*Ce+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},g.prototype.destroy=function(){},g.prototype.kerning=!0,g.prototype.position={constant:new Float32Array(2)},g.prototype.translate=null,g.prototype.scale=null,g.prototype.font=null,g.prototype.text="",g.prototype.positionOffset=[0,0],g.prototype.opacity=1,g.prototype.color=new Uint8Array([0,0,0,255]),g.prototype.alignOffset=[0,0],g.maxAtlasSize=1024,g.atlasCanvas=document.createElement("canvas"),g.atlasContext=g.atlasCanvas.getContext("2d",{alpha:!1}),g.baseFontSize=64,g.fonts={},D.exports=g},12018:function(D,E,e){var _=e(71299);function w(y){if(y.container)if(y.container==document.body)document.body.style.width||(y.canvas.width=y.width||y.pixelRatio*e.g.innerWidth),document.body.style.height||(y.canvas.height=y.height||y.pixelRatio*e.g.innerHeight);else{var f=y.container.getBoundingClientRect();y.canvas.width=y.width||f.right-f.left,y.canvas.height=y.height||f.bottom-f.top}}function s(y){return typeof y.getContext=="function"&&"width"in y&&"height"in y}function T(){var y=document.createElement("canvas");return y.style.position="absolute",y.style.top=0,y.style.left=0,y}D.exports=function(y){var f;if(y?typeof y=="string"&&(y={container:y}):y={},(y=s(y)||typeof(f=y).nodeName=="string"&&typeof f.appendChild=="function"&&typeof f.getBoundingClientRect=="function"?{container:y}:function(t){return typeof t.drawArrays=="function"||typeof t.drawElements=="function"}(y)?{gl:y}:_(y,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0)).pixelRatio||(y.pixelRatio=e.g.pixelRatio||1),y.gl)return y.gl;if(y.canvas&&(y.container=y.canvas.parentNode),y.container){if(typeof y.container=="string"){var l=document.querySelector(y.container);if(!l)throw Error("Element "+y.container+" is not found");y.container=l}s(y.container)?(y.canvas=y.container,y.container=y.canvas.parentNode):y.canvas||(y.canvas=T(),y.container.appendChild(y.canvas),w(y))}else if(!y.canvas){if(typeof document>"u")throw Error("Not DOM environment. Use headless-gl.");y.container=document.body||document.documentElement,y.canvas=T(),y.container.appendChild(y.canvas),w(y)}return y.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(t){try{y.gl=y.canvas.getContext(t,y.attrs)}catch{}return y.gl}),y.gl}},56068:function(D){D.exports=function(E){typeof E=="string"&&(E=[E]);for(var e=[].slice.call(arguments,1),_=[],w=0;w>1,r=-7,n=w?T-1:0,o=w?-1:1,a=e[_+n];for(n+=o,y=a&(1<<-r)-1,a>>=-r,r+=l;r>0;y=256*y+e[_+n],n+=o,r-=8);for(f=y&(1<<-r)-1,y>>=-r,r+=s;r>0;f=256*f+e[_+n],n+=o,r-=8);if(y===0)y=1-i;else{if(y===t)return f?NaN:1/0*(a?-1:1);f+=Math.pow(2,s),y-=i}return(a?-1:1)*f*Math.pow(2,y-s)},E.write=function(e,_,w,s,T,y){var f,l,t,i=8*y-T-1,r=(1<>1,o=T===23?Math.pow(2,-24)-Math.pow(2,-77):0,a=s?0:y-1,u=s?1:-1,p=_<0||_===0&&1/_<0?1:0;for(_=Math.abs(_),isNaN(_)||_===1/0?(l=isNaN(_)?1:0,f=r):(f=Math.floor(Math.log(_)/Math.LN2),_*(t=Math.pow(2,-f))<1&&(f--,t*=2),(_+=f+n>=1?o/t:o*Math.pow(2,1-n))*t>=2&&(f++,t/=2),f+n>=r?(l=0,f=r):f+n>=1?(l=(_*t-1)*Math.pow(2,T),f+=n):(l=_*Math.pow(2,n-1)*Math.pow(2,T),f=0));T>=8;e[w+a]=255&l,a+=u,l/=256,T-=8);for(f=f<0;e[w+a]=255&f,a+=u,f/=256,i-=8);e[w+a-u]|=128*p}},42018:function(D){typeof Object.create=="function"?D.exports=function(E,e){e&&(E.super_=e,E.prototype=Object.create(e.prototype,{constructor:{value:E,enumerable:!1,writable:!0,configurable:!0}}))}:D.exports=function(E,e){if(e){E.super_=e;var _=function(){};_.prototype=e.prototype,E.prototype=new _,E.prototype.constructor=E}}},47216:function(D,E,e){var _=e(84543)(),w=e(6614)("Object.prototype.toString"),s=function(f){return!(_&&f&&typeof f=="object"&&Symbol.toStringTag in f)&&w(f)==="[object Arguments]"},T=function(f){return!!s(f)||f!==null&&typeof f=="object"&&typeof f.length=="number"&&f.length>=0&&w(f)!=="[object Array]"&&w(f.callee)==="[object Function]"},y=function(){return s(arguments)}();s.isLegacyArguments=T,D.exports=y?s:T},54404:function(D){D.exports=!0},85395:function(D){var E,e,_=Function.prototype.toString,w=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply;if(typeof w=="function"&&typeof Object.defineProperty=="function")try{E=Object.defineProperty({},"length",{get:function(){throw e}}),e={},w(function(){throw 42},null,E)}catch(n){n!==e&&(w=null)}else w=null;var s=/^\s*class\b/,T=function(n){try{var o=_.call(n);return s.test(o)}catch{return!1}},y=function(n){try{return!T(n)&&(_.call(n),!0)}catch{return!1}},f=Object.prototype.toString,l=typeof Symbol=="function"&&!!Symbol.toStringTag,t=!(0 in[,]),i=function(){return!1};if(typeof document=="object"){var r=document.all;f.call(r)===f.call(document.all)&&(i=function(n){if((t||!n)&&(n===void 0||typeof n=="object"))try{var o=f.call(n);return(o==="[object HTMLAllCollection]"||o==="[object HTML document.all class]"||o==="[object HTMLCollection]"||o==="[object Object]")&&n("")==null}catch{}return!1})}D.exports=w?function(n){if(i(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{w(n,null,E)}catch(o){if(o!==e)return!1}return!T(n)&&y(n)}:function(n){if(i(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(l)return y(n);if(T(n))return!1;var o=f.call(n);return!(o!=="[object Function]"&&o!=="[object GeneratorFunction]"&&!/^\[object HTML/.test(o))&&y(n)}},65481:function(D,E,e){var _,w=Object.prototype.toString,s=Function.prototype.toString,T=/^\s*(?:function)?\*/,y=e(84543)(),f=Object.getPrototypeOf;D.exports=function(l){if(typeof l!="function")return!1;if(T.test(s.call(l)))return!0;if(!y)return w.call(l)==="[object GeneratorFunction]";if(!f)return!1;if(_===void 0){var t=function(){if(!y)return!1;try{return Function("return function*() {}")()}catch{}}();_=!!t&&f(t)}return f(l)===_}},62683:function(D){D.exports=typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))},64274:function(D){D.exports=function(E){return E!=E}},15567:function(D,E,e){var _=e(68222),w=e(17045),s=e(64274),T=e(14922),y=e(22442),f=_(T(),Number);w(f,{getPolyfill:T,implementation:s,shim:y}),D.exports=f},14922:function(D,E,e){var _=e(64274);D.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:_}},22442:function(D,E,e){var _=e(17045),w=e(14922);D.exports=function(){var s=w();return _(Number,{isNaN:s},{isNaN:function(){return Number.isNaN!==s}}),s}},64941:function(D){D.exports=function(E){var e=typeof E;return E!==null&&(e==="object"||e==="function")}},10973:function(D){var E=Object.prototype.toString;D.exports=function(e){var _;return E.call(e)==="[object Object]"&&((_=Object.getPrototypeOf(e))===null||_===Object.getPrototypeOf({}))}},18546:function(D){D.exports=function(E){for(var e,_=E.length,w=0;w<_;w++)if(((e=E.charCodeAt(w))<9||e>13)&&e!==32&&e!==133&&e!==160&&e!==5760&&e!==6158&&(e<8192||e>8205)&&e!==8232&&e!==8233&&e!==8239&&e!==8287&&e!==8288&&e!==12288&&e!==65279)return!1;return!0}},89546:function(D){D.exports=function(E){return typeof E=="string"&&(E=E.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(E)&&/[\dz]$/i.test(E)&&E.length>4))}},9187:function(D,E,e){var _=e(31353),w=e(72077),s=e(6614),T=s("Object.prototype.toString"),y=e(84543)(),f=e(40383),l=typeof globalThis>"u"?e.g:globalThis,t=w(),i=s("Array.prototype.indexOf",!0)||function(a,u){for(var p=0;p-1}return!!f&&function(p){var c=!1;return _(n,function(b,d){if(!c)try{c=b.call(p)===d}catch{}}),c}(a)}},44517:function(D){D.exports=function(){var E,e,_;function w(s,T){if(E)if(e){var y="var sharedChunk = {}; ("+E+")(sharedChunk); ("+e+")(sharedChunk);",f={};E(f),(_=T(f)).workerUrl=window.URL.createObjectURL(new Blob([y],{type:"text/javascript"}))}else e=T;else E=T}return w(0,function(s){function T(S,z){return S(z={exports:{}},z.exports),z.exports}var y="1.10.1",f=l;function l(S,z,Z,le){this.cx=3*S,this.bx=3*(Z-S)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*z,this.by=3*(le-z)-this.cy,this.ay=1-this.cy-this.by,this.p1x=S,this.p1y=le,this.p2x=Z,this.p2y=le}l.prototype.sampleCurveX=function(S){return((this.ax*S+this.bx)*S+this.cx)*S},l.prototype.sampleCurveY=function(S){return((this.ay*S+this.by)*S+this.cy)*S},l.prototype.sampleCurveDerivativeX=function(S){return(3*this.ax*S+2*this.bx)*S+this.cx},l.prototype.solveCurveX=function(S,z){var Z,le,ke,Ie,qe;for(z===void 0&&(z=1e-6),ke=S,qe=0;qe<8;qe++){if(Ie=this.sampleCurveX(ke)-S,Math.abs(Ie)(le=1))return le;for(;ZIe?Z=ke:le=ke,ke=.5*(le-Z)+Z}return ke},l.prototype.solve=function(S,z){return this.sampleCurveY(this.solveCurveX(S,z))};var t=i;function i(S,z){this.x=S,this.y=z}function r(S,z,Z,le){var ke=new f(S,z,Z,le);return function(Ie){return ke.solve(Ie)}}i.prototype={clone:function(){return new i(this.x,this.y)},add:function(S){return this.clone()._add(S)},sub:function(S){return this.clone()._sub(S)},multByPoint:function(S){return this.clone()._multByPoint(S)},divByPoint:function(S){return this.clone()._divByPoint(S)},mult:function(S){return this.clone()._mult(S)},div:function(S){return this.clone()._div(S)},rotate:function(S){return this.clone()._rotate(S)},rotateAround:function(S,z){return this.clone()._rotateAround(S,z)},matMult:function(S){return this.clone()._matMult(S)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(S){return this.x===S.x&&this.y===S.y},dist:function(S){return Math.sqrt(this.distSqr(S))},distSqr:function(S){var z=S.x-this.x,Z=S.y-this.y;return z*z+Z*Z},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(S){return Math.atan2(this.y-S.y,this.x-S.x)},angleWith:function(S){return this.angleWithSep(S.x,S.y)},angleWithSep:function(S,z){return Math.atan2(this.x*z-this.y*S,this.x*S+this.y*z)},_matMult:function(S){var z=S[0]*this.x+S[1]*this.y,Z=S[2]*this.x+S[3]*this.y;return this.x=z,this.y=Z,this},_add:function(S){return this.x+=S.x,this.y+=S.y,this},_sub:function(S){return this.x-=S.x,this.y-=S.y,this},_mult:function(S){return this.x*=S,this.y*=S,this},_div:function(S){return this.x/=S,this.y/=S,this},_multByPoint:function(S){return this.x*=S.x,this.y*=S.y,this},_divByPoint:function(S){return this.x/=S.x,this.y/=S.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var S=this.y;return this.y=this.x,this.x=-S,this},_rotate:function(S){var z=Math.cos(S),Z=Math.sin(S),le=z*this.x-Z*this.y,ke=Z*this.x+z*this.y;return this.x=le,this.y=ke,this},_rotateAround:function(S,z){var Z=Math.cos(S),le=Math.sin(S),ke=z.x+Z*(this.x-z.x)-le*(this.y-z.y),Ie=z.y+le*(this.x-z.x)+Z*(this.y-z.y);return this.x=ke,this.y=Ie,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},i.convert=function(S){return S instanceof i?S:Array.isArray(S)?new i(S[0],S[1]):S};var n=r(.25,.1,.25,1);function o(S,z,Z){return Math.min(Z,Math.max(z,S))}function a(S,z,Z){var le=Z-z,ke=((S-z)%le+le)%le+z;return ke===z?Z:ke}function u(S){for(var z=[],Z=arguments.length-1;Z-- >0;)z[Z]=arguments[Z+1];for(var le=0,ke=z;le>z/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,S)}()}function d(S){return!!S&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(S)}function v(S,z){S.forEach(function(Z){z[Z]&&(z[Z]=z[Z].bind(z))})}function x(S,z){return S.indexOf(z,S.length-z.length)!==-1}function g(S,z,Z){var le={};for(var ke in S)le[ke]=z.call(Z||this,S[ke],ke,S);return le}function m(S,z,Z){var le={};for(var ke in S)z.call(Z||this,S[ke],ke,S)&&(le[ke]=S[ke]);return le}function k(S){return Array.isArray(S)?S.map(k):typeof S=="object"&&S?g(S,k):S}var h={};function M(S){h[S]||(typeof console<"u"&&console.warn(S),h[S]=!0)}function A(S,z,Z){return(Z.y-S.y)*(z.x-S.x)>(z.y-S.y)*(Z.x-S.x)}function C(S){for(var z=0,Z=0,le=S.length,ke=le-1,Ie=void 0,qe=void 0;Z@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,function(le,ke,Ie,qe){var it=Ie||qe;return z[ke]=!it||it.toLowerCase(),""}),z["max-age"]){var Z=parseInt(z["max-age"],10);isNaN(Z)?delete z["max-age"]:z["max-age"]=Z}return z}var I=null;function R(S){if(I==null){var z=S.navigator?S.navigator.userAgent:null;I=!!S.safari||!(!z||!(/\b(iPad|iPhone|iPod)\b/.test(z)||z.match("Safari")&&!z.match("Chrome")))}return I}function U(S){try{var z=self[S];return z.setItem("_mapbox_test_",1),z.removeItem("_mapbox_test_"),!0}catch{return!1}}var B,G,N,j,V=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),H=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,ee=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,Q={now:V,frame:function(S){var z=H(S);return{cancel:function(){return ee(z)}}},getImageData:function(S,z){z===void 0&&(z=0);var Z=self.document.createElement("canvas"),le=Z.getContext("2d");if(!le)throw new Error("failed to create canvas 2d context");return Z.width=S.width,Z.height=S.height,le.drawImage(S,0,0,S.width,S.height),le.getImageData(-z,-z,S.width+2*z,S.height+2*z)},resolveURL:function(S){return B||(B=self.document.createElement("a")),B.href=S,B.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(G==null&&(G=self.matchMedia("(prefers-reduced-motion: reduce)")),G.matches)}},X={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},Y={supported:!1,testSupport:function(S){!K&&j&&(te?ae(S):N=S)}},K=!1,te=!1;function ae(S){var z=S.createTexture();S.bindTexture(S.TEXTURE_2D,z);try{if(S.texImage2D(S.TEXTURE_2D,0,S.RGBA,S.RGBA,S.UNSIGNED_BYTE,j),S.isContextLost())return;Y.supported=!0}catch{}S.deleteTexture(z),K=!0}self.document&&((j=self.document.createElement("img")).onload=function(){N&&ae(N),N=null,te=!0},j.onerror=function(){K=!0,N=null},j.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");var oe="01",se=function(S,z){this._transformRequestFn=S,this._customAccessToken=z,this._createSkuToken()};function fe(S){return S.indexOf("mapbox:")===0}se.prototype._createSkuToken=function(){var S=function(){for(var z="",Z=0;Z<10;Z++)z+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",oe,z].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=S.token,this._skuTokenExpiresAt=S.tokenExpiresAt},se.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},se.prototype.transformRequest=function(S,z){return this._transformRequestFn&&this._transformRequestFn(S,z)||{url:S}},se.prototype.normalizeStyleURL=function(S,z){if(!fe(S))return S;var Z=he(S);return Z.path="/styles/v1"+Z.path,this._makeAPIURL(Z,this._customAccessToken||z)},se.prototype.normalizeGlyphsURL=function(S,z){if(!fe(S))return S;var Z=he(S);return Z.path="/fonts/v1"+Z.path,this._makeAPIURL(Z,this._customAccessToken||z)},se.prototype.normalizeSourceURL=function(S,z){if(!fe(S))return S;var Z=he(S);return Z.path="/v4/"+Z.authority+".json",Z.params.push("secure"),this._makeAPIURL(Z,this._customAccessToken||z)},se.prototype.normalizeSpriteURL=function(S,z,Z,le){var ke=he(S);return fe(S)?(ke.path="/styles/v1"+ke.path+"/sprite"+z+Z,this._makeAPIURL(ke,this._customAccessToken||le)):(ke.path+=""+z+Z,xe(ke))},se.prototype.normalizeTileURL=function(S,z){if(this._isSkuTokenExpired()&&this._createSkuToken(),S&&!fe(S))return S;var Z=he(S),le=Q.devicePixelRatio>=2||z===512?"@2x":"",ke=Y.supported?".webp":"$1";Z.path=Z.path.replace(/(\.(png|jpg)\d*)(?=$)/,""+le+ke),Z.path=Z.path.replace(/^.+\/v4\//,"/"),Z.path="/v4"+Z.path;var Ie=this._customAccessToken||function(qe){for(var it=0,dt=qe;it=1&&self.localStorage.setItem(z,JSON.stringify(this.eventData))}catch{M("Unable to write to LocalStorage")}},Ae.prototype.processRequests=function(S){},Ae.prototype.postEvent=function(S,z,Z,le){var ke=this;if(X.EVENTS_URL){var Ie=he(X.EVENTS_URL);Ie.params.push("access_token="+(le||X.ACCESS_TOKEN||""));var qe={event:this.type,created:new Date(S).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:y,skuId:oe,userId:this.anonId},it=z?u(qe,z):qe,dt={url:xe(Ie),headers:{"Content-Type":"text/plain"},body:JSON.stringify([it])};this.pendingRequest=It(dt,function(St){ke.pendingRequest=null,Z(St),ke.saveEventData(),ke.processRequests(le)})}},Ae.prototype.queueRequest=function(S,z){this.queue.push(S),this.processRequests(z)};var Me,Ce,ne=function(S){function z(){S.call(this,"map.load"),this.success={},this.skuToken=""}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.postMapLoadEvent=function(Z,le,ke,Ie){this.skuToken=ke,(X.EVENTS_URL&&Ie||X.ACCESS_TOKEN&&Array.isArray(Z)&&Z.some(function(qe){return fe(qe)||pe(qe)}))&&this.queueRequest({id:le,timestamp:Date.now()},Ie)},z.prototype.processRequests=function(Z){var le=this;if(!this.pendingRequest&&this.queue.length!==0){var ke=this.queue.shift(),Ie=ke.id,qe=ke.timestamp;Ie&&this.success[Ie]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=b()),this.postEvent(qe,{skuToken:this.skuToken},function(it){it||Ie&&(le.success[Ie]=!0)},Z))}},z}(Ae),ue=function(S){function z(Z){S.call(this,"appUserTurnstile"),this._customAccessToken=Z}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.postTurnstileEvent=function(Z,le){X.EVENTS_URL&&X.ACCESS_TOKEN&&Array.isArray(Z)&&Z.some(function(ke){return fe(ke)||pe(ke)})&&this.queueRequest(Date.now(),le)},z.prototype.processRequests=function(Z){var le=this;if(!this.pendingRequest&&this.queue.length!==0){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var ke=we(X.ACCESS_TOKEN),Ie=ke?ke.u:X.ACCESS_TOKEN,qe=Ie!==this.eventData.tokenU;d(this.anonId)||(this.anonId=b(),qe=!0);var it=this.queue.shift();if(this.eventData.lastSuccess){var dt=new Date(this.eventData.lastSuccess),St=new Date(it),Rt=(it-this.eventData.lastSuccess)/864e5;qe=qe||Rt>=1||Rt<-1||dt.getDate()!==St.getDate()}else qe=!0;if(!qe)return this.processRequests();this.postEvent(it,{"enabled.telemetry":!1},function(Ht){Ht||(le.eventData.lastSuccess=it,le.eventData.tokenU=Ie)},Z)}},z}(Ae),me=new ue,Te=me.postTurnstileEvent.bind(me),Ee=new ne,Ue=Ee.postMapLoadEvent.bind(Ee),De="mapbox-tiles",je=500,ge=50;function be(){self.caches&&!Me&&(Me=self.caches.open(De))}function Se(S,z,Z){if(be(),Me){var le={status:z.status,statusText:z.statusText,headers:new self.Headers};z.headers.forEach(function(Ie,qe){return le.headers.set(qe,Ie)});var ke=O(z.headers.get("Cache-Control")||"");ke["no-store"]||(ke["max-age"]&&le.headers.set("Expires",new Date(Z+1e3*ke["max-age"]).toUTCString()),new Date(le.headers.get("Expires")).getTime()-Z<42e4||function(Ie,qe){if(Ce===void 0)try{new Response(new ReadableStream),Ce=!0}catch{Ce=!1}Ce?qe(Ie.body):Ie.blob().then(qe)}(z,function(Ie){var qe=new self.Response(Ie,le);be(),Me&&Me.then(function(it){return it.put(Ne(S.url),qe)}).catch(function(it){return M(it.message)})}))}}function Ne(S){var z=S.indexOf("?");return z<0?S:S.slice(0,z)}function Ye(S,z){if(be(),!Me)return z(null);var Z=Ne(S.url);Me.then(function(le){le.match(Z).then(function(ke){var Ie=function(qe){if(!qe)return!1;var it=new Date(qe.headers.get("Expires")||0),dt=O(qe.headers.get("Cache-Control")||"");return it>Date.now()&&!dt["no-cache"]}(ke);le.delete(Z),Ie&&le.put(Z,ke.clone()),z(null,ke,Ie)}).catch(z)}).catch(z)}var Ze,st=1/0;function ot(){return Ze==null&&(Ze=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext("2d")&&typeof self.createImageBitmap=="function"),Ze}var ft={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};typeof Object.freeze=="function"&&Object.freeze(ft);var yt=function(S){function z(Z,le,ke){le===401&&pe(ke)&&(Z+=": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"),S.call(this,Z),this.status=le,this.url=ke,this.name=this.constructor.name,this.message=Z}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.toString=function(){return this.name+": "+this.message+" ("+this.status+"): "+this.url},z}(Error),Et=L()?function(){return self.worker&&self.worker.referrer}:function(){return(self.location.protocol==="blob:"?self.parent:self).location.href};function Tt(S,z){var Z,le=new self.AbortController,ke=new self.Request(S.url,{method:S.method||"GET",body:S.body,credentials:S.credentials,headers:S.headers,referrer:Et(),signal:le.signal}),Ie=!1,qe=!1,it=(Z=ke.url).indexOf("sku=")>0&&pe(Z);S.type==="json"&&ke.headers.set("Accept","application/json");var dt=function(Rt,Ht,Yt){if(!qe){if(Rt&&Rt.message!=="SecurityError"&&M(Rt),Ht&&Yt)return St(Ht);var Zt=Date.now();self.fetch(ke).then(function(cn){if(cn.ok){var Tn=it?cn.clone():null;return St(cn,Tn,Zt)}return z(new yt(cn.statusText,cn.status,S.url))}).catch(function(cn){cn.code!==20&&z(new Error(cn.message))})}},St=function(Rt,Ht,Yt){(S.type==="arrayBuffer"?Rt.arrayBuffer():S.type==="json"?Rt.json():Rt.text()).then(function(Zt){qe||(Ht&&Yt&&Se(ke,Ht,Yt),Ie=!0,z(null,Zt,Rt.headers.get("Cache-Control"),Rt.headers.get("Expires")))}).catch(function(Zt){qe||z(new Error(Zt.message))})};return it?Ye(ke,dt):dt(null,null),{cancel:function(){qe=!0,Ie||le.abort()}}}var xt=function(S,z){if(Z=S.url,!(/^file:/.test(Z)||/^file:/.test(Et())&&!/^\w+:/.test(Z))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty("signal"))return Tt(S,z);if(L()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",S,z,void 0,!0)}var Z;return function(le,ke){var Ie=new self.XMLHttpRequest;for(var qe in Ie.open(le.method||"GET",le.url,!0),le.type==="arrayBuffer"&&(Ie.responseType="arraybuffer"),le.headers)Ie.setRequestHeader(qe,le.headers[qe]);return le.type==="json"&&(Ie.responseType="text",Ie.setRequestHeader("Accept","application/json")),Ie.withCredentials=le.credentials==="include",Ie.onerror=function(){ke(new Error(Ie.statusText))},Ie.onload=function(){if((Ie.status>=200&&Ie.status<300||Ie.status===0)&&Ie.response!==null){var it=Ie.response;if(le.type==="json")try{it=JSON.parse(Ie.response)}catch(dt){return ke(dt)}ke(null,it,Ie.getResponseHeader("Cache-Control"),Ie.getResponseHeader("Expires"))}else ke(new yt(Ie.statusText,Ie.status,le.url))},Ie.send(le.body),{cancel:function(){return Ie.abort()}}}(S,z)},Dt=function(S,z){return xt(u(S,{type:"arrayBuffer"}),z)},It=function(S,z){return xt(u(S,{method:"POST"}),z)},Ft,qt;Ft=[],qt=0;var Nt=function(S,z){if(Y.supported&&(S.headers||(S.headers={}),S.headers.accept="image/webp,*/*"),qt>=X.MAX_PARALLEL_IMAGE_REQUESTS){var Z={requestParameters:S,callback:z,cancelled:!1,cancel:function(){this.cancelled=!0}};return Ft.push(Z),Z}qt++;var le=!1,ke=function(){if(!le)for(le=!0,qt--;Ft.length&&qt0||this._oneTimeListeners&&this._oneTimeListeners[S]&&this._oneTimeListeners[S].length>0||this._eventedParent&&this._eventedParent.listens(S)},ht.prototype.setEventedParent=function(S,z){return this._eventedParent=S,this._eventedParentData=z,this};var Oe={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},expression_name:{type:"enum",values:{let:{group:"Variable binding"},var:{group:"Variable binding"},literal:{group:"Types"},array:{group:"Types"},at:{group:"Lookup"},in:{group:"Lookup"},"index-of":{group:"Lookup"},slice:{group:"Lookup"},case:{group:"Decision"},match:{group:"Decision"},coalesce:{group:"Decision"},step:{group:"Ramps, scales, curves"},interpolate:{group:"Ramps, scales, curves"},"interpolate-hcl":{group:"Ramps, scales, curves"},"interpolate-lab":{group:"Ramps, scales, curves"},ln2:{group:"Math"},pi:{group:"Math"},e:{group:"Math"},typeof:{group:"Types"},string:{group:"Types"},number:{group:"Types"},boolean:{group:"Types"},object:{group:"Types"},collator:{group:"Types"},format:{group:"Types"},image:{group:"Types"},"number-format":{group:"Types"},"to-string":{group:"Types"},"to-number":{group:"Types"},"to-boolean":{group:"Types"},"to-rgba":{group:"Color"},"to-color":{group:"Types"},rgb:{group:"Color"},rgba:{group:"Color"},get:{group:"Lookup"},has:{group:"Lookup"},length:{group:"Lookup"},properties:{group:"Feature data"},"feature-state":{group:"Feature data"},"geometry-type":{group:"Feature data"},id:{group:"Feature data"},zoom:{group:"Zoom"},"heatmap-density":{group:"Heatmap"},"line-progress":{group:"Feature data"},accumulated:{group:"Feature data"},"+":{group:"Math"},"*":{group:"Math"},"-":{group:"Math"},"/":{group:"Math"},"%":{group:"Math"},"^":{group:"Math"},sqrt:{group:"Math"},log10:{group:"Math"},ln:{group:"Math"},log2:{group:"Math"},sin:{group:"Math"},cos:{group:"Math"},tan:{group:"Math"},asin:{group:"Math"},acos:{group:"Math"},atan:{group:"Math"},min:{group:"Math"},max:{group:"Math"},round:{group:"Math"},abs:{group:"Math"},ceil:{group:"Math"},floor:{group:"Math"},distance:{group:"Math"},"==":{group:"Decision"},"!=":{group:"Decision"},">":{group:"Decision"},"<":{group:"Decision"},">=":{group:"Decision"},"<=":{group:"Decision"},all:{group:"Decision"},any:{group:"Decision"},"!":{group:"Decision"},within:{group:"Decision"},"is-supported-script":{group:"String"},upcase:{group:"String"},downcase:{group:"String"},concat:{group:"String"},"resolved-locale":{group:"String"}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}},Be=function(S,z,Z,le){this.message=(S?S+": ":"")+Z,le&&(this.identifier=le),z!=null&&z.__line__&&(this.line=z.__line__)};function Qe(S){var z=S.key,Z=S.value;return Z?[new Be(z,Z,"constants have been deprecated as of v8")]:[]}function ut(S){for(var z=[],Z=arguments.length-1;Z-- >0;)z[Z]=arguments[Z+1];for(var le=0,ke=z;le":S.itemType.kind==="value"?"array":"array<"+z+">"}return S.kind}var kn=[mt,Ot,_t,Pt,Bt,Kt,Wt,yn(Gt),nn];function Wn(S,z){if(z.kind==="error")return null;if(S.kind==="array"){if(z.kind==="array"&&(z.N===0&&z.itemType.kind==="value"||!Wn(S.itemType,z.itemType))&&(typeof S.N!="number"||S.N===z.N))return null}else{if(S.kind===z.kind)return null;if(S.kind==="value"){for(var Z=0,le=kn;Z255?255:dt}function ke(dt){return dt<0?0:dt>1?1:dt}function Ie(dt){return dt[dt.length-1]==="%"?le(parseFloat(dt)/100*255):le(parseInt(dt))}function qe(dt){return dt[dt.length-1]==="%"?ke(parseFloat(dt)/100):ke(parseFloat(dt))}function it(dt,St,Rt){return Rt<0?Rt+=1:Rt>1&&(Rt-=1),6*Rt<1?dt+(St-dt)*Rt*6:2*Rt<1?St:3*Rt<2?dt+(St-dt)*(2/3-Rt)*6:dt}try{z.parseCSSColor=function(dt){var St,Rt=dt.replace(/ /g,"").toLowerCase();if(Rt in Z)return Z[Rt].slice();if(Rt[0]==="#")return Rt.length===4?(St=parseInt(Rt.substr(1),16))>=0&&St<=4095?[(3840&St)>>4|(3840&St)>>8,240&St|(240&St)>>4,15&St|(15&St)<<4,1]:null:Rt.length===7&&(St=parseInt(Rt.substr(1),16))>=0&&St<=16777215?[(16711680&St)>>16,(65280&St)>>8,255&St,1]:null;var Ht=Rt.indexOf("("),Yt=Rt.indexOf(")");if(Ht!==-1&&Yt+1===Rt.length){var Zt=Rt.substr(0,Ht),cn=Rt.substr(Ht+1,Yt-(Ht+1)).split(","),Tn=1;switch(Zt){case"rgba":if(cn.length!==4)return null;Tn=qe(cn.pop());case"rgb":return cn.length!==3?null:[Ie(cn[0]),Ie(cn[1]),Ie(cn[2]),Tn];case"hsla":if(cn.length!==4)return null;Tn=qe(cn.pop());case"hsl":if(cn.length!==3)return null;var Fn=(parseFloat(cn[0])%360+360)%360/360,Dn=qe(cn[1]),Gn=qe(cn[2]),Yn=Gn<=.5?Gn*(Dn+1):Gn+Dn-Gn*Dn,Kn=2*Gn-Yn;return[le(255*it(Kn,Yn,Fn+1/3)),le(255*it(Kn,Yn,Fn)),le(255*it(Kn,Yn,Fn-1/3)),Tn];default:return null}}return null}}catch{}}),fn=_n.parseCSSColor,hn=function(S,z,Z,le){le===void 0&&(le=1),this.r=S,this.g=z,this.b=Z,this.a=le};hn.parse=function(S){if(S){if(S instanceof hn)return S;if(typeof S=="string"){var z=fn(S);if(z)return new hn(z[0]/255*z[3],z[1]/255*z[3],z[2]/255*z[3],z[3])}}},hn.prototype.toString=function(){var S=this.toArray(),z=S[0],Z=S[1],le=S[2],ke=S[3];return"rgba("+Math.round(z)+","+Math.round(Z)+","+Math.round(le)+","+ke+")"},hn.prototype.toArray=function(){var S=this,z=S.r,Z=S.g,le=S.b,ke=S.a;return ke===0?[0,0,0,0]:[255*z/ke,255*Z/ke,255*le/ke,ke]},hn.black=new hn(0,0,0,1),hn.white=new hn(1,1,1,1),hn.transparent=new hn(0,0,0,0),hn.red=new hn(1,0,0,1);var In=function(S,z,Z){this.sensitivity=S?z?"variant":"case":z?"accent":"base",this.locale=Z,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};In.prototype.compare=function(S,z){return this.collator.compare(S,z)},In.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var Cn=function(S,z,Z,le,ke){this.text=S,this.image=z,this.scale=Z,this.fontStack=le,this.textColor=ke},Nn=function(S){this.sections=S};Nn.fromString=function(S){return new Nn([new Cn(S,null,null,null,null)])},Nn.prototype.isEmpty=function(){return this.sections.length===0||!this.sections.some(function(S){return S.text.length!==0||S.image&&S.image.name.length!==0})},Nn.factory=function(S){return S instanceof Nn?S:Nn.fromString(S)},Nn.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(S){return S.text}).join("")},Nn.prototype.serialize=function(){for(var S=["format"],z=0,Z=this.sections;z=0&&S<=255&&typeof z=="number"&&z>=0&&z<=255&&typeof Z=="number"&&Z>=0&&Z<=255?le===void 0||typeof le=="number"&&le>=0&&le<=1?null:"Invalid rgba value ["+[S,z,Z,le].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+(typeof le=="number"?[S,z,Z,le]:[S,z,Z]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function or(S){if(S===null||typeof S=="string"||typeof S=="boolean"||typeof S=="number"||S instanceof hn||S instanceof In||S instanceof Nn||S instanceof Hn)return!0;if(Array.isArray(S)){for(var z=0,Z=S;z2){var it=S[1];if(typeof it!="string"||!(it in dr)||it==="object")return z.error('The item type argument of "array" must be one of string, number, boolean',1);Ie=dr[it],le++}else Ie=Gt;if(S.length>3){if(S[2]!==null&&(typeof S[2]!="number"||S[2]<0||S[2]!==Math.floor(S[2])))return z.error('The length argument to "array" must be a positive integer literal',2);qe=S[2],le++}Z=yn(Ie,qe)}else Z=dr[ke];for(var dt=[];le1)&&z.push(le)}}return z.concat(this.args.map(function(ke){return ke.serialize()}))};var $t=function(S){this.type=Kt,this.sections=S};$t.parse=function(S,z){if(S.length<2)return z.error("Expected at least one argument.");var Z=S[1];if(!Array.isArray(Z)&&typeof Z=="object")return z.error("First argument must be an image or text section.");for(var le=[],ke=!1,Ie=1;Ie<=S.length-1;++Ie){var qe=S[Ie];if(ke&&typeof qe=="object"&&!Array.isArray(qe)){ke=!1;var it=null;if(qe["font-scale"]&&!(it=z.parse(qe["font-scale"],1,Ot)))return null;var dt=null;if(qe["text-font"]&&!(dt=z.parse(qe["text-font"],1,yn(_t))))return null;var St=null;if(qe["text-color"]&&!(St=z.parse(qe["text-color"],1,Bt)))return null;var Rt=le[le.length-1];Rt.scale=it,Rt.font=dt,Rt.textColor=St}else{var Ht=z.parse(S[Ie],1,Gt);if(!Ht)return null;var Yt=Ht.type.kind;if(Yt!=="string"&&Yt!=="value"&&Yt!=="null"&&Yt!=="resolvedImage")return z.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ke=!0,le.push({content:Ht,scale:null,font:null,textColor:null})}}return new $t(le)},$t.prototype.evaluate=function(S){return new Nn(this.sections.map(function(z){var Z=z.content.evaluate(S);return tr(Z)===nn?new Cn("",Z,null,null,null):new Cn(kr(Z),null,z.scale?z.scale.evaluate(S):null,z.font?z.font.evaluate(S).join(","):null,z.textColor?z.textColor.evaluate(S):null)}))},$t.prototype.eachChild=function(S){for(var z=0,Z=this.sections;z-1),Z},mn.prototype.eachChild=function(S){S(this.input)},mn.prototype.outputDefined=function(){return!1},mn.prototype.serialize=function(){return["image",this.input.serialize()]};var Ln={"to-boolean":Pt,"to-color":Bt,"to-number":Ot,"to-string":_t},En=function(S,z){this.type=S,this.args=z};En.parse=function(S,z){if(S.length<2)return z.error("Expected at least one argument.");var Z=S[0];if((Z==="to-boolean"||Z==="to-string")&&S.length!==2)return z.error("Expected one argument.");for(var le=Ln[Z],ke=[],Ie=1;Ie4?"Invalid rbga value "+JSON.stringify(z)+": expected an array containing either three or four numeric values.":qn(z[0],z[1],z[2],z[3])))return new hn(z[0]/255,z[1]/255,z[2]/255,z[3])}throw new ir(Z||"Could not parse color from value '"+(typeof z=="string"?z:String(JSON.stringify(z)))+"'")}if(this.type.kind==="number"){for(var qe=null,it=0,dt=this.args;it=z[2]||S[1]<=z[1]||S[3]>=z[3])}function jt(S,z){var Z,le=(180+S[0])/360,ke=(Z=S[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+Z*Math.PI/360)))/360),Ie=Math.pow(2,z.z);return[Math.round(le*Ie*hr),Math.round(ke*Ie*hr)]}function Jt(S,z,Z){return z[1]>S[1]!=Z[1]>S[1]&&S[0]<(Z[0]-z[0])*(S[1]-z[1])/(Z[1]-z[1])+z[0]}function un(S,z){for(var Z=!1,le=0,ke=z.length;le0&&Ht<0||Rt<0&&Ht>0}function Sn(S,z,Z){for(var le=0,ke=Z;leZ[2]){var ke=.5*le,Ie=S[0]-Z[0]>ke?-le:Z[0]-S[0]>ke?le:0;Ie===0&&(Ie=S[0]-Z[2]>ke?-le:Z[2]-S[0]>ke?le:0),S[0]+=Ie}tn(z,S)}function Bn(S,z,Z,le){for(var ke=Math.pow(2,le.z)*hr,Ie=[le.x*hr,le.y*hr],qe=[],it=0,dt=S;it=0)return!1;var Z=!0;return S.eachChild(function(le){Z&&!sr(le,z)&&(Z=!1)}),Z}er.parse=function(S,z){if(S.length!==2)return z.error("'within' expression requires exactly one argument, but found "+(S.length-1)+" instead.");if(or(S[1])){var Z=S[1];if(Z.type==="FeatureCollection")for(var le=0;lez))throw new ir("Input is not a number.");qe=it-1}return 0}cr.prototype.parse=function(S,z,Z,le,ke){return ke===void 0&&(ke={}),z?this.concat(z,Z,le)._parse(S,ke):this._parse(S,ke)},cr.prototype._parse=function(S,z){function Z(St,Rt,Ht){return Ht==="assert"?new yr(Rt,[St]):Ht==="coerce"?new En(Rt,[St]):St}if(S!==null&&typeof S!="string"&&typeof S!="boolean"&&typeof S!="number"||(S=["literal",S]),Array.isArray(S)){if(S.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var le=S[0];if(typeof le!="string")return this.error("Expression name must be a string, but found "+typeof le+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var ke=this.registry[le];if(ke){var Ie=ke.parse(S,this);if(!Ie)return null;if(this.expectedType){var qe=this.expectedType,it=Ie.type;if(qe.kind!=="string"&&qe.kind!=="number"&&qe.kind!=="boolean"&&qe.kind!=="object"&&qe.kind!=="array"||it.kind!=="value")if(qe.kind!=="color"&&qe.kind!=="formatted"&&qe.kind!=="resolvedImage"||it.kind!=="value"&&it.kind!=="string"){if(this.checkSubtype(qe,it))return null}else Ie=Z(Ie,qe,z.typeAnnotation||"coerce");else Ie=Z(Ie,qe,z.typeAnnotation||"assert")}if(!(Ie instanceof gr)&&Ie.type.kind!=="resolvedImage"&&vr(Ie)){var dt=new $n;try{Ie=new gr(Ie.type,Ie.evaluate(dt))}catch(St){return this.error(St.message),null}}return Ie}return this.error('Unknown expression "'+le+'". If you wanted a literal array, use ["literal", [...]].',0)}return S===void 0?this.error("'undefined' value invalid. Use null instead."):typeof S=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof S+" instead.")},cr.prototype.concat=function(S,z,Z){var le=typeof S=="number"?this.path.concat(S):this.path,ke=Z?this.scope.concat(Z):this.scope;return new cr(this.registry,le,z||null,ke,this.errors)},cr.prototype.error=function(S){for(var z=[],Z=arguments.length-1;Z-- >0;)z[Z]=arguments[Z+1];var le=""+this.key+z.map(function(ke){return"["+ke+"]"}).join("");this.errors.push(new Lt(le,S))},cr.prototype.checkSubtype=function(S,z){var Z=Wn(S,z);return Z&&this.error(Z),Z};var Mr=function(S,z,Z){this.type=S,this.input=z,this.labels=[],this.outputs=[];for(var le=0,ke=Z;le=qe)return z.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',dt);var Rt=z.parse(it,St,ke);if(!Rt)return null;ke=ke||Rt.type,le.push([qe,Rt])}return new Mr(ke,Z,le)},Mr.prototype.evaluate=function(S){var z=this.labels,Z=this.outputs;if(z.length===1)return Z[0].evaluate(S);var le=this.input.evaluate(S);if(le<=z[0])return Z[0].evaluate(S);var ke=z.length;return le>=z[ke-1]?Z[ke-1].evaluate(S):Z[Sr(z,le)].evaluate(S)},Mr.prototype.eachChild=function(S){S(this.input);for(var z=0,Z=this.outputs;z0&&S.push(this.labels[z]),S.push(this.outputs[z].serialize());return S};var pr=Object.freeze({__proto__:null,number:Lr,color:function(S,z,Z){return new hn(Lr(S.r,z.r,Z),Lr(S.g,z.g,Z),Lr(S.b,z.b,Z),Lr(S.a,z.a,Z))},array:function(S,z,Z){return S.map(function(le,ke){return Lr(le,z[ke],Z)})}}),Pr=.95047,Hr=1.08883,ci=4/29,Ti=6/29,Mi=3*Ti*Ti,fa=Math.PI/180,Hi=180/Math.PI;function xi(S){return S>.008856451679035631?Math.pow(S,.3333333333333333):S/Mi+ci}function Oa(S){return S>Ti?S*S*S:Mi*(S-ci)}function Ka(S){return 255*(S<=.0031308?12.92*S:1.055*Math.pow(S,.4166666666666667)-.055)}function Yo(S){return(S/=255)<=.04045?S/12.92:Math.pow((S+.055)/1.055,2.4)}function Xs(S){var z=Yo(S.r),Z=Yo(S.g),le=Yo(S.b),ke=xi((.4124564*z+.3575761*Z+.1804375*le)/Pr),Ie=xi((.2126729*z+.7151522*Z+.072175*le)/1);return{l:116*Ie-16,a:500*(ke-Ie),b:200*(Ie-xi((.0193339*z+.119192*Z+.9503041*le)/Hr)),alpha:S.a}}function Uu(S){var z=(S.l+16)/116,Z=isNaN(S.a)?z:z+S.a/500,le=isNaN(S.b)?z:z-S.b/200;return z=1*Oa(z),Z=Pr*Oa(Z),le=Hr*Oa(le),new hn(Ka(3.2404542*Z-1.5371385*z-.4985314*le),Ka(-.969266*Z+1.8760108*z+.041556*le),Ka(.0556434*Z-.2040259*z+1.0572252*le),S.alpha)}function pu(S,z,Z){var le=z-S;return S+Z*(le>180||le<-180?le-360*Math.round(le/360):le)}var $s={forward:Xs,reverse:Uu,interpolate:function(S,z,Z){return{l:Lr(S.l,z.l,Z),a:Lr(S.a,z.a,Z),b:Lr(S.b,z.b,Z),alpha:Lr(S.alpha,z.alpha,Z)}}},Qa={forward:function(S){var z=Xs(S),Z=z.l,le=z.a,ke=z.b,Ie=Math.atan2(ke,le)*Hi;return{h:Ie<0?Ie+360:Ie,c:Math.sqrt(le*le+ke*ke),l:Z,alpha:S.a}},reverse:function(S){var z=S.h*fa,Z=S.c;return Uu({l:S.l,a:Math.cos(z)*Z,b:Math.sin(z)*Z,alpha:S.alpha})},interpolate:function(S,z,Z){return{h:pu(S.h,z.h,Z),c:Lr(S.c,z.c,Z),l:Lr(S.l,z.l,Z),alpha:Lr(S.alpha,z.alpha,Z)}}},du=Object.freeze({__proto__:null,lab:$s,hcl:Qa}),Qi=function(S,z,Z,le,ke){this.type=S,this.operator=z,this.interpolation=Z,this.input=le,this.labels=[],this.outputs=[];for(var Ie=0,qe=ke;Ie1}))return z.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);le={name:"cubic-bezier",controlPoints:it}}if(S.length-1<4)return z.error("Expected at least 4 arguments, but found only "+(S.length-1)+".");if((S.length-1)%2!=0)return z.error("Expected an even number of arguments.");if(!(ke=z.parse(ke,2,Ot)))return null;var dt=[],St=null;Z==="interpolate-hcl"||Z==="interpolate-lab"?St=Bt:z.expectedType&&z.expectedType.kind!=="value"&&(St=z.expectedType);for(var Rt=0;Rt=Ht)return z.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Zt);var Tn=z.parse(Yt,cn,St);if(!Tn)return null;St=St||Tn.type,dt.push([Ht,Tn])}return St.kind==="number"||St.kind==="color"||St.kind==="array"&&St.itemType.kind==="number"&&typeof St.N=="number"?new Qi(St,Z,le,ke,dt):z.error("Type "+ln(St)+" is not interpolatable.")},Qi.prototype.evaluate=function(S){var z=this.labels,Z=this.outputs;if(z.length===1)return Z[0].evaluate(S);var le=this.input.evaluate(S);if(le<=z[0])return Z[0].evaluate(S);var ke=z.length;if(le>=z[ke-1])return Z[ke-1].evaluate(S);var Ie=Sr(z,le),qe=z[Ie],it=z[Ie+1],dt=Qi.interpolationFactor(this.interpolation,le,qe,it),St=Z[Ie].evaluate(S),Rt=Z[Ie+1].evaluate(S);return this.operator==="interpolate"?pr[this.type.kind.toLowerCase()](St,Rt,dt):this.operator==="interpolate-hcl"?Qa.reverse(Qa.interpolate(Qa.forward(St),Qa.forward(Rt),dt)):$s.reverse($s.interpolate($s.forward(St),$s.forward(Rt),dt))},Qi.prototype.eachChild=function(S){S(this.input);for(var z=0,Z=this.outputs;z=Z.length)throw new ir("Array index out of bounds: "+z+" > "+(Z.length-1)+".");if(z!==Math.floor(z))throw new ir("Array index must be an integer, but found "+z+" instead.");return Z[z]},fs.prototype.eachChild=function(S){S(this.index),S(this.input)},fs.prototype.outputDefined=function(){return!1},fs.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var fi=function(S,z){this.type=Pt,this.needle=S,this.haystack=z};fi.parse=function(S,z){if(S.length!==3)return z.error("Expected 2 arguments, but found "+(S.length-1)+" instead.");var Z=z.parse(S[1],1,Gt),le=z.parse(S[2],2,Gt);return Z&&le?wn(Z.type,[Pt,_t,Ot,mt,Gt])?new fi(Z,le):z.error("Expected first argument to be of type boolean, string, number or null, but found "+ln(Z.type)+" instead"):null},fi.prototype.evaluate=function(S){var z=this.needle.evaluate(S),Z=this.haystack.evaluate(S);if(!Z)return!1;if(!on(z,["boolean","string","number","null"]))throw new ir("Expected first argument to be of type boolean, string, number or null, but found "+ln(tr(z))+" instead.");if(!on(Z,["string","array"]))throw new ir("Expected second argument to be of type array or string, but found "+ln(tr(Z))+" instead.");return Z.indexOf(z)>=0},fi.prototype.eachChild=function(S){S(this.needle),S(this.haystack)},fi.prototype.outputDefined=function(){return!0},fi.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var hs=function(S,z,Z){this.type=Ot,this.needle=S,this.haystack=z,this.fromIndex=Z};hs.parse=function(S,z){if(S.length<=2||S.length>=5)return z.error("Expected 3 or 4 arguments, but found "+(S.length-1)+" instead.");var Z=z.parse(S[1],1,Gt),le=z.parse(S[2],2,Gt);if(!Z||!le)return null;if(!wn(Z.type,[Pt,_t,Ot,mt,Gt]))return z.error("Expected first argument to be of type boolean, string, number or null, but found "+ln(Z.type)+" instead");if(S.length===4){var ke=z.parse(S[3],3,Ot);return ke?new hs(Z,le,ke):null}return new hs(Z,le)},hs.prototype.evaluate=function(S){var z=this.needle.evaluate(S),Z=this.haystack.evaluate(S);if(!on(z,["boolean","string","number","null"]))throw new ir("Expected first argument to be of type boolean, string, number or null, but found "+ln(tr(z))+" instead.");if(!on(Z,["string","array"]))throw new ir("Expected second argument to be of type array or string, but found "+ln(tr(Z))+" instead.");if(this.fromIndex){var le=this.fromIndex.evaluate(S);return Z.indexOf(z,le)}return Z.indexOf(z)},hs.prototype.eachChild=function(S){S(this.needle),S(this.haystack),this.fromIndex&&S(this.fromIndex)},hs.prototype.outputDefined=function(){return!1},hs.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var S=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),S]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var ao=function(S,z,Z,le,ke,Ie){this.inputType=S,this.type=z,this.input=Z,this.cases=le,this.outputs=ke,this.otherwise=Ie};ao.parse=function(S,z){if(S.length<5)return z.error("Expected at least 4 arguments, but found only "+(S.length-1)+".");if(S.length%2!=1)return z.error("Expected an even number of arguments.");var Z,le;z.expectedType&&z.expectedType.kind!=="value"&&(le=z.expectedType);for(var ke={},Ie=[],qe=2;qeNumber.MAX_SAFE_INTEGER)return St.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof Yt=="number"&&Math.floor(Yt)!==Yt)return St.error("Numeric branch labels must be integer values.");if(Z){if(St.checkSubtype(Z,tr(Yt)))return null}else Z=tr(Yt);if(ke[String(Yt)]!==void 0)return St.error("Branch labels must be unique.");ke[String(Yt)]=Ie.length}var Zt=z.parse(dt,qe,le);if(!Zt)return null;le=le||Zt.type,Ie.push(Zt)}var cn=z.parse(S[1],1,Gt);if(!cn)return null;var Tn=z.parse(S[S.length-1],S.length-1,le);return Tn?cn.type.kind!=="value"&&z.concat(1).checkSubtype(Z,cn.type)?null:new ao(Z,le,cn,ke,Ie,Tn):null},ao.prototype.evaluate=function(S){var z=this.input.evaluate(S);return(tr(z)===this.inputType&&this.outputs[this.cases[z]]||this.otherwise).evaluate(S)},ao.prototype.eachChild=function(S){S(this.input),this.outputs.forEach(S),S(this.otherwise)},ao.prototype.outputDefined=function(){return this.outputs.every(function(S){return S.outputDefined()})&&this.otherwise.outputDefined()},ao.prototype.serialize=function(){for(var S=this,z=["match",this.input.serialize()],Z=[],le={},ke=0,Ie=Object.keys(this.cases).sort();ke=5)return z.error("Expected 3 or 4 arguments, but found "+(S.length-1)+" instead.");var Z=z.parse(S[1],1,Gt),le=z.parse(S[2],2,Ot);if(!Z||!le)return null;if(!wn(Z.type,[yn(Gt),_t,Gt]))return z.error("Expected first argument to be of type array or string, but found "+ln(Z.type)+" instead");if(S.length===4){var ke=z.parse(S[3],3,Ot);return ke?new Ro(Z.type,Z,le,ke):null}return new Ro(Z.type,Z,le)},Ro.prototype.evaluate=function(S){var z=this.input.evaluate(S),Z=this.beginIndex.evaluate(S);if(!on(z,["string","array"]))throw new ir("Expected first argument to be of type array or string, but found "+ln(tr(z))+" instead.");if(this.endIndex){var le=this.endIndex.evaluate(S);return z.slice(Z,le)}return z.slice(Z)},Ro.prototype.eachChild=function(S){S(this.input),S(this.beginIndex),this.endIndex&&S(this.endIndex)},Ro.prototype.outputDefined=function(){return!1},Ro.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var S=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),S]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var Hu=Xo("==",function(S,z,Z){return z===Z},Vu),qu=Xo("!=",function(S,z,Z){return z!==Z},function(S,z,Z,le){return!Vu(0,z,Z,le)}),Ec=Xo("<",function(S,z,Z){return z",function(S,z,Z){return z>Z},function(S,z,Z,le){return le.compare(z,Z)>0}),Gu=Xo("<=",function(S,z,Z){return z<=Z},function(S,z,Z,le){return le.compare(z,Z)<=0}),vu=Xo(">=",function(S,z,Z){return z>=Z},function(S,z,Z,le){return le.compare(z,Z)>=0}),$o=function(S,z,Z,le,ke){this.type=_t,this.number=S,this.locale=z,this.currency=Z,this.minFractionDigits=le,this.maxFractionDigits=ke};$o.parse=function(S,z){if(S.length!==3)return z.error("Expected two arguments.");var Z=z.parse(S[1],1,Ot);if(!Z)return null;var le=S[2];if(typeof le!="object"||Array.isArray(le))return z.error("NumberFormat options argument must be an object.");var ke=null;if(le.locale&&!(ke=z.parse(le.locale,1,_t)))return null;var Ie=null;if(le.currency&&!(Ie=z.parse(le.currency,1,_t)))return null;var qe=null;if(le["min-fraction-digits"]&&!(qe=z.parse(le["min-fraction-digits"],1,Ot)))return null;var it=null;return le["max-fraction-digits"]&&!(it=z.parse(le["max-fraction-digits"],1,Ot))?null:new $o(Z,ke,Ie,qe,it)},$o.prototype.evaluate=function(S){return new Intl.NumberFormat(this.locale?this.locale.evaluate(S):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(S):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(S):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(S):void 0}).format(this.number.evaluate(S))},$o.prototype.eachChild=function(S){S(this.number),this.locale&&S(this.locale),this.currency&&S(this.currency),this.minFractionDigits&&S(this.minFractionDigits),this.maxFractionDigits&&S(this.maxFractionDigits)},$o.prototype.outputDefined=function(){return!1},$o.prototype.serialize=function(){var S={};return this.locale&&(S.locale=this.locale.serialize()),this.currency&&(S.currency=this.currency.serialize()),this.minFractionDigits&&(S["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(S["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),S]};var Jo=function(S){this.type=Ot,this.input=S};Jo.parse=function(S,z){if(S.length!==2)return z.error("Expected 1 argument, but found "+(S.length-1)+" instead.");var Z=z.parse(S[1],1);return Z?Z.type.kind!=="array"&&Z.type.kind!=="string"&&Z.type.kind!=="value"?z.error("Expected argument of type string or array, but found "+ln(Z.type)+" instead."):new Jo(Z):null},Jo.prototype.evaluate=function(S){var z=this.input.evaluate(S);if(typeof z=="string"||Array.isArray(z))return z.length;throw new ir("Expected value to be of type string or array, but found "+ln(tr(z))+" instead.")},Jo.prototype.eachChild=function(S){S(this.input)},Jo.prototype.outputDefined=function(){return!1},Jo.prototype.serialize=function(){var S=["length"];return this.eachChild(function(z){S.push(z.serialize())}),S};var Js={"==":Hu,"!=":qu,">":gu,"<":Ec,">=":vu,"<=":Gu,array:yr,at:fs,boolean:yr,case:bo,coalesce:qa,collator:Qn,format:$t,image:mn,in:fi,"index-of":hs,interpolate:Qi,"interpolate-hcl":Qi,"interpolate-lab":Qi,length:Jo,let:eo,literal:gr,match:ao,number:yr,"number-format":$o,object:yr,slice:Ro,step:Mr,string:yr,"to-boolean":En,"to-color":En,"to-number":En,"to-string":En,var:fr,within:er};function Ko(S,z){var Z=z[0],le=z[1],ke=z[2],Ie=z[3];Z=Z.evaluate(S),le=le.evaluate(S),ke=ke.evaluate(S);var qe=Ie?Ie.evaluate(S):1,it=qn(Z,le,ke,qe);if(it)throw new ir(it);return new hn(Z/255*qe,le/255*qe,ke/255*qe,qe)}function mu(S,z){return S in z}function yu(S,z){var Z=z[S];return Z===void 0?null:Z}function Ls(S){return{type:S}}function Vl(S){return{result:"success",value:S}}function ps(S){return{result:"error",value:S}}function Ks(S){return S["property-type"]==="data-driven"||S["property-type"]==="cross-faded-data-driven"}function Ps(S){return!!S.expression&&S.expression.parameters.indexOf("zoom")>-1}function Qo(S){return!!S.expression&&S.expression.interpolated}function hi(S){return S instanceof Number?"number":S instanceof String?"string":S instanceof Boolean?"boolean":Array.isArray(S)?"array":S===null?"null":typeof S}function ds(S){return typeof S=="object"&&S!==null&&!Array.isArray(S)}function Cc(S){return S}function Hl(S,z){var Z,le,ke,Ie=z.type==="color",qe=S.stops&&typeof S.stops[0][0]=="object",it=qe||S.property!==void 0,dt=qe||!it,St=S.type||(Qo(z)?"exponential":"interval");if(Ie&&((S=ut({},S)).stops&&(S.stops=S.stops.map(function(_r){return[_r[0],hn.parse(_r[1])]})),S.default?S.default=hn.parse(S.default):S.default=hn.parse(z.default)),S.colorSpace&&S.colorSpace!=="rgb"&&!du[S.colorSpace])throw new Error("Unknown color space: "+S.colorSpace);if(St==="exponential")Z=oo;else if(St==="interval")Z=Qs;else if(St==="categorical"){Z=Os,le=Object.create(null);for(var Rt=0,Ht=S.stops;Rt=S.stops[le-1][0])return S.stops[le-1][1];var ke=Sr(S.stops.map(function(Ie){return Ie[0]}),Z);return S.stops[ke][1]}function oo(S,z,Z){var le=S.base!==void 0?S.base:1;if(hi(Z)!=="number")return bl(S.default,z.default);var ke=S.stops.length;if(ke===1||Z<=S.stops[0][0])return S.stops[0][1];if(Z>=S.stops[ke-1][0])return S.stops[ke-1][1];var Ie=Sr(S.stops.map(function(Ht){return Ht[0]}),Z),qe=function(Ht,Yt,Zt,cn){var Tn=cn-Zt,Fn=Ht-Zt;return Tn===0?0:Yt===1?Fn/Tn:(Math.pow(Yt,Fn)-1)/(Math.pow(Yt,Tn)-1)}(Z,le,S.stops[Ie][0],S.stops[Ie+1][0]),it=S.stops[Ie][1],dt=S.stops[Ie+1][1],St=pr[z.type]||Cc;if(S.colorSpace&&S.colorSpace!=="rgb"){var Rt=du[S.colorSpace];St=function(Ht,Yt){return Rt.reverse(Rt.interpolate(Rt.forward(Ht),Rt.forward(Yt),qe))}}return typeof it.evaluate=="function"?{evaluate:function(){for(var Ht=[],Yt=arguments.length;Yt--;)Ht[Yt]=arguments[Yt];var Zt=it.evaluate.apply(void 0,Ht),cn=dt.evaluate.apply(void 0,Ht);if(Zt!==void 0&&cn!==void 0)return St(Zt,cn,qe)}}:St(it,dt,qe)}function xu(S,z,Z){return z.type==="color"?Z=hn.parse(Z):z.type==="formatted"?Z=Nn.fromString(Z.toString()):z.type==="resolvedImage"?Z=Hn.fromString(Z.toString()):hi(Z)===z.type||z.type==="enum"&&z.values[Z]||(Z=void 0),bl(Z,S.default,z.default)}Zn.register(Js,{error:[{kind:"error"},[_t],function(S,z){var Z=z[0];throw new ir(Z.evaluate(S))}],typeof:[_t,[Gt],function(S,z){return ln(tr(z[0].evaluate(S)))}],"to-rgba":[yn(Ot,4),[Bt],function(S,z){return z[0].evaluate(S).toArray()}],rgb:[Bt,[Ot,Ot,Ot],Ko],rgba:[Bt,[Ot,Ot,Ot,Ot],Ko],has:{type:Pt,overloads:[[[_t],function(S,z){return mu(z[0].evaluate(S),S.properties())}],[[_t,Wt],function(S,z){var Z=z[0],le=z[1];return mu(Z.evaluate(S),le.evaluate(S))}]]},get:{type:Gt,overloads:[[[_t],function(S,z){return yu(z[0].evaluate(S),S.properties())}],[[_t,Wt],function(S,z){var Z=z[0],le=z[1];return yu(Z.evaluate(S),le.evaluate(S))}]]},"feature-state":[Gt,[_t],function(S,z){return yu(z[0].evaluate(S),S.featureState||{})}],properties:[Wt,[],function(S){return S.properties()}],"geometry-type":[_t,[],function(S){return S.geometryType()}],id:[Gt,[],function(S){return S.id()}],zoom:[Ot,[],function(S){return S.globals.zoom}],"heatmap-density":[Ot,[],function(S){return S.globals.heatmapDensity||0}],"line-progress":[Ot,[],function(S){return S.globals.lineProgress||0}],accumulated:[Gt,[],function(S){return S.globals.accumulated===void 0?null:S.globals.accumulated}],"+":[Ot,Ls(Ot),function(S,z){for(var Z=0,le=0,ke=z;le":[Pt,[_t,Gt],function(S,z){var Z=z[0],le=z[1],ke=S.properties()[Z.value],Ie=le.value;return typeof ke==typeof Ie&&ke>Ie}],"filter-id->":[Pt,[Gt],function(S,z){var Z=z[0],le=S.id(),ke=Z.value;return typeof le==typeof ke&&le>ke}],"filter-<=":[Pt,[_t,Gt],function(S,z){var Z=z[0],le=z[1],ke=S.properties()[Z.value],Ie=le.value;return typeof ke==typeof Ie&&ke<=Ie}],"filter-id-<=":[Pt,[Gt],function(S,z){var Z=z[0],le=S.id(),ke=Z.value;return typeof le==typeof ke&&le<=ke}],"filter->=":[Pt,[_t,Gt],function(S,z){var Z=z[0],le=z[1],ke=S.properties()[Z.value],Ie=le.value;return typeof ke==typeof Ie&&ke>=Ie}],"filter-id->=":[Pt,[Gt],function(S,z){var Z=z[0],le=S.id(),ke=Z.value;return typeof le==typeof ke&&le>=ke}],"filter-has":[Pt,[Gt],function(S,z){return z[0].value in S.properties()}],"filter-has-id":[Pt,[],function(S){return S.id()!==null&&S.id()!==void 0}],"filter-type-in":[Pt,[yn(_t)],function(S,z){return z[0].value.indexOf(S.geometryType())>=0}],"filter-id-in":[Pt,[yn(Gt)],function(S,z){return z[0].value.indexOf(S.id())>=0}],"filter-in-small":[Pt,[_t,yn(Gt)],function(S,z){var Z=z[0];return z[1].value.indexOf(S.properties()[Z.value])>=0}],"filter-in-large":[Pt,[_t,yn(Gt)],function(S,z){var Z=z[0],le=z[1];return function(ke,Ie,qe,it){for(;qe<=it;){var dt=qe+it>>1;if(Ie[dt]===ke)return!0;Ie[dt]>ke?it=dt-1:qe=dt+1}return!1}(S.properties()[Z.value],le.value,0,le.value.length-1)}],all:{type:Pt,overloads:[[[Pt,Pt],function(S,z){var Z=z[0],le=z[1];return Z.evaluate(S)&&le.evaluate(S)}],[Ls(Pt),function(S,z){for(var Z=0,le=z;Z0&&typeof S[0]=="string"&&S[0]in Js}function wl(S,z){var Z=new cr(Js,[],z?function(ke){var Ie={color:Bt,string:_t,number:Ot,enum:_t,boolean:Pt,formatted:Kt,resolvedImage:nn};return ke.type==="array"?yn(Ie[ke.value]||Gt,ke.length):Ie[ke.type]}(z):void 0),le=Z.parse(S,void 0,void 0,void 0,z&&z.type==="string"?{typeAnnotation:"coerce"}:void 0);return le?Vl(new _l(le,z)):ps(Z.errors)}_l.prototype.evaluateWithoutErrorHandling=function(S,z,Z,le,ke,Ie){return this._evaluator.globals=S,this._evaluator.feature=z,this._evaluator.featureState=Z,this._evaluator.canonical=le,this._evaluator.availableImages=ke||null,this._evaluator.formattedSection=Ie,this.expression.evaluate(this._evaluator)},_l.prototype.evaluate=function(S,z,Z,le,ke,Ie){this._evaluator.globals=S,this._evaluator.feature=z||null,this._evaluator.featureState=Z||null,this._evaluator.canonical=le,this._evaluator.availableImages=ke||null,this._evaluator.formattedSection=Ie||null;try{var qe=this.expression.evaluate(this._evaluator);if(qe==null||typeof qe=="number"&&qe!=qe)return this._defaultValue;if(this._enumValues&&!(qe in this._enumValues))throw new ir("Expected value to be one of "+Object.keys(this._enumValues).map(function(it){return JSON.stringify(it)}).join(", ")+", but found "+JSON.stringify(qe)+" instead.");return qe}catch(it){return this._warningHistory[it.message]||(this._warningHistory[it.message]=!0,typeof console<"u"&&console.warn(it.message)),this._defaultValue}};var Is=function(S,z){this.kind=S,this._styleExpression=z,this.isStateDependent=S!=="constant"&&!lr(z.expression)};Is.prototype.evaluateWithoutErrorHandling=function(S,z,Z,le,ke,Ie){return this._styleExpression.evaluateWithoutErrorHandling(S,z,Z,le,ke,Ie)},Is.prototype.evaluate=function(S,z,Z,le,ke,Ie){return this._styleExpression.evaluate(S,z,Z,le,ke,Ie)};var Rs=function(S,z,Z,le){this.kind=S,this.zoomStops=Z,this._styleExpression=z,this.isStateDependent=S!=="camera"&&!lr(z.expression),this.interpolationType=le};function tl(S,z){if((S=wl(S,z)).result==="error")return S;var Z=S.value.expression,le=Jn(Z);if(!le&&!Ks(z))return ps([new Lt("","data expressions not supported")]);var ke=sr(Z,["zoom"]);if(!ke&&!Ps(z))return ps([new Lt("","zoom expressions not supported")]);var Ie=kl(Z);if(!Ie&&!ke)return ps([new Lt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(Ie instanceof Lt)return ps([Ie]);if(Ie instanceof Qi&&!Qo(z))return ps([new Lt("",'"interpolate" expressions cannot be used with this property')]);if(!Ie)return Vl(new Is(le?"constant":"source",S.value));var qe=Ie instanceof Qi?Ie.interpolation:void 0;return Vl(new Rs(le?"camera":"composite",S.value,Ie.labels,qe))}Rs.prototype.evaluateWithoutErrorHandling=function(S,z,Z,le,ke,Ie){return this._styleExpression.evaluateWithoutErrorHandling(S,z,Z,le,ke,Ie)},Rs.prototype.evaluate=function(S,z,Z,le,ke,Ie){return this._styleExpression.evaluate(S,z,Z,le,ke,Ie)},Rs.prototype.interpolationFactor=function(S,z,Z){return this.interpolationType?Qi.interpolationFactor(this.interpolationType,S,z,Z):0};var Tl=function(S,z){this._parameters=S,this._specification=z,ut(this,Hl(this._parameters,this._specification))};function kl(S){var z=null;if(S instanceof eo)z=kl(S.result);else if(S instanceof qa)for(var Z=0,le=S.args;Zle.maximum?[new Be(z,Z,Z+" is greater than the maximum value "+le.maximum)]:[]}function bu(S){var z,Z,le,ke=S.valueSpec,Ie=pt(S.value.type),qe={},it=Ie!=="categorical"&&S.value.property===void 0,dt=!it,St=hi(S.value.stops)==="array"&&hi(S.value.stops[0])==="array"&&hi(S.value.stops[0][0])==="object",Rt=so({key:S.key,value:S.value,valueSpec:S.styleSpec.function,style:S.style,styleSpec:S.styleSpec,objectElementValidators:{stops:function(Zt){if(Ie==="identity")return[new Be(Zt.key,Zt.value,'identity function may not have a "stops" property')];var cn=[],Tn=Zt.value;return cn=cn.concat(Al({key:Zt.key,value:Tn,valueSpec:Zt.valueSpec,style:Zt.style,styleSpec:Zt.styleSpec,arrayElementValidator:Ht})),hi(Tn)==="array"&&Tn.length===0&&cn.push(new Be(Zt.key,Tn,"array must have at least one stop")),cn},default:function(Zt){return Oi({key:Zt.key,value:Zt.value,valueSpec:ke,style:Zt.style,styleSpec:Zt.styleSpec})}}});return Ie==="identity"&&it&&Rt.push(new Be(S.key,S.value,'missing required property "property"')),Ie==="identity"||S.value.stops||Rt.push(new Be(S.key,S.value,'missing required property "stops"')),Ie==="exponential"&&S.valueSpec.expression&&!Qo(S.valueSpec)&&Rt.push(new Be(S.key,S.value,"exponential functions not supported")),S.styleSpec.$version>=8&&(dt&&!Ks(S.valueSpec)?Rt.push(new Be(S.key,S.value,"property functions not supported")):it&&!Ps(S.valueSpec)&&Rt.push(new Be(S.key,S.value,"zoom functions not supported"))),Ie!=="categorical"&&!St||S.value.property!==void 0||Rt.push(new Be(S.key,S.value,'"property" property is required')),Rt;function Ht(Zt){var cn=[],Tn=Zt.value,Fn=Zt.key;if(hi(Tn)!=="array")return[new Be(Fn,Tn,"array expected, "+hi(Tn)+" found")];if(Tn.length!==2)return[new Be(Fn,Tn,"array length 2 expected, length "+Tn.length+" found")];if(St){if(hi(Tn[0])!=="object")return[new Be(Fn,Tn,"object expected, "+hi(Tn[0])+" found")];if(Tn[0].zoom===void 0)return[new Be(Fn,Tn,"object stop key must have zoom")];if(Tn[0].value===void 0)return[new Be(Fn,Tn,"object stop key must have value")];if(le&&le>pt(Tn[0].zoom))return[new Be(Fn,Tn[0].zoom,"stop zoom values must appear in ascending order")];pt(Tn[0].zoom)!==le&&(le=pt(Tn[0].zoom),Z=void 0,qe={}),cn=cn.concat(so({key:Fn+"[0]",value:Tn[0],valueSpec:{zoom:{}},style:Zt.style,styleSpec:Zt.styleSpec,objectElementValidators:{zoom:Ml,value:Yt}}))}else cn=cn.concat(Yt({key:Fn+"[0]",value:Tn[0],valueSpec:{},style:Zt.style,styleSpec:Zt.styleSpec},Tn));return el(bt(Tn[1]))?cn.concat([new Be(Fn+"[1]",Tn[1],"expressions are not allowed in function stops.")]):cn.concat(Oi({key:Fn+"[1]",value:Tn[1],valueSpec:ke,style:Zt.style,styleSpec:Zt.styleSpec}))}function Yt(Zt,cn){var Tn=hi(Zt.value),Fn=pt(Zt.value),Dn=Zt.value!==null?Zt.value:cn;if(z){if(Tn!==z)return[new Be(Zt.key,Dn,Tn+" stop domain type must match previous stop domain type "+z)]}else z=Tn;if(Tn!=="number"&&Tn!=="string"&&Tn!=="boolean")return[new Be(Zt.key,Dn,"stop domain value must be a number, string, or boolean")];if(Tn!=="number"&&Ie!=="categorical"){var Gn="number expected, "+Tn+" found";return Ks(ke)&&Ie===void 0&&(Gn+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Be(Zt.key,Dn,Gn)]}return Ie!=="categorical"||Tn!=="number"||isFinite(Fn)&&Math.floor(Fn)===Fn?Ie!=="categorical"&&Tn==="number"&&Z!==void 0&&Fn=2&&S[1]!=="$id"&&S[1]!=="$type";case"in":return S.length>=3&&(typeof S[1]!="string"||Array.isArray(S[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return S.length!==3||Array.isArray(S[1])||Array.isArray(S[2]);case"any":case"all":for(var z=0,Z=S.slice(1);zz?1:0}function zs(S){if(!Array.isArray(S))return!1;if(S[0]==="within")return!0;for(var z=1;z"||Z==="<="||Z===">="?bi(S[1],S[2],Z):Z==="any"?(z=S.slice(1),["any"].concat(z.map(Ds))):Z==="all"?["all"].concat(S.slice(1).map(Ds)):Z==="none"?["all"].concat(S.slice(1).map(Ds).map(ga)):Z==="in"?vs(S[1],S.slice(2)):Z==="!in"?ga(vs(S[1],S.slice(2))):Z==="has"?ms(S[1]):Z==="!has"?ga(ms(S[1])):Z!=="within"||S}function bi(S,z,Z){switch(S){case"$type":return["filter-type-"+Z,z];case"$id":return["filter-id-"+Z,z];default:return["filter-"+Z,S,z]}}function vs(S,z){if(z.length===0)return!1;switch(S){case"$type":return["filter-type-in",["literal",z]];case"$id":return["filter-id-in",["literal",z]];default:return z.length>200&&!z.some(function(Z){return typeof Z!=typeof z[0]})?["filter-in-large",S,["literal",z.sort(nl)]]:["filter-in-small",S,["literal",z]]}}function ms(S){switch(S){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",S]}}function ga(S){return["!",S]}function oi(S){return Sl(bt(S.value))?gs(ut({},S,{expressionContext:"filter",valueSpec:{value:"boolean"}})):li(S)}function li(S){var z=S.value,Z=S.key;if(hi(z)!=="array")return[new Be(Z,z,"array expected, "+hi(z)+" found")];var le,ke=S.styleSpec,Ie=[];if(z.length<1)return[new Be(Z,z,"filter array must have at least 1 element")];switch(Ie=Ie.concat(ql({key:Z+"[0]",value:z[0],valueSpec:ke.filter_operator,style:S.style,styleSpec:S.styleSpec})),pt(z[0])){case"<":case"<=":case">":case">=":z.length>=2&&pt(z[1])==="$type"&&Ie.push(new Be(Z,z,'"$type" cannot be use with operator "'+z[0]+'"'));case"==":case"!=":z.length!==3&&Ie.push(new Be(Z,z,'filter array for operator "'+z[0]+'" must have 3 elements'));case"in":case"!in":z.length>=2&&(le=hi(z[1]))!=="string"&&Ie.push(new Be(Z+"[1]",z[1],"string expected, "+le+" found"));for(var qe=2;qe=Rt[Zt+0]&&le>=Rt[Zt+1])?(qe[Yt]=!0,Ie.push(St[Yt])):qe[Yt]=!1}}},Ga.prototype._forEachCell=function(S,z,Z,le,ke,Ie,qe,it){for(var dt=this._convertToCellCoord(S),St=this._convertToCellCoord(z),Rt=this._convertToCellCoord(Z),Ht=this._convertToCellCoord(le),Yt=dt;Yt<=Rt;Yt++)for(var Zt=St;Zt<=Ht;Zt++){var cn=this.d*Zt+Yt;if((!it||it(this._convertFromCellCoord(Yt),this._convertFromCellCoord(Zt),this._convertFromCellCoord(Yt+1),this._convertFromCellCoord(Zt+1)))&&ke.call(this,S,z,Z,le,cn,Ie,qe,it))return}},Ga.prototype._convertFromCellCoord=function(S){return(S-this.padding)/this.scale},Ga.prototype._convertToCellCoord=function(S){return Math.max(0,Math.min(this.d-1,Math.floor(S*this.scale)+this.padding))},Ga.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var S=this.cells,z=3+this.cells.length+1+1,Z=0,le=0;le=0)){var Ht=S[Rt];St[Rt]=Sa[dt].shallow.indexOf(Rt)>=0?Ht:rl(Ht,z)}S instanceof Error&&(St.message=S.message)}if(St.$name)throw new Error("$name property is reserved for worker serialization logic.");return dt!=="Object"&&(St.$name=dt),St}throw new Error("can't serialize object of type "+typeof S)}function il(S){if(S==null||typeof S=="boolean"||typeof S=="number"||typeof S=="string"||S instanceof Boolean||S instanceof Number||S instanceof String||S instanceof Date||S instanceof RegExp||Ra(S)||Yl(S)||ArrayBuffer.isView(S)||S instanceof Wl)return S;if(Array.isArray(S))return S.map(il);if(typeof S=="object"){var z=S.$name||"Object",Z=Sa[z].klass;if(!Z)throw new Error("can't deserialize unregistered class "+z);if(Z.deserialize)return Z.deserialize(S);for(var le=Object.create(Z.prototype),ke=0,Ie=Object.keys(S);ke=0?it:il(it)}}return le}throw new Error("can't deserialize object of type "+typeof S)}var al=function(){this.first=!0};al.prototype.update=function(S,z){var Z=Math.floor(S);return this.first?(this.first=!1,this.lastIntegerZoom=Z,this.lastIntegerZoomTime=0,this.lastZoom=S,this.lastFloorZoom=Z,!0):(this.lastFloorZoom>Z?(this.lastIntegerZoom=Z+1,this.lastIntegerZoomTime=z):this.lastFloorZoom=128&&S<=255},Arabic:function(S){return S>=1536&&S<=1791},"Arabic Supplement":function(S){return S>=1872&&S<=1919},"Arabic Extended-A":function(S){return S>=2208&&S<=2303},"Hangul Jamo":function(S){return S>=4352&&S<=4607},"Unified Canadian Aboriginal Syllabics":function(S){return S>=5120&&S<=5759},Khmer:function(S){return S>=6016&&S<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(S){return S>=6320&&S<=6399},"General Punctuation":function(S){return S>=8192&&S<=8303},"Letterlike Symbols":function(S){return S>=8448&&S<=8527},"Number Forms":function(S){return S>=8528&&S<=8591},"Miscellaneous Technical":function(S){return S>=8960&&S<=9215},"Control Pictures":function(S){return S>=9216&&S<=9279},"Optical Character Recognition":function(S){return S>=9280&&S<=9311},"Enclosed Alphanumerics":function(S){return S>=9312&&S<=9471},"Geometric Shapes":function(S){return S>=9632&&S<=9727},"Miscellaneous Symbols":function(S){return S>=9728&&S<=9983},"Miscellaneous Symbols and Arrows":function(S){return S>=11008&&S<=11263},"CJK Radicals Supplement":function(S){return S>=11904&&S<=12031},"Kangxi Radicals":function(S){return S>=12032&&S<=12255},"Ideographic Description Characters":function(S){return S>=12272&&S<=12287},"CJK Symbols and Punctuation":function(S){return S>=12288&&S<=12351},Hiragana:function(S){return S>=12352&&S<=12447},Katakana:function(S){return S>=12448&&S<=12543},Bopomofo:function(S){return S>=12544&&S<=12591},"Hangul Compatibility Jamo":function(S){return S>=12592&&S<=12687},Kanbun:function(S){return S>=12688&&S<=12703},"Bopomofo Extended":function(S){return S>=12704&&S<=12735},"CJK Strokes":function(S){return S>=12736&&S<=12783},"Katakana Phonetic Extensions":function(S){return S>=12784&&S<=12799},"Enclosed CJK Letters and Months":function(S){return S>=12800&&S<=13055},"CJK Compatibility":function(S){return S>=13056&&S<=13311},"CJK Unified Ideographs Extension A":function(S){return S>=13312&&S<=19903},"Yijing Hexagram Symbols":function(S){return S>=19904&&S<=19967},"CJK Unified Ideographs":function(S){return S>=19968&&S<=40959},"Yi Syllables":function(S){return S>=40960&&S<=42127},"Yi Radicals":function(S){return S>=42128&&S<=42191},"Hangul Jamo Extended-A":function(S){return S>=43360&&S<=43391},"Hangul Syllables":function(S){return S>=44032&&S<=55215},"Hangul Jamo Extended-B":function(S){return S>=55216&&S<=55295},"Private Use Area":function(S){return S>=57344&&S<=63743},"CJK Compatibility Ideographs":function(S){return S>=63744&&S<=64255},"Arabic Presentation Forms-A":function(S){return S>=64336&&S<=65023},"Vertical Forms":function(S){return S>=65040&&S<=65055},"CJK Compatibility Forms":function(S){return S>=65072&&S<=65103},"Small Form Variants":function(S){return S>=65104&&S<=65135},"Arabic Presentation Forms-B":function(S){return S>=65136&&S<=65279},"Halfwidth and Fullwidth Forms":function(S){return S>=65280&&S<=65519}};function ol(S){for(var z=0,Z=S;z=65097&&S<=65103)||Or["CJK Compatibility Ideographs"](S)||Or["CJK Compatibility"](S)||Or["CJK Radicals Supplement"](S)||Or["CJK Strokes"](S)||!(!Or["CJK Symbols and Punctuation"](S)||S>=12296&&S<=12305||S>=12308&&S<=12319||S===12336)||Or["CJK Unified Ideographs Extension A"](S)||Or["CJK Unified Ideographs"](S)||Or["Enclosed CJK Letters and Months"](S)||Or["Hangul Compatibility Jamo"](S)||Or["Hangul Jamo Extended-A"](S)||Or["Hangul Jamo Extended-B"](S)||Or["Hangul Jamo"](S)||Or["Hangul Syllables"](S)||Or.Hiragana(S)||Or["Ideographic Description Characters"](S)||Or.Kanbun(S)||Or["Kangxi Radicals"](S)||Or["Katakana Phonetic Extensions"](S)||Or.Katakana(S)&&S!==12540||!(!Or["Halfwidth and Fullwidth Forms"](S)||S===65288||S===65289||S===65293||S>=65306&&S<=65310||S===65339||S===65341||S===65343||S>=65371&&S<=65503||S===65507||S>=65512&&S<=65519)||!(!Or["Small Form Variants"](S)||S>=65112&&S<=65118||S>=65123&&S<=65126)||Or["Unified Canadian Aboriginal Syllabics"](S)||Or["Unified Canadian Aboriginal Syllabics Extended"](S)||Or["Vertical Forms"](S)||Or["Yijing Hexagram Symbols"](S)||Or["Yi Syllables"](S)||Or["Yi Radicals"](S))))}function Xl(S){return!(uo(S)||function(z){return!!(Or["Latin-1 Supplement"](z)&&(z===167||z===169||z===174||z===177||z===188||z===189||z===190||z===215||z===247)||Or["General Punctuation"](z)&&(z===8214||z===8224||z===8225||z===8240||z===8241||z===8251||z===8252||z===8258||z===8263||z===8264||z===8265||z===8273)||Or["Letterlike Symbols"](z)||Or["Number Forms"](z)||Or["Miscellaneous Technical"](z)&&(z>=8960&&z<=8967||z>=8972&&z<=8991||z>=8996&&z<=9e3||z===9003||z>=9085&&z<=9114||z>=9150&&z<=9165||z===9167||z>=9169&&z<=9179||z>=9186&&z<=9215)||Or["Control Pictures"](z)&&z!==9251||Or["Optical Character Recognition"](z)||Or["Enclosed Alphanumerics"](z)||Or["Geometric Shapes"](z)||Or["Miscellaneous Symbols"](z)&&!(z>=9754&&z<=9759)||Or["Miscellaneous Symbols and Arrows"](z)&&(z>=11026&&z<=11055||z>=11088&&z<=11097||z>=11192&&z<=11243)||Or["CJK Symbols and Punctuation"](z)||Or.Katakana(z)||Or["Private Use Area"](z)||Or["CJK Compatibility Forms"](z)||Or["Small Form Variants"](z)||Or["Halfwidth and Fullwidth Forms"](z)||z===8734||z===8756||z===8757||z>=9984&&z<=10087||z>=10102&&z<=10131||z===65532||z===65533)}(S))}function Cl(S){return Or.Arabic(S)||Or["Arabic Supplement"](S)||Or["Arabic Extended-A"](S)||Or["Arabic Presentation Forms-A"](S)||Or["Arabic Presentation Forms-B"](S)}function ya(S){return S>=1424&&S<=2303||Or["Arabic Presentation Forms-A"](S)||Or["Arabic Presentation Forms-B"](S)}function Vs(S,z){return!(!z&&ya(S)||S>=2304&&S<=3583||S>=3840&&S<=4255||Or.Khmer(S))}function ns(S){for(var z=0,Z=S;z-1&&(xa=co),Hs&&Hs(S)};function Ll(){to.fire(new Ge("pluginStateChange",{pluginStatus:xa,pluginURL:fo}))}var to=new ht,ho=function(){return xa},Fo=function(){if(xa!==Wa||!fo)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");xa=xs,Ll(),fo&&Dt({url:fo},function(S){S?vi(S):(xa=_o,Ll())})},za={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return xa===_o||za.applyArabicShaping!=null},isLoading:function(){return xa===xs},setState:function(S){xa=S.pluginStatus,fo=S.pluginURL},isParsed:function(){return za.applyArabicShaping!=null&&za.processBidirectionalText!=null&&za.processStyledBidirectionalText!=null},getPluginURL:function(){return fo}},di=function(S,z){this.zoom=S,z?(this.now=z.now,this.fadeDuration=z.fadeDuration,this.zoomHistory=z.zoomHistory,this.transition=z.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new al,this.transition={})};di.prototype.isSupportedScript=function(S){return function(z,Z){for(var le=0,ke=z;lethis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:z+(1-z)*Z}:{fromScale:.5,toScale:1,t:1-(1-Z)*z}};var oa=function(S,z){this.property=S,this.value=z,this.expression=function(Z,le){if(ds(Z))return new Tl(Z,le);if(el(Z)){var ke=tl(Z,le);if(ke.result==="error")throw new Error(ke.value.map(function(qe){return qe.key+": "+qe.message}).join(", "));return ke.value}var Ie=Z;return typeof Z=="string"&&le.type==="color"&&(Ie=hn.parse(Z)),{kind:"constant",evaluate:function(){return Ie}}}(z===void 0?S.specification.default:z,S.specification)};oa.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},oa.prototype.possiblyEvaluate=function(S,z,Z){return this.property.possiblyEvaluate(this,S,z,Z)};var wo=function(S){this.property=S,this.value=new oa(S,void 0)};wo.prototype.transitioned=function(S,z){return new Bo(this.property,this.value,z,u({},S.transition,this.transition),S.now)},wo.prototype.untransitioned=function(){return new Bo(this.property,this.value,null,{},0)};var Da=function(S){this._properties=S,this._values=Object.create(S.defaultTransitionablePropertyValues)};Da.prototype.getValue=function(S){return k(this._values[S].value.value)},Da.prototype.setValue=function(S,z){this._values.hasOwnProperty(S)||(this._values[S]=new wo(this._values[S].property)),this._values[S].value=new oa(this._values[S].property,z===null?void 0:k(z))},Da.prototype.getTransition=function(S){return k(this._values[S].transition)},Da.prototype.setTransition=function(S,z){this._values.hasOwnProperty(S)||(this._values[S]=new wo(this._values[S].property)),this._values[S].transition=k(z)||void 0},Da.prototype.serialize=function(){for(var S={},z=0,Z=Object.keys(this._values);zthis.end)return this.prior=null,ke;if(this.value.isDataDriven())return this.prior=null,ke;if(le=1)return 1;var dt=it*it,St=dt*it;return 4*(it<.5?St:3*(it-dt)+St-.75)}(qe))}return ke};var bs=function(S){this._properties=S,this._values=Object.create(S.defaultTransitioningPropertyValues)};bs.prototype.possiblyEvaluate=function(S,z,Z){for(var le=new po(this._properties),ke=0,Ie=Object.keys(this._values);keIe.zoomHistory.lastIntegerZoom?{from:Z,to:le}:{from:ke,to:le}},z.prototype.interpolate=function(Z){return Z},z}(Ur),is=function(S){this.specification=S};is.prototype.possiblyEvaluate=function(S,z,Z,le){if(S.value!==void 0){if(S.expression.kind==="constant"){var ke=S.expression.evaluate(z,null,{},Z,le);return this._calculate(ke,ke,ke,z)}return this._calculate(S.expression.evaluate(new di(Math.floor(z.zoom-1),z)),S.expression.evaluate(new di(Math.floor(z.zoom),z)),S.expression.evaluate(new di(Math.floor(z.zoom+1),z)),z)}},is.prototype._calculate=function(S,z,Z,le){return le.zoom>le.zoomHistory.lastIntegerZoom?{from:S,to:z}:{from:Z,to:z}},is.prototype.interpolate=function(S){return S};var To=function(S){this.specification=S};To.prototype.possiblyEvaluate=function(S,z,Z,le){return!!S.expression.evaluate(z,null,{},Z,le)},To.prototype.interpolate=function(){return!1};var _a=function(S){for(var z in this.properties=S,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],S){var Z=S[z];Z.specification.overridable&&this.overridableProperties.push(z);var le=this.defaultPropertyValues[z]=new oa(Z,void 0),ke=this.defaultTransitionablePropertyValues[z]=new wo(Z);this.defaultTransitioningPropertyValues[z]=ke.untransitioned(),this.defaultPossiblyEvaluatedValues[z]=le.possiblyEvaluate({})}};Cr("DataDrivenProperty",Ur),Cr("DataConstantProperty",Fr),Cr("CrossFadedDataDrivenProperty",sl),Cr("CrossFadedProperty",is),Cr("ColorRampProperty",To);var $l="-transition",Fa=function(S){function z(Z,le){if(S.call(this),this.id=Z.id,this.type=Z.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},Z.type!=="custom"&&(this.metadata=Z.metadata,this.minzoom=Z.minzoom,this.maxzoom=Z.maxzoom,Z.type!=="background"&&(this.source=Z.source,this.sourceLayer=Z["source-layer"],this.filter=Z.filter),le.layout&&(this._unevaluatedLayout=new rs(le.layout)),le.paint)){for(var ke in this._transitionablePaint=new Da(le.paint),Z.paint)this.setPaintProperty(ke,Z.paint[ke],{validate:!1});for(var Ie in Z.layout)this.setLayoutProperty(Ie,Z.layout[Ie],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new po(le.paint)}}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},z.prototype.getLayoutProperty=function(Z){return Z==="visibility"?this.visibility:this._unevaluatedLayout.getValue(Z)},z.prototype.setLayoutProperty=function(Z,le,ke){if(ke===void 0&&(ke={}),le!=null){var Ie="layers."+this.id+".layout."+Z;if(this._validate(ys,Ie,Z,le,ke))return}Z!=="visibility"?this._unevaluatedLayout.setValue(Z,le):this.visibility=le},z.prototype.getPaintProperty=function(Z){return x(Z,$l)?this._transitionablePaint.getTransition(Z.slice(0,-$l.length)):this._transitionablePaint.getValue(Z)},z.prototype.setPaintProperty=function(Z,le,ke){if(ke===void 0&&(ke={}),le!=null){var Ie="layers."+this.id+".paint."+Z;if(this._validate(Ia,Ie,Z,le,ke))return!1}if(x(Z,$l))return this._transitionablePaint.setTransition(Z.slice(0,-$l.length),le||void 0),!1;var qe=this._transitionablePaint._values[Z],it=qe.property.specification["property-type"]==="cross-faded-data-driven",dt=qe.value.isDataDriven(),St=qe.value;this._transitionablePaint.setValue(Z,le),this._handleSpecialPaintPropertyUpdate(Z);var Rt=this._transitionablePaint._values[Z].value;return Rt.isDataDriven()||dt||it||this._handleOverridablePaintPropertyUpdate(Z,St,Rt)},z.prototype._handleSpecialPaintPropertyUpdate=function(Z){},z.prototype._handleOverridablePaintPropertyUpdate=function(Z,le,ke){return!1},z.prototype.isHidden=function(Z){return!!(this.minzoom&&Z=this.maxzoom)||this.visibility==="none"},z.prototype.updateTransitions=function(Z){this._transitioningPaint=this._transitionablePaint.transitioned(Z,this._transitioningPaint)},z.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},z.prototype.recalculate=function(Z,le){Z.getCrossfadeParameters&&(this._crossfadeParameters=Z.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(Z,void 0,le)),this.paint=this._transitioningPaint.possiblyEvaluate(Z,void 0,le)},z.prototype.serialize=function(){var Z={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(Z.layout=Z.layout||{},Z.layout.visibility=this.visibility),m(Z,function(le,ke){return!(le===void 0||ke==="layout"&&!Object.keys(le).length||ke==="paint"&&!Object.keys(le).length)})},z.prototype._validate=function(Z,le,ke,Ie,qe){return qe===void 0&&(qe={}),(!qe||qe.validate!==!1)&&lo(this,Z.call(ma,{key:le,layerType:this.type,objectKey:ke,value:Ie,styleSpec:Oe,style:{glyphs:!0,sprite:!0}}))},z.prototype.is3D=function(){return!1},z.prototype.isTileClipped=function(){return!1},z.prototype.hasOffscreenPass=function(){return!1},z.prototype.resize=function(){},z.prototype.isStateDependent=function(){for(var Z in this.paint._values){var le=this.paint.get(Z);if(le instanceof ba&&Ks(le.property.specification)&&(le.value.kind==="source"||le.value.kind==="composite")&&le.value.isStateDependent)return!0}return!1},z}(ht),ll={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},as=function(S,z){this._structArray=S,this._pos1=z*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},_i=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Si(S,z){z===void 0&&(z=1);var Z=0,le=0;return{members:S.map(function(ke){var Ie,qe=(Ie=ke.type,ll[Ie].BYTES_PER_ELEMENT),it=Z=Jl(Z,Math.max(z,qe)),dt=ke.components||1;return le=Math.max(le,qe),Z+=qe*dt,{name:ke.name,type:ke.type,components:dt,offset:it}}),size:Jl(Z,Math.max(le,z)),alignment:z}}function Jl(S,z){return Math.ceil(S/z)*z}_i.serialize=function(S,z){return S._trim(),z&&(S.isTransferred=!0,z.push(S.arrayBuffer)),{length:S.length,arrayBuffer:S.arrayBuffer}},_i.deserialize=function(S){var z=Object.create(this.prototype);return z.arrayBuffer=S.arrayBuffer,z.length=S.length,z.capacity=S.arrayBuffer.byteLength/z.bytesPerElement,z._refreshViews(),z},_i.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},_i.prototype.clear=function(){this.length=0},_i.prototype.resize=function(S){this.reserve(S),this.length=S},_i.prototype.reserve=function(S){if(S>this.capacity){this.capacity=Math.max(S,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var z=this.uint8;this._refreshViews(),z&&this.uint8.set(z)}},_i.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};var et=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le){var ke=this.length;return this.resize(ke+1),this.emplace(ke,Z,le)},z.prototype.emplace=function(Z,le,ke){var Ie=2*Z;return this.int16[Ie+0]=le,this.int16[Ie+1]=ke,Z},z}(_i);et.prototype.bytesPerElement=4,Cr("StructArrayLayout2i4",et);var rt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie){var qe=this.length;return this.resize(qe+1),this.emplace(qe,Z,le,ke,Ie)},z.prototype.emplace=function(Z,le,ke,Ie,qe){var it=4*Z;return this.int16[it+0]=le,this.int16[it+1]=ke,this.int16[it+2]=Ie,this.int16[it+3]=qe,Z},z}(_i);rt.prototype.bytesPerElement=8,Cr("StructArrayLayout4i8",rt);var ct=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it){var dt=this.length;return this.resize(dt+1),this.emplace(dt,Z,le,ke,Ie,qe,it)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt){var St=6*Z;return this.int16[St+0]=le,this.int16[St+1]=ke,this.int16[St+2]=Ie,this.int16[St+3]=qe,this.int16[St+4]=it,this.int16[St+5]=dt,Z},z}(_i);ct.prototype.bytesPerElement=12,Cr("StructArrayLayout2i4i12",ct);var vt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it){var dt=this.length;return this.resize(dt+1),this.emplace(dt,Z,le,ke,Ie,qe,it)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt){var St=4*Z,Rt=8*Z;return this.int16[St+0]=le,this.int16[St+1]=ke,this.uint8[Rt+4]=Ie,this.uint8[Rt+5]=qe,this.uint8[Rt+6]=it,this.uint8[Rt+7]=dt,Z},z}(_i);vt.prototype.bytesPerElement=8,Cr("StructArrayLayout2i4ub8",vt);var Mt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht){var Yt=this.length;return this.resize(Yt+1),this.emplace(Yt,Z,le,ke,Ie,qe,it,dt,St,Rt,Ht)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt){var Zt=9*Z,cn=18*Z;return this.uint16[Zt+0]=le,this.uint16[Zt+1]=ke,this.uint16[Zt+2]=Ie,this.uint16[Zt+3]=qe,this.uint16[Zt+4]=it,this.uint16[Zt+5]=dt,this.uint16[Zt+6]=St,this.uint16[Zt+7]=Rt,this.uint8[cn+16]=Ht,this.uint8[cn+17]=Yt,Z},z}(_i);Mt.prototype.bytesPerElement=18,Cr("StructArrayLayout8ui2ub18",Mt);var kt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt){var cn=this.length;return this.resize(cn+1),this.emplace(cn,Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn){var Tn=12*Z;return this.int16[Tn+0]=le,this.int16[Tn+1]=ke,this.int16[Tn+2]=Ie,this.int16[Tn+3]=qe,this.uint16[Tn+4]=it,this.uint16[Tn+5]=dt,this.uint16[Tn+6]=St,this.uint16[Tn+7]=Rt,this.int16[Tn+8]=Ht,this.int16[Tn+9]=Yt,this.int16[Tn+10]=Zt,this.int16[Tn+11]=cn,Z},z}(_i);kt.prototype.bytesPerElement=24,Cr("StructArrayLayout4i4ui4i24",kt);var q=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke){var Ie=this.length;return this.resize(Ie+1),this.emplace(Ie,Z,le,ke)},z.prototype.emplace=function(Z,le,ke,Ie){var qe=3*Z;return this.float32[qe+0]=le,this.float32[qe+1]=ke,this.float32[qe+2]=Ie,Z},z}(_i);q.prototype.bytesPerElement=12,Cr("StructArrayLayout3f12",q);var $=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z){var le=this.length;return this.resize(le+1),this.emplace(le,Z)},z.prototype.emplace=function(Z,le){var ke=1*Z;return this.uint32[ke+0]=le,Z},z}(_i);$.prototype.bytesPerElement=4,Cr("StructArrayLayout1ul4",$);var W=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it,dt,St,Rt){var Ht=this.length;return this.resize(Ht+1),this.emplace(Ht,Z,le,ke,Ie,qe,it,dt,St,Rt)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht){var Yt=10*Z,Zt=5*Z;return this.int16[Yt+0]=le,this.int16[Yt+1]=ke,this.int16[Yt+2]=Ie,this.int16[Yt+3]=qe,this.int16[Yt+4]=it,this.int16[Yt+5]=dt,this.uint32[Zt+3]=St,this.uint16[Yt+8]=Rt,this.uint16[Yt+9]=Ht,Z},z}(_i);W.prototype.bytesPerElement=20,Cr("StructArrayLayout6i1ul2ui20",W);var ie=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it){var dt=this.length;return this.resize(dt+1),this.emplace(dt,Z,le,ke,Ie,qe,it)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt){var St=6*Z;return this.int16[St+0]=le,this.int16[St+1]=ke,this.int16[St+2]=Ie,this.int16[St+3]=qe,this.int16[St+4]=it,this.int16[St+5]=dt,Z},z}(_i);ie.prototype.bytesPerElement=12,Cr("StructArrayLayout2i2i2i12",ie);var _e=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe){var it=this.length;return this.resize(it+1),this.emplace(it,Z,le,ke,Ie,qe)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it){var dt=4*Z,St=8*Z;return this.float32[dt+0]=le,this.float32[dt+1]=ke,this.float32[dt+2]=Ie,this.int16[St+6]=qe,this.int16[St+7]=it,Z},z}(_i);_e.prototype.bytesPerElement=16,Cr("StructArrayLayout2f1f2i16",_e);var ze=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie){var qe=this.length;return this.resize(qe+1),this.emplace(qe,Z,le,ke,Ie)},z.prototype.emplace=function(Z,le,ke,Ie,qe){var it=12*Z,dt=3*Z;return this.uint8[it+0]=le,this.uint8[it+1]=ke,this.float32[dt+1]=Ie,this.float32[dt+2]=qe,Z},z}(_i);ze.prototype.bytesPerElement=12,Cr("StructArrayLayout2ub2f12",ze);var He=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke){var Ie=this.length;return this.resize(Ie+1),this.emplace(Ie,Z,le,ke)},z.prototype.emplace=function(Z,le,ke,Ie){var qe=3*Z;return this.uint16[qe+0]=le,this.uint16[qe+1]=ke,this.uint16[qe+2]=Ie,Z},z}(_i);He.prototype.bytesPerElement=6,Cr("StructArrayLayout3ui6",He);var Xe=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn,Tn,Fn,Dn,Gn){var Yn=this.length;return this.resize(Yn+1),this.emplace(Yn,Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn,Tn,Fn,Dn,Gn)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn,Tn,Fn,Dn,Gn,Yn){var Kn=24*Z,ar=12*Z,ur=48*Z;return this.int16[Kn+0]=le,this.int16[Kn+1]=ke,this.uint16[Kn+2]=Ie,this.uint16[Kn+3]=qe,this.uint32[ar+2]=it,this.uint32[ar+3]=dt,this.uint32[ar+4]=St,this.uint16[Kn+10]=Rt,this.uint16[Kn+11]=Ht,this.uint16[Kn+12]=Yt,this.float32[ar+7]=Zt,this.float32[ar+8]=cn,this.uint8[ur+36]=Tn,this.uint8[ur+37]=Fn,this.uint8[ur+38]=Dn,this.uint32[ar+10]=Gn,this.int16[Kn+22]=Yn,Z},z}(_i);Xe.prototype.bytesPerElement=48,Cr("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Xe);var at=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn,Tn,Fn,Dn,Gn,Yn,Kn,ar,ur,Er,_r,Ir,Br,$r,jr,Xr){var Vr=this.length;return this.resize(Vr+1),this.emplace(Vr,Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn,Tn,Fn,Dn,Gn,Yn,Kn,ar,ur,Er,_r,Ir,Br,$r,jr,Xr)},z.prototype.emplace=function(Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn,Tn,Fn,Dn,Gn,Yn,Kn,ar,ur,Er,_r,Ir,Br,$r,jr,Xr,Vr){var Nr=34*Z,si=17*Z;return this.int16[Nr+0]=le,this.int16[Nr+1]=ke,this.int16[Nr+2]=Ie,this.int16[Nr+3]=qe,this.int16[Nr+4]=it,this.int16[Nr+5]=dt,this.int16[Nr+6]=St,this.int16[Nr+7]=Rt,this.uint16[Nr+8]=Ht,this.uint16[Nr+9]=Yt,this.uint16[Nr+10]=Zt,this.uint16[Nr+11]=cn,this.uint16[Nr+12]=Tn,this.uint16[Nr+13]=Fn,this.uint16[Nr+14]=Dn,this.uint16[Nr+15]=Gn,this.uint16[Nr+16]=Yn,this.uint16[Nr+17]=Kn,this.uint16[Nr+18]=ar,this.uint16[Nr+19]=ur,this.uint16[Nr+20]=Er,this.uint16[Nr+21]=_r,this.uint16[Nr+22]=Ir,this.uint32[si+12]=Br,this.float32[si+13]=$r,this.float32[si+14]=jr,this.float32[si+15]=Xr,this.float32[si+16]=Vr,Z},z}(_i);at.prototype.bytesPerElement=68,Cr("StructArrayLayout8i15ui1ul4f68",at);var wt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z){var le=this.length;return this.resize(le+1),this.emplace(le,Z)},z.prototype.emplace=function(Z,le){var ke=1*Z;return this.float32[ke+0]=le,Z},z}(_i);wt.prototype.bytesPerElement=4,Cr("StructArrayLayout1f4",wt);var At=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke){var Ie=this.length;return this.resize(Ie+1),this.emplace(Ie,Z,le,ke)},z.prototype.emplace=function(Z,le,ke,Ie){var qe=3*Z;return this.int16[qe+0]=le,this.int16[qe+1]=ke,this.int16[qe+2]=Ie,Z},z}(_i);At.prototype.bytesPerElement=6,Cr("StructArrayLayout3i6",At);var re=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke){var Ie=this.length;return this.resize(Ie+1),this.emplace(Ie,Z,le,ke)},z.prototype.emplace=function(Z,le,ke,Ie){var qe=2*Z,it=4*Z;return this.uint32[qe+0]=le,this.uint16[it+2]=ke,this.uint16[it+3]=Ie,Z},z}(_i);re.prototype.bytesPerElement=8,Cr("StructArrayLayout1ul2ui8",re);var ve=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le){var ke=this.length;return this.resize(ke+1),this.emplace(ke,Z,le)},z.prototype.emplace=function(Z,le,ke){var Ie=2*Z;return this.uint16[Ie+0]=le,this.uint16[Ie+1]=ke,Z},z}(_i);ve.prototype.bytesPerElement=4,Cr("StructArrayLayout2ui4",ve);var Le=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z){var le=this.length;return this.resize(le+1),this.emplace(le,Z)},z.prototype.emplace=function(Z,le){var ke=1*Z;return this.uint16[ke+0]=le,Z},z}(_i);Le.prototype.bytesPerElement=2,Cr("StructArrayLayout1ui2",Le);var Fe=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le){var ke=this.length;return this.resize(ke+1),this.emplace(ke,Z,le)},z.prototype.emplace=function(Z,le,ke){var Ie=2*Z;return this.float32[Ie+0]=le,this.float32[Ie+1]=ke,Z},z}(_i);Fe.prototype.bytesPerElement=8,Cr("StructArrayLayout2f8",Fe);var Ve=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},z.prototype.emplaceBack=function(Z,le,ke,Ie){var qe=this.length;return this.resize(qe+1),this.emplace(qe,Z,le,ke,Ie)},z.prototype.emplace=function(Z,le,ke,Ie,qe){var it=4*Z;return this.float32[it+0]=le,this.float32[it+1]=ke,this.float32[it+2]=Ie,this.float32[it+3]=qe,Z},z}(_i);Ve.prototype.bytesPerElement=16,Cr("StructArrayLayout4f16",Ve);var We=function(S){function z(){S.apply(this,arguments)}S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z;var Z={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return Z.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},Z.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},Z.x1.get=function(){return this._structArray.int16[this._pos2+2]},Z.y1.get=function(){return this._structArray.int16[this._pos2+3]},Z.x2.get=function(){return this._structArray.int16[this._pos2+4]},Z.y2.get=function(){return this._structArray.int16[this._pos2+5]},Z.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},Z.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},Z.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},Z.anchorPoint.get=function(){return new t(this.anchorPointX,this.anchorPointY)},Object.defineProperties(z.prototype,Z),z}(as);We.prototype.size=20;var $e=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.get=function(Z){return new We(this,Z)},z}(W);Cr("CollisionBoxArray",$e);var tt=function(S){function z(){S.apply(this,arguments)}S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z;var Z={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return Z.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},Z.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},Z.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},Z.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},Z.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},Z.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},Z.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},Z.segment.get=function(){return this._structArray.uint16[this._pos2+10]},Z.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},Z.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},Z.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},Z.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},Z.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},Z.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},Z.placedOrientation.set=function(le){this._structArray.uint8[this._pos1+37]=le},Z.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},Z.hidden.set=function(le){this._structArray.uint8[this._pos1+38]=le},Z.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},Z.crossTileID.set=function(le){this._structArray.uint32[this._pos4+10]=le},Z.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(z.prototype,Z),z}(as);tt.prototype.size=48;var lt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.get=function(Z){return new tt(this,Z)},z}(Xe);Cr("PlacedSymbolArray",lt);var gt=function(S){function z(){S.apply(this,arguments)}S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z;var Z={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return Z.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},Z.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},Z.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},Z.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},Z.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},Z.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},Z.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},Z.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},Z.key.get=function(){return this._structArray.uint16[this._pos2+8]},Z.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},Z.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},Z.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},Z.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},Z.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},Z.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},Z.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},Z.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},Z.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},Z.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},Z.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},Z.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},Z.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},Z.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},Z.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},Z.crossTileID.set=function(le){this._structArray.uint32[this._pos4+12]=le},Z.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},Z.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},Z.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},Z.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(z.prototype,Z),z}(as);gt.prototype.size=68;var zt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.get=function(Z){return new gt(this,Z)},z}(at);Cr("SymbolInstanceArray",zt);var Ut=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.getoffsetX=function(Z){return this.float32[1*Z+0]},z}(wt);Cr("GlyphOffsetArray",Ut);var Vt=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.getx=function(Z){return this.int16[3*Z+0]},z.prototype.gety=function(Z){return this.int16[3*Z+1]},z.prototype.gettileUnitDistanceFromAnchor=function(Z){return this.int16[3*Z+2]},z}(At);Cr("SymbolLineVertexArray",Vt);var Qt=function(S){function z(){S.apply(this,arguments)}S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z;var Z={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return Z.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},Z.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},Z.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(z.prototype,Z),z}(as);Qt.prototype.size=8;var gn=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.get=function(Z){return new Qt(this,Z)},z}(re);Cr("FeatureIndexArray",gn);var en=Si([{name:"a_pos",components:2,type:"Int16"}],4).members,sn=function(S){S===void 0&&(S=[]),this.segments=S};function rn(S,z){return 256*(S=o(Math.floor(S),0,255))+o(Math.floor(z),0,255)}sn.prototype.prepareSegment=function(S,z,Z,le){var ke=this.segments[this.segments.length-1];return S>sn.MAX_VERTEX_ARRAY_LENGTH&&M("Max vertices per segment is "+sn.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+S),(!ke||ke.vertexLength+S>sn.MAX_VERTEX_ARRAY_LENGTH||ke.sortKey!==le)&&(ke={vertexOffset:z.length,primitiveOffset:Z.length,vertexLength:0,primitiveLength:0},le!==void 0&&(ke.sortKey=le),this.segments.push(ke)),ke},sn.prototype.get=function(){return this.segments},sn.prototype.destroy=function(){for(var S=0,z=this.segments;S>>16)*it&65535)<<16)&4294967295)<<15|St>>>17))*dt+(((St>>>16)*dt&65535)<<16)&4294967295)<<13|Ie>>>19))+((5*(Ie>>>16)&65535)<<16)&4294967295))+((58964+(qe>>>16)&65535)<<16);switch(St=0,le){case 3:St^=(255&z.charCodeAt(Rt+2))<<16;case 2:St^=(255&z.charCodeAt(Rt+1))<<8;case 1:Ie^=St=(65535&(St=(St=(65535&(St^=255&z.charCodeAt(Rt)))*it+(((St>>>16)*it&65535)<<16)&4294967295)<<15|St>>>17))*dt+(((St>>>16)*dt&65535)<<16)&4294967295}return Ie^=z.length,Ie=2246822507*(65535&(Ie^=Ie>>>16))+((2246822507*(Ie>>>16)&65535)<<16)&4294967295,Ie=3266489909*(65535&(Ie^=Ie>>>13))+((3266489909*(Ie>>>16)&65535)<<16)&4294967295,(Ie^=Ie>>>16)>>>0}}),an=T(function(S){S.exports=function(z,Z){for(var le,ke=z.length,Ie=Z^ke,qe=0;ke>=4;)le=1540483477*(65535&(le=255&z.charCodeAt(qe)|(255&z.charCodeAt(++qe))<<8|(255&z.charCodeAt(++qe))<<16|(255&z.charCodeAt(++qe))<<24))+((1540483477*(le>>>16)&65535)<<16),Ie=1540483477*(65535&Ie)+((1540483477*(Ie>>>16)&65535)<<16)^(le=1540483477*(65535&(le^=le>>>24))+((1540483477*(le>>>16)&65535)<<16)),ke-=4,++qe;switch(ke){case 3:Ie^=(255&z.charCodeAt(qe+2))<<16;case 2:Ie^=(255&z.charCodeAt(qe+1))<<8;case 1:Ie=1540483477*(65535&(Ie^=255&z.charCodeAt(qe)))+((1540483477*(Ie>>>16)&65535)<<16)}return Ie=1540483477*(65535&(Ie^=Ie>>>13))+((1540483477*(Ie>>>16)&65535)<<16),(Ie^=Ie>>>15)>>>0}}),zn=xn,Vn=xn,nr=an;zn.murmur3=Vn,zn.murmur2=nr;var rr=function(){this.ids=[],this.positions=[],this.indexed=!1};rr.prototype.add=function(S,z,Z,le){this.ids.push(Ar(S)),this.positions.push(z,Z,le)},rr.prototype.getPositions=function(S){for(var z=Ar(S),Z=0,le=this.ids.length-1;Z>1;this.ids[ke]>=z?le=ke:Z=ke+1}for(var Ie=[];this.ids[Z]===z;){var qe=this.positions[3*Z],it=this.positions[3*Z+1],dt=this.positions[3*Z+2];Ie.push({index:qe,start:it,end:dt}),Z++}return Ie},rr.serialize=function(S,z){var Z=new Float64Array(S.ids),le=new Uint32Array(S.positions);return mr(Z,le,0,Z.length-1),z&&z.push(Z.buffer,le.buffer),{ids:Z,positions:le}},rr.deserialize=function(S){var z=new rr;return z.ids=S.ids,z.positions=S.positions,z.indexed=!0,z};var Tr=Math.pow(2,53)-1;function Ar(S){var z=+S;return!isNaN(z)&&z<=Tr?z:zn(String(S))}function mr(S,z,Z,le){for(;Z>1],Ie=Z-1,qe=le+1;;){do Ie++;while(S[Ie]ke);if(Ie>=qe)break;wr(S,Ie,qe),wr(z,3*Ie,3*qe),wr(z,3*Ie+1,3*qe+1),wr(z,3*Ie+2,3*qe+2)}qe-Zwa.max||qe.ywa.max)&&(M("Geometry exceeds allowed extent, reduce your vector tile buffer size"),qe.x=o(qe.x,wa.min,wa.max),qe.y=o(qe.y,wa.min,wa.max))}return Z}function ko(S,z,Z,le,ke){S.emplaceBack(2*z+(le+1)/2,2*Z+(ke+1)/2)}var ai=function(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(function(z){return z.id}),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new et,this.indexArray=new He,this.segments=new sn,this.programConfigurations=new qi(en,S.layers,S.zoom),this.stateDependentLayerIds=this.layers.filter(function(z){return z.isStateDependent()}).map(function(z){return z.id})};function na(S,z){for(var Z=0;Z1){if(vh(S,z))return!0;for(var le=0;le1?S.distSqr(Z):S.distSqr(Z.sub(z)._mult(ke)._add(z))}function Lc(S,z){for(var Z,le,ke,Ie=!1,qe=0;qez.y!=ke.y>z.y&&z.x<(ke.x-le.x)*(z.y-le.y)/(ke.y-le.y)+le.x&&(Ie=!Ie);return Ie}function Zu(S,z){for(var Z=!1,le=0,ke=S.length-1;lez.y!=qe.y>z.y&&z.x<(qe.x-Ie.x)*(z.y-Ie.y)/(qe.y-Ie.y)+Ie.x&&(Z=!Z)}return Z}function g1(S,z,Z){var le=Z[0],ke=Z[2];if(S.xke.x&&z.x>ke.x||S.yke.y&&z.y>ke.y)return!1;var Ie=A(S,z,Z[0]);return Ie!==A(S,z,Z[1])||Ie!==A(S,z,Z[2])||Ie!==A(S,z,Z[3])}function ku(S,z,Z){var le=z.paint.get(S).value;return le.kind==="constant"?le.value:Z.programConfigurations.get(z.id).getMaxValue(S)}function $p(S){return Math.sqrt(S[0]*S[0]+S[1]*S[1])}function Jp(S,z,Z,le,ke){if(!z[0]&&!z[1])return S;var Ie=t.convert(z)._mult(ke);Z==="viewport"&&Ie._rotate(-le);for(var qe=[],it=0;it=Yr||Rt<0||Rt>=Yr)){var Ht=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,S.sortKey),Yt=Ht.vertexLength;ko(this.layoutVertexArray,St,Rt,-1,-1),ko(this.layoutVertexArray,St,Rt,1,-1),ko(this.layoutVertexArray,St,Rt,1,1),ko(this.layoutVertexArray,St,Rt,-1,1),this.indexArray.emplaceBack(Yt,Yt+1,Yt+2),this.indexArray.emplaceBack(Yt,Yt+3,Yt+2),Ht.vertexLength+=4,Ht.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,Z,{},le)},Cr("CircleBucket",ai,{omit:["layers"]});var Gw=new _a({"circle-sort-key":new Ur(Oe.layout_circle["circle-sort-key"])}),Ww={paint:new _a({"circle-radius":new Ur(Oe.paint_circle["circle-radius"]),"circle-color":new Ur(Oe.paint_circle["circle-color"]),"circle-blur":new Ur(Oe.paint_circle["circle-blur"]),"circle-opacity":new Ur(Oe.paint_circle["circle-opacity"]),"circle-translate":new Fr(Oe.paint_circle["circle-translate"]),"circle-translate-anchor":new Fr(Oe.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new Fr(Oe.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new Fr(Oe.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Ur(Oe.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Ur(Oe.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Ur(Oe.paint_circle["circle-stroke-opacity"])}),layout:Gw},ws=typeof Float32Array<"u"?Float32Array:Array;function v1(S){return S[0]=1,S[1]=0,S[2]=0,S[3]=0,S[4]=0,S[5]=1,S[6]=0,S[7]=0,S[8]=0,S[9]=0,S[10]=1,S[11]=0,S[12]=0,S[13]=0,S[14]=0,S[15]=1,S}function ny(S,z,Z){var le=z[0],ke=z[1],Ie=z[2],qe=z[3],it=z[4],dt=z[5],St=z[6],Rt=z[7],Ht=z[8],Yt=z[9],Zt=z[10],cn=z[11],Tn=z[12],Fn=z[13],Dn=z[14],Gn=z[15],Yn=Z[0],Kn=Z[1],ar=Z[2],ur=Z[3];return S[0]=Yn*le+Kn*it+ar*Ht+ur*Tn,S[1]=Yn*ke+Kn*dt+ar*Yt+ur*Fn,S[2]=Yn*Ie+Kn*St+ar*Zt+ur*Dn,S[3]=Yn*qe+Kn*Rt+ar*cn+ur*Gn,Yn=Z[4],Kn=Z[5],ar=Z[6],ur=Z[7],S[4]=Yn*le+Kn*it+ar*Ht+ur*Tn,S[5]=Yn*ke+Kn*dt+ar*Yt+ur*Fn,S[6]=Yn*Ie+Kn*St+ar*Zt+ur*Dn,S[7]=Yn*qe+Kn*Rt+ar*cn+ur*Gn,Yn=Z[8],Kn=Z[9],ar=Z[10],ur=Z[11],S[8]=Yn*le+Kn*it+ar*Ht+ur*Tn,S[9]=Yn*ke+Kn*dt+ar*Yt+ur*Fn,S[10]=Yn*Ie+Kn*St+ar*Zt+ur*Dn,S[11]=Yn*qe+Kn*Rt+ar*cn+ur*Gn,Yn=Z[12],Kn=Z[13],ar=Z[14],ur=Z[15],S[12]=Yn*le+Kn*it+ar*Ht+ur*Tn,S[13]=Yn*ke+Kn*dt+ar*Yt+ur*Fn,S[14]=Yn*Ie+Kn*St+ar*Zt+ur*Dn,S[15]=Yn*qe+Kn*Rt+ar*cn+ur*Gn,S}Math.hypot||(Math.hypot=function(){for(var S=arguments,z=0,Z=arguments.length;Z--;)z+=S[Z]*S[Z];return Math.sqrt(z)});var Zw=ny,Kp,Yw=function(S,z,Z){return S[0]=z[0]-Z[0],S[1]=z[1]-Z[1],S[2]=z[2]-Z[2],S};function Qp(S,z,Z){var le=z[0],ke=z[1],Ie=z[2],qe=z[3];return S[0]=Z[0]*le+Z[4]*ke+Z[8]*Ie+Z[12]*qe,S[1]=Z[1]*le+Z[5]*ke+Z[9]*Ie+Z[13]*qe,S[2]=Z[2]*le+Z[6]*ke+Z[10]*Ie+Z[14]*qe,S[3]=Z[3]*le+Z[7]*ke+Z[11]*Ie+Z[15]*qe,S}Kp=new ws(3),ws!=Float32Array&&(Kp[0]=0,Kp[1]=0,Kp[2]=0),function(){var S=new ws(4);ws!=Float32Array&&(S[0]=0,S[1]=0,S[2]=0,S[3]=0)}();var Xw=function(S){var z=S[0],Z=S[1];return z*z+Z*Z},$w=(function(){var S=new ws(2);ws!=Float32Array&&(S[0]=0,S[1]=0)}(),function(S){function z(Z){S.call(this,Z,Ww)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.createBucket=function(Z){return new ai(Z)},z.prototype.queryRadius=function(Z){var le=Z;return ku("circle-radius",this,le)+ku("circle-stroke-width",this,le)+$p(this.paint.get("circle-translate"))},z.prototype.queryIntersectsFeature=function(Z,le,ke,Ie,qe,it,dt,St){for(var Rt=Jp(Z,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),it.angle,dt),Ht=this.paint.get("circle-radius").evaluate(le,ke)+this.paint.get("circle-stroke-width").evaluate(le,ke),Yt=this.paint.get("circle-pitch-alignment")==="map",Zt=Yt?Rt:function(Er,_r){return Er.map(function(Ir){return ry(Ir,_r)})}(Rt,St),cn=Yt?Ht*dt:Ht,Tn=0,Fn=Ie;TnS.width||ke.height>S.height||Z.x>S.width-ke.width||Z.y>S.height-ke.height)throw new RangeError("out of range source coordinates for image copy");if(ke.width>z.width||ke.height>z.height||le.x>z.width-ke.width||le.y>z.height-ke.height)throw new RangeError("out of range destination coordinates for image copy");for(var qe=S.data,it=z.data,dt=0;dt80*Z){le=Ie=S[0],ke=qe=S[1];for(var cn=Z;cnIe&&(Ie=it),dt>qe&&(qe=dt);St=(St=Math.max(Ie-le,qe-ke))!==0?1/St:0}return mh(Yt,Zt,Z,le,ke,St),Zt}function ly(S,z,Z,le,ke){var Ie,qe;if(ke===w1(S,z,Z,le)>0)for(Ie=z;Ie=z;Ie-=le)qe=fy(Ie,S[Ie],S[Ie+1],qe);return qe&&td(qe,qe.next)&&(xh(qe),qe=qe.next),qe}function Yu(S,z){if(!S)return S;z||(z=S);var Z,le=S;do if(Z=!1,le.steiner||!td(le,le.next)&&Ta(le.prev,le,le.next)!==0)le=le.next;else{if(xh(le),(le=z=le.prev)===le.next)break;Z=!0}while(Z||le!==z);return z}function mh(S,z,Z,le,ke,Ie,qe){if(S){!qe&&Ie&&function(Rt,Ht,Yt,Zt){var cn=Rt;do cn.z===null&&(cn.z=b1(cn.x,cn.y,Ht,Yt,Zt)),cn.prevZ=cn.prev,cn.nextZ=cn.next,cn=cn.next;while(cn!==Rt);cn.prevZ.nextZ=null,cn.prevZ=null,function(Tn){var Fn,Dn,Gn,Yn,Kn,ar,ur,Er,_r=1;do{for(Dn=Tn,Tn=null,Kn=null,ar=0;Dn;){for(ar++,Gn=Dn,ur=0,Fn=0;Fn<_r&&(ur++,Gn=Gn.nextZ);Fn++);for(Er=_r;ur>0||Er>0&&Gn;)ur!==0&&(Er===0||!Gn||Dn.z<=Gn.z)?(Yn=Dn,Dn=Dn.nextZ,ur--):(Yn=Gn,Gn=Gn.nextZ,Er--),Kn?Kn.nextZ=Yn:Tn=Yn,Yn.prevZ=Kn,Kn=Yn;Dn=Gn}Kn.nextZ=null,_r*=2}while(ar>1)}(cn)}(S,le,ke,Ie);for(var it,dt,St=S;S.prev!==S.next;)if(it=S.prev,dt=S.next,Ie?r5(S,le,ke,Ie):n5(S))z.push(it.i/Z),z.push(S.i/Z),z.push(dt.i/Z),xh(S),S=dt.next,St=dt.next;else if((S=dt)===St){qe?qe===1?mh(S=i5(Yu(S),z,Z),z,Z,le,ke,Ie,2):qe===2&&a5(S,z,Z,le,ke,Ie):mh(Yu(S),z,Z,le,ke,Ie,1);break}}}function n5(S){var z=S.prev,Z=S,le=S.next;if(Ta(z,Z,le)>=0)return!1;for(var ke=S.next.next;ke!==S.prev;){if(df(z.x,z.y,Z.x,Z.y,le.x,le.y,ke.x,ke.y)&&Ta(ke.prev,ke,ke.next)>=0)return!1;ke=ke.next}return!0}function r5(S,z,Z,le){var ke=S.prev,Ie=S,qe=S.next;if(Ta(ke,Ie,qe)>=0)return!1;for(var it=ke.xIe.x?ke.x>qe.x?ke.x:qe.x:Ie.x>qe.x?Ie.x:qe.x,Rt=ke.y>Ie.y?ke.y>qe.y?ke.y:qe.y:Ie.y>qe.y?Ie.y:qe.y,Ht=b1(it,dt,z,Z,le),Yt=b1(St,Rt,z,Z,le),Zt=S.prevZ,cn=S.nextZ;Zt&&Zt.z>=Ht&&cn&&cn.z<=Yt;){if(Zt!==S.prev&&Zt!==S.next&&df(ke.x,ke.y,Ie.x,Ie.y,qe.x,qe.y,Zt.x,Zt.y)&&Ta(Zt.prev,Zt,Zt.next)>=0||(Zt=Zt.prevZ,cn!==S.prev&&cn!==S.next&&df(ke.x,ke.y,Ie.x,Ie.y,qe.x,qe.y,cn.x,cn.y)&&Ta(cn.prev,cn,cn.next)>=0))return!1;cn=cn.nextZ}for(;Zt&&Zt.z>=Ht;){if(Zt!==S.prev&&Zt!==S.next&&df(ke.x,ke.y,Ie.x,Ie.y,qe.x,qe.y,Zt.x,Zt.y)&&Ta(Zt.prev,Zt,Zt.next)>=0)return!1;Zt=Zt.prevZ}for(;cn&&cn.z<=Yt;){if(cn!==S.prev&&cn!==S.next&&df(ke.x,ke.y,Ie.x,Ie.y,qe.x,qe.y,cn.x,cn.y)&&Ta(cn.prev,cn,cn.next)>=0)return!1;cn=cn.nextZ}return!0}function i5(S,z,Z){var le=S;do{var ke=le.prev,Ie=le.next.next;!td(ke,Ie)&&uy(ke,le,le.next,Ie)&&yh(ke,Ie)&&yh(Ie,ke)&&(z.push(ke.i/Z),z.push(le.i/Z),z.push(Ie.i/Z),xh(le),xh(le.next),le=S=Ie),le=le.next}while(le!==S);return Yu(le)}function a5(S,z,Z,le,ke,Ie){var qe=S;do{for(var it=qe.next.next;it!==qe.prev;){if(qe.i!==it.i&&c5(qe,it)){var dt=cy(qe,it);return qe=Yu(qe,qe.next),dt=Yu(dt,dt.next),mh(qe,z,Z,le,ke,Ie),void mh(dt,z,Z,le,ke,Ie)}it=it.next}qe=qe.next}while(qe!==S)}function o5(S,z){return S.x-z.x}function s5(S,z){if(z=function(le,ke){var Ie,qe=ke,it=le.x,dt=le.y,St=-1/0;do{if(dt<=qe.y&&dt>=qe.next.y&&qe.next.y!==qe.y){var Rt=qe.x+(dt-qe.y)*(qe.next.x-qe.x)/(qe.next.y-qe.y);if(Rt<=it&&Rt>St){if(St=Rt,Rt===it){if(dt===qe.y)return qe;if(dt===qe.next.y)return qe.next}Ie=qe.x=qe.x&&qe.x>=Zt&&it!==qe.x&&df(dtIe.x||qe.x===Ie.x&&l5(Ie,qe)))&&(Ie=qe,Tn=Ht)),qe=qe.next;while(qe!==Yt);return Ie}(S,z)){var Z=cy(z,S);Yu(z,z.next),Yu(Z,Z.next)}}function l5(S,z){return Ta(S.prev,S,z.prev)<0&&Ta(z.next,S,S.next)<0}function b1(S,z,Z,le,ke){return(S=1431655765&((S=858993459&((S=252645135&((S=16711935&((S=32767*(S-Z)*ke)|S<<8))|S<<4))|S<<2))|S<<1))|(z=1431655765&((z=858993459&((z=252645135&((z=16711935&((z=32767*(z-le)*ke)|z<<8))|z<<4))|z<<2))|z<<1))<<1}function u5(S){var z=S,Z=S;do(z.x=0&&(S-qe)*(le-it)-(Z-qe)*(z-it)>=0&&(Z-qe)*(Ie-it)-(ke-qe)*(le-it)>=0}function c5(S,z){return S.next.i!==z.i&&S.prev.i!==z.i&&!function(Z,le){var ke=Z;do{if(ke.i!==Z.i&&ke.next.i!==Z.i&&ke.i!==le.i&&ke.next.i!==le.i&&uy(ke,ke.next,Z,le))return!0;ke=ke.next}while(ke!==Z);return!1}(S,z)&&(yh(S,z)&&yh(z,S)&&function(Z,le){var ke=Z,Ie=!1,qe=(Z.x+le.x)/2,it=(Z.y+le.y)/2;do ke.y>it!=ke.next.y>it&&ke.next.y!==ke.y&&qe<(ke.next.x-ke.x)*(it-ke.y)/(ke.next.y-ke.y)+ke.x&&(Ie=!Ie),ke=ke.next;while(ke!==Z);return Ie}(S,z)&&(Ta(S.prev,S,z.prev)||Ta(S,z.prev,z))||td(S,z)&&Ta(S.prev,S,S.next)>0&&Ta(z.prev,z,z.next)>0)}function Ta(S,z,Z){return(z.y-S.y)*(Z.x-z.x)-(z.x-S.x)*(Z.y-z.y)}function td(S,z){return S.x===z.x&&S.y===z.y}function uy(S,z,Z,le){var ke=rd(Ta(S,z,Z)),Ie=rd(Ta(S,z,le)),qe=rd(Ta(Z,le,S)),it=rd(Ta(Z,le,z));return ke!==Ie&&qe!==it||!(ke!==0||!nd(S,Z,z))||!(Ie!==0||!nd(S,le,z))||!(qe!==0||!nd(Z,S,le))||!(it!==0||!nd(Z,z,le))}function nd(S,z,Z){return z.x<=Math.max(S.x,Z.x)&&z.x>=Math.min(S.x,Z.x)&&z.y<=Math.max(S.y,Z.y)&&z.y>=Math.min(S.y,Z.y)}function rd(S){return S>0?1:S<0?-1:0}function yh(S,z){return Ta(S.prev,S,S.next)<0?Ta(S,z,S.next)>=0&&Ta(S,S.prev,z)>=0:Ta(S,z,S.prev)<0||Ta(S,S.next,z)<0}function cy(S,z){var Z=new _1(S.i,S.x,S.y),le=new _1(z.i,z.x,z.y),ke=S.next,Ie=z.prev;return S.next=z,z.prev=S,Z.next=ke,ke.prev=Z,le.next=Z,Z.prev=le,Ie.next=le,le.prev=Ie,le}function fy(S,z,Z,le){var ke=new _1(S,z,Z);return le?(ke.next=le.next,ke.prev=le,le.next.prev=ke,le.next=ke):(ke.prev=ke,ke.next=ke),ke}function xh(S){S.next.prev=S.prev,S.prev.next=S.next,S.prevZ&&(S.prevZ.nextZ=S.nextZ),S.nextZ&&(S.nextZ.prevZ=S.prevZ)}function _1(S,z,Z){this.i=S,this.x=z,this.y=Z,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function w1(S,z,Z,le){for(var ke=0,Ie=z,qe=Z-le;IeZ;){if(le-Z>600){var Ie=le-Z+1,qe=z-Z+1,it=Math.log(Ie),dt=.5*Math.exp(2*it/3),St=.5*Math.sqrt(it*dt*(Ie-dt)/Ie)*(qe-Ie/2<0?-1:1);hy(S,z,Math.max(Z,Math.floor(z-qe*dt/Ie+St)),Math.min(le,Math.floor(z+(Ie-qe)*dt/Ie+St)),ke)}var Rt=S[z],Ht=Z,Yt=le;for(bh(S,Z,z),ke(S[le],Rt)>0&&bh(S,Z,le);Ht0;)Yt--}ke(S[Z],Rt)===0?bh(S,Z,Yt):bh(S,++Yt,le),Yt<=z&&(Z=Yt+1),z<=Yt&&(le=Yt-1)}}function bh(S,z,Z){var le=S[z];S[z]=S[Z],S[Z]=le}function h5(S,z){return Sz?1:0}function T1(S,z){var Z=S.length;if(Z<=1)return[S];for(var le,ke,Ie=[],qe=0;qe1)for(var dt=0;dt0&&(le+=S[ke-1].length,Z.holes.push(le))}return Z},x1.default=t5;var Pl=function(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(function(z){return z.id}),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new et,this.indexArray=new He,this.indexArray2=new ve,this.programConfigurations=new qi(sy,S.layers,S.zoom),this.segments=new sn,this.segments2=new sn,this.stateDependentLayerIds=this.layers.filter(function(z){return z.isStateDependent()}).map(function(z){return z.id})};Pl.prototype.populate=function(S,z,Z){this.hasPattern=k1("fill",this.layers,z);for(var le=this.layers[0].layout.get("fill-sort-key"),ke=[],Ie=0,qe=S;Ie>3}if(ke--,le===1||le===2)Ie+=S.readSVarint(),qe+=S.readSVarint(),le===1&&(z&&it.push(z),z=[]),z.push(new t(Ie,qe));else{if(le!==7)throw new Error("unknown command "+le);z&&z.push(z[0].clone())}}return z&&it.push(z),it},gf.prototype.bbox=function(){var S=this._pbf;S.pos=this._geometry;for(var z=S.readVarint()+S.pos,Z=1,le=0,ke=0,Ie=0,qe=1/0,it=-1/0,dt=1/0,St=-1/0;S.pos>3}if(le--,Z===1||Z===2)(ke+=S.readSVarint())it&&(it=ke),(Ie+=S.readSVarint())St&&(St=Ie);else if(Z!==7)throw new Error("unknown command "+Z)}return[qe,dt,it,St]},gf.prototype.toGeoJSON=function(S,z,Z){var le,ke,Ie=this.extent*Math.pow(2,Z),qe=this.extent*S,it=this.extent*z,dt=this.loadGeometry(),St=gf.types[this.type];function Rt(Zt){for(var cn=0;cn>3;ke=qe===1?le.readString():qe===2?le.readFloat():qe===3?le.readDouble():qe===4?le.readVarint64():qe===5?le.readVarint():qe===6?le.readSVarint():qe===7?le.readBoolean():null}return ke}(Z))}function b5(S,z,Z){if(S===3){var le=new gy(Z,Z.readVarint()+Z.pos);le.length&&(z[le.name]=le)}}vy.prototype.feature=function(S){if(S<0||S>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[S];var z=this._pbf.readVarint()+this._pbf.pos;return new dy(this._pbf,z,this.extent,this._keys,this._values)};var vf={VectorTile:function(S,z){this.layers=S.readFields(b5,{},z)},VectorTileFeature:dy,VectorTileLayer:gy},_5=vf.VectorTileFeature.types,M1=Math.pow(2,13);function _h(S,z,Z,le,ke,Ie,qe,it){S.emplaceBack(z,Z,2*Math.floor(le*M1)+qe,ke*M1*2,Ie*M1*2,Math.round(it))}var Ol=function(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(function(z){return z.id}),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new ct,this.indexArray=new He,this.programConfigurations=new qi(py,S.layers,S.zoom),this.segments=new sn,this.stateDependentLayerIds=this.layers.filter(function(z){return z.isStateDependent()}).map(function(z){return z.id})};function w5(S,z){return S.x===z.x&&(S.x<0||S.x>Yr)||S.y===z.y&&(S.y<0||S.y>Yr)}Ol.prototype.populate=function(S,z,Z){this.features=[],this.hasPattern=k1("fill-extrusion",this.layers,z);for(var le=0,ke=S;leYr})||si.every(function(Qr){return Qr.y<0})||si.every(function(Qr){return Qr.y>Yr})))for(var Tn=0,Fn=0;Fn=1){var Gn=cn[Fn-1];if(!w5(Dn,Gn)){Ht.vertexLength+4>sn.MAX_VERTEX_ARRAY_LENGTH&&(Ht=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var Yn=Dn.sub(Gn)._perp()._unit(),Kn=Gn.dist(Dn);Tn+Kn>32768&&(Tn=0),_h(this.layoutVertexArray,Dn.x,Dn.y,Yn.x,Yn.y,0,0,Tn),_h(this.layoutVertexArray,Dn.x,Dn.y,Yn.x,Yn.y,0,1,Tn),Tn+=Kn,_h(this.layoutVertexArray,Gn.x,Gn.y,Yn.x,Yn.y,0,0,Tn),_h(this.layoutVertexArray,Gn.x,Gn.y,Yn.x,Yn.y,0,1,Tn);var ar=Ht.vertexLength;this.indexArray.emplaceBack(ar,ar+2,ar+1),this.indexArray.emplaceBack(ar+1,ar+2,ar+3),Ht.vertexLength+=4,Ht.primitiveLength+=2}}}}if(Ht.vertexLength+dt>sn.MAX_VERTEX_ARRAY_LENGTH&&(Ht=this.segments.prepareSegment(dt,this.layoutVertexArray,this.indexArray)),_5[S.type]==="Polygon"){for(var ur=[],Er=[],_r=Ht.vertexLength,Ir=0,Br=it;Ir=2&&S[dt-1].equals(S[dt-2]);)dt--;for(var St=0;St0;if(Er&&Dn>St){var Ir=Rt.dist(Zt);if(Ir>2*Ht){var Br=Rt.sub(Rt.sub(Zt)._mult(Ht/Ir)._round());this.updateDistance(Zt,Br),this.addCurrentVertex(Br,Tn,0,0,Yt),Zt=Br}}var $r=Zt&&cn,jr=$r?Z:it?"butt":le;if($r&&jr==="round"&&(arke&&(jr="bevel"),jr==="bevel"&&(ar>2&&(jr="flipbevel"),ar100)Gn=Fn.mult(-1);else{var Xr=ar*Tn.add(Fn).mag()/Tn.sub(Fn).mag();Gn._perp()._mult(Xr*(_r?-1:1))}this.addCurrentVertex(Rt,Gn,0,0,Yt),this.addCurrentVertex(Rt,Gn.mult(-1),0,0,Yt)}else if(jr==="bevel"||jr==="fakeround"){var Vr=-Math.sqrt(ar*ar-1),Nr=_r?Vr:0,si=_r?0:Vr;if(Zt&&this.addCurrentVertex(Rt,Tn,Nr,si,Yt),jr==="fakeround")for(var Qr=Math.round(180*ur/Math.PI/20),Di=1;Di2*Ht){var Fi=Rt.add(cn.sub(Rt)._mult(Ht/Wi)._round());this.updateDistance(Rt,Fi),this.addCurrentVertex(Fi,Fn,0,0,Yt),Rt=Fi}}}}},jo.prototype.addCurrentVertex=function(S,z,Z,le,ke,Ie){Ie===void 0&&(Ie=!1);var qe=z.x+z.y*Z,it=z.y-z.x*Z,dt=-z.x+z.y*le,St=-z.y-z.x*le;this.addHalfVertex(S,qe,it,Ie,!1,Z,ke),this.addHalfVertex(S,dt,St,Ie,!0,-le,ke),this.distance>xy/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(S,z,Z,le,ke,Ie))},jo.prototype.addHalfVertex=function(S,z,Z,le,ke,Ie,qe){var it=S.x,dt=S.y,St=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((it<<1)+(le?1:0),(dt<<1)+(ke?1:0),Math.round(63*z)+128,Math.round(63*Z)+128,1+(Ie===0?0:Ie<0?-1:1)|(63&St)<<2,St>>6);var Rt=qe.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Rt),qe.primitiveLength++),ke?this.e2=Rt:this.e1=Rt},jo.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(xy-1):this.distance},jo.prototype.updateDistance=function(S,z){this.distance+=S.dist(z),this.updateScaledDistance()},Cr("LineBucket",jo,{omit:["layers","patternFeatures"]});var S5=new _a({"line-cap":new Fr(Oe.layout_line["line-cap"]),"line-join":new Ur(Oe.layout_line["line-join"]),"line-miter-limit":new Fr(Oe.layout_line["line-miter-limit"]),"line-round-limit":new Fr(Oe.layout_line["line-round-limit"]),"line-sort-key":new Ur(Oe.layout_line["line-sort-key"])}),by={paint:new _a({"line-opacity":new Ur(Oe.paint_line["line-opacity"]),"line-color":new Ur(Oe.paint_line["line-color"]),"line-translate":new Fr(Oe.paint_line["line-translate"]),"line-translate-anchor":new Fr(Oe.paint_line["line-translate-anchor"]),"line-width":new Ur(Oe.paint_line["line-width"]),"line-gap-width":new Ur(Oe.paint_line["line-gap-width"]),"line-offset":new Ur(Oe.paint_line["line-offset"]),"line-blur":new Ur(Oe.paint_line["line-blur"]),"line-dasharray":new is(Oe.paint_line["line-dasharray"]),"line-pattern":new sl(Oe.paint_line["line-pattern"]),"line-gradient":new To(Oe.paint_line["line-gradient"])}),layout:S5},E5=function(S){function z(){S.apply(this,arguments)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.possiblyEvaluate=function(Z,le){return le=new di(Math.floor(le.zoom),{now:le.now,fadeDuration:le.fadeDuration,zoomHistory:le.zoomHistory,transition:le.transition}),S.prototype.possiblyEvaluate.call(this,Z,le)},z.prototype.evaluate=function(Z,le,ke,Ie){return le=u({},le,{zoom:Math.floor(le.zoom)}),S.prototype.evaluate.call(this,Z,le,ke,Ie)},z}(Ur),_y=new E5(by.paint.properties["line-width"].specification);_y.useIntegerZoom=!0;var C5=function(S){function z(Z){S.call(this,Z,by)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype._handleSpecialPaintPropertyUpdate=function(Z){Z==="line-gradient"&&this._updateGradient()},z.prototype._updateGradient=function(){var Z=this._transitionablePaint._values["line-gradient"].value.expression;this.gradient=oy(Z,"lineProgress"),this.gradientTexture=null},z.prototype.recalculate=function(Z,le){S.prototype.recalculate.call(this,Z,le),this.paint._values["line-floorwidth"]=_y.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,Z)},z.prototype.createBucket=function(Z){return new jo(Z)},z.prototype.queryRadius=function(Z){var le=Z,ke=wy(ku("line-width",this,le),ku("line-gap-width",this,le)),Ie=ku("line-offset",this,le);return ke/2+Math.abs(Ie)+$p(this.paint.get("line-translate"))},z.prototype.queryIntersectsFeature=function(Z,le,ke,Ie,qe,it,dt){var St=Jp(Z,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),it.angle,dt),Rt=dt/2*wy(this.paint.get("line-width").evaluate(le,ke),this.paint.get("line-gap-width").evaluate(le,ke)),Ht=this.paint.get("line-offset").evaluate(le,ke);return Ht&&(Ie=function(Yt,Zt){for(var cn=[],Tn=new t(0,0),Fn=0;Fn=3){for(var Dn=0;Dn0?z+2*S:S}var S1=Si([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),L5=Si([{name:"a_projected_pos",components:3,type:"Float32"}],4),P5=(Si([{name:"a_fade_opacity",components:1,type:"Uint32"}],4),Si([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}])),Ty=(Si([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]),Si([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4)),O5=Si([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function I5(S,z,Z){return S.sections.forEach(function(le){le.text=function(ke,Ie,qe){var it=Ie.layout.get("text-transform").evaluate(qe,{});return it==="uppercase"?ke=ke.toLocaleUpperCase():it==="lowercase"&&(ke=ke.toLocaleLowerCase()),za.applyArabicShaping&&(ke=za.applyArabicShaping(ke)),ke}(le.text,z,Z)}),S}Si([{name:"triangle",components:3,type:"Uint16"}]),Si([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Si([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),Si([{type:"Float32",name:"offsetX"}]),Si([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var Th={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},no=24,ky=function(S,z,Z,le,ke){var Ie,qe,it=8*ke-le-1,dt=(1<>1,Rt=-7,Ht=Z?ke-1:0,Yt=Z?-1:1,Zt=S[z+Ht];for(Ht+=Yt,Ie=Zt&(1<<-Rt)-1,Zt>>=-Rt,Rt+=it;Rt>0;Ie=256*Ie+S[z+Ht],Ht+=Yt,Rt-=8);for(qe=Ie&(1<<-Rt)-1,Ie>>=-Rt,Rt+=le;Rt>0;qe=256*qe+S[z+Ht],Ht+=Yt,Rt-=8);if(Ie===0)Ie=1-St;else{if(Ie===dt)return qe?NaN:1/0*(Zt?-1:1);qe+=Math.pow(2,le),Ie-=St}return(Zt?-1:1)*qe*Math.pow(2,Ie-le)},Ay=function(S,z,Z,le,ke,Ie){var qe,it,dt,St=8*Ie-ke-1,Rt=(1<>1,Yt=ke===23?Math.pow(2,-24)-Math.pow(2,-77):0,Zt=le?0:Ie-1,cn=le?1:-1,Tn=z<0||z===0&&1/z<0?1:0;for(z=Math.abs(z),isNaN(z)||z===1/0?(it=isNaN(z)?1:0,qe=Rt):(qe=Math.floor(Math.log(z)/Math.LN2),z*(dt=Math.pow(2,-qe))<1&&(qe--,dt*=2),(z+=qe+Ht>=1?Yt/dt:Yt*Math.pow(2,1-Ht))*dt>=2&&(qe++,dt/=2),qe+Ht>=Rt?(it=0,qe=Rt):qe+Ht>=1?(it=(z*dt-1)*Math.pow(2,ke),qe+=Ht):(it=z*Math.pow(2,Ht-1)*Math.pow(2,ke),qe=0));ke>=8;S[Z+Zt]=255&it,Zt+=cn,it/=256,ke-=8);for(qe=qe<0;S[Z+Zt]=255&qe,Zt+=cn,qe/=256,St-=8);S[Z+Zt-cn]|=128*Tn},id=Ni;function Ni(S){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(S)?S:new Uint8Array(S||0),this.pos=0,this.type=0,this.length=this.buf.length}Ni.Varint=0,Ni.Fixed64=1,Ni.Bytes=2,Ni.Fixed32=5;var E1=4294967296,My=1/E1,Sy=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function Au(S){return S.type===Ni.Bytes?S.readVarint()+S.pos:S.pos+1}function mf(S,z,Z){return Z?4294967296*z+(S>>>0):4294967296*(z>>>0)+(S>>>0)}function Ey(S,z,Z){var le=z<=16383?1:z<=2097151?2:z<=268435455?3:Math.floor(Math.log(z)/(7*Math.LN2));Z.realloc(le);for(var ke=Z.pos-1;ke>=S;ke--)Z.buf[ke+le]=Z.buf[ke]}function R5(S,z){for(var Z=0;Z>>8,S[Z+2]=z>>>16,S[Z+3]=z>>>24}function Cy(S,z){return(S[z]|S[z+1]<<8|S[z+2]<<16)+(S[z+3]<<24)}Ni.prototype={destroy:function(){this.buf=null},readFields:function(S,z,Z){for(Z=Z||this.length;this.pos>3,Ie=this.pos;this.type=7&le,S(ke,z,this),this.pos===Ie&&this.skip(le)}return z},readMessage:function(S,z){return this.readFields(S,z,this.readVarint()+this.pos)},readFixed32:function(){var S=ad(this.buf,this.pos);return this.pos+=4,S},readSFixed32:function(){var S=Cy(this.buf,this.pos);return this.pos+=4,S},readFixed64:function(){var S=ad(this.buf,this.pos)+ad(this.buf,this.pos+4)*E1;return this.pos+=8,S},readSFixed64:function(){var S=ad(this.buf,this.pos)+Cy(this.buf,this.pos+4)*E1;return this.pos+=8,S},readFloat:function(){var S=ky(this.buf,this.pos,!0,23,4);return this.pos+=4,S},readDouble:function(){var S=ky(this.buf,this.pos,!0,52,8);return this.pos+=8,S},readVarint:function(S){var z,Z,le=this.buf;return z=127&(Z=le[this.pos++]),Z<128?z:(z|=(127&(Z=le[this.pos++]))<<7,Z<128?z:(z|=(127&(Z=le[this.pos++]))<<14,Z<128?z:(z|=(127&(Z=le[this.pos++]))<<21,Z<128?z:function(ke,Ie,qe){var it,dt,St=qe.buf;if(it=(112&(dt=St[qe.pos++]))>>4,dt<128||(it|=(127&(dt=St[qe.pos++]))<<3,dt<128)||(it|=(127&(dt=St[qe.pos++]))<<10,dt<128)||(it|=(127&(dt=St[qe.pos++]))<<17,dt<128)||(it|=(127&(dt=St[qe.pos++]))<<24,dt<128)||(it|=(1&(dt=St[qe.pos++]))<<31,dt<128))return mf(ke,it,Ie);throw new Error("Expected varint not more than 10 bytes")}(z|=(15&(Z=le[this.pos]))<<28,S,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var S=this.readVarint();return S%2==1?(S+1)/-2:S/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var S=this.readVarint()+this.pos,z=this.pos;return this.pos=S,S-z>=12&&Sy?function(Z,le,ke){return Sy.decode(Z.subarray(le,ke))}(this.buf,z,S):function(Z,le,ke){for(var Ie="",qe=le;qe239?4:Rt>223?3:Rt>191?2:1;if(qe+Yt>ke)break;Yt===1?Rt<128&&(Ht=Rt):Yt===2?(192&(it=Z[qe+1]))==128&&(Ht=(31&Rt)<<6|63&it)<=127&&(Ht=null):Yt===3?(it=Z[qe+1],dt=Z[qe+2],(192&it)==128&&(192&dt)==128&&((Ht=(15&Rt)<<12|(63&it)<<6|63&dt)<=2047||Ht>=55296&&Ht<=57343)&&(Ht=null)):Yt===4&&(it=Z[qe+1],dt=Z[qe+2],St=Z[qe+3],(192&it)==128&&(192&dt)==128&&(192&St)==128&&((Ht=(15&Rt)<<18|(63&it)<<12|(63&dt)<<6|63&St)<=65535||Ht>=1114112)&&(Ht=null)),Ht===null?(Ht=65533,Yt=1):Ht>65535&&(Ht-=65536,Ie+=String.fromCharCode(Ht>>>10&1023|55296),Ht=56320|1023&Ht),Ie+=String.fromCharCode(Ht),qe+=Yt}return Ie}(this.buf,z,S)},readBytes:function(){var S=this.readVarint()+this.pos,z=this.buf.subarray(this.pos,S);return this.pos=S,z},readPackedVarint:function(S,z){if(this.type!==Ni.Bytes)return S.push(this.readVarint(z));var Z=Au(this);for(S=S||[];this.pos127;);else if(z===Ni.Bytes)this.pos=this.readVarint()+this.pos;else if(z===Ni.Fixed32)this.pos+=4;else{if(z!==Ni.Fixed64)throw new Error("Unimplemented type: "+z);this.pos+=8}},writeTag:function(S,z){this.writeVarint(S<<3|z)},realloc:function(S){for(var z=this.length||16;z268435455||S<0?function(z,Z){var le,ke;if(z>=0?(le=z%4294967296|0,ke=z/4294967296|0):(ke=~(-z/4294967296),4294967295^(le=~(-z%4294967296))?le=le+1|0:(le=0,ke=ke+1|0)),z>=18446744073709552e3||z<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");Z.realloc(10),function(Ie,qe,it){it.buf[it.pos++]=127&Ie|128,Ie>>>=7,it.buf[it.pos++]=127&Ie|128,Ie>>>=7,it.buf[it.pos++]=127&Ie|128,Ie>>>=7,it.buf[it.pos++]=127&Ie|128,Ie>>>=7,it.buf[it.pos]=127&Ie}(le,0,Z),function(Ie,qe){var it=(7&Ie)<<4;qe.buf[qe.pos++]|=it|((Ie>>>=3)?128:0),Ie&&(qe.buf[qe.pos++]=127&Ie|((Ie>>>=7)?128:0),Ie&&(qe.buf[qe.pos++]=127&Ie|((Ie>>>=7)?128:0),Ie&&(qe.buf[qe.pos++]=127&Ie|((Ie>>>=7)?128:0),Ie&&(qe.buf[qe.pos++]=127&Ie|((Ie>>>=7)?128:0),Ie&&(qe.buf[qe.pos++]=127&Ie)))))}(ke,Z)}(S,this):(this.realloc(4),this.buf[this.pos++]=127&S|(S>127?128:0),S<=127||(this.buf[this.pos++]=127&(S>>>=7)|(S>127?128:0),S<=127||(this.buf[this.pos++]=127&(S>>>=7)|(S>127?128:0),S<=127||(this.buf[this.pos++]=S>>>7&127))))},writeSVarint:function(S){this.writeVarint(S<0?2*-S-1:2*S)},writeBoolean:function(S){this.writeVarint(!!S)},writeString:function(S){S=String(S),this.realloc(4*S.length),this.pos++;var z=this.pos;this.pos=function(le,ke,Ie){for(var qe,it,dt=0;dt55295&&qe<57344){if(!it){qe>56319||dt+1===ke.length?(le[Ie++]=239,le[Ie++]=191,le[Ie++]=189):it=qe;continue}if(qe<56320){le[Ie++]=239,le[Ie++]=191,le[Ie++]=189,it=qe;continue}qe=it-55296<<10|qe-56320|65536,it=null}else it&&(le[Ie++]=239,le[Ie++]=191,le[Ie++]=189,it=null);qe<128?le[Ie++]=qe:(qe<2048?le[Ie++]=qe>>6|192:(qe<65536?le[Ie++]=qe>>12|224:(le[Ie++]=qe>>18|240,le[Ie++]=qe>>12&63|128),le[Ie++]=qe>>6&63|128),le[Ie++]=63&qe|128)}return Ie}(this.buf,S,this.pos);var Z=this.pos-z;Z>=128&&Ey(z,Z,this),this.pos=z-1,this.writeVarint(Z),this.pos+=Z},writeFloat:function(S){this.realloc(4),Ay(this.buf,S,this.pos,!0,23,4),this.pos+=4},writeDouble:function(S){this.realloc(8),Ay(this.buf,S,this.pos,!0,52,8),this.pos+=8},writeBytes:function(S){var z=S.length;this.writeVarint(z),this.realloc(z);for(var Z=0;Z=128&&Ey(Z,le,this),this.pos=Z-1,this.writeVarint(le),this.pos+=le},writeMessage:function(S,z,Z){this.writeTag(S,Ni.Bytes),this.writeRawMessage(z,Z)},writePackedVarint:function(S,z){z.length&&this.writeMessage(S,R5,z)},writePackedSVarint:function(S,z){z.length&&this.writeMessage(S,z5,z)},writePackedBoolean:function(S,z){z.length&&this.writeMessage(S,B5,z)},writePackedFloat:function(S,z){z.length&&this.writeMessage(S,D5,z)},writePackedDouble:function(S,z){z.length&&this.writeMessage(S,F5,z)},writePackedFixed32:function(S,z){z.length&&this.writeMessage(S,N5,z)},writePackedSFixed32:function(S,z){z.length&&this.writeMessage(S,j5,z)},writePackedFixed64:function(S,z){z.length&&this.writeMessage(S,U5,z)},writePackedSFixed64:function(S,z){z.length&&this.writeMessage(S,V5,z)},writeBytesField:function(S,z){this.writeTag(S,Ni.Bytes),this.writeBytes(z)},writeFixed32Field:function(S,z){this.writeTag(S,Ni.Fixed32),this.writeFixed32(z)},writeSFixed32Field:function(S,z){this.writeTag(S,Ni.Fixed32),this.writeSFixed32(z)},writeFixed64Field:function(S,z){this.writeTag(S,Ni.Fixed64),this.writeFixed64(z)},writeSFixed64Field:function(S,z){this.writeTag(S,Ni.Fixed64),this.writeSFixed64(z)},writeVarintField:function(S,z){this.writeTag(S,Ni.Varint),this.writeVarint(z)},writeSVarintField:function(S,z){this.writeTag(S,Ni.Varint),this.writeSVarint(z)},writeStringField:function(S,z){this.writeTag(S,Ni.Bytes),this.writeString(z)},writeFloatField:function(S,z){this.writeTag(S,Ni.Fixed32),this.writeFloat(z)},writeDoubleField:function(S,z){this.writeTag(S,Ni.Fixed64),this.writeDouble(z)},writeBooleanField:function(S,z){this.writeVarintField(S,!!z)}};function H5(S,z,Z){S===1&&Z.readMessage(q5,z)}function q5(S,z,Z){if(S===3){var le=Z.readMessage(G5,{}),ke=le.id,Ie=le.bitmap,qe=le.width,it=le.height,dt=le.left,St=le.top,Rt=le.advance;z.push({id:ke,bitmap:new Pc({width:qe+6,height:it+6},Ie),metrics:{width:qe,height:it,left:dt,top:St,advance:Rt}})}}function G5(S,z,Z){S===1?z.id=Z.readVarint():S===2?z.bitmap=Z.readBytes():S===3?z.width=Z.readVarint():S===4?z.height=Z.readVarint():S===5?z.left=Z.readSVarint():S===6?z.top=Z.readSVarint():S===7&&(z.advance=Z.readVarint())}function Ly(S){for(var z=0,Z=0,le=0,ke=S;le=0;Yt--){var Zt=qe[Yt];if(!(Ht.w>Zt.w||Ht.h>Zt.h)){if(Ht.x=Zt.x,Ht.y=Zt.y,dt=Math.max(dt,Ht.y+Ht.h),it=Math.max(it,Ht.x+Ht.w),Ht.w===Zt.w&&Ht.h===Zt.h){var cn=qe.pop();Yt0&&zc>Ji&&(Ji=zc)}else{var yd=Qr[mi.fontStack],Dc=yd&&yd[Mo];if(Dc&&Dc.rect)Il=Dc.rect,vo=Dc.metrics;else{var xd=si[mi.fontStack],Eh=xd&&xd[Mo];if(!Eh)continue;vo=Eh.metrics}ss=(ei-mi.scale)*no}Rl?(Nr.verticalizable=!0,Ri.push({glyph:Mo,imageName:Eu,x:ja,y:ro+ss,vertical:Rl,scale:mi.scale,fontStack:mi.fontStack,sectionIndex:ia,metrics:vo,rect:Il}),ja+=Va*mi.scale+Fi):(Ri.push({glyph:Mo,imageName:Eu,x:ja,y:ro+ss,vertical:Rl,scale:mi.scale,fontStack:mi.fontStack,sectionIndex:ia,metrics:vo,rect:Il}),ja+=vo.advance*mi.scale+Fi)}if(Ri.length!==0){var N1=ja-Fi;Za=Math.max(N1,Za),Z5(Ri,0,Ri.length-1,Ya,Ji)}ja=0;var bd=Pi*ei+Ji;ra.lineOffset=Math.max(Ji,pi),ro+=bd,Ao=Math.max(bd,Ao),++Ea}else ro+=Pi,++Ea}var Sf=ro-sd,_d=L1(ji),wd=_d.horizontalAlign,Ch=_d.verticalAlign;(function(j1,Lh,Fc,Ef,Td,kd,Cf,Ad,Md){var Ph=(Lh-Fc)*Td,Oh=0;Oh=kd!==Cf?-Ad*Ef-sd:(-Ef*Md+.5)*Cf;for(var Bc=0,Ih=j1;Bc=0&&le>=S&&ud[this.text.charCodeAt(le)];le--)Z--;this.text=this.text.substring(S,Z),this.sectionIndex=this.sectionIndex.slice(S,Z)},go.prototype.substring=function(S,z){var Z=new go;return Z.text=this.text.substring(S,z),Z.sectionIndex=this.sectionIndex.slice(S,z),Z.sections=this.sections,Z},go.prototype.toString=function(){return this.text},go.prototype.getMaxScale=function(){var S=this;return this.sectionIndex.reduce(function(z,Z){return Math.max(z,S.sections[Z].scale)},0)},go.prototype.addTextSection=function(S,z){this.text+=S.text,this.sections.push(xf.forText(S.scale,S.fontStack||z));for(var Z=this.sections.length-1,le=0;le=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var ud={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},os={};function Py(S,z,Z,le,ke,Ie){if(z.imageName){var qe=le[z.imageName];return qe?qe.displaySize[0]*z.scale*no/Ie+ke:0}var it=Z[z.fontStack],dt=it&&it[S];return dt?dt.metrics.advance*z.scale+ke:0}function Oy(S,z,Z,le){var ke=Math.pow(S-z,2);return le?S=0,Rt=0,Ht=0;Ht-Z/2;){if(--qe<0)return!1;it-=S[qe].dist(Ie),Ie=S[qe]}it+=S[qe].dist(S[qe+1]),qe++;for(var dt=[],St=0;itle;)St-=dt.shift().angleDelta;if(St>ke)return!1;qe++,it+=Ht.dist(Yt)}return!0}function Ny(S){for(var z=0,Z=0;ZSt){var cn=(St-dt)/Zt,Tn=Lr(Ht.x,Yt.x,cn),Fn=Lr(Ht.y,Yt.y,cn),Dn=new bf(Tn,Fn,Yt.angleTo(Ht),Rt);return Dn._round(),!qe||By(S,Dn,it,qe,z)?Dn:void 0}dt+=Zt}}function $5(S,z,Z,le,ke,Ie,qe,it,dt){var St=jy(le,Ie,qe),Rt=Uy(le,ke),Ht=Rt*qe,Yt=S[0].x===0||S[0].x===dt||S[0].y===0||S[0].y===dt;return z-Ht=0&&Kn=0&&ar=0&&Yt+St<=Rt){var ur=new bf(Kn,ar,Gn,cn);ur._round(),le&&!By(S,ur,Ie,le,ke)||Zt.push(ur)}}Ht+=Dn}return it||Zt.length||qe||(Zt=Vy(S,Ht/2,Z,le,ke,Ie,qe,!0,dt)),Zt}function Hy(S,z,Z,le,ke){for(var Ie=[],qe=0;qe=le&&Ht.x>=le||(Rt.x>=le?Rt=new t(le,Rt.y+(Ht.y-Rt.y)*((le-Rt.x)/(Ht.x-Rt.x)))._round():Ht.x>=le&&(Ht=new t(le,Rt.y+(Ht.y-Rt.y)*((le-Rt.x)/(Ht.x-Rt.x)))._round()),Rt.y>=ke&&Ht.y>=ke||(Rt.y>=ke?Rt=new t(Rt.x+(Ht.x-Rt.x)*((ke-Rt.y)/(Ht.y-Rt.y)),ke)._round():Ht.y>=ke&&(Ht=new t(Rt.x+(Ht.x-Rt.x)*((ke-Rt.y)/(Ht.y-Rt.y)),ke)._round()),dt&&Rt.equals(dt[dt.length-1])||(dt=[Rt],Ie.push(dt)),dt.push(Ht)))))}return Ie}function qy(S,z,Z,le){var ke=[],Ie=S.image,qe=Ie.pixelRatio,it=Ie.paddedRect.w-2,dt=Ie.paddedRect.h-2,St=S.right-S.left,Rt=S.bottom-S.top,Ht=Ie.stretchX||[[0,it]],Yt=Ie.stretchY||[[0,dt]],Zt=function(Pi,ji){return Pi+ji[1]-ji[0]},cn=Ht.reduce(Zt,0),Tn=Yt.reduce(Zt,0),Fn=it-cn,Dn=dt-Tn,Gn=0,Yn=cn,Kn=0,ar=Tn,ur=0,Er=Fn,_r=0,Ir=Dn;if(Ie.content&&le){var Br=Ie.content;Gn=cd(Ht,0,Br[0]),Kn=cd(Yt,0,Br[1]),Yn=cd(Ht,Br[0],Br[2]),ar=cd(Yt,Br[1],Br[3]),ur=Br[0]-Gn,_r=Br[1]-Kn,Er=Br[2]-Br[0]-Yn,Ir=Br[3]-Br[1]-ar}var $r=function(Pi,ji,Vi,Wi){var Fi=fd(Pi.stretch-Gn,Yn,St,S.left),Ma=hd(Pi.fixed-ur,Er,Pi.stretch,cn),Xi=fd(ji.stretch-Kn,ar,Rt,S.top),ja=hd(ji.fixed-_r,Ir,ji.stretch,Tn),ro=fd(Vi.stretch-Gn,Yn,St,S.left),Za=hd(Vi.fixed-ur,Er,Vi.stretch,cn),Ao=fd(Wi.stretch-Kn,ar,Rt,S.top),Ya=hd(Wi.fixed-_r,Ir,Wi.stretch,Tn),Ea=new t(Fi,Xi),Xa=new t(ro,Xi),Ua=new t(ro,Ao),Ca=new t(Fi,Ao),ei=new t(Ma/qe,ja/qe),pi=new t(Za/qe,Ya/qe),ra=z*Math.PI/180;if(ra){var Ri=Math.sin(ra),Ji=Math.cos(ra),Zi=[Ji,-Ri,Ri,Ji];Ea._matMult(Zi),Xa._matMult(Zi),Ca._matMult(Zi),Ua._matMult(Zi)}var mi=Pi.stretch+Pi.fixed,ia=Vi.stretch+Vi.fixed,Mo=ji.stretch+ji.fixed,ss=Wi.stretch+Wi.fixed;return{tl:Ea,tr:Xa,bl:Ca,br:Ua,tex:{x:Ie.paddedRect.x+1+mi,y:Ie.paddedRect.y+1+Mo,w:ia-mi,h:ss-Mo},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:ei,pixelOffsetBR:pi,minFontScaleX:Er/qe/St,minFontScaleY:Ir/qe/Rt,isSDF:Z}};if(le&&(Ie.stretchX||Ie.stretchY))for(var jr=Gy(Ht,Fn,cn),Xr=Gy(Yt,Dn,Tn),Vr=0;Vr0&&(Zt=Math.max(10,Zt),this.circleDiameter=Zt)}else{var cn=Ie.top*qe-it,Tn=Ie.bottom*qe+it,Fn=Ie.left*qe-it,Dn=Ie.right*qe+it,Gn=Ie.collisionPadding;if(Gn&&(Fn-=Gn[0]*qe,cn-=Gn[1]*qe,Dn+=Gn[2]*qe,Tn+=Gn[3]*qe),St){var Yn=new t(Fn,cn),Kn=new t(Dn,cn),ar=new t(Fn,Tn),ur=new t(Dn,Tn),Er=St*Math.PI/180;Yn._rotate(Er),Kn._rotate(Er),ar._rotate(Er),ur._rotate(Er),Fn=Math.min(Yn.x,Kn.x,ar.x,ur.x),Dn=Math.max(Yn.x,Kn.x,ar.x,ur.x),cn=Math.min(Yn.y,Kn.y,ar.y,ur.y),Tn=Math.max(Yn.y,Kn.y,ar.y,ur.y)}S.emplaceBack(z.x,z.y,Fn,cn,Dn,Tn,Z,le,ke)}this.boxEndIndex=S.length},_f=function(S,z){if(S===void 0&&(S=[]),z===void 0&&(z=J5),this.data=S,this.length=this.data.length,this.compare=z,this.length>0)for(var Z=(this.length>>1)-1;Z>=0;Z--)this._down(Z)};function J5(S,z){return Sz?1:0}function K5(S,z,Z){z===void 0&&(z=1),Z===void 0&&(Z=!1);for(var le=1/0,ke=1/0,Ie=-1/0,qe=-1/0,it=S[0],dt=0;dtIe)&&(Ie=St.x),(!dt||St.y>qe)&&(qe=St.y)}var Rt=Ie-le,Ht=qe-ke,Yt=Math.min(Rt,Ht),Zt=Yt/2,cn=new _f([],Q5);if(Yt===0)return new t(le,ke);for(var Tn=le;TnDn.d||!Dn.d)&&(Dn=Yn,Z&&console.log("found best %d after %d probes",Math.round(1e4*Yn.d)/1e4,Gn)),Yn.max-Dn.d<=z||(Zt=Yn.h/2,cn.push(new wf(Yn.p.x-Zt,Yn.p.y-Zt,Zt,S)),cn.push(new wf(Yn.p.x+Zt,Yn.p.y-Zt,Zt,S)),cn.push(new wf(Yn.p.x-Zt,Yn.p.y+Zt,Zt,S)),cn.push(new wf(Yn.p.x+Zt,Yn.p.y+Zt,Zt,S)),Gn+=4)}return Z&&(console.log("num probes: "+Gn),console.log("best distance: "+Dn.d)),Dn.p}function Q5(S,z){return z.max-S.max}function wf(S,z,Z,le){this.p=new t(S,z),this.h=Z,this.d=function(ke,Ie){for(var qe=!1,it=1/0,dt=0;dtke.y!=cn.y>ke.y&&ke.x<(cn.x-Zt.x)*(ke.y-Zt.y)/(cn.y-Zt.y)+Zt.x&&(qe=!qe),it=Math.min(it,Xp(ke,Zt,cn))}return(qe?1:-1)*Math.sqrt(it)}(this.p,le),this.max=this.d+this.h*Math.SQRT2}_f.prototype.push=function(S){this.data.push(S),this.length++,this._up(this.length-1)},_f.prototype.pop=function(){if(this.length!==0){var S=this.data[0],z=this.data.pop();return this.length--,this.length>0&&(this.data[0]=z,this._down(0)),S}},_f.prototype.peek=function(){return this.data[0]},_f.prototype._up=function(S){for(var z=this.data,Z=this.compare,le=z[S];S>0;){var ke=S-1>>1,Ie=z[ke];if(Z(le,Ie)>=0)break;z[S]=Ie,S=ke}z[S]=le},_f.prototype._down=function(S){for(var z=this.data,Z=this.compare,le=this.length>>1,ke=z[S];S=0)break;z[S]=qe,S=Ie}z[S]=ke};var O1=Number.POSITIVE_INFINITY;function Wy(S,z){return z[1]!==O1?function(Z,le,ke){var Ie=0,qe=0;switch(le=Math.abs(le),ke=Math.abs(ke),Z){case"top-right":case"top-left":case"top":qe=ke-7;break;case"bottom-right":case"bottom-left":case"bottom":qe=7-ke}switch(Z){case"top-right":case"bottom-right":case"right":Ie=-le;break;case"top-left":case"bottom-left":case"left":Ie=le}return[Ie,qe]}(S,z[0],z[1]):function(Z,le){var ke=0,Ie=0;le<0&&(le=0);var qe=le/Math.sqrt(2);switch(Z){case"top-right":case"top-left":Ie=qe-7;break;case"bottom-right":case"bottom-left":Ie=7-qe;break;case"bottom":Ie=7-le;break;case"top":Ie=le-7}switch(Z){case"top-right":case"bottom-right":ke=-qe;break;case"top-left":case"bottom-left":ke=qe;break;case"left":ke=le;break;case"right":ke=-le}return[ke,Ie]}(S,z[0])}function I1(S){switch(S){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}var Xu=32640;function Zy(S,z,Z,le,ke,Ie,qe,it,dt,St,Rt,Ht,Yt,Zt,cn){var Tn=function(Kn,ar,ur,Er,_r,Ir,Br,$r){for(var jr=Er.layout.get("text-rotate").evaluate(Ir,{})*Math.PI/180,Xr=[],Vr=0,Nr=ar.positionedLines;VrXu&&M(S.layerIds[0]+': Value for "text-size" is >= 255. Reduce your "text-size".'):Fn.kind==="composite"&&((Dn=[Ql*Zt.compositeTextSizes[0].evaluate(qe,{},cn),Ql*Zt.compositeTextSizes[1].evaluate(qe,{},cn)])[0]>Xu||Dn[1]>Xu)&&M(S.layerIds[0]+': Value for "text-size" is >= 255. Reduce your "text-size".'),S.addSymbols(S.text,Tn,Dn,it,Ie,qe,St,z,dt.lineStartIndex,dt.lineLength,Yt,cn);for(var Gn=0,Yn=Rt;Gn=0;qe--)if(le.dist(Ie[qe])0)&&(Ie.value.kind!=="constant"||Ie.value.value.length>0),St=it.value.kind!=="constant"||!!it.value.value||Object.keys(it.parameters).length>0,Rt=ke.get("symbol-sort-key");if(this.features=[],dt||St){for(var Ht=z.iconDependencies,Yt=z.glyphDependencies,Zt=z.availableImages,cn=new di(this.zoom),Tn=0,Fn=S;Tn=0;for(var Qr=0,Di=_r.sections;Qr=0;it--)Ie[it]={x:z[it].x,y:z[it].y,tileUnitDistanceFromAnchor:ke},it>0&&(ke+=z[it-1].dist(z[it]));for(var dt=0;dt0},Li.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Li.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},Li.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},Li.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},Li.prototype.addIndicesForPlacedSymbol=function(S,z){for(var Z=S.placedSymbolArray.get(z),le=Z.vertexStartIndex+4*Z.numGlyphs,ke=Z.vertexStartIndex;ke1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(S),this.sortedAngle=S,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var Z=0,le=this.symbolInstanceIndexes;Z=0&&dt.indexOf(qe)===it&&z.addIndicesForPlacedSymbol(z.text,qe)}),Ie.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,Ie.verticalPlacedTextSymbolIndex),Ie.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,Ie.placedIconSymbolIndex),Ie.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,Ie.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Cr("SymbolBucket",Li,{omit:["layers","collisionBoxArray","features","compareText"]}),Li.MAX_GLYPHS=65535,Li.addDynamicAttributes=R1;var i4=new _a({"symbol-placement":new Fr(Oe.layout_symbol["symbol-placement"]),"symbol-spacing":new Fr(Oe.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Fr(Oe.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ur(Oe.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Fr(Oe.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Fr(Oe.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new Fr(Oe.layout_symbol["icon-ignore-placement"]),"icon-optional":new Fr(Oe.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Fr(Oe.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ur(Oe.layout_symbol["icon-size"]),"icon-text-fit":new Fr(Oe.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Fr(Oe.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ur(Oe.layout_symbol["icon-image"]),"icon-rotate":new Ur(Oe.layout_symbol["icon-rotate"]),"icon-padding":new Fr(Oe.layout_symbol["icon-padding"]),"icon-keep-upright":new Fr(Oe.layout_symbol["icon-keep-upright"]),"icon-offset":new Ur(Oe.layout_symbol["icon-offset"]),"icon-anchor":new Ur(Oe.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Fr(Oe.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Fr(Oe.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Fr(Oe.layout_symbol["text-rotation-alignment"]),"text-field":new Ur(Oe.layout_symbol["text-field"]),"text-font":new Ur(Oe.layout_symbol["text-font"]),"text-size":new Ur(Oe.layout_symbol["text-size"]),"text-max-width":new Ur(Oe.layout_symbol["text-max-width"]),"text-line-height":new Fr(Oe.layout_symbol["text-line-height"]),"text-letter-spacing":new Ur(Oe.layout_symbol["text-letter-spacing"]),"text-justify":new Ur(Oe.layout_symbol["text-justify"]),"text-radial-offset":new Ur(Oe.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Fr(Oe.layout_symbol["text-variable-anchor"]),"text-anchor":new Ur(Oe.layout_symbol["text-anchor"]),"text-max-angle":new Fr(Oe.layout_symbol["text-max-angle"]),"text-writing-mode":new Fr(Oe.layout_symbol["text-writing-mode"]),"text-rotate":new Ur(Oe.layout_symbol["text-rotate"]),"text-padding":new Fr(Oe.layout_symbol["text-padding"]),"text-keep-upright":new Fr(Oe.layout_symbol["text-keep-upright"]),"text-transform":new Ur(Oe.layout_symbol["text-transform"]),"text-offset":new Ur(Oe.layout_symbol["text-offset"]),"text-allow-overlap":new Fr(Oe.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new Fr(Oe.layout_symbol["text-ignore-placement"]),"text-optional":new Fr(Oe.layout_symbol["text-optional"])}),z1={paint:new _a({"icon-opacity":new Ur(Oe.paint_symbol["icon-opacity"]),"icon-color":new Ur(Oe.paint_symbol["icon-color"]),"icon-halo-color":new Ur(Oe.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ur(Oe.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ur(Oe.paint_symbol["icon-halo-blur"]),"icon-translate":new Fr(Oe.paint_symbol["icon-translate"]),"icon-translate-anchor":new Fr(Oe.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ur(Oe.paint_symbol["text-opacity"]),"text-color":new Ur(Oe.paint_symbol["text-color"],{runtimeType:Bt,getOverride:function(S){return S.textColor},hasOverride:function(S){return!!S.textColor}}),"text-halo-color":new Ur(Oe.paint_symbol["text-halo-color"]),"text-halo-width":new Ur(Oe.paint_symbol["text-halo-width"]),"text-halo-blur":new Ur(Oe.paint_symbol["text-halo-blur"]),"text-translate":new Fr(Oe.paint_symbol["text-translate"]),"text-translate-anchor":new Fr(Oe.paint_symbol["text-translate-anchor"])}),layout:i4},kf=function(S){this.type=S.property.overrides?S.property.overrides.runtimeType:mt,this.defaultValue=S};kf.prototype.evaluate=function(S){if(S.formattedSection){var z=this.defaultValue.property.overrides;if(z&&z.hasOverride(S.formattedSection))return z.getOverride(S.formattedSection)}return S.feature&&S.featureState?this.defaultValue.evaluate(S.feature,S.featureState):this.defaultValue.property.specification.default},kf.prototype.eachChild=function(S){this.defaultValue.isConstant()||S(this.defaultValue.value._styleExpression.expression)},kf.prototype.outputDefined=function(){return!1},kf.prototype.serialize=function(){return null},Cr("FormatSectionOverride",kf,{omit:["defaultValue"]});var a4=function(S){function z(Z){S.call(this,Z,z1)}return S&&(z.__proto__=S),z.prototype=Object.create(S&&S.prototype),z.prototype.constructor=z,z.prototype.recalculate=function(Z,le){if(S.prototype.recalculate.call(this,Z,le),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var ke=this.layout.get("text-writing-mode");if(ke){for(var Ie=[],qe=0,it=ke;qe",targetMapId:le,sourceMapId:Ie.mapId})}}},Af.prototype.receive=function(S){var z=S.data,Z=z.id;if(Z&&(!z.targetMapId||this.mapId===z.targetMapId))if(z.type===""){delete this.tasks[Z];var le=this.cancelCallbacks[Z];delete this.cancelCallbacks[Z],le&&le()}else L()||z.mustQueue?(this.tasks[Z]=z,this.taskQueue.push(Z),this.invoker.trigger()):this.processTask(Z,z)},Af.prototype.process=function(){if(this.taskQueue.length){var S=this.taskQueue.shift(),z=this.tasks[S];delete this.tasks[S],this.taskQueue.length&&this.invoker.trigger(),z&&this.processTask(S,z)}},Af.prototype.processTask=function(S,z){var Z=this;if(z.type===""){var le=this.callbacks[S];delete this.callbacks[S],le&&(z.error?le(il(z.error)):le(null,il(z.data)))}else{var ke=!1,Ie=R(this.globalScope)?void 0:[],qe=z.hasCallback?function(Rt,Ht){ke=!0,delete Z.cancelCallbacks[S],Z.target.postMessage({id:S,type:"",sourceMapId:Z.mapId,error:Rt?rl(Rt):null,data:rl(Ht,Ie)},Ie)}:function(Rt){ke=!0},it=null,dt=il(z.data);if(this.parent[z.type])it=this.parent[z.type](z.sourceMapId,dt,qe);else if(this.parent.getWorkerSource){var St=z.type.split(".");it=this.parent.getWorkerSource(z.sourceMapId,St[0],dt.source)[St[1]](dt,qe)}else qe(new Error("Could not find function "+z.type));!ke&&it&&it.cancel&&(this.cancelCallbacks[S]=it.cancel)}},Af.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};var ka=function(S,z){S&&(z?this.setSouthWest(S).setNorthEast(z):S.length===4?this.setSouthWest([S[0],S[1]]).setNorthEast([S[2],S[3]]):this.setSouthWest(S[0]).setNorthEast(S[1]))};ka.prototype.setNorthEast=function(S){return this._ne=S instanceof Gi?new Gi(S.lng,S.lat):Gi.convert(S),this},ka.prototype.setSouthWest=function(S){return this._sw=S instanceof Gi?new Gi(S.lng,S.lat):Gi.convert(S),this},ka.prototype.extend=function(S){var z,Z,le=this._sw,ke=this._ne;if(S instanceof Gi)z=S,Z=S;else{if(!(S instanceof ka)){if(Array.isArray(S)){if(S.length===4||S.every(Array.isArray)){var Ie=S;return this.extend(ka.convert(Ie))}var qe=S;return this.extend(Gi.convert(qe))}return this}if(z=S._sw,Z=S._ne,!z||!Z)return this}return le||ke?(le.lng=Math.min(z.lng,le.lng),le.lat=Math.min(z.lat,le.lat),ke.lng=Math.max(Z.lng,ke.lng),ke.lat=Math.max(Z.lat,ke.lat)):(this._sw=new Gi(z.lng,z.lat),this._ne=new Gi(Z.lng,Z.lat)),this},ka.prototype.getCenter=function(){return new Gi((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},ka.prototype.getSouthWest=function(){return this._sw},ka.prototype.getNorthEast=function(){return this._ne},ka.prototype.getNorthWest=function(){return new Gi(this.getWest(),this.getNorth())},ka.prototype.getSouthEast=function(){return new Gi(this.getEast(),this.getSouth())},ka.prototype.getWest=function(){return this._sw.lng},ka.prototype.getSouth=function(){return this._sw.lat},ka.prototype.getEast=function(){return this._ne.lng},ka.prototype.getNorth=function(){return this._ne.lat},ka.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},ka.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},ka.prototype.isEmpty=function(){return!(this._sw&&this._ne)},ka.prototype.contains=function(S){var z=Gi.convert(S),Z=z.lng,le=z.lat,ke=this._sw.lat<=le&&le<=this._ne.lat,Ie=this._sw.lng<=Z&&Z<=this._ne.lng;return this._sw.lng>this._ne.lng&&(Ie=this._sw.lng>=Z&&Z>=this._ne.lng),ke&&Ie},ka.convert=function(S){return!S||S instanceof ka?S:new ka(S)};var ex=63710088e-1,Gi=function(S,z){if(isNaN(S)||isNaN(z))throw new Error("Invalid LngLat object: ("+S+", "+z+")");if(this.lng=+S,this.lat=+z,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};Gi.prototype.wrap=function(){return new Gi(a(this.lng,-180,180),this.lat)},Gi.prototype.toArray=function(){return[this.lng,this.lat]},Gi.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},Gi.prototype.distanceTo=function(S){var z=Math.PI/180,Z=this.lat*z,le=S.lat*z,ke=Math.sin(Z)*Math.sin(le)+Math.cos(Z)*Math.cos(le)*Math.cos((S.lng-this.lng)*z);return ex*Math.acos(Math.min(ke,1))},Gi.prototype.toBounds=function(S){S===void 0&&(S=0);var z=360*S/40075017,Z=z/Math.cos(Math.PI/180*this.lat);return new ka(new Gi(this.lng-Z,this.lat-z),new Gi(this.lng+Z,this.lat+z))},Gi.convert=function(S){if(S instanceof Gi)return S;if(Array.isArray(S)&&(S.length===2||S.length===3))return new Gi(Number(S[0]),Number(S[1]));if(!Array.isArray(S)&&typeof S=="object"&&S!==null)return new Gi(Number("lng"in S?S.lng:S.lon),Number(S.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var tx=2*Math.PI*ex;function nx(S){return tx*Math.cos(S*Math.PI/180)}function rx(S){return(180+S)/360}function ix(S){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+S*Math.PI/360)))/360}function ax(S,z){return S/nx(z)}function F1(S){var z=180-360*S;return 360/Math.PI*Math.atan(Math.exp(z*Math.PI/180))-90}var Ic=function(S,z,Z){Z===void 0&&(Z=0),this.x=+S,this.y=+z,this.z=+Z};Ic.fromLngLat=function(S,z){z===void 0&&(z=0);var Z=Gi.convert(S);return new Ic(rx(Z.lng),ix(Z.lat),ax(z,Z.lat))},Ic.prototype.toLngLat=function(){return new Gi(360*this.x-180,F1(this.y))},Ic.prototype.toAltitude=function(){return S=this.z,z=this.y,S*nx(F1(z));var S,z},Ic.prototype.meterInMercatorCoordinateUnits=function(){return 1/tx*(S=F1(this.y),1/Math.cos(S*Math.PI/180));var S};var Rc=function(S,z,Z){this.z=S,this.x=z,this.y=Z,this.key=Sh(0,S,S,z,Z)};Rc.prototype.equals=function(S){return this.z===S.z&&this.x===S.x&&this.y===S.y},Rc.prototype.url=function(S,z){var Z,le,ke,Ie,qe,it=(Z=this.x,le=this.y,ke=this.z,Ie=Qy(256*Z,256*(le=Math.pow(2,ke)-le-1),ke),qe=Qy(256*(Z+1),256*(le+1),ke),Ie[0]+","+Ie[1]+","+qe[0]+","+qe[1]),dt=function(St,Rt,Ht){for(var Yt,Zt="",cn=St;cn>0;cn--)Zt+=(Rt&(Yt=1<this.canonical.z?new Aa(S,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Aa(S,this.wrap,S,this.canonical.x>>z,this.canonical.y>>z)},Aa.prototype.calculateScaledKey=function(S,z){var Z=this.canonical.z-S;return S>this.canonical.z?Sh(this.wrap*+z,S,this.canonical.z,this.canonical.x,this.canonical.y):Sh(this.wrap*+z,S,S,this.canonical.x>>Z,this.canonical.y>>Z)},Aa.prototype.isChildOf=function(S){if(S.wrap!==this.wrap)return!1;var z=this.canonical.z-S.canonical.z;return S.overscaledZ===0||S.overscaledZ>z&&S.canonical.y===this.canonical.y>>z},Aa.prototype.children=function(S){if(this.overscaledZ>=S)return[new Aa(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var z=this.canonical.z+1,Z=2*this.canonical.x,le=2*this.canonical.y;return[new Aa(z,this.wrap,z,Z,le),new Aa(z,this.wrap,z,Z+1,le),new Aa(z,this.wrap,z,Z,le+1),new Aa(z,this.wrap,z,Z+1,le+1)]},Aa.prototype.isLessThan=function(S){return this.wrapS.wrap)&&(this.overscaledZS.overscaledZ)&&(this.canonical.xS.canonical.x)&&this.canonical.y=this.dim+1||z<-1||z>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(z+1)*this.stride+(S+1)},Mu.prototype._unpackMapbox=function(S,z,Z){return(256*S*256+256*z+Z)/10-1e4},Mu.prototype._unpackTerrarium=function(S,z,Z){return 256*S+z+Z/256-32768},Mu.prototype.getPixels=function(){return new No({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Mu.prototype.backfillBorder=function(S,z,Z){if(this.dim!==S.dim)throw new Error("dem dimension mismatch");var le=z*this.dim,ke=z*this.dim+this.dim,Ie=Z*this.dim,qe=Z*this.dim+this.dim;switch(z){case-1:le=ke-1;break;case 1:ke=le+1}switch(Z){case-1:Ie=qe-1;break;case 1:qe=Ie+1}for(var it=-z*this.dim,dt=-Z*this.dim,St=Ie;St=0&&Rt[3]>=0&&it.insert(qe,Rt[0],Rt[1],Rt[2],Rt[3])}},Su.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new vf.VectorTile(new id(this.rawTileData)).layers,this.sourceLayerCoder=new vd(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Su.prototype.query=function(S,z,Z,le){var ke=this;this.loadVTLayers();for(var Ie=S.params||{},qe=Yr/S.tileSize/S.scale,it=El(Ie.filter),dt=S.queryGeometry,St=S.queryPadding*qe,Rt=lx(dt),Ht=this.grid.query(Rt.minX-St,Rt.minY-St,Rt.maxX+St,Rt.maxY+St),Yt=lx(S.cameraQueryGeometry),Zt=0,cn=this.grid3D.query(Yt.minX-St,Yt.minY-St,Yt.maxX+St,Yt.maxY+St,function(Kn,ar,ur,Er){return function(_r,Ir,Br,$r,jr){for(var Xr=0,Vr=_r;Xr=Nr.x&&jr>=Nr.y)return!0}var si=[new t(Ir,Br),new t(Ir,jr),new t($r,jr),new t($r,Br)];if(_r.length>2){for(var Qr=0,Di=si;Qr=0)return!0;return!1}(Ie,Ht)){var Yt=this.sourceLayerCoder.decode(Z),Zt=this.vtLayers[Yt].feature(le);if(ke.filter(new di(this.tileID.overscaledZ),Zt))for(var cn=this.getId(Zt,Yt),Tn=0;Tnle)ke=!1;else if(z)if(this.expirationTimege&&(S.getActor().send("enforceCacheSizeLimit",je),st=0)},s.clamp=o,s.clearTileCache=function(S){var z=self.caches.delete(De);S&&z.catch(S).then(function(){return S()})},s.clipLine=Hy,s.clone=function(S){var z=new ws(16);return z[0]=S[0],z[1]=S[1],z[2]=S[2],z[3]=S[3],z[4]=S[4],z[5]=S[5],z[6]=S[6],z[7]=S[7],z[8]=S[8],z[9]=S[9],z[10]=S[10],z[11]=S[11],z[12]=S[12],z[13]=S[13],z[14]=S[14],z[15]=S[15],z},s.clone$1=k,s.clone$2=function(S){var z=new ws(3);return z[0]=S[0],z[1]=S[1],z[2]=S[2],z},s.collisionCircleLayout=O5,s.config=X,s.create=function(){var S=new ws(16);return ws!=Float32Array&&(S[1]=0,S[2]=0,S[3]=0,S[4]=0,S[6]=0,S[7]=0,S[8]=0,S[9]=0,S[11]=0,S[12]=0,S[13]=0,S[14]=0),S[0]=1,S[5]=1,S[10]=1,S[15]=1,S},s.create$1=function(){var S=new ws(9);return ws!=Float32Array&&(S[1]=0,S[2]=0,S[3]=0,S[5]=0,S[6]=0,S[7]=0),S[0]=1,S[4]=1,S[8]=1,S},s.create$2=function(){var S=new ws(4);return ws!=Float32Array&&(S[1]=0,S[2]=0),S[0]=1,S[3]=1,S},s.createCommonjsModule=T,s.createExpression=wl,s.createLayout=Si,s.createStyleLayer=function(S){return S.type==="custom"?new c4(S):new f4[S.type](S)},s.cross=function(S,z,Z){var le=z[0],ke=z[1],Ie=z[2],qe=Z[0],it=Z[1],dt=Z[2];return S[0]=ke*dt-Ie*it,S[1]=Ie*qe-le*dt,S[2]=le*it-ke*qe,S},s.deepEqual=function S(z,Z){if(Array.isArray(z)){if(!Array.isArray(Z)||z.length!==Z.length)return!1;for(var le=0;le0&&(Ie=1/Math.sqrt(Ie)),S[0]=z[0]*Ie,S[1]=z[1]*Ie,S[2]=z[2]*Ie,S},s.number=Lr,s.offscreenCanvasSupported=ot,s.ortho=function(S,z,Z,le,ke,Ie,qe){var it=1/(z-Z),dt=1/(le-ke),St=1/(Ie-qe);return S[0]=-2*it,S[1]=0,S[2]=0,S[3]=0,S[4]=0,S[5]=-2*dt,S[6]=0,S[7]=0,S[8]=0,S[9]=0,S[10]=2*St,S[11]=0,S[12]=(z+Z)*it,S[13]=(ke+le)*dt,S[14]=(qe+Ie)*St,S[15]=1,S},s.parseGlyphPBF=function(S){return new id(S).readFields(H5,[])},s.pbf=id,s.performSymbolLayout=function(S,z,Z,le,ke,Ie,qe){S.createArrays();var it=512*S.overscaling;S.tilePixelRatio=Yr/it,S.compareText={},S.iconsNeedLinear=!1;var dt=S.layers[0].layout,St=S.layers[0]._unevaluatedLayout._values,Rt={};if(S.textSizeData.kind==="composite"){var Ht=S.textSizeData,Yt=Ht.minZoom,Zt=Ht.maxZoom;Rt.compositeTextSizes=[St["text-size"].possiblyEvaluate(new di(Yt),qe),St["text-size"].possiblyEvaluate(new di(Zt),qe)]}if(S.iconSizeData.kind==="composite"){var cn=S.iconSizeData,Tn=cn.minZoom,Fn=cn.maxZoom;Rt.compositeIconSizes=[St["icon-size"].possiblyEvaluate(new di(Tn),qe),St["icon-size"].possiblyEvaluate(new di(Fn),qe)]}Rt.layoutTextSize=St["text-size"].possiblyEvaluate(new di(S.zoom+1),qe),Rt.layoutIconSize=St["icon-size"].possiblyEvaluate(new di(S.zoom+1),qe),Rt.textMaxSize=St["text-size"].possiblyEvaluate(new di(18));for(var Dn=dt.get("text-line-height")*no,Gn=dt.get("text-rotation-alignment")==="map"&&dt.get("symbol-placement")!=="point",Yn=dt.get("text-keep-upright"),Kn=dt.get("text-size"),ar=function(){var _r=Er[ur],Ir=dt.get("text-font").evaluate(_r,{},qe).join(","),Br=Kn.evaluate(_r,{},qe),$r=Rt.layoutTextSize.evaluate(_r,{},qe),jr=Rt.layoutIconSize.evaluate(_r,{},qe),Xr={horizontal:{},vertical:void 0},Vr=_r.text,Nr=[0,0];if(Vr){var si=Vr.toString(),Qr=dt.get("text-letter-spacing").evaluate(_r,{},qe)*no,Di=function(ei){for(var pi=0,ra=ei;pi=Yr||Dh.y<0||Dh.y>=Yr||function(sa,zl,d4,Ju,W1,dx,Sd,eu,Ed,Fh,Cd,Ld,Z1,gx,Bh,vx,mx,yx,xx,bx,ks,Pd,_x,tu,g4){var wx,jc,Lf,Pf,Of,If=sa.addToLineVertexArray(zl,d4),Tx=0,kx=0,Ax=0,Mx=0,Y1=-1,X1=-1,Cu={},Sx=zn(""),$1=0,J1=0;if(eu._unevaluatedLayout.getValue("text-radial-offset")===void 0?($1=(wx=eu.layout.get("text-offset").evaluate(ks,{},tu).map(function(jh){return jh*no}))[0],J1=wx[1]):($1=eu.layout.get("text-radial-offset").evaluate(ks,{},tu)*no,J1=O1),sa.allowVerticalPlacement&&Ju.vertical){var Ex=eu.layout.get("text-rotate").evaluate(ks,{},tu)+90,v4=Ju.vertical;Pf=new pd(Ed,zl,Fh,Cd,Ld,v4,Z1,gx,Bh,Ex),Sd&&(Of=new pd(Ed,zl,Fh,Cd,Ld,Sd,mx,yx,Bh,Ex))}if(W1){var K1=eu.layout.get("icon-rotate").evaluate(ks,{}),Cx=eu.layout.get("icon-text-fit")!=="none",Lx=qy(W1,K1,_x,Cx),Q1=Sd?qy(Sd,K1,_x,Cx):void 0;Lf=new pd(Ed,zl,Fh,Cd,Ld,W1,mx,yx,!1,K1),Tx=4*Lx.length;var Px=sa.iconSizeData,Nh=null;Px.kind==="source"?(Nh=[Ql*eu.layout.get("icon-size").evaluate(ks,{})])[0]>Xu&&M(sa.layerIds[0]+': Value for "icon-size" is >= 255. Reduce your "icon-size".'):Px.kind==="composite"&&((Nh=[Ql*Pd.compositeIconSizes[0].evaluate(ks,{},tu),Ql*Pd.compositeIconSizes[1].evaluate(ks,{},tu)])[0]>Xu||Nh[1]>Xu)&&M(sa.layerIds[0]+': Value for "icon-size" is >= 255. Reduce your "icon-size".'),sa.addSymbols(sa.icon,Lx,Nh,bx,xx,ks,!1,zl,If.lineStartIndex,If.lineLength,-1,tu),Y1=sa.icon.placedSymbolArray.length-1,Q1&&(kx=4*Q1.length,sa.addSymbols(sa.icon,Q1,Nh,bx,xx,ks,Ts.vertical,zl,If.lineStartIndex,If.lineLength,-1,tu),X1=sa.icon.placedSymbolArray.length-1)}for(var Ox in Ju.horizontal){var Od=Ju.horizontal[Ox];if(!jc){Sx=zn(Od.text);var m4=eu.layout.get("text-rotate").evaluate(ks,{},tu);jc=new pd(Ed,zl,Fh,Cd,Ld,Od,Z1,gx,Bh,m4)}var Ix=Od.positionedLines.length===1;if(Ax+=Zy(sa,zl,Od,dx,eu,Bh,ks,vx,If,Ju.vertical?Ts.horizontal:Ts.horizontalOnly,Ix?Object.keys(Ju.horizontal):[Ox],Cu,Y1,Pd,tu),Ix)break}Ju.vertical&&(Mx+=Zy(sa,zl,Ju.vertical,dx,eu,Bh,ks,vx,If,Ts.vertical,["vertical"],Cu,X1,Pd,tu));var y4=jc?jc.boxStartIndex:sa.collisionBoxArray.length,x4=jc?jc.boxEndIndex:sa.collisionBoxArray.length,b4=Pf?Pf.boxStartIndex:sa.collisionBoxArray.length,_4=Pf?Pf.boxEndIndex:sa.collisionBoxArray.length,w4=Lf?Lf.boxStartIndex:sa.collisionBoxArray.length,T4=Lf?Lf.boxEndIndex:sa.collisionBoxArray.length,k4=Of?Of.boxStartIndex:sa.collisionBoxArray.length,A4=Of?Of.boxEndIndex:sa.collisionBoxArray.length,nu=-1,Id=function(jh,zx){return jh&&jh.circleDiameter?Math.max(jh.circleDiameter,zx):zx};nu=Id(jc,nu),nu=Id(Pf,nu),nu=Id(Lf,nu);var Rx=(nu=Id(Of,nu))>-1?1:0;Rx&&(nu*=g4/no),sa.glyphOffsetArray.length>=Li.MAX_GLYPHS&&M("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),ks.sortKey!==void 0&&sa.addToSortKeyRanges(sa.symbolInstances.length,ks.sortKey),sa.symbolInstances.emplaceBack(zl.x,zl.y,Cu.right>=0?Cu.right:-1,Cu.center>=0?Cu.center:-1,Cu.left>=0?Cu.left:-1,Cu.vertical||-1,Y1,X1,Sx,y4,x4,b4,_4,w4,T4,k4,A4,Fh,Ax,Mx,Tx,kx,Rx,0,Z1,$1,J1,nu)}(ei,Dh,p4,ra,Ri,Ji,Eu,ei.layers[0],ei.collisionBoxArray,pi.index,pi.sourceLayerIndex,ei.index,yd,N1,_d,Mo,xd,bd,wd,Rl,pi,Zi,ss,vo,mi)};if(Ch==="line")for(var Ef=0,Td=Hy(pi.geometry,0,0,Yr,Yr);Ef1){var Ih=X5(Bc,Sf,ra.vertical||ul,Ri,cl,Dc);Ih&&Fc(Bc,Ih)}}else if(pi.type==="Polygon")for(var Nc=0,Rh=T1(pi.geometry,0);Nc=kn.maxzoom||kn.visibility!=="none"&&(i(ln,this.zoom,Ge),(Ct[kn.id]=kn.createBucket({index:Qe.bucketLayerIDs.length,layers:ln,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Bt,sourceID:this.source})).populate(Wt,mt,this.tileID.canonical),Qe.bucketLayerIDs.push(ln.map(function(fn){return fn.id})))}}}var Wn=s.mapObject(mt.glyphDependencies,function(fn){return Object.keys(fn).map(Number)});Object.keys(Wn).length?nt.send("getGlyphs",{uid:this.uid,stacks:Wn},function(fn,hn){ut||(ut=fn,pt=hn,_n.call(Oe))}):pt={};var wn=Object.keys(mt.iconDependencies);wn.length?nt.send("getImages",{icons:wn,source:this.source,tileID:this.tileID,type:"icons"},function(fn,hn){ut||(ut=fn,bt=hn,_n.call(Oe))}):bt={};var on=Object.keys(mt.patternDependencies);function _n(){if(ut)return ht(ut);if(pt&&bt&&Lt){var fn=new l(pt),hn=new s.ImageAtlas(bt,Lt);for(var In in Ct){var Cn=Ct[In];Cn instanceof s.SymbolBucket?(i(Cn.layers,this.zoom,Ge),s.performSymbolLayout(Cn,pt,fn.positions,bt,hn.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):Cn.hasPattern&&(Cn instanceof s.LineBucket||Cn instanceof s.FillBucket||Cn instanceof s.FillExtrusionBucket)&&(i(Cn.layers,this.zoom,Ge),Cn.addFeatures(mt,this.tileID.canonical,hn.patternPositions))}this.status="done",ht(null,{buckets:s.values(Ct).filter(function(Nn){return!Nn.isEmpty()}),featureIndex:Qe,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:fn.image,imageAtlas:hn,glyphMap:this.returnDependencies?pt:null,iconMap:this.returnDependencies?bt:null,glyphPositions:this.returnDependencies?fn.positions:null})}}on.length?nt.send("getImages",{icons:on,source:this.source,tileID:this.tileID,type:"patterns"},function(fn,hn){ut||(ut=fn,Lt=hn,_n.call(Oe))}):Lt={},_n.call(this)};var n=function(Je,Ke,Ge,nt){this.actor=Je,this.layerIndex=Ke,this.availableImages=Ge,this.loadVectorData=nt||r,this.loading={},this.loaded={}};n.prototype.loadTile=function(Je,Ke){var Ge=this,nt=Je.uid;this.loading||(this.loading={});var ht=!!(Je&&Je.request&&Je.request.collectResourceTiming)&&new s.RequestPerformance(Je.request),Oe=this.loading[nt]=new t(Je);Oe.abort=this.loadVectorData(Je,function(Be,Qe){if(delete Ge.loading[nt],Be||!Qe)return Oe.status="done",Ge.loaded[nt]=Oe,Ke(Be);var ut=Qe.rawData,pt={};Qe.expires&&(pt.expires=Qe.expires),Qe.cacheControl&&(pt.cacheControl=Qe.cacheControl);var bt={};if(ht){var Lt=ht.finish();Lt&&(bt.resourceTiming=JSON.parse(JSON.stringify(Lt)))}Oe.vectorTile=Qe.vectorTile,Oe.parse(Qe.vectorTile,Ge.layerIndex,Ge.availableImages,Ge.actor,function(Ct,mt){if(Ct||!mt)return Ke(Ct);Ke(null,s.extend({rawTileData:ut.slice(0)},mt,pt,bt))}),Ge.loaded=Ge.loaded||{},Ge.loaded[nt]=Oe})},n.prototype.reloadTile=function(Je,Ke){var Ge=this,nt=this.loaded,ht=Je.uid,Oe=this;if(nt&&nt[ht]){var Be=nt[ht];Be.showCollisionBoxes=Je.showCollisionBoxes;var Qe=function(ut,pt){var bt=Be.reloadCallback;bt&&(delete Be.reloadCallback,Be.parse(Be.vectorTile,Oe.layerIndex,Ge.availableImages,Oe.actor,bt)),Ke(ut,pt)};Be.status==="parsing"?Be.reloadCallback=Qe:Be.status==="done"&&(Be.vectorTile?Be.parse(Be.vectorTile,this.layerIndex,this.availableImages,this.actor,Qe):Qe())}},n.prototype.abortTile=function(Je,Ke){var Ge=this.loading,nt=Je.uid;Ge&&Ge[nt]&&Ge[nt].abort&&(Ge[nt].abort(),delete Ge[nt]),Ke()},n.prototype.removeTile=function(Je,Ke){var Ge=this.loaded,nt=Je.uid;Ge&&Ge[nt]&&delete Ge[nt],Ke()};var o=s.window.ImageBitmap,a=function(){this.loaded={}};a.prototype.loadTile=function(Je,Ke){var Ge=Je.uid,nt=Je.encoding,ht=Je.rawImageData,Oe=o&&ht instanceof o?this.getImageData(ht):ht,Be=new s.DEMData(Ge,Oe,nt);this.loaded=this.loaded||{},this.loaded[Ge]=Be,Ke(null,Be)},a.prototype.getImageData=function(Je){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(Je.width,Je.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=Je.width,this.offscreenCanvas.height=Je.height,this.offscreenCanvasContext.drawImage(Je,0,0,Je.width,Je.height);var Ke=this.offscreenCanvasContext.getImageData(-1,-1,Je.width+2,Je.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new s.RGBAImage({width:Ke.width,height:Ke.height},Ke.data)},a.prototype.removeTile=function(Je){var Ke=this.loaded,Ge=Je.uid;Ke&&Ke[Ge]&&delete Ke[Ge]};var u=function Je(Ke,Ge){var nt,ht=Ke&&Ke.type;if(ht==="FeatureCollection")for(nt=0;nt=0!=!!Ke&&Je.reverse()}var b=s.vectorTile.VectorTileFeature.prototype.toGeoJSON,d=function(Je){this._feature=Je,this.extent=s.EXTENT,this.type=Je.type,this.properties=Je.tags,"id"in Je&&!isNaN(Je.id)&&(this.id=parseInt(Je.id,10))};d.prototype.loadGeometry=function(){if(this._feature.type===1){for(var Je=[],Ke=0,Ge=this._feature.geometry;Ke>31}function G(Je,Ke){for(var Ge=Je.loadGeometry(),nt=Je.type,ht=0,Oe=0,Be=Ge.length,Qe=0;Qe>1;V(Je,Ke,Be,nt,ht,Oe%2),j(Je,Ke,Ge,nt,Be-1,Oe+1),j(Je,Ke,Ge,Be+1,ht,Oe+1)}}function V(Je,Ke,Ge,nt,ht,Oe){for(;ht>nt;){if(ht-nt>600){var Be=ht-nt+1,Qe=Ge-nt+1,ut=Math.log(Be),pt=.5*Math.exp(2*ut/3),bt=.5*Math.sqrt(ut*pt*(Be-pt)/Be)*(Qe-Be/2<0?-1:1);V(Je,Ke,Ge,Math.max(nt,Math.floor(Ge-Qe*pt/Be+bt)),Math.min(ht,Math.floor(Ge+(Be-Qe)*pt/Be+bt)),Oe)}var Lt=Ke[2*Ge+Oe],Ct=nt,mt=ht;for(H(Je,Ke,nt,Ge),Ke[2*ht+Oe]>Lt&&H(Je,Ke,nt,ht);CtLt;)mt--}Ke[2*nt+Oe]===Lt?H(Je,Ke,nt,mt):H(Je,Ke,++mt,ht),mt<=Ge&&(nt=mt+1),Ge<=mt&&(ht=mt-1)}}function H(Je,Ke,Ge,nt){ee(Je,Ge,nt),ee(Ke,2*Ge,2*nt),ee(Ke,2*Ge+1,2*nt+1)}function ee(Je,Ke,Ge){var nt=Je[Ke];Je[Ke]=Je[Ge],Je[Ge]=nt}function Q(Je,Ke,Ge,nt){var ht=Je-Ge,Oe=Ke-nt;return ht*ht+Oe*Oe}h.fromVectorTileJs=M,h.fromGeojsonVt=A,h.GeoJSONWrapper=C;var X=function(Je){return Je[0]},Y=function(Je){return Je[1]},K=function(Je,Ke,Ge,nt,ht){Ke===void 0&&(Ke=X),Ge===void 0&&(Ge=Y),nt===void 0&&(nt=64),ht===void 0&&(ht=Float64Array),this.nodeSize=nt,this.points=Je;for(var Oe=Je.length<65536?Uint16Array:Uint32Array,Be=this.ids=new Oe(Je.length),Qe=this.coords=new ht(2*Je.length),ut=0;ut=Be&&Lt<=ut&&Ct>=Qe&&Ct<=pt&&Ot.push(ht[Wt]);else{var Gt=Math.floor((Bt+Pt)/2);Lt=Oe[2*Gt],Ct=Oe[2*Gt+1],Lt>=Be&&Lt<=ut&&Ct>=Qe&&Ct<=pt&&Ot.push(ht[Gt]);var Xt=(_t+1)%2;(_t===0?Be<=Lt:Qe<=Ct)&&(mt.push(Bt),mt.push(Gt-1),mt.push(Xt)),(_t===0?ut>=Lt:pt>=Ct)&&(mt.push(Gt+1),mt.push(Pt),mt.push(Xt))}}return Ot}(this.ids,this.coords,Je,Ke,Ge,nt,this.nodeSize)},K.prototype.within=function(Je,Ke,Ge){return function(nt,ht,Oe,Be,Qe,ut){for(var pt=[0,nt.length-1,0],bt=[],Lt=Qe*Qe;pt.length;){var Ct=pt.pop(),mt=pt.pop(),Ot=pt.pop();if(mt-Ot<=ut)for(var _t=Ot;_t<=mt;_t++)Q(ht[2*_t],ht[2*_t+1],Oe,Be)<=Lt&&bt.push(nt[_t]);else{var Pt=Math.floor((Ot+mt)/2),Bt=ht[2*Pt],Wt=ht[2*Pt+1];Q(Bt,Wt,Oe,Be)<=Lt&&bt.push(nt[Pt]);var Gt=(Ct+1)%2;(Ct===0?Oe-Qe<=Bt:Be-Qe<=Wt)&&(pt.push(Ot),pt.push(Pt-1),pt.push(Gt)),(Ct===0?Oe+Qe>=Bt:Be+Qe>=Wt)&&(pt.push(Pt+1),pt.push(mt),pt.push(Gt))}}return bt}(this.ids,this.coords,Je,Ke,Ge,this.nodeSize)};var te={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(Je){return Je}},ae=function(Je){this.options=he(Object.create(te),Je),this.trees=new Array(this.options.maxZoom+1)};function oe(Je,Ke,Ge,nt,ht){return{x:Je,y:Ke,zoom:1/0,id:Ge,parentId:-1,numPoints:nt,properties:ht}}function se(Je,Ke){var Ge=Je.geometry.coordinates,nt=Ge[0],ht=Ge[1];return{x:pe(nt),y:de(ht),zoom:1/0,index:Ke,parentId:-1}}function fe(Je){return{type:"Feature",id:Je.id,properties:ye(Je),geometry:{type:"Point",coordinates:[(nt=Je.x,360*(nt-.5)),(Ke=Je.y,Ge=(180-360*Ke)*Math.PI/180,360*Math.atan(Math.exp(Ge))/Math.PI-90)]}};var Ke,Ge,nt}function ye(Je){var Ke=Je.numPoints,Ge=Ke>=1e4?Math.round(Ke/1e3)+"k":Ke>=1e3?Math.round(Ke/100)/10+"k":Ke;return he(he({},Je.properties),{cluster:!0,cluster_id:Je.id,point_count:Ke,point_count_abbreviated:Ge})}function pe(Je){return Je/360+.5}function de(Je){var Ke=Math.sin(Je*Math.PI/180),Ge=.5-.25*Math.log((1+Ke)/(1-Ke))/Math.PI;return Ge<0?0:Ge>1?1:Ge}function he(Je,Ke){for(var Ge in Ke)Je[Ge]=Ke[Ge];return Je}function xe(Je){return Je.x}function Re(Je){return Je.y}function we(Je,Ke,Ge,nt){for(var ht,Oe=nt,Be=Ge-Ke>>1,Qe=Ge-Ke,ut=Je[Ke],pt=Je[Ke+1],bt=Je[Ge],Lt=Je[Ge+1],Ct=Ke+3;CtOe)ht=Ct,Oe=mt;else if(mt===Oe){var Ot=Math.abs(Ct-Be);Otnt&&(ht-Ke>3&&we(Je,Ke,ht,nt),Je[ht+2]=Oe,Ge-ht>3&&we(Je,ht,Ge,nt))}function Ae(Je,Ke,Ge,nt,ht,Oe){var Be=ht-Ge,Qe=Oe-nt;if(Be!==0||Qe!==0){var ut=((Je-Ge)*Be+(Ke-nt)*Qe)/(Be*Be+Qe*Qe);ut>1?(Ge=ht,nt=Oe):ut>0&&(Ge+=Be*ut,nt+=Qe*ut)}return(Be=Je-Ge)*Be+(Qe=Ke-nt)*Qe}function Me(Je,Ke,Ge,nt){var ht={id:Je===void 0?null:Je,type:Ke,geometry:Ge,tags:nt,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(Oe){var Be=Oe.geometry,Qe=Oe.type;if(Qe==="Point"||Qe==="MultiPoint"||Qe==="LineString")Ce(Oe,Be);else if(Qe==="Polygon"||Qe==="MultiLineString")for(var ut=0;ut0&&(Be+=nt?(ht*pt-ut*Oe)/2:Math.sqrt(Math.pow(ut-ht,2)+Math.pow(pt-Oe,2))),ht=ut,Oe=pt}var bt=Ke.length-3;Ke[2]=1,we(Ke,0,bt,Ge),Ke[bt+2]=1,Ke.size=Math.abs(Be),Ke.start=0,Ke.end=Ke.size}function Te(Je,Ke,Ge,nt){for(var ht=0;ht1?1:Ge}function De(Je,Ke,Ge,nt,ht,Oe,Be,Qe){if(nt/=Ke,Oe>=(Ge/=Ke)&&Be=nt)return null;for(var ut=[],pt=0;pt=Ge&&Ot=nt)){var _t=[];if(Ct==="Point"||Ct==="MultiPoint")je(Lt,_t,Ge,nt,ht);else if(Ct==="LineString")ge(Lt,_t,Ge,nt,ht,!1,Qe.lineMetrics);else if(Ct==="MultiLineString")Se(Lt,_t,Ge,nt,ht,!1);else if(Ct==="Polygon")Se(Lt,_t,Ge,nt,ht,!0);else if(Ct==="MultiPolygon")for(var Pt=0;Pt=Ge&&Be<=nt&&(Ke.push(Je[Oe]),Ke.push(Je[Oe+1]),Ke.push(Je[Oe+2]))}}function ge(Je,Ke,Ge,nt,ht,Oe,Be){for(var Qe,ut,pt=be(Je),bt=ht===0?Ye:Ze,Lt=Je.start,Ct=0;CtGe&&(ut=bt(pt,mt,Ot,Pt,Bt,Ge),Be&&(pt.start=Lt+Qe*ut)):Wt>nt?Gt=Ge&&(ut=bt(pt,mt,Ot,Pt,Bt,Ge),Xt=!0),Gt>nt&&Wt<=nt&&(ut=bt(pt,mt,Ot,Pt,Bt,nt),Xt=!0),!Oe&&Xt&&(Be&&(pt.end=Lt+Qe*ut),Ke.push(pt),pt=be(Je)),Be&&(Lt+=Qe)}var Kt=Je.length-3;mt=Je[Kt],Ot=Je[Kt+1],_t=Je[Kt+2],(Wt=ht===0?mt:Ot)>=Ge&&Wt<=nt&&Ne(pt,mt,Ot,_t),Kt=pt.length-3,Oe&&Kt>=3&&(pt[Kt]!==pt[0]||pt[Kt+1]!==pt[1])&&Ne(pt,pt[0],pt[1],pt[2]),pt.length&&Ke.push(pt)}function be(Je){var Ke=[];return Ke.size=Je.size,Ke.start=Je.start,Ke.end=Je.end,Ke}function Se(Je,Ke,Ge,nt,ht,Oe){for(var Be=0;BeBe.maxX&&(Be.maxX=bt),Lt>Be.maxY&&(Be.maxY=Lt)}return Be}function Tt(Je,Ke,Ge,nt){var ht=Ke.geometry,Oe=Ke.type,Be=[];if(Oe==="Point"||Oe==="MultiPoint")for(var Qe=0;Qe0&&Ke.size<(ht?Be:nt))Ge.numPoints+=Ke.length/3;else{for(var Qe=[],ut=0;utBe)&&(Ge.numSimplified++,Qe.push(Ke[ut]),Qe.push(Ke[ut+1])),Ge.numPoints++;ht&&function(pt,bt){for(var Lt=0,Ct=0,mt=pt.length,Ot=mt-2;Ct0===bt)for(Ct=0,mt=pt.length;Ct24)throw new Error("maxZoom should be in the 0-24 range");if(Ke.promoteId&&Ke.generateId)throw new Error("promoteId and generateId cannot be used together.");var nt=function(ht,Oe){var Be=[];if(ht.type==="FeatureCollection")for(var Qe=0;Qe=nt;pt--){var bt=+Date.now();Qe=this._cluster(Qe,pt),this.trees[pt]=new K(Qe,xe,Re,Oe,Float32Array),Ge&&console.log("z%d: %d clusters in %dms",pt,Qe.length,+Date.now()-bt)}return Ge&&console.timeEnd("total time"),this},ae.prototype.getClusters=function(Je,Ke){var Ge=((Je[0]+180)%360+360)%360-180,nt=Math.max(-90,Math.min(90,Je[1])),ht=Je[2]===180?180:((Je[2]+180)%360+360)%360-180,Oe=Math.max(-90,Math.min(90,Je[3]));if(Je[2]-Je[0]>=360)Ge=-180,ht=180;else if(Ge>ht){var Be=this.getClusters([Ge,nt,180,Oe],Ke),Qe=this.getClusters([-180,nt,ht,Oe],Ke);return Be.concat(Qe)}for(var ut=this.trees[this._limitZoom(Ke)],pt=[],bt=0,Lt=ut.range(pe(Ge),de(Oe),pe(ht),de(nt));bt1?this._map(pt,!0):null,Pt=(ut<<5)+(Ke+1)+this.points.length,Bt=0,Wt=Lt;Bt>5},ae.prototype._getOriginZoom=function(Je){return(Je-this.points.length)%32},ae.prototype._map=function(Je,Ke){if(Je.numPoints)return Ke?he({},Je.properties):Je.properties;var Ge=this.points[Je.index].properties,nt=this.options.map(Ge);return Ke&&nt===Ge?he({},nt):nt},Dt.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},Dt.prototype.splitTile=function(Je,Ke,Ge,nt,ht,Oe,Be){for(var Qe=[Je,Ke,Ge,nt],ut=this.options,pt=ut.debug;Qe.length;){nt=Qe.pop(),Ge=Qe.pop(),Ke=Qe.pop(),Je=Qe.pop();var bt=1<1&&console.time("creation"),Ct=this.tiles[Lt]=Et(Je,Ke,Ge,nt,ut),this.tileCoords.push({z:Ke,x:Ge,y:nt}),pt)){pt>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Ke,Ge,nt,Ct.numFeatures,Ct.numPoints,Ct.numSimplified),console.timeEnd("creation"));var mt="z"+Ke;this.stats[mt]=(this.stats[mt]||0)+1,this.total++}if(Ct.source=Je,ht){if(Ke===ut.maxZoom||Ke===ht)continue;var Ot=1<1&&console.time("clipping");var _t,Pt,Bt,Wt,Gt,Xt,Kt=.5*ut.buffer/ut.extent,nn=.5-Kt,yn=.5+Kt,ln=1+Kt;_t=Pt=Bt=Wt=null,Gt=De(Je,bt,Ge-Kt,Ge+yn,0,Ct.minX,Ct.maxX,ut),Xt=De(Je,bt,Ge+nn,Ge+ln,0,Ct.minX,Ct.maxX,ut),Je=null,Gt&&(_t=De(Gt,bt,nt-Kt,nt+yn,1,Ct.minY,Ct.maxY,ut),Pt=De(Gt,bt,nt+nn,nt+ln,1,Ct.minY,Ct.maxY,ut),Gt=null),Xt&&(Bt=De(Xt,bt,nt-Kt,nt+yn,1,Ct.minY,Ct.maxY,ut),Wt=De(Xt,bt,nt+nn,nt+ln,1,Ct.minY,Ct.maxY,ut),Xt=null),pt>1&&console.timeEnd("clipping"),Qe.push(_t||[],Ke+1,2*Ge,2*nt),Qe.push(Pt||[],Ke+1,2*Ge,2*nt+1),Qe.push(Bt||[],Ke+1,2*Ge+1,2*nt),Qe.push(Wt||[],Ke+1,2*Ge+1,2*nt+1)}}},Dt.prototype.getTile=function(Je,Ke,Ge){var nt=this.options,ht=nt.extent,Oe=nt.debug;if(Je<0||Je>24)return null;var Be=1<1&&console.log("drilling down to z%d-%d-%d",Je,Ke,Ge);for(var ut,pt=Je,bt=Ke,Lt=Ge;!ut&&pt>0;)pt--,bt=Math.floor(bt/2),Lt=Math.floor(Lt/2),ut=this.tiles[It(pt,bt,Lt)];return ut&&ut.source?(Oe>1&&console.log("found parent tile z%d-%d-%d",pt,bt,Lt),Oe>1&&console.time("drilling down"),this.splitTile(ut.source,pt,bt,Lt,Je,Ke,Ge),Oe>1&&console.timeEnd("drilling down"),this.tiles[Qe]?ft(this.tiles[Qe],ht):null):null};var qt=function(Je){function Ke(Ge,nt,ht,Oe){Je.call(this,Ge,nt,ht,Ft),Oe&&(this.loadGeoJSON=Oe)}return Je&&(Ke.__proto__=Je),Ke.prototype=Object.create(Je&&Je.prototype),Ke.prototype.constructor=Ke,Ke.prototype.loadData=function(Ge,nt){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=nt,this._pendingLoadDataParams=Ge,this._state&&this._state!=="Idle"?this._state="NeedsLoadData":(this._state="Coalescing",this._loadData())},Ke.prototype._loadData=function(){var Ge=this;if(this._pendingCallback&&this._pendingLoadDataParams){var nt=this._pendingCallback,ht=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var Oe=!!(ht&&ht.request&&ht.request.collectResourceTiming)&&new s.RequestPerformance(ht.request);this.loadGeoJSON(ht,function(Be,Qe){if(Be||!Qe)return nt(Be);if(typeof Qe!="object")return nt(new Error("Input data given to '"+ht.source+"' is not a valid GeoJSON object."));u(Qe,!0);try{Ge._geoJSONIndex=ht.cluster?new ae(function(bt){var Lt=bt.superclusterOptions,Ct=bt.clusterProperties;if(!Ct||!Lt)return Lt;for(var mt={},Ot={},_t={accumulated:null,zoom:0},Pt={properties:null},Bt=Object.keys(Ct),Wt=0,Gt=Bt;Wt=0?0:q.button},y.remove=function(q){q.parentNode&&q.parentNode.removeChild(q)};var p=function(q){function $(){q.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new s.RGBAImage({width:1,height:1}),this.dirty=!0}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$.prototype.isLoaded=function(){return this.loaded},$.prototype.setLoaded=function(W){if(this.loaded!==W&&(this.loaded=W,W)){for(var ie=0,_e=this.requestors;ie<_e.length;ie+=1){var ze=_e[ie],He=ze.ids,Xe=ze.callback;this._notify(He,Xe)}this.requestors=[]}},$.prototype.getImage=function(W){return this.images[W]},$.prototype.addImage=function(W,ie){this._validate(W,ie)&&(this.images[W]=ie)},$.prototype._validate=function(W,ie){var _e=!0;return this._validateStretch(ie.stretchX,ie.data&&ie.data.width)||(this.fire(new s.ErrorEvent(new Error('Image "'+W+'" has invalid "stretchX" value'))),_e=!1),this._validateStretch(ie.stretchY,ie.data&&ie.data.height)||(this.fire(new s.ErrorEvent(new Error('Image "'+W+'" has invalid "stretchY" value'))),_e=!1),this._validateContent(ie.content,ie)||(this.fire(new s.ErrorEvent(new Error('Image "'+W+'" has invalid "content" value'))),_e=!1),_e},$.prototype._validateStretch=function(W,ie){if(!W)return!0;for(var _e=0,ze=0,He=W;ze=0?1.2:1))}function x(q,$,W,ie,_e,ze,He){for(var Xe=0;Xe<$;Xe++){for(var at=0;at65535)wt(new Error("glyphs > 65535 not supported"));else if(ve.ranges[Fe])wt(null,{stack:At,id:re,glyph:Le});else{var Ve=ve.requests[Fe];Ve||(Ve=ve.requests[Fe]=[],m.loadGlyphRange(At,Fe,W.url,W.requestManager,function(We,$e){if($e){for(var tt in $e)W._doesCharSupportLocalGlyph(+tt)||(ve.glyphs[+tt]=$e[+tt]);ve.ranges[Fe]=!0}for(var lt=0,gt=Ve;lt1&&(at=q[++Xe]);var At=Math.abs(wt-at.left),re=Math.abs(wt-at.right),ve=Math.min(At,re),Le=void 0,Fe=_e/W*(ie+1);if(at.isDash){var Ve=ie-Math.abs(Fe);Le=Math.sqrt(ve*ve+Ve*Ve)}else Le=ie-Math.sqrt(ve*ve+Fe*Fe);this.data[He+wt]=Math.max(0,Math.min(255,Le+128))}},C.prototype.addRegularDash=function(q){for(var $=q.length-1;$>=0;--$){var W=q[$],ie=q[$+1];W.zeroLength?q.splice($,1):ie&&ie.isDash===W.isDash&&(ie.left=W.left,q.splice($,1))}var _e=q[0],ze=q[q.length-1];_e.isDash===ze.isDash&&(_e.left=ze.left-this.width,ze.right=_e.right+this.width);for(var He=this.width*this.nextRow,Xe=0,at=q[Xe],wt=0;wt1&&(at=q[++Xe]);var At=Math.abs(wt-at.left),re=Math.abs(wt-at.right),ve=Math.min(At,re),Le=at.isDash?ve:-ve;this.data[He+wt]=Math.max(0,Math.min(255,Le+128))}},C.prototype.addDash=function(q,$){var W=$?7:0,ie=2*W+1;if(this.nextRow+ie>this.height)return s.warnOnce("LineAtlas out of space"),null;for(var _e=0,ze=0;ze=W&&q.x<_e&&q.y>=ie&&q.y0&&(wt[new s.OverscaledTileID(W.overscaledZ,He,ie.z,ze,ie.y-1).key]={backfilled:!1},wt[new s.OverscaledTileID(W.overscaledZ,W.wrap,ie.z,ie.x,ie.y-1).key]={backfilled:!1},wt[new s.OverscaledTileID(W.overscaledZ,at,ie.z,Xe,ie.y-1).key]={backfilled:!1}),ie.y+1<_e&&(wt[new s.OverscaledTileID(W.overscaledZ,He,ie.z,ze,ie.y+1).key]={backfilled:!1},wt[new s.OverscaledTileID(W.overscaledZ,W.wrap,ie.z,ie.x,ie.y+1).key]={backfilled:!1},wt[new s.OverscaledTileID(W.overscaledZ,at,ie.z,Xe,ie.y+1).key]={backfilled:!1}),wt},$.prototype.unloadTile=function(W){W.demTexture&&this.map.painter.saveTileTexture(W.demTexture),W.fbo&&(W.fbo.destroy(),delete W.fbo),W.dem&&delete W.dem,delete W.neighboringTiles,W.state="unloaded",W.actor&&W.actor.send("removeDEMTile",{uid:W.uid,source:this.id})},$}(U),G=function(q){function $(W,ie,_e,ze){q.call(this),this.id=W,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._loaded=!1,this.actor=_e.getActor(),this.setEventedParent(ze),this._data=ie.data,this._options=s.extend({},ie),this._collectResourceTiming=ie.collectResourceTiming,this._resourceTiming=[],ie.maxzoom!==void 0&&(this.maxzoom=ie.maxzoom),ie.type&&(this.type=ie.type),ie.attribution&&(this.attribution=ie.attribution),this.promoteId=ie.promoteId;var He=s.EXTENT/this.tileSize;this.workerOptions=s.extend({source:this.id,cluster:ie.cluster||!1,geojsonVtOptions:{buffer:(ie.buffer!==void 0?ie.buffer:128)*He,tolerance:(ie.tolerance!==void 0?ie.tolerance:.375)*He,extent:s.EXTENT,maxZoom:this.maxzoom,lineMetrics:ie.lineMetrics||!1,generateId:ie.generateId||!1},superclusterOptions:{maxZoom:ie.clusterMaxZoom!==void 0?Math.min(ie.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:s.EXTENT,radius:(ie.clusterRadius||50)*He,log:!1,generateId:ie.generateId||!1},clusterProperties:ie.clusterProperties},ie.workerOptions)}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$.prototype.load=function(){var W=this;this.fire(new s.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(ie){if(ie)W.fire(new s.ErrorEvent(ie));else{var _e={dataType:"source",sourceDataType:"metadata"};W._collectResourceTiming&&W._resourceTiming&&W._resourceTiming.length>0&&(_e.resourceTiming=W._resourceTiming,W._resourceTiming=[]),W.fire(new s.Event("data",_e))}})},$.prototype.onAdd=function(W){this.map=W,this.load()},$.prototype.setData=function(W){var ie=this;return this._data=W,this.fire(new s.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(_e){if(_e)ie.fire(new s.ErrorEvent(_e));else{var ze={dataType:"source",sourceDataType:"content"};ie._collectResourceTiming&&ie._resourceTiming&&ie._resourceTiming.length>0&&(ze.resourceTiming=ie._resourceTiming,ie._resourceTiming=[]),ie.fire(new s.Event("data",ze))}}),this},$.prototype.getClusterExpansionZoom=function(W,ie){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:W,source:this.id},ie),this},$.prototype.getClusterChildren=function(W,ie){return this.actor.send("geojson.getClusterChildren",{clusterId:W,source:this.id},ie),this},$.prototype.getClusterLeaves=function(W,ie,_e,ze){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:W,limit:ie,offset:_e},ze),this},$.prototype._updateWorkerData=function(W){var ie=this;this._loaded=!1;var _e=s.extend({},this.workerOptions),ze=this._data;typeof ze=="string"?(_e.request=this.map._requestManager.transformRequest(s.browser.resolveURL(ze),s.ResourceType.Source),_e.request.collectResourceTiming=this._collectResourceTiming):_e.data=JSON.stringify(ze),this.actor.send(this.type+".loadData",_e,function(He,Xe){ie._removed||Xe&&Xe.abandoned||(ie._loaded=!0,Xe&&Xe.resourceTiming&&Xe.resourceTiming[ie.id]&&(ie._resourceTiming=Xe.resourceTiming[ie.id].slice(0)),ie.actor.send(ie.type+".coalesce",{source:_e.source},null),W(He))})},$.prototype.loaded=function(){return this._loaded},$.prototype.loadTile=function(W,ie){var _e=this,ze=W.actor?"reloadTile":"loadTile";W.actor=this.actor;var He={type:this.type,uid:W.uid,tileID:W.tileID,zoom:W.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:s.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};W.request=this.actor.send(ze,He,function(Xe,at){return delete W.request,W.unloadVectorData(),W.aborted?ie(null):Xe?ie(Xe):(W.loadVectorData(at,_e.map.painter,ze==="reloadTile"),ie(null))})},$.prototype.abortTile=function(W){W.request&&(W.request.cancel(),delete W.request),W.aborted=!0},$.prototype.unloadTile=function(W){W.unloadVectorData(),this.actor.send("removeTile",{uid:W.uid,type:this.type,source:this.id})},$.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},$.prototype.serialize=function(){return s.extend({},this._options,{type:this.type,data:this._data})},$.prototype.hasTransition=function(){return!1},$}(s.Evented),N=s.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),j=function(q){function $(W,ie,_e,ze){q.call(this),this.id=W,this.dispatcher=_e,this.coordinates=ie.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(ze),this.options=ie}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$.prototype.load=function(W,ie){var _e=this;this._loaded=!1,this.fire(new s.Event("dataloading",{dataType:"source"})),this.url=this.options.url,s.getImage(this.map._requestManager.transformRequest(this.url,s.ResourceType.Image),function(ze,He){_e._loaded=!0,ze?_e.fire(new s.ErrorEvent(ze)):He&&(_e.image=He,W&&(_e.coordinates=W),ie&&ie(),_e._finishLoading())})},$.prototype.loaded=function(){return this._loaded},$.prototype.updateImage=function(W){var ie=this;return this.image&&W.url?(this.options.url=W.url,this.load(W.coordinates,function(){ie.texture=null}),this):this},$.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"metadata"})))},$.prototype.onAdd=function(W){this.map=W,this.load()},$.prototype.setCoordinates=function(W){var ie=this;this.coordinates=W;var _e=W.map(s.MercatorCoordinate.fromLngLat);this.tileID=function(He){for(var Xe=1/0,at=1/0,wt=-1/0,At=-1/0,re=0,ve=He;reie.end(0)?this.fire(new s.ErrorEvent(new s.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+ie.start(0)+" and "+ie.end(0)+"-second mark."))):this.video.currentTime=W}},$.prototype.getVideo=function(){return this.video},$.prototype.onAdd=function(W){this.map||(this.map=W,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},$.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var W=this.map.painter.context,ie=W.gl;for(var _e in this.boundsBuffer||(this.boundsBuffer=W.createVertexBuffer(this._boundsArray,N.members)),this.boundsSegments||(this.boundsSegments=s.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(ie.LINEAR,ie.CLAMP_TO_EDGE),ie.texSubImage2D(ie.TEXTURE_2D,0,0,0,ie.RGBA,ie.UNSIGNED_BYTE,this.video)):(this.texture=new s.Texture(W,this.video,ie.RGBA),this.texture.bind(ie.LINEAR,ie.CLAMP_TO_EDGE)),this.tiles){var ze=this.tiles[_e];ze.state!=="loaded"&&(ze.state="loaded",ze.texture=this.texture)}}},$.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},$.prototype.hasTransition=function(){return this.video&&!this.video.paused},$}(j),H=function(q){function $(W,ie,_e,ze){q.call(this,W,ie,_e,ze),ie.coordinates?Array.isArray(ie.coordinates)&&ie.coordinates.length===4&&!ie.coordinates.some(function(He){return!Array.isArray(He)||He.length!==2||He.some(function(Xe){return typeof Xe!="number"})})||this.fire(new s.ErrorEvent(new s.ValidationError("sources."+W,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new s.ErrorEvent(new s.ValidationError("sources."+W,null,'missing required property "coordinates"'))),ie.animate&&typeof ie.animate!="boolean"&&this.fire(new s.ErrorEvent(new s.ValidationError("sources."+W,null,'optional "animate" property must be a boolean value'))),ie.canvas?typeof ie.canvas=="string"||ie.canvas instanceof s.window.HTMLCanvasElement||this.fire(new s.ErrorEvent(new s.ValidationError("sources."+W,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new s.ErrorEvent(new s.ValidationError("sources."+W,null,'missing required property "canvas"'))),this.options=ie,this.animate=ie.animate===void 0||ie.animate}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof s.window.HTMLCanvasElement?this.options.canvas:s.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new s.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},$.prototype.getCanvas=function(){return this.canvas},$.prototype.onAdd=function(W){this.map=W,this.load(),this.canvas&&this.animate&&this.play()},$.prototype.onRemove=function(){this.pause()},$.prototype.prepare=function(){var W=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,W=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,W=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var ie=this.map.painter.context,_e=ie.gl;for(var ze in this.boundsBuffer||(this.boundsBuffer=ie.createVertexBuffer(this._boundsArray,N.members)),this.boundsSegments||(this.boundsSegments=s.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(W||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new s.Texture(ie,this.canvas,_e.RGBA,{premultiply:!0}),this.tiles){var He=this.tiles[ze];He.state!=="loaded"&&(He.state="loaded",He.texture=this.texture)}}},$.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},$.prototype.hasTransition=function(){return this._playing},$.prototype._hasInvalidDimensions=function(){for(var W=0,ie=[this.canvas.width,this.canvas.height];Wthis.max){var He=this._getAndRemoveByKey(this.order[0]);He&&this.onRemove(He)}return this},K.prototype.has=function(q){return q.wrapped().key in this.data},K.prototype.getAndRemove=function(q){return this.has(q)?this._getAndRemoveByKey(q.wrapped().key):null},K.prototype._getAndRemoveByKey=function(q){var $=this.data[q].shift();return $.timeout&&clearTimeout($.timeout),this.data[q].length===0&&delete this.data[q],this.order.splice(this.order.indexOf(q),1),$.value},K.prototype.getByKey=function(q){var $=this.data[q];return $?$[0].value:null},K.prototype.get=function(q){return this.has(q)?this.data[q.wrapped().key][0].value:null},K.prototype.remove=function(q,$){if(!this.has(q))return this;var W=q.wrapped().key,ie=$===void 0?0:this.data[W].indexOf($),_e=this.data[W][ie];return this.data[W].splice(ie,1),_e.timeout&&clearTimeout(_e.timeout),this.data[W].length===0&&delete this.data[W],this.onRemove(_e.value),this.order.splice(this.order.indexOf(W),1),this},K.prototype.setMaxSize=function(q){for(this.max=q;this.order.length>this.max;){var $=this._getAndRemoveByKey(this.order[0]);$&&this.onRemove($)}return this},K.prototype.filter=function(q){var $=[];for(var W in this.data)for(var ie=0,_e=this.data[W];ie<_e.length;ie+=1){var ze=_e[ie];q(ze.value)||$.push(ze)}for(var He=0,Xe=$;He1||(Math.abs(At)>1&&(Math.abs(At+ve)===1?At+=ve:Math.abs(At-ve)===1&&(At-=ve)),wt.dem&&at.dem&&(at.dem.backfillBorder(wt.dem,At,re),at.neighboringTiles&&at.neighboringTiles[Le]&&(at.neighboringTiles[Le].backfilled=!0)))}},$.prototype.getTile=function(W){return this.getTileByID(W.key)},$.prototype.getTileByID=function(W){return this._tiles[W]},$.prototype._retainLoadedChildren=function(W,ie,_e,ze){for(var He in this._tiles){var Xe=this._tiles[He];if(!(ze[He]||!Xe.hasData()||Xe.tileID.overscaledZ<=ie||Xe.tileID.overscaledZ>_e)){for(var at=Xe.tileID;Xe&&Xe.tileID.overscaledZ>ie+1;){var wt=Xe.tileID.scaledTo(Xe.tileID.overscaledZ-1);(Xe=this._tiles[wt.key])&&Xe.hasData()&&(at=wt)}for(var At=at;At.overscaledZ>ie;)if(W[(At=At.scaledTo(At.overscaledZ-1)).key]){ze[at.key]=at;break}}}},$.prototype.findLoadedParent=function(W,ie){if(W.key in this._loadedParentTiles){var _e=this._loadedParentTiles[W.key];return _e&&_e.tileID.overscaledZ>=ie?_e:null}for(var ze=W.overscaledZ-1;ze>=ie;ze--){var He=W.scaledTo(ze),Xe=this._getLoadedTile(He);if(Xe)return Xe}},$.prototype._getLoadedTile=function(W){var ie=this._tiles[W.key];return ie&&ie.hasData()?ie:this._cache.getByKey(W.wrapped().key)},$.prototype.updateCacheSize=function(W){var ie=(Math.ceil(W.width/this._source.tileSize)+1)*(Math.ceil(W.height/this._source.tileSize)+1),_e=Math.floor(5*ie),ze=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,_e):_e;this._cache.setMaxSize(ze)},$.prototype.handleWrapJump=function(W){var ie=(W-(this._prevLng===void 0?W:this._prevLng))/360,_e=Math.round(ie);if(this._prevLng=W,_e){var ze={};for(var He in this._tiles){var Xe=this._tiles[He];Xe.tileID=Xe.tileID.unwrapTo(Xe.tileID.wrap+_e),ze[Xe.tileID.key]=Xe}for(var at in this._tiles=ze,this._timers)clearTimeout(this._timers[at]),delete this._timers[at];for(var wt in this._tiles){var At=this._tiles[wt];this._setTileReloadTimer(wt,At)}}},$.prototype.update=function(W){var ie=this;if(this.transform=W,this._sourceLoaded&&!this._paused){var _e;this.updateCacheSize(W),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?_e=W.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(Vt){return new s.OverscaledTileID(Vt.canonical.z,Vt.wrap,Vt.canonical.z,Vt.canonical.x,Vt.canonical.y)}):(_e=W.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(_e=_e.filter(function(Vt){return ie._source.hasTile(Vt)}))):_e=[];var ze=W.coveringZoomLevel(this._source),He=Math.max(ze-$.maxOverzooming,this._source.minzoom),Xe=Math.max(ze+$.maxUnderzooming,this._source.minzoom),at=this._updateRetainedTiles(_e,ze);if(Be(this._source.type)){for(var wt={},At={},re=0,ve=Object.keys(at);rethis._source.maxzoom){var $e=Ve.children(this._source.maxzoom)[0],tt=this.getTile($e);if(tt&&tt.hasData()){_e[$e.key]=$e;continue}}else{var lt=Ve.children(this._source.maxzoom);if(_e[lt[0].key]&&_e[lt[1].key]&&_e[lt[2].key]&&_e[lt[3].key])continue}for(var gt=We.wasRequested(),zt=Ve.overscaledZ-1;zt>=He;--zt){var Ut=Ve.scaledTo(zt);if(ze[Ut.key]||(ze[Ut.key]=!0,!(We=this.getTile(Ut))&>&&(We=this._addTile(Ut)),We&&(_e[Ut.key]=Ut,gt=We.wasRequested(),We.hasData())))break}}}return _e},$.prototype._updateLoadedParentTileCache=function(){for(var W in this._loadedParentTiles={},this._tiles){for(var ie=[],_e=void 0,ze=this._tiles[W].tileID;ze.overscaledZ>0;){if(ze.key in this._loadedParentTiles){_e=this._loadedParentTiles[ze.key];break}ie.push(ze.key);var He=ze.scaledTo(ze.overscaledZ-1);if(_e=this._getLoadedTile(He))break;ze=He}for(var Xe=0,at=ie;Xe0||(ie.hasData()&&ie.state!=="reloading"?this._cache.add(ie.tileID,ie,ie.getExpiryTimeout()):(ie.aborted=!0,this._abortTile(ie),this._unloadTile(ie))))},$.prototype.clearTiles=function(){for(var W in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(W);this._cache.reset()},$.prototype.tilesIn=function(W,ie,_e){var ze=this,He=[],Xe=this.transform;if(!Xe)return He;for(var at=_e?Xe.getCameraQueryGeometry(W):W,wt=W.map(function(zt){return Xe.pointCoordinate(zt)}),At=at.map(function(zt){return Xe.pointCoordinate(zt)}),re=this.getIds(),ve=1/0,Le=1/0,Fe=-1/0,Ve=-1/0,We=0,$e=At;We<$e.length;We+=1){var tt=$e[We];ve=Math.min(ve,tt.x),Le=Math.min(Le,tt.y),Fe=Math.max(Fe,tt.x),Ve=Math.max(Ve,tt.y)}for(var lt=function(zt){var Ut=ze._tiles[re[zt]];if(!Ut.holdingForFade()){var Vt=Ut.tileID,Qt=Math.pow(2,Xe.zoom-Ut.tileID.overscaledZ),gn=ie*Ut.queryPadding*s.EXTENT/Ut.tileSize/Qt,en=[Vt.getTilePoint(new s.MercatorCoordinate(ve,Le)),Vt.getTilePoint(new s.MercatorCoordinate(Fe,Ve))];if(en[0].x-gn=0&&en[1].y+gn>=0){var sn=wt.map(function(Mn){return Vt.getTilePoint(Mn)}),rn=At.map(function(Mn){return Vt.getTilePoint(Mn)});He.push({tile:Ut,tileID:Vt,queryGeometry:sn,cameraQueryGeometry:rn,scale:Qt})}}},gt=0;gt=s.browser.now())return!0}return!1},$.prototype.setFeatureState=function(W,ie,_e){W=W||"_geojsonTileLayer",this._state.updateState(W,ie,_e)},$.prototype.removeFeatureState=function(W,ie,_e){W=W||"_geojsonTileLayer",this._state.removeFeatureState(W,ie,_e)},$.prototype.getFeatureState=function(W,ie){return W=W||"_geojsonTileLayer",this._state.getState(W,ie)},$.prototype.setDependencies=function(W,ie,_e){var ze=this._tiles[W];ze&&ze.setDependencies(ie,_e)},$.prototype.reloadTilesForDependencies=function(W,ie){for(var _e in this._tiles)this._tiles[_e].hasDependency(W,ie)&&this._reloadTile(_e,"reloading");this._cache.filter(function(ze){return!ze.hasDependency(W,ie)})},$}(s.Evented);function Oe(q,$){var W=Math.abs(2*q.wrap)-+(q.wrap<0),ie=Math.abs(2*$.wrap)-+($.wrap<0);return q.overscaledZ-$.overscaledZ||ie-W||$.canonical.y-q.canonical.y||$.canonical.x-q.canonical.x}function Be(q){return q==="raster"||q==="image"||q==="video"}function Qe(){return new s.window.Worker(kt.workerUrl)}ht.maxOverzooming=10,ht.maxUnderzooming=3;var ut="mapboxgl_preloaded_worker_pool",pt=function(){this.active={}};pt.prototype.acquire=function(q){if(!this.workers)for(this.workers=[];this.workers.length0?(ie-ze)/He:0;return this.points[_e].mult(1-Xe).add(this.points[$].mult(Xe))};var kn=function(q,$,W){var ie=this.boxCells=[],_e=this.circleCells=[];this.xCellCount=Math.ceil(q/W),this.yCellCount=Math.ceil($/W);for(var ze=0;ze=-$[0]&&W<=$[0]&&ie>=-$[1]&&ie<=$[1]}function hn(q,$,W,ie,_e,ze,He,Xe){var at=ie?q.textSizeData:q.iconSizeData,wt=s.evaluateSizeForZoom(at,W.transform.zoom),At=[256/W.width*2+1,256/W.height*2+1],re=ie?q.text.dynamicLayoutVertexArray:q.icon.dynamicLayoutVertexArray;re.clear();for(var ve=q.lineVertexArray,Le=ie?q.text.placedSymbolArray:q.icon.placedSymbolArray,Fe=W.transform.width/W.transform.height,Ve=!1,We=0;WeMath.abs(W.x-$.x)*ie?{useVertical:!0}:(q===s.WritingMode.vertical?$.yW.x)?{needsFlipping:!0}:null}function Nn(q,$,W,ie,_e,ze,He,Xe,at,wt,At,re,ve,Le){var Fe,Ve=$/24,We=q.lineOffsetX*Ve,$e=q.lineOffsetY*Ve;if(q.numGlyphs>1){var tt=q.glyphStartIndex+q.numGlyphs,lt=q.lineStartIndex,gt=q.lineStartIndex+q.lineLength,zt=In(Ve,Xe,We,$e,W,At,re,q,at,ze,ve);if(!zt)return{notEnoughRoom:!0};var Ut=on(zt.first.point,He).point,Vt=on(zt.last.point,He).point;if(ie&&!W){var Qt=Cn(q.writingMode,Ut,Vt,Le);if(Qt)return Qt}Fe=[zt.first];for(var gn=q.glyphStartIndex+1;gn0?Mn.point:Hn(re,rn,en,1,_e),an=Cn(q.writingMode,en,xn,Le);if(an)return an}var zn=qn(Ve*Xe.getoffsetX(q.glyphStartIndex),We,$e,W,At,re,q.segment,q.lineStartIndex,q.lineStartIndex+q.lineLength,at,ze,ve);if(!zn)return{notEnoughRoom:!0};Fe=[zn]}for(var Vn=0,nr=Fe;Vn0?1:-1,Fe=0;ie&&(Le*=-1,Fe=Math.PI),Le<0&&(Fe+=Math.PI);for(var Ve=Le>0?Xe+He:Xe+He+1,We=_e,$e=_e,tt=0,lt=0,gt=Math.abs(ve),zt=[];tt+lt<=gt;){if((Ve+=Le)=at)return null;if($e=We,zt.push(We),(We=re[Ve])===void 0){var Ut=new s.Point(wt.getx(Ve),wt.gety(Ve)),Vt=on(Ut,At);if(Vt.signedDistanceFromCamera>0)We=re[Ve]=Vt.point;else{var Qt=Ve-Le;We=Hn(tt===0?ze:new s.Point(wt.getx(Qt),wt.gety(Qt)),Ut,$e,gt-tt+1,At)}}tt+=lt,lt=$e.dist(We)}var gn=(gt-tt)/lt,en=We.sub($e),sn=en.mult(gn)._add($e);sn._add(en._unit()._perp()._mult(W*Le));var rn=Fe+Math.atan2(We.y-$e.y,We.x-$e.x);return zt.push(sn),{point:sn,angle:rn,path:zt}}kn.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},kn.prototype.insert=function(q,$,W,ie,_e){this._forEachCell($,W,ie,_e,this._insertBoxCell,this.boxUid++),this.boxKeys.push(q),this.bboxes.push($),this.bboxes.push(W),this.bboxes.push(ie),this.bboxes.push(_e)},kn.prototype.insertCircle=function(q,$,W,ie){this._forEachCell($-ie,W-ie,$+ie,W+ie,this._insertCircleCell,this.circleUid++),this.circleKeys.push(q),this.circles.push($),this.circles.push(W),this.circles.push(ie)},kn.prototype._insertBoxCell=function(q,$,W,ie,_e,ze){this.boxCells[_e].push(ze)},kn.prototype._insertCircleCell=function(q,$,W,ie,_e,ze){this.circleCells[_e].push(ze)},kn.prototype._query=function(q,$,W,ie,_e,ze){if(W<0||q>this.width||ie<0||$>this.height)return!_e&&[];var He=[];if(q<=0&&$<=0&&this.width<=W&&this.height<=ie){if(_e)return!0;for(var Xe=0;Xe0:He},kn.prototype._queryCircle=function(q,$,W,ie,_e){var ze=q-W,He=q+W,Xe=$-W,at=$+W;if(He<0||ze>this.width||at<0||Xe>this.height)return!ie&&[];var wt=[],At={hitTest:ie,circle:{x:q,y:$,radius:W},seenUids:{box:{},circle:{}}};return this._forEachCell(ze,Xe,He,at,this._queryCellCircle,wt,At,_e),ie?wt.length>0:wt},kn.prototype.query=function(q,$,W,ie,_e){return this._query(q,$,W,ie,!1,_e)},kn.prototype.hitTest=function(q,$,W,ie,_e){return this._query(q,$,W,ie,!0,_e)},kn.prototype.hitTestCircle=function(q,$,W,ie){return this._queryCircle(q,$,W,!0,ie)},kn.prototype._queryCell=function(q,$,W,ie,_e,ze,He,Xe){var at=He.seenUids,wt=this.boxCells[_e];if(wt!==null)for(var At=this.bboxes,re=0,ve=wt;re=At[Fe+0]&&ie>=At[Fe+1]&&(!Xe||Xe(this.boxKeys[Le]))){if(He.hitTest)return ze.push(!0),!0;ze.push({key:this.boxKeys[Le],x1:At[Fe],y1:At[Fe+1],x2:At[Fe+2],y2:At[Fe+3]})}}}var Ve=this.circleCells[_e];if(Ve!==null)for(var We=this.circles,$e=0,tt=Ve;$eHe*He+Xe*Xe},kn.prototype._circleAndRectCollide=function(q,$,W,ie,_e,ze,He){var Xe=(ze-ie)/2,at=Math.abs(q-(ie+Xe));if(at>Xe+W)return!1;var wt=(He-_e)/2,At=Math.abs($-(_e+wt));if(At>wt+W)return!1;if(at<=Xe||At<=wt)return!0;var re=at-Xe,ve=At-wt;return re*re+ve*ve<=W*W};var or=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function tr(q,$){for(var W=0;W=1;xn--)Mn.push(sn.path[xn]);for(var an=1;an0){for(var rr=Mn[0].clone(),Tr=Mn[0].clone(),Ar=1;Ar=Qt.x&&Tr.x<=gn.x&&rr.y>=Qt.y&&Tr.y<=gn.y?[Mn]:Tr.xgn.x||Tr.ygn.y?[]:s.clipLine([Mn],Qt.x,Qt.y,gn.x,gn.y)}for(var mr=0,wr=nr;mr=this.screenRightBoundary||iethis.screenBottomBoundary},ir.prototype.isInsideGrid=function(q,$,W,ie){return W>=0&&q=0&&$0?(this.prevPlacement&&this.prevPlacement.variableOffsets[re.crossTileID]&&this.prevPlacement.placements[re.crossTileID]&&this.prevPlacement.placements[re.crossTileID].text&&(Ve=this.prevPlacement.variableOffsets[re.crossTileID].anchor),this.variableOffsets[re.crossTileID]={textOffset:We,width:W,height:ie,anchor:q,textBoxScale:_e,prevAnchor:Ve},this.markUsedJustification(ve,q,re,Le),ve.allowVerticalPlacement&&(this.markUsedOrientation(ve,Le,re),this.placedOrientations[re.crossTileID]=Le),{shift:$e,placedGlyphBoxes:tt}):void 0},Qn.prototype.placeLayerBucketPart=function(q,$,W){var ie=this,_e=q.parameters,ze=_e.bucket,He=_e.layout,Xe=_e.posMatrix,at=_e.textLabelPlaneMatrix,wt=_e.labelToScreenMatrix,At=_e.textPixelRatio,re=_e.holdingForFade,ve=_e.collisionBoxArray,Le=_e.partiallyEvaluatedTextSize,Fe=_e.collisionGroup,Ve=He.get("text-optional"),We=He.get("icon-optional"),$e=He.get("text-allow-overlap"),tt=He.get("icon-allow-overlap"),lt=He.get("text-rotation-alignment")==="map",gt=He.get("text-pitch-alignment")==="map",zt=He.get("icon-text-fit")!=="none",Ut=He.get("symbol-z-order")==="viewport-y",Vt=$e&&(tt||!ze.hasIconData()||We),Qt=tt&&($e||!ze.hasTextData()||Ve);!ze.collisionArrays&&ve&&ze.deserializeCollisionBoxes(ve);var gn=function(an,zn){if(!$[an.crossTileID])if(re)ie.placements[an.crossTileID]=new mn(!1,!1,!1);else{var Vn,nr=!1,rr=!1,Tr=!0,Ar=null,mr={box:null,offscreen:null},wr={box:null,offscreen:null},Rr=null,Jr=null,Kr=0,xr=0,zr=0;zn.textFeatureIndex?Kr=zn.textFeatureIndex:an.useRuntimeCollisionCircles&&(Kr=an.featureIndex),zn.verticalTextFeatureIndex&&(xr=zn.verticalTextFeatureIndex);var Wr=zn.textBox;if(Wr){var Gr=function(ai){var na=s.WritingMode.horizontal;if(ze.allowVerticalPlacement&&!ai&&ie.prevPlacement){var Ba=ie.prevPlacement.placedOrientations[an.crossTileID];Ba&&(ie.placedOrientations[an.crossTileID]=Ba,na=Ba,ie.markUsedOrientation(ze,na,an))}return na},ii=function(ai,na){if(ze.allowVerticalPlacement&&an.numVerticalGlyphVertices>0&&zn.verticalTextBox)for(var Ba=0,Kl=ze.writingModes;Ba0&&(ti=ti.filter(function(ai){return ai!==ui.anchor})).unshift(ui.anchor)}var ki=function(ai,na,Ba){for(var Kl=ai.x2-ai.x1,p1=ai.y2-ai.y1,vh=an.textBoxScale,d1=zt&&!tt?na:null,Wu={box:[],offscreen:!1},Xp=$e?2*ti.length:ti.length,Lc=0;Lc=ti.length,ku=ie.attemptAnchorPlacement(Zu,ai,Kl,p1,vh,lt,gt,At,Xe,Fe,g1,an,ze,Ba,d1);if(ku&&(Wu=ku.placedGlyphBoxes)&&Wu.box&&Wu.box.length){nr=!0,Ar=ku.shift;break}}return Wu};ii(function(){return ki(Wr,zn.iconBox,s.WritingMode.horizontal)},function(){var ai=zn.verticalTextBox,na=mr&&mr.box&&mr.box.length;return ze.allowVerticalPlacement&&!na&&an.numVerticalGlyphVertices>0&&ai?ki(ai,zn.verticalIconBox,s.WritingMode.vertical):{box:null,offscreen:null}}),mr&&(nr=mr.box,Tr=mr.offscreen);var Ii=Gr(mr&&mr.box);if(!nr&&ie.prevPlacement){var Ei=ie.prevPlacement.variableOffsets[an.crossTileID];Ei&&(ie.variableOffsets[an.crossTileID]=Ei,ie.markUsedJustification(ze,Ei.anchor,an,Ii))}}else{var wi=function(ai,na){var Ba=ie.collisionIndex.placeCollisionBox(ai,$e,At,Xe,Fe.predicate);return Ba&&Ba.box&&Ba.box.length&&(ie.markUsedOrientation(ze,na,an),ie.placedOrientations[an.crossTileID]=na),Ba};ii(function(){return wi(Wr,s.WritingMode.horizontal)},function(){var ai=zn.verticalTextBox;return ze.allowVerticalPlacement&&an.numVerticalGlyphVertices>0&&ai?wi(ai,s.WritingMode.vertical):{box:null,offscreen:null}}),Gr(mr&&mr.box&&mr.box.length)}}if(nr=(Vn=mr)&&Vn.box&&Vn.box.length>0,Tr=Vn&&Vn.offscreen,an.useRuntimeCollisionCircles){var Ai=ze.text.placedSymbolArray.get(an.centerJustifiedTextSymbolIndex),Ci=s.evaluateSizeForFeature(ze.textSizeData,Le,Ai),qi=He.get("text-padding"),_s=an.collisionCircleDiameter;Rr=ie.collisionIndex.placeCollisionCircles($e,Ai,ze.lineVertexArray,ze.glyphOffsetArray,Ci,Xe,at,wt,W,gt,Fe.predicate,_s,qi),nr=$e||Rr.circles.length>0&&!Rr.collisionDetected,Tr=Tr&&Rr.offscreen}if(zn.iconFeatureIndex&&(zr=zn.iconFeatureIndex),zn.iconBox){var ta=function(ai){var na=zt&&Ar?Zn(ai,Ar.x,Ar.y,lt,gt,ie.transform.angle):ai;return ie.collisionIndex.placeCollisionBox(na,tt,At,Xe,Fe.predicate)};rr=wr&&wr.box&&wr.box.length&&zn.verticalIconBox?(Jr=ta(zn.verticalIconBox)).box.length>0:(Jr=ta(zn.iconBox)).box.length>0,Tr=Tr&&Jr.offscreen}var Yr=Ve||an.numHorizontalGlyphVertices===0&&an.numVerticalGlyphVertices===0,pa=We||an.numIconVertices===0;if(Yr||pa?pa?Yr||(rr=rr&&nr):nr=rr&&nr:rr=nr=rr&&nr,nr&&Vn&&Vn.box&&(wr&&wr.box&&xr?ie.collisionIndex.insertCollisionBox(Vn.box,He.get("text-ignore-placement"),ze.bucketInstanceId,xr,Fe.ID):ie.collisionIndex.insertCollisionBox(Vn.box,He.get("text-ignore-placement"),ze.bucketInstanceId,Kr,Fe.ID)),rr&&Jr&&ie.collisionIndex.insertCollisionBox(Jr.box,He.get("icon-ignore-placement"),ze.bucketInstanceId,zr,Fe.ID),Rr&&(nr&&ie.collisionIndex.insertCollisionCircles(Rr.circles,He.get("text-ignore-placement"),ze.bucketInstanceId,Kr,Fe.ID),W)){var wa=ze.bucketInstanceId,Ui=ie.collisionCircleArrays[wa];Ui===void 0&&(Ui=ie.collisionCircleArrays[wa]=new Ln);for(var ko=0;ko=0;--sn){var rn=en[sn];gn(ze.symbolInstances.get(rn),ze.collisionArrays[rn])}else for(var Mn=q.symbolInstanceStart;Mn=0&&(q.text.placedSymbolArray.get(at).crossTileID=_e>=0&&at!==_e?0:W.crossTileID)}},Qn.prototype.markUsedOrientation=function(q,$,W){for(var ie=$===s.WritingMode.horizontal||$===s.WritingMode.horizontalOnly?$:0,_e=$===s.WritingMode.vertical?$:0,ze=0,He=[W.leftJustifiedTextSymbolIndex,W.centerJustifiedTextSymbolIndex,W.rightJustifiedTextSymbolIndex];ze0||gt>0,gn=tt.numIconVertices>0,en=ie.placedOrientations[tt.crossTileID],sn=en===s.WritingMode.vertical,rn=en===s.WritingMode.horizontal||en===s.WritingMode.horizontalOnly;if(Qt){var Mn=Sn(Vt.text),xn=sn?pn:Mn;Le(q.text,lt,xn);var an=rn?pn:Mn;Le(q.text,gt,an);var zn=Vt.text.isHidden();[tt.rightJustifiedTextSymbolIndex,tt.centerJustifiedTextSymbolIndex,tt.leftJustifiedTextSymbolIndex].forEach(function(zr){zr>=0&&(q.text.placedSymbolArray.get(zr).hidden=zn||sn?1:0)}),tt.verticalPlacedTextSymbolIndex>=0&&(q.text.placedSymbolArray.get(tt.verticalPlacedTextSymbolIndex).hidden=zn||rn?1:0);var Vn=ie.variableOffsets[tt.crossTileID];Vn&&ie.markUsedJustification(q,Vn.anchor,tt,en);var nr=ie.placedOrientations[tt.crossTileID];nr&&(ie.markUsedJustification(q,"left",tt,nr),ie.markUsedOrientation(q,nr,tt))}if(gn){var rr=Sn(Vt.icon),Tr=!(re&&tt.verticalPlacedIconSymbolIndex&&sn);if(tt.placedIconSymbolIndex>=0){var Ar=Tr?rr:pn;Le(q.icon,tt.numIconVertices,Ar),q.icon.placedSymbolArray.get(tt.placedIconSymbolIndex).hidden=Vt.icon.isHidden()}if(tt.verticalPlacedIconSymbolIndex>=0){var mr=Tr?pn:rr;Le(q.icon,tt.numVerticalIconVertices,mr),q.icon.placedSymbolArray.get(tt.verticalPlacedIconSymbolIndex).hidden=Vt.icon.isHidden()}}if(q.hasIconCollisionBoxData()||q.hasTextCollisionBoxData()){var wr=q.collisionArrays[$e];if(wr){var Rr=new s.Point(0,0);if(wr.textBox||wr.verticalTextBox){var Jr=!0;if(at){var Kr=ie.variableOffsets[zt];Kr?(Rr=$n(Kr.anchor,Kr.width,Kr.height,Kr.textOffset,Kr.textBoxScale),wt&&Rr._rotate(At?ie.transform.angle:-ie.transform.angle)):Jr=!1}wr.textBox&&hr(q.textCollisionBox.collisionVertexArray,Vt.text.placed,!Jr||sn,Rr.x,Rr.y),wr.verticalTextBox&&hr(q.textCollisionBox.collisionVertexArray,Vt.text.placed,!Jr||rn,Rr.x,Rr.y)}var xr=!!(!rn&&wr.verticalIconBox);wr.iconBox&&hr(q.iconCollisionBox.collisionVertexArray,Vt.icon.placed,xr,re?Rr.x:0,re?Rr.y:0),wr.verticalIconBox&&hr(q.iconCollisionBox.collisionVertexArray,Vt.icon.placed,!xr,re?Rr.x:0,re?Rr.y:0)}}},Ve=0;Veq},Qn.prototype.setStale=function(){this.stale=!0};var tn=Math.pow(2,25),Pn=Math.pow(2,24),jt=Math.pow(2,17),Jt=Math.pow(2,16),un=Math.pow(2,9),Rn=Math.pow(2,8),On=Math.pow(2,1);function Sn(q){if(q.opacity===0&&!q.placed)return 0;if(q.opacity===1&&q.placed)return 4294967295;var $=q.placed?1:0,W=Math.floor(127*q.opacity);return W*tn+$*Pn+W*jt+$*Jt+W*un+$*Rn+W*On+$}var pn=0,bn=function(q){this._sortAcrossTiles=q.layout.get("symbol-z-order")!=="viewport-y"&&q.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};bn.prototype.continuePlacement=function(q,$,W,ie,_e){for(var ze=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var He=$[q[this._currentPlacementIndex]],Xe=this.placement.collisionIndex.transform.zoom;if(He.type==="symbol"&&(!He.minzoom||He.minzoom<=Xe)&&(!He.maxzoom||He.maxzoom>Xe)){if(this._inProgressLayer||(this._inProgressLayer=new bn(He)),this._inProgressLayer.continuePlacement(W[He.source],this.placement,this._showCollisionBoxes,He,ze))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},dn.prototype.commit=function(q){return this.placement.commit(q),this.placement};var vn=512/s.EXTENT/2,An=function(q,$,W){this.tileID=q,this.indexedSymbolInstances={},this.bucketInstanceId=W;for(var ie=0;ie<$.length;ie++){var _e=$.get(ie),ze=_e.key;this.indexedSymbolInstances[ze]||(this.indexedSymbolInstances[ze]=[]),this.indexedSymbolInstances[ze].push({crossTileID:_e.crossTileID,coord:this.getScaledCoordinates(_e,q)})}};An.prototype.getScaledCoordinates=function(q,$){var W=$.canonical.z-this.tileID.canonical.z,ie=vn/Math.pow(2,W);return{x:Math.floor(($.canonical.x*s.EXTENT+q.anchorX)*ie),y:Math.floor(($.canonical.y*s.EXTENT+q.anchorY)*ie)}},An.prototype.findMatches=function(q,$,W){for(var ie=this.tileID.canonical.z<$.canonical.z?1:Math.pow(2,this.tileID.canonical.z-$.canonical.z),_e=0;_eq.overscaledZ)for(var Xe in He){var at=He[Xe];at.tileID.isChildOf(q)&&at.findMatches($.symbolInstances,q,_e)}else{var wt=He[q.scaledTo(Number(ze)).key];wt&&wt.findMatches($.symbolInstances,q,_e)}}for(var At=0;At<$.symbolInstances.length;At++){var re=$.symbolInstances.get(At);re.crossTileID||(re.crossTileID=W.generate(),_e[re.crossTileID]=!0)}return this.indexes[q.overscaledZ]===void 0&&(this.indexes[q.overscaledZ]={}),this.indexes[q.overscaledZ][q.key]=new An(q,$.symbolInstances,$.bucketInstanceId),!0},Xn.prototype.removeBucketCrossTileIDs=function(q,$){for(var W in $.indexedSymbolInstances)for(var ie=0,_e=$.indexedSymbolInstances[W];ie<_e.length;ie+=1){var ze=_e[ie];delete this.usedCrossTileIDs[q][ze.crossTileID]}},Xn.prototype.removeStaleBuckets=function(q){var $=!1;for(var W in this.indexes){var ie=this.indexes[W];for(var _e in ie)q[ie[_e].bucketInstanceId]||(this.removeBucketCrossTileIDs(W,ie[_e]),delete ie[_e],$=!0)}return $};var er=function(){this.layerIndexes={},this.crossTileIDs=new Bn,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}};er.prototype.addLayer=function(q,$,W){var ie=this.layerIndexes[q.id];ie===void 0&&(ie=this.layerIndexes[q.id]=new Xn);var _e=!1,ze={};ie.handleWrapJump(W);for(var He=0,Xe=$;He1?"@2x":"",re=s.getJSON(ze.transformRequest(ze.normalizeSpriteURL(_e,At,".json"),s.ResourceType.SpriteJSON),function(Fe,Ve){re=null,wt||(wt=Fe,Xe=Ve,Le())}),ve=s.getImage(ze.transformRequest(ze.normalizeSpriteURL(_e,At,".png"),s.ResourceType.SpriteImage),function(Fe,Ve){ve=null,wt||(wt=Fe,at=Ve,Le())});function Le(){if(wt)He(wt);else if(Xe&&at){var Fe=s.browser.getImageData(at),Ve={};for(var We in Xe){var $e=Xe[We],tt=$e.width,lt=$e.height,gt=$e.x,zt=$e.y,Ut=$e.sdf,Vt=$e.pixelRatio,Qt=$e.stretchX,gn=$e.stretchY,en=$e.content,sn=new s.RGBAImage({width:tt,height:lt});s.RGBAImage.copy(Fe,sn,{x:gt,y:zt},{x:0,y:0},{width:tt,height:lt}),Ve[We]={data:sn,pixelRatio:Vt,sdf:Ut,stretchX:Qt,stretchY:gn,content:en}}He(null,Ve)}}return{cancel:function(){re&&(re.cancel(),re=null),ve&&(ve.cancel(),ve=null)}}}(W,this.map._requestManager,function(_e,ze){if(ie._spriteRequest=null,_e)ie.fire(new s.ErrorEvent(_e));else if(ze)for(var He in ze)ie.imageManager.addImage(He,ze[He]);ie.imageManager.setLoaded(!0),ie._availableImages=ie.imageManager.listImages(),ie.dispatcher.broadcast("setImages",ie._availableImages),ie.fire(new s.Event("data",{dataType:"style"}))})},$.prototype._validateLayer=function(W){var ie=this.sourceCaches[W.source];if(ie){var _e=W.sourceLayer;if(_e){var ze=ie.getSource();(ze.type==="geojson"||ze.vectorLayerIds&&ze.vectorLayerIds.indexOf(_e)===-1)&&this.fire(new s.ErrorEvent(new Error('Source layer "'+_e+'" does not exist on source "'+ze.id+'" as specified by style layer "'+W.id+'"')))}}},$.prototype.loaded=function(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(var W in this.sourceCaches)if(!this.sourceCaches[W].loaded())return!1;return!!this.imageManager.isLoaded()},$.prototype._serializeLayers=function(W){for(var ie=[],_e=0,ze=W;_e0)throw new Error("Unimplemented: "+ze.map(function(He){return He.command}).join(", ")+".");return _e.forEach(function(He){He.command!=="setTransition"&&ie[He.command].apply(ie,He.args)}),this.stylesheet=W,!0},$.prototype.addImage=function(W,ie){if(this.getImage(W))return this.fire(new s.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(W,ie),this._availableImages=this.imageManager.listImages(),this._changedImages[W]=!0,this._changed=!0,this.fire(new s.Event("data",{dataType:"style"}))},$.prototype.updateImage=function(W,ie){this.imageManager.updateImage(W,ie)},$.prototype.getImage=function(W){return this.imageManager.getImage(W)},$.prototype.removeImage=function(W){if(!this.getImage(W))return this.fire(new s.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(W),this._availableImages=this.imageManager.listImages(),this._changedImages[W]=!0,this._changed=!0,this.fire(new s.Event("data",{dataType:"style"}))},$.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},$.prototype.addSource=function(W,ie,_e){var ze=this;if(_e===void 0&&(_e={}),this._checkLoaded(),this.sourceCaches[W]!==void 0)throw new Error("There is already a source with this ID");if(!ie.type)throw new Error("The type property must be defined, but the only the following properties were given: "+Object.keys(ie).join(", ")+".");if(!(["vector","raster","geojson","video","image"].indexOf(ie.type)>=0&&this._validate(s.validateStyle.source,"sources."+W,ie,null,_e))){this.map&&this.map._collectResourceTiming&&(ie.collectResourceTiming=!0);var He=this.sourceCaches[W]=new ht(W,ie,this.dispatcher);He.style=this,He.setEventedParent(this,function(){return{isSourceLoaded:ze.loaded(),source:He.serialize(),sourceId:W}}),He.onAdd(this.map),this._changed=!0}},$.prototype.removeSource=function(W){if(this._checkLoaded(),this.sourceCaches[W]===void 0)throw new Error("There is no source with this ID");for(var ie in this._layers)if(this._layers[ie].source===W)return this.fire(new s.ErrorEvent(new Error('Source "'+W+'" cannot be removed while layer "'+ie+'" is using it.')));var _e=this.sourceCaches[W];delete this.sourceCaches[W],delete this._updatedSources[W],_e.fire(new s.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:W})),_e.setEventedParent(null),_e.clearTiles(),_e.onRemove&&_e.onRemove(this.map),this._changed=!0},$.prototype.setGeoJSONSourceData=function(W,ie){this._checkLoaded(),this.sourceCaches[W].getSource().setData(ie),this._changed=!0},$.prototype.getSource=function(W){return this.sourceCaches[W]&&this.sourceCaches[W].getSource()},$.prototype.addLayer=function(W,ie,_e){_e===void 0&&(_e={}),this._checkLoaded();var ze=W.id;if(this.getLayer(ze))this.fire(new s.ErrorEvent(new Error('Layer with id "'+ze+'" already exists on this map')));else{var He;if(W.type==="custom"){if(Jn(this,s.validateCustomStyleLayer(W)))return;He=s.createStyleLayer(W)}else{if(typeof W.source=="object"&&(this.addSource(ze,W.source),W=s.clone$1(W),W=s.extend(W,{source:ze})),this._validate(s.validateStyle.layer,"layers."+ze,W,{arrayIndex:-1},_e))return;He=s.createStyleLayer(W),this._validateLayer(He),He.setEventedParent(this,{layer:{id:ze}}),this._serializedLayers[He.id]=He.serialize()}var Xe=ie?this._order.indexOf(ie):this._order.length;if(ie&&Xe===-1)this.fire(new s.ErrorEvent(new Error('Layer with id "'+ie+'" does not exist on this map.')));else{if(this._order.splice(Xe,0,ze),this._layerOrderChanged=!0,this._layers[ze]=He,this._removedLayers[ze]&&He.source&&He.type!=="custom"){var at=this._removedLayers[ze];delete this._removedLayers[ze],at.type!==He.type?this._updatedSources[He.source]="clear":(this._updatedSources[He.source]="reload",this.sourceCaches[He.source].pause())}this._updateLayer(He),He.onAdd&&He.onAdd(this.map)}}},$.prototype.moveLayer=function(W,ie){if(this._checkLoaded(),this._changed=!0,this._layers[W]){if(W!==ie){var _e=this._order.indexOf(W);this._order.splice(_e,1);var ze=ie?this._order.indexOf(ie):this._order.length;ie&&ze===-1?this.fire(new s.ErrorEvent(new Error('Layer with id "'+ie+'" does not exist on this map.'))):(this._order.splice(ze,0,W),this._layerOrderChanged=!0)}}else this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style and cannot be moved.")))},$.prototype.removeLayer=function(W){this._checkLoaded();var ie=this._layers[W];if(ie){ie.setEventedParent(null);var _e=this._order.indexOf(W);this._order.splice(_e,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[W]=ie,delete this._layers[W],delete this._serializedLayers[W],delete this._updatedLayers[W],delete this._updatedPaintProps[W],ie.onRemove&&ie.onRemove(this.map)}else this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style and cannot be removed.")))},$.prototype.getLayer=function(W){return this._layers[W]},$.prototype.hasLayer=function(W){return W in this._layers},$.prototype.setLayerZoomRange=function(W,ie,_e){this._checkLoaded();var ze=this.getLayer(W);ze?ze.minzoom===ie&&ze.maxzoom===_e||(ie!=null&&(ze.minzoom=ie),_e!=null&&(ze.maxzoom=_e),this._updateLayer(ze)):this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style and cannot have zoom extent.")))},$.prototype.setFilter=function(W,ie,_e){_e===void 0&&(_e={}),this._checkLoaded();var ze=this.getLayer(W);if(ze){if(!s.deepEqual(ze.filter,ie))return ie==null?(ze.filter=void 0,void this._updateLayer(ze)):void(this._validate(s.validateStyle.filter,"layers."+ze.id+".filter",ie,null,_e)||(ze.filter=s.clone$1(ie),this._updateLayer(ze)))}else this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style and cannot be filtered.")))},$.prototype.getFilter=function(W){return s.clone$1(this.getLayer(W).filter)},$.prototype.setLayoutProperty=function(W,ie,_e,ze){ze===void 0&&(ze={}),this._checkLoaded();var He=this.getLayer(W);He?s.deepEqual(He.getLayoutProperty(ie),_e)||(He.setLayoutProperty(ie,_e,ze),this._updateLayer(He)):this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style and cannot be styled.")))},$.prototype.getLayoutProperty=function(W,ie){var _e=this.getLayer(W);if(_e)return _e.getLayoutProperty(ie);this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style.")))},$.prototype.setPaintProperty=function(W,ie,_e,ze){ze===void 0&&(ze={}),this._checkLoaded();var He=this.getLayer(W);He?s.deepEqual(He.getPaintProperty(ie),_e)||(He.setPaintProperty(ie,_e,ze)&&this._updateLayer(He),this._changed=!0,this._updatedPaintProps[W]=!0):this.fire(new s.ErrorEvent(new Error("The layer '"+W+"' does not exist in the map's style and cannot be styled.")))},$.prototype.getPaintProperty=function(W,ie){return this.getLayer(W).getPaintProperty(ie)},$.prototype.setFeatureState=function(W,ie){this._checkLoaded();var _e=W.source,ze=W.sourceLayer,He=this.sourceCaches[_e];if(He!==void 0){var Xe=He.getSource().type;Xe==="geojson"&&ze?this.fire(new s.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):Xe!=="vector"||ze?(W.id===void 0&&this.fire(new s.ErrorEvent(new Error("The feature id parameter must be provided."))),He.setFeatureState(ze,W.id,ie)):this.fire(new s.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new s.ErrorEvent(new Error("The source '"+_e+"' does not exist in the map's style.")))},$.prototype.removeFeatureState=function(W,ie){this._checkLoaded();var _e=W.source,ze=this.sourceCaches[_e];if(ze!==void 0){var He=ze.getSource().type,Xe=He==="vector"?W.sourceLayer:void 0;He!=="vector"||Xe?ie&&typeof W.id!="string"&&typeof W.id!="number"?this.fire(new s.ErrorEvent(new Error("A feature id is requred to remove its specific state property."))):ze.removeFeatureState(Xe,W.id,ie):this.fire(new s.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new s.ErrorEvent(new Error("The source '"+_e+"' does not exist in the map's style.")))},$.prototype.getFeatureState=function(W){this._checkLoaded();var ie=W.source,_e=W.sourceLayer,ze=this.sourceCaches[ie];if(ze!==void 0){if(ze.getSource().type!=="vector"||_e)return W.id===void 0&&this.fire(new s.ErrorEvent(new Error("The feature id parameter must be provided."))),ze.getFeatureState(_e,W.id);this.fire(new s.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new s.ErrorEvent(new Error("The source '"+ie+"' does not exist in the map's style.")))},$.prototype.getTransition=function(){return s.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},$.prototype.serialize=function(){return s.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:s.mapObject(this.sourceCaches,function(W){return W.serialize()}),layers:this._serializeLayers(this._order)},function(W){return W!==void 0})},$.prototype._updateLayer=function(W){this._updatedLayers[W.id]=!0,W.source&&!this._updatedSources[W.source]&&this.sourceCaches[W.source].getSource().type!=="raster"&&(this._updatedSources[W.source]="reload",this.sourceCaches[W.source].pause()),this._changed=!0},$.prototype._flattenAndSortRenderedFeatures=function(W){for(var ie=this,_e=function(en){return ie._layers[en].type==="fill-extrusion"},ze={},He=[],Xe=this._order.length-1;Xe>=0;Xe--){var at=this._order[Xe];if(_e(at)){ze[at]=Xe;for(var wt=0,At=W;wt=0;We--){var $e=this._order[We];if(_e($e))for(var tt=He.length-1;tt>=0;tt--){var lt=He[tt].feature;if(ze[lt.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),Mi=fi("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),fa=fi("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}"),Hi=fi(`#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_FragColor=color*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);}`),xi=fi(`varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),Oa=fi(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),Ka=fi(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),Yo=fi(`varying vec4 v_color;void main() {gl_FragColor=v_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color; +#pragma mapbox: define highp float base +#pragma mapbox: define highp float height +#pragma mapbox: define highp vec4 color +void main() { +#pragma mapbox: initialize highp float base +#pragma mapbox: initialize highp float height +#pragma mapbox: initialize highp vec4 color +vec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),Xs=fi(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),Uu=fi(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),pu=fi(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),$s=fi(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`),Qa=fi(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define MAX_LINE_DISTANCE 32767.0 +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`),du=fi(`uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),Qi=fi(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),yl=fi(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),qa=fi(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}`),eo=fi(`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),fs=fi(`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`);function fi(q,$){var W=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,ie={};return{fragmentSource:q=q.replace(W,function(_e,ze,He,Xe,at){return ie[at]=!0,ze==="define"?` +#ifndef HAS_UNIFORM_u_`+at+` +varying `+He+" "+Xe+" "+at+`; +#else +uniform `+He+" "+Xe+" u_"+at+`; +#endif +`:` +#ifdef HAS_UNIFORM_u_`+at+` + `+He+" "+Xe+" "+at+" = u_"+at+`; +#endif +`}),vertexSource:$=$.replace(W,function(_e,ze,He,Xe,at){var wt=Xe==="float"?"vec2":"vec4",At=at.match(/color/)?"color":wt;return ie[at]?ze==="define"?` +#ifndef HAS_UNIFORM_u_`+at+` +uniform lowp float u_`+at+`_t; +attribute `+He+" "+wt+" a_"+at+`; +varying `+He+" "+Xe+" "+at+`; +#else +uniform `+He+" "+Xe+" u_"+at+`; +#endif +`:At==="vec4"?` +#ifndef HAS_UNIFORM_u_`+at+` + `+at+" = a_"+at+`; +#else + `+He+" "+Xe+" "+at+" = u_"+at+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+at+` + `+at+" = unpack_mix_"+At+"(a_"+at+", u_"+at+`_t); +#else + `+He+" "+Xe+" "+at+" = u_"+at+`; +#endif +`:ze==="define"?` +#ifndef HAS_UNIFORM_u_`+at+` +uniform lowp float u_`+at+`_t; +attribute `+He+" "+wt+" a_"+at+`; +#else +uniform `+He+" "+Xe+" u_"+at+`; +#endif +`:At==="vec4"?` +#ifndef HAS_UNIFORM_u_`+at+` + `+He+" "+Xe+" "+at+" = a_"+at+`; +#else + `+He+" "+Xe+" "+at+" = u_"+at+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+at+` + `+He+" "+Xe+" "+at+" = unpack_mix_"+At+"(a_"+at+", u_"+at+`_t); +#else + `+He+" "+Xe+" "+at+" = u_"+at+`; +#endif +`})}}var hs=Object.freeze({__proto__:null,prelude:Sr,background:Mr,backgroundPattern:Lr,circle:pr,clippingMask:Pr,heatmap:Hr,heatmapTexture:ci,collisionBox:Ti,collisionCircle:Mi,debug:fa,fill:Hi,fillOutline:xi,fillOutlinePattern:Oa,fillPattern:Ka,fillExtrusion:Yo,fillExtrusionPattern:Xs,hillshadePrepare:Uu,hillshade:pu,line:$s,lineGradient:Qa,linePattern:du,lineSDF:Qi,raster:yl,symbolIcon:qa,symbolSDF:eo,symbolTextAndIcon:fs}),ao=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};ao.prototype.bind=function(q,$,W,ie,_e,ze,He,Xe){this.context=q;for(var at=this.boundPaintVertexBuffers.length!==ie.length,wt=0;!at&&wt>16,Xe>>16],u_pixel_coord_lower:[65535&He,65535&Xe]}}bo.prototype.draw=function(q,$,W,ie,_e,ze,He,Xe,at,wt,At,re,ve,Le,Fe,Ve){var We,$e=q.gl;if(!this.failedToCreate){for(var tt in q.program.set(this.program),q.setDepthMode(W),q.setStencilMode(ie),q.setColorMode(_e),q.setCullFace(ze),this.fixedUniforms)this.fixedUniforms[tt].set(He[tt]);Le&&Le.setUniforms(q,this.binderUniforms,re,{zoom:ve});for(var lt=(We={},We[$e.LINES]=2,We[$e.TRIANGLES]=3,We[$e.LINE_STRIP]=1,We)[$],gt=0,zt=At.get();gt0?1-1/(1.001-He):-He),u_contrast_factor:(ze=_e.paint.get("raster-contrast"),ze>0?1/(1-ze):1+ze),u_spin_weights:Ps(_e.paint.get("raster-hue-rotate"))};var ze,He};function Ps(q){q*=Math.PI/180;var $=Math.sin(q),W=Math.cos(q);return[(2*W+1)/3,(-Math.sqrt(3)*$-W+1)/3,(Math.sqrt(3)*$-W+1)/3]}var Qo,hi=function(q,$,W,ie,_e,ze,He,Xe,at,wt){var At=_e.transform;return{u_is_size_zoom_constant:+(q==="constant"||q==="source"),u_is_size_feature_constant:+(q==="constant"||q==="camera"),u_size_t:$?$.uSizeT:0,u_size:$?$.uSize:0,u_camera_to_center_distance:At.cameraToCenterDistance,u_pitch:At.pitch/360*2*Math.PI,u_rotate_symbol:+W,u_aspect_ratio:At.width/At.height,u_fade_change:_e.options.fadeDuration?_e.symbolFadeChange:1,u_matrix:ze,u_label_plane_matrix:He,u_coord_matrix:Xe,u_is_text:+at,u_pitch_with_map:+ie,u_texsize:wt,u_texture:0}},ds=function(q,$,W,ie,_e,ze,He,Xe,at,wt,At){var re=_e.transform;return s.extend(hi(q,$,W,ie,_e,ze,He,Xe,at,wt),{u_gamma_scale:ie?Math.cos(re._pitch)*re.cameraToCenterDistance:1,u_device_pixel_ratio:s.browser.devicePixelRatio,u_is_halo:+At})},Cc=function(q,$,W,ie,_e,ze,He,Xe,at,wt){return s.extend(ds(q,$,W,ie,_e,ze,He,Xe,!0,at,!0),{u_texsize_icon:wt,u_texture_icon:1})},Hl=function(q,$,W){return{u_matrix:q,u_opacity:$,u_color:W}},bl=function(q,$,W,ie,_e,ze){return s.extend(function(He,Xe,at,wt){var At=at.imageManager.getPattern(He.from.toString()),re=at.imageManager.getPattern(He.to.toString()),ve=at.imageManager.getPixelSize(),Le=ve.width,Fe=ve.height,Ve=Math.pow(2,wt.tileID.overscaledZ),We=wt.tileSize*Math.pow(2,at.transform.tileZoom)/Ve,$e=We*(wt.tileID.canonical.x+wt.tileID.wrap*Ve),tt=We*wt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:At.tl,u_pattern_br_a:At.br,u_pattern_tl_b:re.tl,u_pattern_br_b:re.br,u_texsize:[Le,Fe],u_mix:Xe.t,u_pattern_size_a:At.displaySize,u_pattern_size_b:re.displaySize,u_scale_a:Xe.fromScale,u_scale_b:Xe.toScale,u_tile_units_to_pixels:1/dr(wt,1,at.transform.tileZoom),u_pixel_coord_upper:[$e>>16,tt>>16],u_pixel_coord_lower:[65535&$e,65535&tt]}}(ie,ze,W,_e),{u_matrix:q,u_opacity:$})},Os={fillExtrusion:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_lightpos:new s.Uniform3f(q,$.u_lightpos),u_lightintensity:new s.Uniform1f(q,$.u_lightintensity),u_lightcolor:new s.Uniform3f(q,$.u_lightcolor),u_vertical_gradient:new s.Uniform1f(q,$.u_vertical_gradient),u_opacity:new s.Uniform1f(q,$.u_opacity)}},fillExtrusionPattern:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_lightpos:new s.Uniform3f(q,$.u_lightpos),u_lightintensity:new s.Uniform1f(q,$.u_lightintensity),u_lightcolor:new s.Uniform3f(q,$.u_lightcolor),u_vertical_gradient:new s.Uniform1f(q,$.u_vertical_gradient),u_height_factor:new s.Uniform1f(q,$.u_height_factor),u_image:new s.Uniform1i(q,$.u_image),u_texsize:new s.Uniform2f(q,$.u_texsize),u_pixel_coord_upper:new s.Uniform2f(q,$.u_pixel_coord_upper),u_pixel_coord_lower:new s.Uniform2f(q,$.u_pixel_coord_lower),u_scale:new s.Uniform3f(q,$.u_scale),u_fade:new s.Uniform1f(q,$.u_fade),u_opacity:new s.Uniform1f(q,$.u_opacity)}},fill:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix)}},fillPattern:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_image:new s.Uniform1i(q,$.u_image),u_texsize:new s.Uniform2f(q,$.u_texsize),u_pixel_coord_upper:new s.Uniform2f(q,$.u_pixel_coord_upper),u_pixel_coord_lower:new s.Uniform2f(q,$.u_pixel_coord_lower),u_scale:new s.Uniform3f(q,$.u_scale),u_fade:new s.Uniform1f(q,$.u_fade)}},fillOutline:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_world:new s.Uniform2f(q,$.u_world)}},fillOutlinePattern:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_world:new s.Uniform2f(q,$.u_world),u_image:new s.Uniform1i(q,$.u_image),u_texsize:new s.Uniform2f(q,$.u_texsize),u_pixel_coord_upper:new s.Uniform2f(q,$.u_pixel_coord_upper),u_pixel_coord_lower:new s.Uniform2f(q,$.u_pixel_coord_lower),u_scale:new s.Uniform3f(q,$.u_scale),u_fade:new s.Uniform1f(q,$.u_fade)}},circle:function(q,$){return{u_camera_to_center_distance:new s.Uniform1f(q,$.u_camera_to_center_distance),u_scale_with_map:new s.Uniform1i(q,$.u_scale_with_map),u_pitch_with_map:new s.Uniform1i(q,$.u_pitch_with_map),u_extrude_scale:new s.Uniform2f(q,$.u_extrude_scale),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_matrix:new s.UniformMatrix4f(q,$.u_matrix)}},collisionBox:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_camera_to_center_distance:new s.Uniform1f(q,$.u_camera_to_center_distance),u_pixels_to_tile_units:new s.Uniform1f(q,$.u_pixels_to_tile_units),u_extrude_scale:new s.Uniform2f(q,$.u_extrude_scale),u_overscale_factor:new s.Uniform1f(q,$.u_overscale_factor)}},collisionCircle:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_inv_matrix:new s.UniformMatrix4f(q,$.u_inv_matrix),u_camera_to_center_distance:new s.Uniform1f(q,$.u_camera_to_center_distance),u_viewport_size:new s.Uniform2f(q,$.u_viewport_size)}},debug:function(q,$){return{u_color:new s.UniformColor(q,$.u_color),u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_overlay:new s.Uniform1i(q,$.u_overlay),u_overlay_scale:new s.Uniform1f(q,$.u_overlay_scale)}},clippingMask:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix)}},heatmap:function(q,$){return{u_extrude_scale:new s.Uniform1f(q,$.u_extrude_scale),u_intensity:new s.Uniform1f(q,$.u_intensity),u_matrix:new s.UniformMatrix4f(q,$.u_matrix)}},heatmapTexture:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_world:new s.Uniform2f(q,$.u_world),u_image:new s.Uniform1i(q,$.u_image),u_color_ramp:new s.Uniform1i(q,$.u_color_ramp),u_opacity:new s.Uniform1f(q,$.u_opacity)}},hillshade:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_image:new s.Uniform1i(q,$.u_image),u_latrange:new s.Uniform2f(q,$.u_latrange),u_light:new s.Uniform2f(q,$.u_light),u_shadow:new s.UniformColor(q,$.u_shadow),u_highlight:new s.UniformColor(q,$.u_highlight),u_accent:new s.UniformColor(q,$.u_accent)}},hillshadePrepare:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_image:new s.Uniform1i(q,$.u_image),u_dimension:new s.Uniform2f(q,$.u_dimension),u_zoom:new s.Uniform1f(q,$.u_zoom),u_maxzoom:new s.Uniform1f(q,$.u_maxzoom),u_unpack:new s.Uniform4f(q,$.u_unpack)}},line:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_ratio:new s.Uniform1f(q,$.u_ratio),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_units_to_pixels:new s.Uniform2f(q,$.u_units_to_pixels)}},lineGradient:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_ratio:new s.Uniform1f(q,$.u_ratio),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_units_to_pixels:new s.Uniform2f(q,$.u_units_to_pixels),u_image:new s.Uniform1i(q,$.u_image)}},linePattern:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_texsize:new s.Uniform2f(q,$.u_texsize),u_ratio:new s.Uniform1f(q,$.u_ratio),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_image:new s.Uniform1i(q,$.u_image),u_units_to_pixels:new s.Uniform2f(q,$.u_units_to_pixels),u_scale:new s.Uniform3f(q,$.u_scale),u_fade:new s.Uniform1f(q,$.u_fade)}},lineSDF:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_ratio:new s.Uniform1f(q,$.u_ratio),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_units_to_pixels:new s.Uniform2f(q,$.u_units_to_pixels),u_patternscale_a:new s.Uniform2f(q,$.u_patternscale_a),u_patternscale_b:new s.Uniform2f(q,$.u_patternscale_b),u_sdfgamma:new s.Uniform1f(q,$.u_sdfgamma),u_image:new s.Uniform1i(q,$.u_image),u_tex_y_a:new s.Uniform1f(q,$.u_tex_y_a),u_tex_y_b:new s.Uniform1f(q,$.u_tex_y_b),u_mix:new s.Uniform1f(q,$.u_mix)}},raster:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_tl_parent:new s.Uniform2f(q,$.u_tl_parent),u_scale_parent:new s.Uniform1f(q,$.u_scale_parent),u_buffer_scale:new s.Uniform1f(q,$.u_buffer_scale),u_fade_t:new s.Uniform1f(q,$.u_fade_t),u_opacity:new s.Uniform1f(q,$.u_opacity),u_image0:new s.Uniform1i(q,$.u_image0),u_image1:new s.Uniform1i(q,$.u_image1),u_brightness_low:new s.Uniform1f(q,$.u_brightness_low),u_brightness_high:new s.Uniform1f(q,$.u_brightness_high),u_saturation_factor:new s.Uniform1f(q,$.u_saturation_factor),u_contrast_factor:new s.Uniform1f(q,$.u_contrast_factor),u_spin_weights:new s.Uniform3f(q,$.u_spin_weights)}},symbolIcon:function(q,$){return{u_is_size_zoom_constant:new s.Uniform1i(q,$.u_is_size_zoom_constant),u_is_size_feature_constant:new s.Uniform1i(q,$.u_is_size_feature_constant),u_size_t:new s.Uniform1f(q,$.u_size_t),u_size:new s.Uniform1f(q,$.u_size),u_camera_to_center_distance:new s.Uniform1f(q,$.u_camera_to_center_distance),u_pitch:new s.Uniform1f(q,$.u_pitch),u_rotate_symbol:new s.Uniform1i(q,$.u_rotate_symbol),u_aspect_ratio:new s.Uniform1f(q,$.u_aspect_ratio),u_fade_change:new s.Uniform1f(q,$.u_fade_change),u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_label_plane_matrix:new s.UniformMatrix4f(q,$.u_label_plane_matrix),u_coord_matrix:new s.UniformMatrix4f(q,$.u_coord_matrix),u_is_text:new s.Uniform1i(q,$.u_is_text),u_pitch_with_map:new s.Uniform1i(q,$.u_pitch_with_map),u_texsize:new s.Uniform2f(q,$.u_texsize),u_texture:new s.Uniform1i(q,$.u_texture)}},symbolSDF:function(q,$){return{u_is_size_zoom_constant:new s.Uniform1i(q,$.u_is_size_zoom_constant),u_is_size_feature_constant:new s.Uniform1i(q,$.u_is_size_feature_constant),u_size_t:new s.Uniform1f(q,$.u_size_t),u_size:new s.Uniform1f(q,$.u_size),u_camera_to_center_distance:new s.Uniform1f(q,$.u_camera_to_center_distance),u_pitch:new s.Uniform1f(q,$.u_pitch),u_rotate_symbol:new s.Uniform1i(q,$.u_rotate_symbol),u_aspect_ratio:new s.Uniform1f(q,$.u_aspect_ratio),u_fade_change:new s.Uniform1f(q,$.u_fade_change),u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_label_plane_matrix:new s.UniformMatrix4f(q,$.u_label_plane_matrix),u_coord_matrix:new s.UniformMatrix4f(q,$.u_coord_matrix),u_is_text:new s.Uniform1i(q,$.u_is_text),u_pitch_with_map:new s.Uniform1i(q,$.u_pitch_with_map),u_texsize:new s.Uniform2f(q,$.u_texsize),u_texture:new s.Uniform1i(q,$.u_texture),u_gamma_scale:new s.Uniform1f(q,$.u_gamma_scale),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_is_halo:new s.Uniform1i(q,$.u_is_halo)}},symbolTextAndIcon:function(q,$){return{u_is_size_zoom_constant:new s.Uniform1i(q,$.u_is_size_zoom_constant),u_is_size_feature_constant:new s.Uniform1i(q,$.u_is_size_feature_constant),u_size_t:new s.Uniform1f(q,$.u_size_t),u_size:new s.Uniform1f(q,$.u_size),u_camera_to_center_distance:new s.Uniform1f(q,$.u_camera_to_center_distance),u_pitch:new s.Uniform1f(q,$.u_pitch),u_rotate_symbol:new s.Uniform1i(q,$.u_rotate_symbol),u_aspect_ratio:new s.Uniform1f(q,$.u_aspect_ratio),u_fade_change:new s.Uniform1f(q,$.u_fade_change),u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_label_plane_matrix:new s.UniformMatrix4f(q,$.u_label_plane_matrix),u_coord_matrix:new s.UniformMatrix4f(q,$.u_coord_matrix),u_is_text:new s.Uniform1i(q,$.u_is_text),u_pitch_with_map:new s.Uniform1i(q,$.u_pitch_with_map),u_texsize:new s.Uniform2f(q,$.u_texsize),u_texsize_icon:new s.Uniform2f(q,$.u_texsize_icon),u_texture:new s.Uniform1i(q,$.u_texture),u_texture_icon:new s.Uniform1i(q,$.u_texture_icon),u_gamma_scale:new s.Uniform1f(q,$.u_gamma_scale),u_device_pixel_ratio:new s.Uniform1f(q,$.u_device_pixel_ratio),u_is_halo:new s.Uniform1i(q,$.u_is_halo)}},background:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_opacity:new s.Uniform1f(q,$.u_opacity),u_color:new s.UniformColor(q,$.u_color)}},backgroundPattern:function(q,$){return{u_matrix:new s.UniformMatrix4f(q,$.u_matrix),u_opacity:new s.Uniform1f(q,$.u_opacity),u_image:new s.Uniform1i(q,$.u_image),u_pattern_tl_a:new s.Uniform2f(q,$.u_pattern_tl_a),u_pattern_br_a:new s.Uniform2f(q,$.u_pattern_br_a),u_pattern_tl_b:new s.Uniform2f(q,$.u_pattern_tl_b),u_pattern_br_b:new s.Uniform2f(q,$.u_pattern_br_b),u_texsize:new s.Uniform2f(q,$.u_texsize),u_mix:new s.Uniform1f(q,$.u_mix),u_pattern_size_a:new s.Uniform2f(q,$.u_pattern_size_a),u_pattern_size_b:new s.Uniform2f(q,$.u_pattern_size_b),u_scale_a:new s.Uniform1f(q,$.u_scale_a),u_scale_b:new s.Uniform1f(q,$.u_scale_b),u_pixel_coord_upper:new s.Uniform2f(q,$.u_pixel_coord_upper),u_pixel_coord_lower:new s.Uniform2f(q,$.u_pixel_coord_lower),u_tile_units_to_pixels:new s.Uniform1f(q,$.u_tile_units_to_pixels)}}};function Qs(q,$,W,ie,_e,ze,He){for(var Xe=q.context,at=Xe.gl,wt=q.useProgram("collisionBox"),At=[],re=0,ve=0,Le=0;Le0){var gt=s.create(),zt=$e;s.mul(gt,We.placementInvProjMatrix,q.transform.glCoordMatrix),s.mul(gt,gt,We.placementViewportMatrix),At.push({circleArray:lt,circleOffset:ve,transform:zt,invTransform:gt}),ve=re+=lt.length/4}tt&&wt.draw(Xe,at.LINES,qt.disabled,Je.disabled,q.colorModeForRenderPass(),Ge.disabled,Gu($e,q.transform,Ve),W.id,tt.layoutVertexBuffer,tt.indexBuffer,tt.segments,null,q.transform.zoom,null,null,tt.collisionVertexBuffer)}}if(He&&At.length){var Ut=q.useProgram("collisionCircle"),Vt=new s.StructArrayLayout2f1f2i16;Vt.resize(4*re),Vt._trim();for(var Qt=0,gn=0,en=At;gn=0&&(Fe[We.associatedIconIndex]={shiftedAnchor:en,angle:sn})}else tr(We.numGlyphs,ve)}if(At){Le.clear();for(var Mn=q.icon.placedSymbolArray,xn=0;xn0){var He=s.browser.now(),Xe=(He-q.timeAdded)/ze,at=$?(He-$.timeAdded)/ze:-1,wt=W.getSource(),At=_e.coveringZoomLevel({tileSize:wt.tileSize,roundZoom:wt.roundZoom}),re=!$||Math.abs($.tileID.overscaledZ-At)>Math.abs(q.tileID.overscaledZ-At),ve=re&&q.refreshedUponExpiration?1:s.clamp(re?Xe:1-at,0,1);return q.refreshedUponExpiration&&Xe>=1&&(q.refreshedUponExpiration=!1),$?{opacity:1,mix:1-ve}:{opacity:ve,mix:0}}return{opacity:1,mix:0}}var Al=new s.Color(1,0,0,1),Ml=new s.Color(0,1,0,1),bu=new s.Color(0,0,1,1),gs=new s.Color(1,0,1,1),ql=new s.Color(0,1,1,1);function Sl(q){var $=q.transform.padding;_u(q,q.transform.height-($.top||0),3,Al),_u(q,$.bottom||0,3,Ml),El(q,$.left||0,3,bu),El(q,q.transform.width-($.right||0),3,gs);var W=q.transform.centerPoint;(function(ie,_e,ze,He){var Xe=20,at=2;nl(ie,_e-at/2,ze-Xe/2,at,Xe,He),nl(ie,_e-Xe/2,ze-at/2,Xe,at,He)})(q,W.x,q.transform.height-W.y,ql)}function _u(q,$,W,ie){nl(q,0,$+W/2,q.transform.width,W,ie)}function El(q,$,W,ie){nl(q,$-W/2,0,W,q.transform.height,ie)}function nl(q,$,W,ie,_e,ze){var He=q.context,Xe=He.gl;Xe.enable(Xe.SCISSOR_TEST),Xe.scissor($*s.browser.devicePixelRatio,W*s.browser.devicePixelRatio,ie*s.browser.devicePixelRatio,_e*s.browser.devicePixelRatio),He.clear({color:ze}),Xe.disable(Xe.SCISSOR_TEST)}function zs(q,$,W){var ie=q.context,_e=ie.gl,ze=W.posMatrix,He=q.useProgram("debug"),Xe=qt.disabled,at=Je.disabled,wt=q.colorModeForRenderPass(),At="$debug";ie.activeTexture.set(_e.TEXTURE0),q.emptyTexture.bind(_e.LINEAR,_e.CLAMP_TO_EDGE),He.draw(ie,_e.LINE_STRIP,Xe,at,wt,Ge.disabled,$o(ze,s.Color.red),At,q.debugBuffer,q.tileBorderIndexBuffer,q.debugSegments);var re=$.getTileByID(W.key).latestRawTileData,ve=re&&re.byteLength||0,Le=Math.floor(ve/1024),Fe=$.getTile(W).tileSize,Ve=512/Math.min(Fe,512)*(W.overscaledZ/q.transform.zoom)*.5,We=W.canonical.toString();W.overscaledZ!==W.canonical.z&&(We+=" => "+W.overscaledZ),function($e,tt){$e.initDebugOverlayCanvas();var lt=$e.debugOverlayCanvas,gt=$e.context.gl,zt=$e.debugOverlayCanvas.getContext("2d");zt.clearRect(0,0,lt.width,lt.height),zt.shadowColor="white",zt.shadowBlur=2,zt.lineWidth=1.5,zt.strokeStyle="white",zt.textBaseline="top",zt.font="bold 36px Open Sans, sans-serif",zt.fillText(tt,5,5),zt.strokeText(tt,5,5),$e.debugOverlayTexture.update(lt),$e.debugOverlayTexture.bind(gt.LINEAR,gt.CLAMP_TO_EDGE)}(q,We+" "+Le+"kb"),He.draw(ie,_e.TRIANGLES,Xe,at,Ke.alphaBlended,Ge.disabled,$o(ze,s.Color.transparent,Ve),At,q.debugBuffer,q.quadTriangleIndexBuffer,q.debugSegments)}var Ds={symbol:function(q,$,W,ie,_e){if(q.renderPass==="translucent"){var ze=Je.disabled,He=q.colorModeForRenderPass();W.layout.get("text-variable-anchor")&&function(Xe,at,wt,At,re,ve,Le){for(var Fe=at.transform,Ve=re==="map",We=ve==="map",$e=0,tt=Xe;$e256&&this.clearStencil(),W.setColorMode(Ke.disabled),W.setDepthMode(qt.disabled);var _e=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var ze=0,He=$;ze256&&this.clearStencil();var q=this.nextStencilID++,$=this.context.gl;return new Je({func:$.NOTEQUAL,mask:255},q,255,$.KEEP,$.KEEP,$.REPLACE)},bi.prototype.stencilModeForClipping=function(q){var $=this.context.gl;return new Je({func:$.EQUAL,mask:255},this._tileClippingMaskIDs[q.key],0,$.KEEP,$.KEEP,$.REPLACE)},bi.prototype.stencilConfigForOverlap=function(q){var $,W=this.context.gl,ie=q.sort(function(at,wt){return wt.overscaledZ-at.overscaledZ}),_e=ie[ie.length-1].overscaledZ,ze=ie[0].overscaledZ-_e+1;if(ze>1){this.currentStencilSource=void 0,this.nextStencilID+ze>256&&this.clearStencil();for(var He={},Xe=0;Xe=0;this.currentLayer--){var zt=this.style._layers[ie[this.currentLayer]],Ut=_e[zt.source],Vt=wt[zt.source];this._renderTileClippingMasks(zt,Vt),this.renderLayer(this,Ut,zt,Vt)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer0?$.pop():null},bi.prototype.isPatternMissing=function(q){if(!q)return!1;if(!q.from||!q.to)return!0;var $=this.imageManager.getPattern(q.from.toString()),W=this.imageManager.getPattern(q.to.toString());return!$||!W},bi.prototype.useProgram=function(q,$){this.cache=this.cache||{};var W=""+q+($?$.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[W]||(this.cache[W]=new bo(this.context,hs[q],$,Os[q],this._showOverdrawInspector)),this.cache[W]},bi.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},bi.prototype.setBaseState=function(){var q=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(q.FUNC_ADD)},bi.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=s.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var q=this.context.gl;this.debugOverlayTexture=new s.Texture(this.context,this.debugOverlayCanvas,q.RGBA)}},bi.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var vs=function(q,$){this.points=q,this.planes=$};vs.fromInvProjectionMatrix=function(q,$,W){var ie=Math.pow(2,W),_e=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(function(He){return s.transformMat4([],He,q)}).map(function(He){return s.scale$1([],He,1/He[3]/$*ie)}),ze=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(function(He){var Xe=s.sub([],_e[He[0]],_e[He[1]]),at=s.sub([],_e[He[2]],_e[He[1]]),wt=s.normalize([],s.cross([],Xe,at)),At=-s.dot(wt,_e[He[1]]);return wt.concat(At)});return new vs(_e,ze)};var ms=function(q,$){this.min=q,this.max=$,this.center=s.scale$2([],s.add([],this.min,this.max),.5)};ms.prototype.quadrant=function(q){for(var $=[q%2==0,q<2],W=s.clone$2(this.min),ie=s.clone$2(this.max),_e=0;_e<$.length;_e++)W[_e]=$[_e]?this.min[_e]:this.center[_e],ie[_e]=$[_e]?this.center[_e]:this.max[_e];return ie[2]=this.max[2],new ms(W,ie)},ms.prototype.distanceX=function(q){return Math.max(Math.min(this.max[0],q[0]),this.min[0])-q[0]},ms.prototype.distanceY=function(q){return Math.max(Math.min(this.max[1],q[1]),this.min[1])-q[1]},ms.prototype.intersects=function(q){for(var $=[[this.min[0],this.min[1],0,1],[this.max[0],this.min[1],0,1],[this.max[0],this.max[1],0,1],[this.min[0],this.max[1],0,1]],W=!0,ie=0;ie=0;if(ze===0)return 0;ze!==$.length&&(W=!1)}if(W)return 2;for(var Xe=0;Xe<3;Xe++){for(var at=Number.MAX_VALUE,wt=-Number.MAX_VALUE,At=0;Atthis.max[Xe]-this.min[Xe])return 0}return 1};var ga=function(q,$,W,ie){if(q===void 0&&(q=0),$===void 0&&($=0),W===void 0&&(W=0),ie===void 0&&(ie=0),isNaN(q)||q<0||isNaN($)||$<0||isNaN(W)||W<0||isNaN(ie)||ie<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=q,this.bottom=$,this.left=W,this.right=ie};ga.prototype.interpolate=function(q,$,W){return $.top!=null&&q.top!=null&&(this.top=s.number(q.top,$.top,W)),$.bottom!=null&&q.bottom!=null&&(this.bottom=s.number(q.bottom,$.bottom,W)),$.left!=null&&q.left!=null&&(this.left=s.number(q.left,$.left,W)),$.right!=null&&q.right!=null&&(this.right=s.number(q.right,$.right,W)),this},ga.prototype.getCenter=function(q,$){var W=s.clamp((this.left+q-this.right)/2,0,q),ie=s.clamp((this.top+$-this.bottom)/2,0,$);return new s.Point(W,ie)},ga.prototype.equals=function(q){return this.top===q.top&&this.bottom===q.bottom&&this.left===q.left&&this.right===q.right},ga.prototype.clone=function(){return new ga(this.top,this.bottom,this.left,this.right)},ga.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var oi=function(q,$,W,ie,_e){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=_e===void 0||_e,this._minZoom=q||0,this._maxZoom=$||22,this._minPitch=W??0,this._maxPitch=ie??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new s.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new ga,this._posMatrixCache={},this._alignedPosMatrixCache={}},li={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};oi.prototype.clone=function(){var q=new oi(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return q.tileSize=this.tileSize,q.latRange=this.latRange,q.width=this.width,q.height=this.height,q._center=this._center,q.zoom=this.zoom,q.angle=this.angle,q._fov=this._fov,q._pitch=this._pitch,q._unmodified=this._unmodified,q._edgeInsets=this._edgeInsets.clone(),q._calcMatrices(),q},li.minZoom.get=function(){return this._minZoom},li.minZoom.set=function(q){this._minZoom!==q&&(this._minZoom=q,this.zoom=Math.max(this.zoom,q))},li.maxZoom.get=function(){return this._maxZoom},li.maxZoom.set=function(q){this._maxZoom!==q&&(this._maxZoom=q,this.zoom=Math.min(this.zoom,q))},li.minPitch.get=function(){return this._minPitch},li.minPitch.set=function(q){this._minPitch!==q&&(this._minPitch=q,this.pitch=Math.max(this.pitch,q))},li.maxPitch.get=function(){return this._maxPitch},li.maxPitch.set=function(q){this._maxPitch!==q&&(this._maxPitch=q,this.pitch=Math.min(this.pitch,q))},li.renderWorldCopies.get=function(){return this._renderWorldCopies},li.renderWorldCopies.set=function(q){q===void 0?q=!0:q===null&&(q=!1),this._renderWorldCopies=q},li.worldSize.get=function(){return this.tileSize*this.scale},li.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},li.size.get=function(){return new s.Point(this.width,this.height)},li.bearing.get=function(){return-this.angle/Math.PI*180},li.bearing.set=function(q){var $=-s.wrap(q,-180,180)*Math.PI/180;this.angle!==$&&(this._unmodified=!1,this.angle=$,this._calcMatrices(),this.rotationMatrix=s.create$2(),s.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},li.pitch.get=function(){return this._pitch/Math.PI*180},li.pitch.set=function(q){var $=s.clamp(q,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==$&&(this._unmodified=!1,this._pitch=$,this._calcMatrices())},li.fov.get=function(){return this._fov/Math.PI*180},li.fov.set=function(q){q=Math.max(.01,Math.min(60,q)),this._fov!==q&&(this._unmodified=!1,this._fov=q/180*Math.PI,this._calcMatrices())},li.zoom.get=function(){return this._zoom},li.zoom.set=function(q){var $=Math.min(Math.max(q,this.minZoom),this.maxZoom);this._zoom!==$&&(this._unmodified=!1,this._zoom=$,this.scale=this.zoomScale($),this.tileZoom=Math.floor($),this.zoomFraction=$-this.tileZoom,this._constrain(),this._calcMatrices())},li.center.get=function(){return this._center},li.center.set=function(q){q.lat===this._center.lat&&q.lng===this._center.lng||(this._unmodified=!1,this._center=q,this._constrain(),this._calcMatrices())},li.padding.get=function(){return this._edgeInsets.toJSON()},li.padding.set=function(q){this._edgeInsets.equals(q)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,q,1),this._calcMatrices())},li.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},oi.prototype.isPaddingEqual=function(q){return this._edgeInsets.equals(q)},oi.prototype.interpolatePadding=function(q,$,W){this._unmodified=!1,this._edgeInsets.interpolate(q,$,W),this._constrain(),this._calcMatrices()},oi.prototype.coveringZoomLevel=function(q){var $=(q.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/q.tileSize));return Math.max(0,$)},oi.prototype.getVisibleUnwrappedCoordinates=function(q){var $=[new s.UnwrappedTileID(0,q)];if(this._renderWorldCopies)for(var W=this.pointCoordinate(new s.Point(0,0)),ie=this.pointCoordinate(new s.Point(this.width,0)),_e=this.pointCoordinate(new s.Point(this.width,this.height)),ze=this.pointCoordinate(new s.Point(0,this.height)),He=Math.floor(Math.min(W.x,ie.x,_e.x,ze.x)),Xe=Math.floor(Math.max(W.x,ie.x,_e.x,ze.x)),at=He-1;at<=Xe+1;at++)at!==0&&$.push(new s.UnwrappedTileID(at,q));return $},oi.prototype.coveringTiles=function(q){var $=this.coveringZoomLevel(q),W=$;if(q.minzoom!==void 0&&$q.maxzoom&&($=q.maxzoom);var ie=s.MercatorCoordinate.fromLngLat(this.center),_e=Math.pow(2,$),ze=[_e*ie.x,_e*ie.y,0],He=vs.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,$),Xe=q.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(Xe=$);var at=function(en){return{aabb:new ms([en*_e,0,0],[(en+1)*_e,_e,0]),zoom:0,x:0,y:0,wrap:en,fullyVisible:!1}},wt=[],At=[],re=$,ve=q.reparseOverscaled?W:$;if(this._renderWorldCopies)for(var Le=1;Le<=3;Le++)wt.push(at(-Le)),wt.push(at(Le));for(wt.push(at(0));wt.length>0;){var Fe=wt.pop(),Ve=Fe.x,We=Fe.y,$e=Fe.fullyVisible;if(!$e){var tt=Fe.aabb.intersects(He);if(tt===0)continue;$e=tt===2}var lt=Fe.aabb.distanceX(ze),gt=Fe.aabb.distanceY(ze),zt=Math.max(Math.abs(lt),Math.abs(gt)),Ut=3+(1<Ut&&Fe.zoom>=Xe)At.push({tileID:new s.OverscaledTileID(Fe.zoom===re?ve:Fe.zoom,Fe.wrap,Fe.zoom,Ve,We),distanceSq:s.sqrLen([ze[0]-.5-Ve,ze[1]-.5-We])});else for(var Vt=0;Vt<4;Vt++){var Qt=(Ve<<1)+Vt%2,gn=(We<<1)+(Vt>>1);wt.push({aabb:Fe.aabb.quadrant(Vt),zoom:Fe.zoom+1,x:Qt,y:gn,wrap:Fe.wrap,fullyVisible:$e})}}return At.sort(function(en,sn){return en.distanceSq-sn.distanceSq}).map(function(en){return en.tileID})},oi.prototype.resize=function(q,$){this.width=q,this.height=$,this.pixelsToGLUnits=[2/q,-2/$],this._constrain(),this._calcMatrices()},li.unmodified.get=function(){return this._unmodified},oi.prototype.zoomScale=function(q){return Math.pow(2,q)},oi.prototype.scaleZoom=function(q){return Math.log(q)/Math.LN2},oi.prototype.project=function(q){var $=s.clamp(q.lat,-this.maxValidLatitude,this.maxValidLatitude);return new s.Point(s.mercatorXfromLng(q.lng)*this.worldSize,s.mercatorYfromLat($)*this.worldSize)},oi.prototype.unproject=function(q){return new s.MercatorCoordinate(q.x/this.worldSize,q.y/this.worldSize).toLngLat()},li.point.get=function(){return this.project(this.center)},oi.prototype.setLocationAtPoint=function(q,$){var W=this.pointCoordinate($),ie=this.pointCoordinate(this.centerPoint),_e=this.locationCoordinate(q),ze=new s.MercatorCoordinate(_e.x-(W.x-ie.x),_e.y-(W.y-ie.y));this.center=this.coordinateLocation(ze),this._renderWorldCopies&&(this.center=this.center.wrap())},oi.prototype.locationPoint=function(q){return this.coordinatePoint(this.locationCoordinate(q))},oi.prototype.pointLocation=function(q){return this.coordinateLocation(this.pointCoordinate(q))},oi.prototype.locationCoordinate=function(q){return s.MercatorCoordinate.fromLngLat(q)},oi.prototype.coordinateLocation=function(q){return q.toLngLat()},oi.prototype.pointCoordinate=function(q){var $=[q.x,q.y,0,1],W=[q.x,q.y,1,1];s.transformMat4($,$,this.pixelMatrixInverse),s.transformMat4(W,W,this.pixelMatrixInverse);var ie=$[3],_e=W[3],ze=$[0]/ie,He=W[0]/_e,Xe=$[1]/ie,at=W[1]/_e,wt=$[2]/ie,At=W[2]/_e,re=wt===At?0:(0-wt)/(At-wt);return new s.MercatorCoordinate(s.number(ze,He,re)/this.worldSize,s.number(Xe,at,re)/this.worldSize)},oi.prototype.coordinatePoint=function(q){var $=[q.x*this.worldSize,q.y*this.worldSize,0,1];return s.transformMat4($,$,this.pixelMatrix),new s.Point($[0]/$[3],$[1]/$[3])},oi.prototype.getBounds=function(){return new s.LngLatBounds().extend(this.pointLocation(new s.Point(0,0))).extend(this.pointLocation(new s.Point(this.width,0))).extend(this.pointLocation(new s.Point(this.width,this.height))).extend(this.pointLocation(new s.Point(0,this.height)))},oi.prototype.getMaxBounds=function(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new s.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},oi.prototype.setMaxBounds=function(q){q?(this.lngRange=[q.getWest(),q.getEast()],this.latRange=[q.getSouth(),q.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},oi.prototype.calculatePosMatrix=function(q,$){$===void 0&&($=!1);var W=q.key,ie=$?this._alignedPosMatrixCache:this._posMatrixCache;if(ie[W])return ie[W];var _e=q.canonical,ze=this.worldSize/this.zoomScale(_e.z),He=_e.x+Math.pow(2,_e.z)*q.wrap,Xe=s.identity(new Float64Array(16));return s.translate(Xe,Xe,[He*ze,_e.y*ze,0]),s.scale(Xe,Xe,[ze/s.EXTENT,ze/s.EXTENT,1]),s.multiply(Xe,$?this.alignedProjMatrix:this.projMatrix,Xe),ie[W]=new Float32Array(Xe),ie[W]},oi.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},oi.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var q,$,W,ie,_e=-90,ze=90,He=-180,Xe=180,at=this.size,wt=this._unmodified;if(this.latRange){var At=this.latRange;_e=s.mercatorYfromLat(At[1])*this.worldSize,q=(ze=s.mercatorYfromLat(At[0])*this.worldSize)-_eze&&(ie=ze-Ve)}if(this.lngRange){var We=ve.x,$e=at.x/2;We-$eXe&&(W=Xe-$e)}W===void 0&&ie===void 0||(this.center=this.unproject(new s.Point(W!==void 0?W:ve.x,ie!==void 0?ie:ve.y))),this._unmodified=wt,this._constraining=!1}},oi.prototype._calcMatrices=function(){if(this.height){var q=this._fov/2,$=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(q)*this.height;var W=Math.PI/2+this._pitch,ie=this._fov*(.5+$.y/this.height),_e=Math.sin(ie)*this.cameraToCenterDistance/Math.sin(s.clamp(Math.PI-W-ie,.01,Math.PI-.01)),ze=this.point,He=ze.x,Xe=ze.y,at=1.01*(Math.cos(Math.PI/2-this._pitch)*_e+this.cameraToCenterDistance),wt=this.height/50,At=new Float64Array(16);s.perspective(At,this._fov,this.width/this.height,wt,at),At[8]=2*-$.x/this.width,At[9]=2*$.y/this.height,s.scale(At,At,[1,-1,1]),s.translate(At,At,[0,0,-this.cameraToCenterDistance]),s.rotateX(At,At,this._pitch),s.rotateZ(At,At,this.angle),s.translate(At,At,[-He,-Xe,0]),this.mercatorMatrix=s.scale([],At,[this.worldSize,this.worldSize,this.worldSize]),s.scale(At,At,[1,1,s.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=At,this.invProjMatrix=s.invert([],this.projMatrix);var re=this.width%2/2,ve=this.height%2/2,Le=Math.cos(this.angle),Fe=Math.sin(this.angle),Ve=He-Math.round(He)+Le*re+Fe*ve,We=Xe-Math.round(Xe)+Le*ve+Fe*re,$e=new Float64Array(At);if(s.translate($e,$e,[Ve>.5?Ve-1:Ve,We>.5?We-1:We,0]),this.alignedProjMatrix=$e,At=s.create(),s.scale(At,At,[this.width/2,-this.height/2,1]),s.translate(At,At,[1,-1,0]),this.labelPlaneMatrix=At,At=s.create(),s.scale(At,At,[1,-1,1]),s.translate(At,At,[-1,-1,0]),s.scale(At,At,[2/this.width,2/this.height,1]),this.glCoordMatrix=At,this.pixelMatrix=s.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(At=s.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=At,this._posMatrixCache={},this._alignedPosMatrixCache={}}},oi.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var q=this.pointCoordinate(new s.Point(0,0)),$=[q.x*this.worldSize,q.y*this.worldSize,0,1];return s.transformMat4($,$,this.pixelMatrix)[3]/this.cameraToCenterDistance},oi.prototype.getCameraPoint=function(){var q=this._pitch,$=Math.tan(q)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new s.Point(0,$))},oi.prototype.getCameraQueryGeometry=function(q){var $=this.getCameraPoint();if(q.length===1)return[q[0],$];for(var W=$.x,ie=$.y,_e=$.x,ze=$.y,He=0,Xe=q;He=3&&!q.some(function(W){return isNaN(W)})){var $=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(q[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+q[2],+q[1]],zoom:+q[0],bearing:$,pitch:+(q[4]||0)}),!0}return!1},es.prototype._updateHashUnthrottled=function(){var q=this.getHashString();try{s.window.history.replaceState(s.window.history.state,"",q)}catch{}};var zo={linearity:.3,easing:s.bezier(0,0,.3,1)},Gl=s.extend({deceleration:2500,maxSpeed:1400},zo),wu=s.extend({deceleration:20,maxSpeed:1400},zo),Fs=s.extend({deceleration:1e3,maxSpeed:360},zo),Tu=s.extend({deceleration:1e3,maxSpeed:90},zo),Bs=function(q){this._map=q,this.clear()};function ts(q,$){(!q.duration||q.duration<$.duration)&&(q.duration=$.duration,q.easing=$.easing)}function Ns(q,$,W){var ie=W.maxSpeed,_e=W.linearity,ze=W.deceleration,He=s.clamp(q*_e/($/1e3),-ie,ie),Xe=Math.abs(He)/(ze*_e);return{easing:W.easing,duration:1e3*Xe,amount:He*(Xe/2)}}Bs.prototype.clear=function(){this._inertiaBuffer=[]},Bs.prototype.record=function(q){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:s.browser.now(),settings:q})},Bs.prototype._drainInertiaBuffer=function(){for(var q=this._inertiaBuffer,$=s.browser.now();q.length>0&&$-q[0].time>160;)q.shift()},Bs.prototype._onMoveEnd=function(q){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var $={zoom:0,bearing:0,pitch:0,pan:new s.Point(0,0),pinchAround:void 0,around:void 0},W=0,ie=this._inertiaBuffer;W=this._clickTolerance||this._map.fire(new Oi(q.type,this._map,q))},$i.prototype.dblclick=function(q){return this._firePreventable(new Oi(q.type,this._map,q))},$i.prototype.mouseover=function(q){this._map.fire(new Oi(q.type,this._map,q))},$i.prototype.mouseout=function(q){this._map.fire(new Oi(q.type,this._map,q))},$i.prototype.touchstart=function(q){return this._firePreventable(new Do(q.type,this._map,q))},$i.prototype.touchmove=function(q){this._map.fire(new Do(q.type,this._map,q))},$i.prototype.touchend=function(q){this._map.fire(new Do(q.type,this._map,q))},$i.prototype.touchcancel=function(q){this._map.fire(new Do(q.type,this._map,q))},$i.prototype._firePreventable=function(q){if(this._map.fire(q),q.defaultPrevented)return{}},$i.prototype.isEnabled=function(){return!0},$i.prototype.isActive=function(){return!1},$i.prototype.enable=function(){},$i.prototype.disable=function(){};var va=function(q){this._map=q};va.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},va.prototype.mousemove=function(q){this._map.fire(new Oi(q.type,this._map,q))},va.prototype.mousedown=function(){this._delayContextMenu=!0},va.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Oi("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},va.prototype.contextmenu=function(q){this._delayContextMenu?this._contextMenuEvent=q:this._map.fire(new Oi(q.type,this._map,q)),this._map.listens("contextmenu")&&q.preventDefault()},va.prototype.isEnabled=function(){return!0},va.prototype.isActive=function(){return!1},va.prototype.enable=function(){},va.prototype.disable=function(){};var ma=function(q,$){this._map=q,this._el=q.getCanvasContainer(),this._container=q.getContainer(),this._clickTolerance=$.clickTolerance||1};function ha(q,$){for(var W={},ie=0;iethis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=q.timeStamp),W.length===this.numTouches&&(this.centroid=function(ie){for(var _e=new s.Point(0,0),ze=0,He=ie;ze30)&&(this.aborted=!0)}}},Ia.prototype.touchend=function(q,$,W){if((!this.centroid||q.timeStamp-this.startTime>500)&&(this.aborted=!0),W.length===0){var ie=!this.aborted&&this.centroid;if(this.reset(),ie)return ie}};var ys=function(q){this.singleTap=new Ia(q),this.numTaps=q.numTaps,this.reset()};ys.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},ys.prototype.touchstart=function(q,$,W){this.singleTap.touchstart(q,$,W)},ys.prototype.touchmove=function(q,$,W){this.singleTap.touchmove(q,$,W)},ys.prototype.touchend=function(q,$,W){var ie=this.singleTap.touchend(q,$,W);if(ie){var _e=q.timeStamp-this.lastTime<500,ze=!this.lastTap||this.lastTap.dist(ie)<30;if(_e&&ze||this.reset(),this.count++,this.lastTime=q.timeStamp,this.lastTap=ie,this.count===this.numTaps)return this.reset(),ie}};var lo=function(){this._zoomIn=new ys({numTouches:1,numTaps:2}),this._zoomOut=new ys({numTouches:2,numTaps:1}),this.reset()};lo.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},lo.prototype.touchstart=function(q,$,W){this._zoomIn.touchstart(q,$,W),this._zoomOut.touchstart(q,$,W)},lo.prototype.touchmove=function(q,$,W){this._zoomIn.touchmove(q,$,W),this._zoomOut.touchmove(q,$,W)},lo.prototype.touchend=function(q,$,W){var ie=this,_e=this._zoomIn.touchend(q,$,W),ze=this._zoomOut.touchend(q,$,W);return _e?(this._active=!0,q.preventDefault(),setTimeout(function(){return ie.reset()},0),{cameraAnimation:function(He){return He.easeTo({duration:300,zoom:He.getZoom()+1,around:He.unproject(_e)},{originalEvent:q})}}):ze?(this._active=!0,q.preventDefault(),setTimeout(function(){return ie.reset()},0),{cameraAnimation:function(He){return He.easeTo({duration:300,zoom:He.getZoom()-1,around:He.unproject(ze)},{originalEvent:q})}}):void 0},lo.prototype.touchcancel=function(){this.reset()},lo.prototype.enable=function(){this._enabled=!0},lo.prototype.disable=function(){this._enabled=!1,this.reset()},lo.prototype.isEnabled=function(){return this._enabled},lo.prototype.isActive=function(){return this._active};var ea=function(q){this.reset(),this._clickTolerance=q.clickTolerance||1};ea.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},ea.prototype._correctButton=function(q,$){return!1},ea.prototype._move=function(q,$){return{}},ea.prototype.mousedown=function(q,$){if(!this._lastPoint){var W=y.mouseButton(q);this._correctButton(q,W)&&(this._lastPoint=$,this._eventButton=W)}},ea.prototype.mousemoveWindow=function(q,$){var W=this._lastPoint;if(W&&(q.preventDefault(),this._moved||!($.dist(W)0&&(this._active=!0);var ie=ha(W,$),_e=new s.Point(0,0),ze=new s.Point(0,0),He=0;for(var Xe in ie){var at=ie[Xe],wt=this._touches[Xe];wt&&(_e._add(at),ze._add(at.sub(wt)),He++,ie[Xe]=at)}if(this._touches=ie,!(HeMath.abs(q.x)}var Or=function(q){function $(){q.apply(this,arguments)}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$.prototype.reset=function(){q.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},$.prototype._start=function(W){this._lastPoints=W,al(W[0].sub(W[1]))&&(this._valid=!1)},$.prototype._move=function(W,ie,_e){var ze=W[0].sub(this._lastPoints[0]),He=W[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(ze,He,_e.timeStamp),this._valid)return this._lastPoints=W,this._active=!0,{pitchDelta:(ze.y+He.y)/2*-.5}},$.prototype.gestureBeginsVertically=function(W,ie,_e){if(this._valid!==void 0)return this._valid;var ze=W.mag()>=2,He=ie.mag()>=2;if(ze||He){if(!ze||!He)return this._firstMove===void 0&&(this._firstMove=_e),_e-this._firstMove<100&&void 0;var Xe=W.y>0==ie.y>0;return al(W)&&al(ie)&&Xe}},$}(Cr),ol={panStep:100,bearingStep:15,pitchStep:10},uo=function(){var q=ol;this._panStep=q.panStep,this._bearingStep=q.bearingStep,this._pitchStep=q.pitchStep};function Xl(q){return q*(2-q)}uo.prototype.reset=function(){this._active=!1},uo.prototype.keydown=function(q){var $=this;if(!(q.altKey||q.ctrlKey||q.metaKey)){var W=0,ie=0,_e=0,ze=0,He=0;switch(q.keyCode){case 61:case 107:case 171:case 187:W=1;break;case 189:case 109:case 173:W=-1;break;case 37:q.shiftKey?ie=-1:(q.preventDefault(),ze=-1);break;case 39:q.shiftKey?ie=1:(q.preventDefault(),ze=1);break;case 38:q.shiftKey?_e=1:(q.preventDefault(),He=-1);break;case 40:q.shiftKey?_e=-1:(q.preventDefault(),He=1);break;default:return}return{cameraAnimation:function(Xe){var at=Xe.getZoom();Xe.easeTo({duration:300,easeId:"keyboardHandler",easing:Xl,zoom:W?Math.round(at)+W*(q.shiftKey?2:1):at,bearing:Xe.getBearing()+ie*$._bearingStep,pitch:Xe.getPitch()+_e*$._pitchStep,offset:[-ze*$._panStep,-He*$._panStep],center:Xe.getCenter()},{originalEvent:q})}}}},uo.prototype.enable=function(){this._enabled=!0},uo.prototype.disable=function(){this._enabled=!1,this.reset()},uo.prototype.isEnabled=function(){return this._enabled},uo.prototype.isActive=function(){return this._active};var Cl=4.000244140625,ya=function(q,$){this._map=q,this._el=q.getCanvasContainer(),this._handler=$,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,s.bindAll(["_onWheel","_onTimeout","_onScrollFrame","_onScrollFinished"],this)};ya.prototype.setZoomRate=function(q){this._defaultZoomRate=q},ya.prototype.setWheelZoomRate=function(q){this._wheelZoomRate=q},ya.prototype.isEnabled=function(){return!!this._enabled},ya.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},ya.prototype.isZooming=function(){return!!this._zooming},ya.prototype.enable=function(q){this.isEnabled()||(this._enabled=!0,this._aroundCenter=q&&q.around==="center")},ya.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},ya.prototype.wheel=function(q){if(this.isEnabled()){var $=q.deltaMode===s.window.WheelEvent.DOM_DELTA_LINE?40*q.deltaY:q.deltaY,W=s.browser.now(),ie=W-(this._lastWheelEventTime||0);this._lastWheelEventTime=W,$!==0&&$%Cl==0?this._type="wheel":$!==0&&Math.abs($)<4?this._type="trackpad":ie>400?(this._type=null,this._lastValue=$,this._timeout=setTimeout(this._onTimeout,40,q)):this._type||(this._type=Math.abs(ie*$)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,$+=this._lastValue)),q.shiftKey&&$&&($/=4),this._type&&(this._lastWheelEvent=q,this._delta-=$,this._active||this._start(q)),q.preventDefault()}},ya.prototype._onTimeout=function(q){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(q)},ya.prototype._start=function(q){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var $=y.mousePos(this._el,q);this._around=s.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject($)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},ya.prototype.renderFrame=function(){return this._onScrollFrame()},ya.prototype._onScrollFrame=function(){var q=this;if(this._frameId&&(this._frameId=null,this.isActive())){var $=this._map.transform;if(this._delta!==0){var W=this._type==="wheel"&&Math.abs(this._delta)>Cl?this._wheelZoomRate:this._defaultZoomRate,ie=2/(1+Math.exp(-Math.abs(this._delta*W)));this._delta<0&&ie!==0&&(ie=1/ie);var _e=typeof this._targetZoom=="number"?$.zoomScale(this._targetZoom):$.scale;this._targetZoom=Math.min($.maxZoom,Math.max($.minZoom,$.scaleZoom(_e*ie))),this._type==="wheel"&&(this._startZoom=$.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var ze,He=typeof this._targetZoom=="number"?this._targetZoom:$.zoom,Xe=this._startZoom,at=this._easing,wt=!1;if(this._type==="wheel"&&Xe&&at){var At=Math.min((s.browser.now()-this._lastWheelEventTime)/200,1),re=at(At);ze=s.number(Xe,He,re),At<1?this._frameId||(this._frameId=!0):wt=!0}else ze=He,wt=!0;return this._active=!0,wt&&(this._active=!1,this._finishTimeout=setTimeout(function(){q._zooming=!1,q._handler._triggerRenderFrame(),delete q._targetZoom,delete q._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!wt,zoomDelta:ze-$.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},ya.prototype._smoothOutEasing=function(q){var $=s.ease;if(this._prevEase){var W=this._prevEase,ie=(s.browser.now()-W.start)/W.duration,_e=W.easing(ie+.01)-W.easing(ie),ze=.27/Math.sqrt(_e*_e+1e-4)*.01,He=Math.sqrt(.0729-ze*ze);$=s.bezier(ze,He,.25,1)}return this._prevEase={start:s.browser.now(),duration:q,easing:$},$},ya.prototype.reset=function(){this._active=!1};var Vs=function(q,$){this._clickZoom=q,this._tapZoom=$};Vs.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},Vs.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},Vs.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},Vs.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var ns=function(){this.reset()};ns.prototype.reset=function(){this._active=!1},ns.prototype.dblclick=function(q,$){return q.preventDefault(),{cameraAnimation:function(W){W.easeTo({duration:300,zoom:W.getZoom()+(q.shiftKey?-1:1),around:W.unproject($)},{originalEvent:q})}}},ns.prototype.enable=function(){this._enabled=!0},ns.prototype.disable=function(){this._enabled=!1,this.reset()},ns.prototype.isEnabled=function(){return this._enabled},ns.prototype.isActive=function(){return this._active};var Wa=function(){this._tap=new ys({numTouches:1,numTaps:1}),this.reset()};Wa.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},Wa.prototype.touchstart=function(q,$,W){this._swipePoint||(this._tapTime&&q.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?W.length>0&&(this._swipePoint=$[0],this._swipeTouch=W[0].identifier):this._tap.touchstart(q,$,W))},Wa.prototype.touchmove=function(q,$,W){if(this._tapTime){if(this._swipePoint){if(W[0].identifier!==this._swipeTouch)return;var ie=$[0],_e=ie.y-this._swipePoint.y;return this._swipePoint=ie,q.preventDefault(),this._active=!0,{zoomDelta:_e/128}}}else this._tap.touchmove(q,$,W)},Wa.prototype.touchend=function(q,$,W){this._tapTime?this._swipePoint&&W.length===0&&this.reset():this._tap.touchend(q,$,W)&&(this._tapTime=q.timeStamp)},Wa.prototype.touchcancel=function(){this.reset()},Wa.prototype.enable=function(){this._enabled=!0},Wa.prototype.disable=function(){this._enabled=!1,this.reset()},Wa.prototype.isEnabled=function(){return this._enabled},Wa.prototype.isActive=function(){return this._active};var xs=function(q,$,W){this._el=q,this._mousePan=$,this._touchPan=W};xs.prototype.enable=function(q){this._inertiaOptions=q||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},xs.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},xs.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},xs.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var _o=function(q,$,W){this._pitchWithRotate=q.pitchWithRotate,this._mouseRotate=$,this._mousePitch=W};_o.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},_o.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},_o.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},_o.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var co=function(q,$,W,ie){this._el=q,this._touchZoom=$,this._touchRotate=W,this._tapDragZoom=ie,this._rotationDisabled=!1,this._enabled=!0};co.prototype.enable=function(q){this._touchZoom.enable(q),this._rotationDisabled||this._touchRotate.enable(q),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},co.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},co.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},co.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},co.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},co.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var Hs=function(q){return q.zoom||q.drag||q.pitch||q.rotate},xa=function(q){function $(){q.apply(this,arguments)}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$}(s.Event);function fo(q){return q.panDelta&&q.panDelta.mag()||q.zoomDelta||q.bearingDelta||q.pitchDelta}var vi=function(q,$){this._map=q,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Bs(q),this._bearingSnap=$.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers($),s.bindAll(["handleEvent","handleWindowEvent"],this);var W=this._el;this._listeners=[[W,"touchstart",{passive:!1}],[W,"touchmove",{passive:!1}],[W,"touchend",void 0],[W,"touchcancel",void 0],[W,"mousedown",void 0],[W,"mousemove",void 0],[W,"mouseup",void 0],[s.window.document,"mousemove",{capture:!0}],[s.window.document,"mouseup",void 0],[W,"mouseover",void 0],[W,"mouseout",void 0],[W,"dblclick",void 0],[W,"click",void 0],[W,"keydown",{capture:!1}],[W,"keyup",void 0],[W,"wheel",{passive:!1}],[W,"contextmenu",void 0],[s.window,"blur",void 0]];for(var ie=0,_e=this._listeners;ie<_e.length;ie+=1){var ze=_e[ie],He=ze[0],Xe=ze[1],at=ze[2];y.addEventListener(He,Xe,He===s.window.document?this.handleWindowEvent:this.handleEvent,at)}};vi.prototype.destroy=function(){for(var q=0,$=this._listeners;q<$.length;q+=1){var W=$[q],ie=W[0],_e=W[1],ze=W[2];y.removeEventListener(ie,_e,ie===s.window.document?this.handleWindowEvent:this.handleEvent,ze)}},vi.prototype._addDefaultHandlers=function(q){var $=this._map,W=$.getCanvasContainer();this._add("mapEvent",new $i($,q));var ie=$.boxZoom=new ma($,q);this._add("boxZoom",ie);var _e=new lo,ze=new ns;$.doubleClickZoom=new Vs(ze,_e),this._add("tapZoom",_e),this._add("clickZoom",ze);var He=new Wa;this._add("tapDragZoom",He);var Xe=$.touchPitch=new Or;this._add("touchPitch",Xe);var at=new Wl(q),wt=new Zl(q);$.dragRotate=new _o(q,at,wt),this._add("mouseRotate",at,["mousePitch"]),this._add("mousePitch",wt,["mouseRotate"]);var At=new Ga(q),re=new Sa(q);$.dragPan=new xs(W,At,re),this._add("mousePan",At),this._add("touchPan",re,["touchZoom","touchRotate"]);var ve=new il,Le=new Yl;$.touchZoomRotate=new co(W,Le,ve,He),this._add("touchRotate",ve,["touchPan","touchZoom"]),this._add("touchZoom",Le,["touchPan","touchRotate"]);var Fe=$.scrollZoom=new ya($,this);this._add("scrollZoom",Fe,["mousePan"]);var Ve=$.keyboard=new uo;this._add("keyboard",Ve),this._add("blockableMapEvent",new va($));for(var We=0,$e=["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"];We<$e.length;We+=1){var tt=$e[We];q.interactive&&q[tt]&&$[tt].enable(q[tt])}},vi.prototype._add=function(q,$,W){this._handlers.push({handlerName:q,handler:$,allowed:W}),this._handlersById[q]=$},vi.prototype.stop=function(){if(!this._updatingCamera){for(var q=0,$=this._handlers;q<$.length;q+=1)$[q].handler.reset();this._inertia.clear(),this._fireEvents({},{}),this._changes=[]}},vi.prototype.isActive=function(){for(var q=0,$=this._handlers;q<$.length;q+=1)if($[q].handler.isActive())return!0;return!1},vi.prototype.isZooming=function(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()},vi.prototype.isRotating=function(){return!!this._eventsInProgress.rotate},vi.prototype.isMoving=function(){return!!Hs(this._eventsInProgress)||this.isZooming()},vi.prototype._blockedByActive=function(q,$,W){for(var ie in q)if(ie!==W&&(!$||$.indexOf(ie)<0))return!0;return!1},vi.prototype.handleWindowEvent=function(q){this.handleEvent(q,q.type+"Window")},vi.prototype._getMapTouches=function(q){for(var $=[],W=0,ie=q;WHe?Math.min(2,Ut):Math.max(.5,Ut),sn=Math.pow(en,1-Qt),rn=ze.unproject(gt.add(zt.mult(Qt*sn)).mult(gn));ze.setLocationAtPoint(ze.renderWorldCopies?rn.wrap():rn,Ve)}_e._fireMoveEvents(ie)},function(Qt){_e._afterEase(ie,Qt)},W),this},$.prototype._prepareEase=function(W,ie,_e){_e===void 0&&(_e={}),this._moving=!0,ie||_e.moving||this.fire(new s.Event("movestart",W)),this._zooming&&!_e.zooming&&this.fire(new s.Event("zoomstart",W)),this._rotating&&!_e.rotating&&this.fire(new s.Event("rotatestart",W)),this._pitching&&!_e.pitching&&this.fire(new s.Event("pitchstart",W))},$.prototype._fireMoveEvents=function(W){this.fire(new s.Event("move",W)),this._zooming&&this.fire(new s.Event("zoom",W)),this._rotating&&this.fire(new s.Event("rotate",W)),this._pitching&&this.fire(new s.Event("pitch",W))},$.prototype._afterEase=function(W,ie){if(!this._easeId||!ie||this._easeId!==ie){delete this._easeId;var _e=this._zooming,ze=this._rotating,He=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,_e&&this.fire(new s.Event("zoomend",W)),ze&&this.fire(new s.Event("rotateend",W)),He&&this.fire(new s.Event("pitchend",W)),this.fire(new s.Event("moveend",W))}},$.prototype.flyTo=function(W,ie){var _e=this;if(!W.essential&&s.browser.prefersReducedMotion){var ze=s.pick(W,["center","zoom","bearing","pitch","around"]);return this.jumpTo(ze,ie)}this.stop(),W=s.extend({offset:[0,0],speed:1.2,curve:1.42,easing:s.ease},W);var He=this.transform,Xe=this.getZoom(),at=this.getBearing(),wt=this.getPitch(),At=this.getPadding(),re="zoom"in W?s.clamp(+W.zoom,He.minZoom,He.maxZoom):Xe,ve="bearing"in W?this._normalizeBearing(W.bearing,at):at,Le="pitch"in W?+W.pitch:wt,Fe="padding"in W?W.padding:He.padding,Ve=He.zoomScale(re-Xe),We=s.Point.convert(W.offset),$e=He.centerPoint.add(We),tt=He.pointLocation($e),lt=s.LngLat.convert(W.center||tt);this._normalizeCenter(lt);var gt=He.project(tt),zt=He.project(lt).sub(gt),Ut=W.curve,Vt=Math.max(He.width,He.height),Qt=Vt/Ve,gn=zt.mag();if("minZoom"in W){var en=s.clamp(Math.min(W.minZoom,Xe,re),He.minZoom,He.maxZoom),sn=Vt/He.zoomScale(en-Xe);Ut=Math.sqrt(sn/gn*2)}var rn=Ut*Ut;function Mn(mr){var wr=(Qt*Qt-Vt*Vt+(mr?-1:1)*rn*rn*gn*gn)/(2*(mr?Qt:Vt)*rn*gn);return Math.log(Math.sqrt(wr*wr+1)-wr)}function xn(mr){return(Math.exp(mr)-Math.exp(-mr))/2}function an(mr){return(Math.exp(mr)+Math.exp(-mr))/2}var zn=Mn(0),Vn=function(mr){return an(zn)/an(zn+Ut*mr)},nr=function(mr){return Vt*((an(zn)*(xn(wr=zn+Ut*mr)/an(wr))-xn(zn))/rn)/gn;var wr},rr=(Mn(1)-zn)/Ut;if(Math.abs(gn)<1e-6||!isFinite(rr)){if(Math.abs(Vt-Qt)<1e-6)return this.easeTo(W,ie);var Tr=QtW.maxDuration&&(W.duration=0),this._zooming=!0,this._rotating=at!==ve,this._pitching=Le!==wt,this._padding=!He.isPaddingEqual(Fe),this._prepareEase(ie,!1),this._ease(function(mr){var wr=mr*rr,Rr=1/Vn(wr);He.zoom=mr===1?re:Xe+He.scaleZoom(Rr),_e._rotating&&(He.bearing=s.number(at,ve,mr)),_e._pitching&&(He.pitch=s.number(wt,Le,mr)),_e._padding&&(He.interpolatePadding(At,Fe,mr),$e=He.centerPoint.add(We));var Jr=mr===1?lt:He.unproject(gt.add(zt.mult(nr(wr))).mult(Rr));He.setLocationAtPoint(He.renderWorldCopies?Jr.wrap():Jr,$e),_e._fireMoveEvents(ie)},function(){return _e._afterEase(ie)},W),this},$.prototype.isEasing=function(){return!!this._easeFrameId},$.prototype.stop=function(){return this._stop()},$.prototype._stop=function(W,ie){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var _e=this._onEaseEnd;delete this._onEaseEnd,_e.call(this,ie)}if(!W){var ze=this.handlers;ze&&ze.stop()}return this},$.prototype._ease=function(W,ie,_e){_e.animate===!1||_e.duration===0?(W(1),ie()):(this._easeStart=s.browser.now(),this._easeOptions=_e,this._onEaseFrame=W,this._onEaseEnd=ie,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},$.prototype._renderFrameCallback=function(){var W=Math.min((s.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(W)),W<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},$.prototype._normalizeBearing=function(W,ie){W=s.wrap(W,-180,180);var _e=Math.abs(W-ie);return Math.abs(W-360-ie)<_e&&(W-=360),Math.abs(W+360-ie)<_e&&(W+=360),W},$.prototype._normalizeCenter=function(W){var ie=this.transform;if(ie.renderWorldCopies&&!ie.lngRange){var _e=W.lng-ie.center.lng;W.lng+=_e>180?-360:_e<-180?360:0}},$}(s.Evented),to=function(q){q===void 0&&(q={}),this.options=q,s.bindAll(["_updateEditLink","_updateData","_updateCompact"],this)};to.prototype.getDefaultPosition=function(){return"bottom-right"},to.prototype.onAdd=function(q){var $=this.options&&this.options.compact;return this._map=q,this._container=y.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._innerContainer=y.create("div","mapboxgl-ctrl-attrib-inner",this._container),$&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),$===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},to.prototype.onRemove=function(){y.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},to.prototype._updateEditLink=function(){var q=this._editLink;q||(q=this._editLink=this._container.querySelector(".mapbox-improve-map"));var $=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||s.config.ACCESS_TOKEN}];if(q){var W=$.reduce(function(ie,_e,ze){return _e.value&&(ie+=_e.key+"="+_e.value+(ze<$.length-1?"&":"")),ie},"?");q.href=s.config.FEEDBACK_URL+"/"+W+(this._map._hash?this._map._hash.getHashString(!0):""),q.rel="noopener nofollow"}},to.prototype._updateData=function(q){!q||q.sourceDataType!=="metadata"&&q.dataType!=="style"||(this._updateAttributions(),this._updateEditLink())},to.prototype._updateAttributions=function(){if(this._map.style){var q=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?q=q.concat(this.options.customAttribution.map(function(Xe){return typeof Xe!="string"?"":Xe})):typeof this.options.customAttribution=="string"&&q.push(this.options.customAttribution)),this._map.style.stylesheet){var $=this._map.style.stylesheet;this.styleOwner=$.owner,this.styleId=$.id}var W=this._map.style.sourceCaches;for(var ie in W){var _e=W[ie];if(_e.used){var ze=_e.getSource();ze.attribution&&q.indexOf(ze.attribution)<0&&q.push(ze.attribution)}}q.sort(function(Xe,at){return Xe.length-at.length});var He=(q=q.filter(function(Xe,at){for(var wt=at+1;wt=0)return!1;return!0})).join(" | ");He!==this._attribHTML&&(this._attribHTML=He,q.length?(this._innerContainer.innerHTML=He,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},to.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact")};var ho=function(){s.bindAll(["_updateLogo"],this),s.bindAll(["_updateCompact"],this)};ho.prototype.onAdd=function(q){this._map=q,this._container=y.create("div","mapboxgl-ctrl");var $=y.create("a","mapboxgl-ctrl-logo");return $.target="_blank",$.rel="noopener nofollow",$.href="https://www.mapbox.com/",$.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),$.setAttribute("rel","noopener nofollow"),this._container.appendChild($),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},ho.prototype.onRemove=function(){y.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},ho.prototype.getDefaultPosition=function(){return"bottom-left"},ho.prototype._updateLogo=function(q){q&&q.sourceDataType!=="metadata"||(this._container.style.display=this._logoRequired()?"block":"none")},ho.prototype._logoRequired=function(){if(this._map.style){var q=this._map.style.sourceCaches;for(var $ in q)if(q[$].getSource().mapbox_logo)return!0;return!1}},ho.prototype._updateCompact=function(){var q=this._container.children;if(q.length){var $=q[0];this._map.getCanvasContainer().offsetWidth<250?$.classList.add("mapboxgl-compact"):$.classList.remove("mapboxgl-compact")}};var Fo=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};Fo.prototype.add=function(q){var $=++this._id;return this._queue.push({callback:q,id:$,cancelled:!1}),$},Fo.prototype.remove=function(q){for(var $=this._currentlyRunning,W=0,ie=$?this._queue.concat($):this._queue;Wie.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(ie.minPitch!=null&&ie.maxPitch!=null&&ie.minPitch>ie.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(ie.minPitch!=null&&ie.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(ie.maxPitch!=null&&ie.maxPitch>Da)throw new Error("maxPitch must be less than or equal to 60");var ze=new oi(ie.minZoom,ie.maxZoom,ie.minPitch,ie.maxPitch,ie.renderWorldCopies);if(q.call(this,ze,ie),this._interactive=ie.interactive,this._maxTileCacheSize=ie.maxTileCacheSize,this._failIfMajorPerformanceCaveat=ie.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=ie.preserveDrawingBuffer,this._antialias=ie.antialias,this._trackResize=ie.trackResize,this._bearingSnap=ie.bearingSnap,this._refreshExpiredTiles=ie.refreshExpiredTiles,this._fadeDuration=ie.fadeDuration,this._crossSourceCollisions=ie.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=ie.collectResourceTiming,this._renderTaskQueue=new Fo,this._controls=[],this._mapId=s.uniqueId(),this._locale=s.extend({},za,ie.locale),this._requestManager=new s.RequestManager(ie.transformRequest,ie.accessToken),typeof ie.container=="string"){if(this._container=s.window.document.getElementById(ie.container),!this._container)throw new Error("Container '"+ie.container+"' not found.")}else{if(!(ie.container instanceof oa))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=ie.container}if(ie.maxBounds&&this.setMaxBounds(ie.maxBounds),s.bindAll(["_onWindowOnline","_onWindowResize","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return _e._update(!1)}),this.on("moveend",function(){return _e._update(!1)}),this.on("zoom",function(){return _e._update(!0)}),s.window!==void 0&&(s.window.addEventListener("online",this._onWindowOnline,!1),s.window.addEventListener("resize",this._onWindowResize,!1)),this.handlers=new vi(this,ie);var He=typeof ie.hash=="string"&&ie.hash||void 0;this._hash=ie.hash&&new es(He).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:ie.center,zoom:ie.zoom,bearing:ie.bearing,pitch:ie.pitch}),ie.bounds&&(this.resize(),this.fitBounds(ie.bounds,s.extend({},ie.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=ie.localIdeographFontFamily,ie.style&&this.setStyle(ie.style,{localIdeographFontFamily:ie.localIdeographFontFamily}),ie.attributionControl&&this.addControl(new to({customAttribution:ie.customAttribution})),this.addControl(new ho,ie.logoPosition),this.on("style.load",function(){_e.transform.unmodified&&_e.jumpTo(_e.style.stylesheet)}),this.on("data",function(Xe){_e._update(Xe.dataType==="style"),_e.fire(new s.Event(Xe.dataType+"data",Xe))}),this.on("dataloading",function(Xe){_e.fire(new s.Event(Xe.dataType+"dataloading",Xe))})}q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$;var W={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return $.prototype._getMapId=function(){return this._mapId},$.prototype.addControl=function(ie,_e){if(_e===void 0&&ie.getDefaultPosition&&(_e=ie.getDefaultPosition()),_e===void 0&&(_e="top-right"),!ie||!ie.onAdd)return this.fire(new s.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var ze=ie.onAdd(this);this._controls.push(ie);var He=this._controlPositions[_e];return _e.indexOf("bottom")!==-1?He.insertBefore(ze,He.firstChild):He.appendChild(ze),this},$.prototype.removeControl=function(ie){if(!ie||!ie.onRemove)return this.fire(new s.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var _e=this._controls.indexOf(ie);return _e>-1&&this._controls.splice(_e,1),ie.onRemove(this),this},$.prototype.resize=function(ie){var _e=this._containerDimensions(),ze=_e[0],He=_e[1];this._resizeCanvas(ze,He),this.transform.resize(ze,He),this.painter.resize(ze,He);var Xe=!this._moving;return Xe&&(this.stop(),this.fire(new s.Event("movestart",ie)).fire(new s.Event("move",ie))),this.fire(new s.Event("resize",ie)),Xe&&this.fire(new s.Event("moveend",ie)),this},$.prototype.getBounds=function(){return this.transform.getBounds()},$.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},$.prototype.setMaxBounds=function(ie){return this.transform.setMaxBounds(s.LngLatBounds.convert(ie)),this._update()},$.prototype.setMinZoom=function(ie){if((ie=ie??-2)>=-2&&ie<=this.transform.maxZoom)return this.transform.minZoom=ie,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=ie,this._update(),this.getZoom()>ie&&this.setZoom(ie),this;throw new Error("maxZoom must be greater than the current minZoom")},$.prototype.getMaxZoom=function(){return this.transform.maxZoom},$.prototype.setMinPitch=function(ie){if((ie=ie??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(ie>=0&&ie<=this.transform.maxPitch)return this.transform.minPitch=ie,this._update(),this.getPitch()Da)throw new Error("maxPitch must be less than or equal to 60");if(ie>=this.transform.minPitch)return this.transform.maxPitch=ie,this._update(),this.getPitch()>ie&&this.setPitch(ie),this;throw new Error("maxPitch must be greater than the current minPitch")},$.prototype.getMaxPitch=function(){return this.transform.maxPitch},$.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},$.prototype.setRenderWorldCopies=function(ie){return this.transform.renderWorldCopies=ie,this._update()},$.prototype.project=function(ie){return this.transform.locationPoint(s.LngLat.convert(ie))},$.prototype.unproject=function(ie){return this.transform.pointLocation(s.Point.convert(ie))},$.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},$.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},$.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},$.prototype._createDelegatedListener=function(ie,_e,ze){var He,Xe=this;if(ie==="mouseenter"||ie==="mouseover"){var at=!1;return{layer:_e,listener:ze,delegates:{mousemove:function(At){var re=Xe.getLayer(_e)?Xe.queryRenderedFeatures(At.point,{layers:[_e]}):[];re.length?at||(at=!0,ze.call(Xe,new Oi(ie,Xe,At.originalEvent,{features:re}))):at=!1},mouseout:function(){at=!1}}}}if(ie==="mouseleave"||ie==="mouseout"){var wt=!1;return{layer:_e,listener:ze,delegates:{mousemove:function(At){(Xe.getLayer(_e)?Xe.queryRenderedFeatures(At.point,{layers:[_e]}):[]).length?wt=!0:wt&&(wt=!1,ze.call(Xe,new Oi(ie,Xe,At.originalEvent)))},mouseout:function(At){wt&&(wt=!1,ze.call(Xe,new Oi(ie,Xe,At.originalEvent)))}}}}return{layer:_e,listener:ze,delegates:(He={},He[ie]=function(At){var re=Xe.getLayer(_e)?Xe.queryRenderedFeatures(At.point,{layers:[_e]}):[];re.length&&(At.features=re,ze.call(Xe,At),delete At.features)},He)}},$.prototype.on=function(ie,_e,ze){if(ze===void 0)return q.prototype.on.call(this,ie,_e);var He=this._createDelegatedListener(ie,_e,ze);for(var Xe in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[ie]=this._delegatedListeners[ie]||[],this._delegatedListeners[ie].push(He),He.delegates)this.on(Xe,He.delegates[Xe]);return this},$.prototype.once=function(ie,_e,ze){if(ze===void 0)return q.prototype.once.call(this,ie,_e);var He=this._createDelegatedListener(ie,_e,ze);for(var Xe in He.delegates)this.once(Xe,He.delegates[Xe]);return this},$.prototype.off=function(ie,_e,ze){var He=this;return ze===void 0?q.prototype.off.call(this,ie,_e):(this._delegatedListeners&&this._delegatedListeners[ie]&&function(Xe){for(var at=Xe[ie],wt=0;wt180;){var He=W.locationPoint(q);if(He.x>=0&&He.y>=0&&He.x<=W.width&&He.y<=W.height)break;q.lng>W.center.lng?q.lng-=360:q.lng+=360}return q}Fr.prototype.down=function(q,$){this.mouseRotate.mousedown(q,$),this.mousePitch&&this.mousePitch.mousedown(q,$),y.disableDrag()},Fr.prototype.move=function(q,$){var W=this.map,ie=this.mouseRotate.mousemoveWindow(q,$);if(ie&&ie.bearingDelta&&W.setBearing(W.getBearing()+ie.bearingDelta),this.mousePitch){var _e=this.mousePitch.mousemoveWindow(q,$);_e&&_e.pitchDelta&&W.setPitch(W.getPitch()+_e.pitchDelta)}},Fr.prototype.off=function(){var q=this.element;y.removeEventListener(q,"mousedown",this.mousedown),y.removeEventListener(q,"touchstart",this.touchstart,{passive:!1}),y.removeEventListener(q,"touchmove",this.touchmove),y.removeEventListener(q,"touchend",this.touchend),y.removeEventListener(q,"touchcancel",this.reset),this.offTemp()},Fr.prototype.offTemp=function(){y.enableDrag(),y.removeEventListener(s.window,"mousemove",this.mousemove),y.removeEventListener(s.window,"mouseup",this.mouseup)},Fr.prototype.mousedown=function(q){this.down(s.extend({},q,{ctrlKey:!0,preventDefault:function(){return q.preventDefault()}}),y.mousePos(this.element,q)),y.addEventListener(s.window,"mousemove",this.mousemove),y.addEventListener(s.window,"mouseup",this.mouseup)},Fr.prototype.mousemove=function(q){this.move(q,y.mousePos(this.element,q))},Fr.prototype.mouseup=function(q){this.mouseRotate.mouseupWindow(q),this.mousePitch&&this.mousePitch.mouseupWindow(q),this.offTemp()},Fr.prototype.touchstart=function(q){q.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=y.touchPos(this.element,q.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:function(){return q.preventDefault()}},this._startPos))},Fr.prototype.touchmove=function(q){q.targetTouches.length!==1?this.reset():(this._lastPos=y.touchPos(this.element,q.targetTouches)[0],this.move({preventDefault:function(){return q.preventDefault()}},this._lastPos))},Fr.prototype.touchend=function(q){q.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)ie.getEast()||_e.latitudeie.getNorth())},$.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}},$.prototype._onSuccess=function(W){if(this._map){if(this._isOutOfMapMaxBounds(W))return this._setErrorState(),this.fire(new s.Event("outofmaxbounds",W)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=W,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(W),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(W),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new s.Event("geolocate",W)),this._finish()}},$.prototype._updateCamera=function(W){var ie=new s.LngLat(W.coords.longitude,W.coords.latitude),_e=W.coords.accuracy,ze=this._map.getBearing(),He=s.extend({bearing:ze},this.options.fitBoundsOptions);this._map.fitBounds(ie.toBounds(_e),He,{geolocateSource:!0})},$.prototype._updateMarker=function(W){if(W){var ie=new s.LngLat(W.coords.longitude,W.coords.latitude);this._accuracyCircleMarker.setLngLat(ie).addTo(this._map),this._userLocationDotMarker.setLngLat(ie).addTo(this._map),this._accuracy=W.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},$.prototype._updateCircleRadius=function(){var W=this._map._container.clientHeight/2,ie=this._map.unproject([0,W]),_e=this._map.unproject([1,W]),ze=ie.distanceTo(_e),He=Math.ceil(2*this._accuracy/ze);this._circleElement.style.width=He+"px",this._circleElement.style.height=He+"px"},$.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},$.prototype._onError=function(W){if(this._map){if(this.options.trackUserLocation)if(W.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var ie=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=ie,this._geolocateButton.setAttribute("aria-label",ie),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(W.code===3&&ll)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new s.Event("error",W)),this._finish()}},$.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},$.prototype._setupUI=function(W){var ie=this;if(this._container.addEventListener("contextmenu",function(He){return He.preventDefault()}),this._geolocateButton=y.create("button","mapboxgl-ctrl-geolocate",this._container),y.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",W===!1){s.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var _e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=_e,this._geolocateButton.setAttribute("aria-label",_e)}else{var ze=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=ze,this._geolocateButton.setAttribute("aria-label",ze)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=y.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new _a(this._dotElement),this._circleElement=y.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new _a({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(He){var Xe=He.originalEvent&&He.originalEvent.type==="resize";He.geolocateSource||ie._watchState!=="ACTIVE_LOCK"||Xe||(ie._watchState="BACKGROUND",ie._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),ie._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),ie.fire(new s.Event("trackuserlocationend")))})},$.prototype.trigger=function(){if(!this._setup)return s.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new s.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Fa--,ll=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new s.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new s.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){var W;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),++Fa>1?(W={maximumAge:6e5,timeout:0},ll=!0):(W=this.options.positionOptions,ll=!1),this._geolocationWatchID=s.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,W)}}else s.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},$.prototype._clearWatch=function(){s.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},$}(s.Evented),_i={maxWidth:100,unit:"metric"},Si=function(q){this.options=s.extend({},_i,q),s.bindAll(["_onMove","setUnit"],this)};function Jl(q,$,W){var ie=W&&W.maxWidth||100,_e=q._container.clientHeight/2,ze=q.unproject([0,_e]),He=q.unproject([ie,_e]),Xe=ze.distanceTo(He);if(W&&W.unit==="imperial"){var at=3.2808*Xe;at>5280?et($,ie,at/5280,q._getUIString("ScaleControl.Miles")):et($,ie,at,q._getUIString("ScaleControl.Feet"))}else W&&W.unit==="nautical"?et($,ie,Xe/1852,q._getUIString("ScaleControl.NauticalMiles")):Xe>=1e3?et($,ie,Xe/1e3,q._getUIString("ScaleControl.Kilometers")):et($,ie,Xe,q._getUIString("ScaleControl.Meters"))}function et(q,$,W,ie){var _e,ze,He,Xe=(_e=W,(ze=Math.pow(10,(""+Math.floor(_e)).length-1))*((He=_e/ze)>=10?10:He>=5?5:He>=3?3:He>=2?2:He>=1?1:function(wt){var At=Math.pow(10,Math.ceil(-Math.log(wt)/Math.LN10));return Math.round(wt*At)/At}(He))),at=Xe/W;q.style.width=$*at+"px",q.innerHTML=Xe+" "+ie}Si.prototype.getDefaultPosition=function(){return"bottom-left"},Si.prototype._onMove=function(){Jl(this._map,this._container,this.options)},Si.prototype.onAdd=function(q){return this._map=q,this._container=y.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",q.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Si.prototype.onRemove=function(){y.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Si.prototype.setUnit=function(q){this.options.unit=q,Jl(this._map,this._container,this.options)};var rt=function(q){this._fullscreen=!1,q&&q.container&&(q.container instanceof s.window.HTMLElement?this._container=q.container:s.warnOnce("Full screen control 'container' must be a DOM element.")),s.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in s.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in s.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in s.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in s.window.document&&(this._fullscreenchange="MSFullscreenChange")};rt.prototype.onAdd=function(q){return this._map=q,this._container||(this._container=this._map.getContainer()),this._controlContainer=y.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",s.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},rt.prototype.onRemove=function(){y.remove(this._controlContainer),this._map=null,s.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},rt.prototype._checkFullscreenSupport=function(){return!!(s.window.document.fullscreenEnabled||s.window.document.mozFullScreenEnabled||s.window.document.msFullscreenEnabled||s.window.document.webkitFullscreenEnabled)},rt.prototype._setupUI=function(){var q=this._fullscreenButton=y.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);y.create("span","mapboxgl-ctrl-icon",q).setAttribute("aria-hidden",!0),q.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),s.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},rt.prototype._updateTitle=function(){var q=this._getTitle();this._fullscreenButton.setAttribute("aria-label",q),this._fullscreenButton.title=q},rt.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},rt.prototype._isFullscreen=function(){return this._fullscreen},rt.prototype._changeIcon=function(){(s.window.document.fullscreenElement||s.window.document.mozFullScreenElement||s.window.document.webkitFullscreenElement||s.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},rt.prototype._onClickFullscreen=function(){this._isFullscreen()?s.window.document.exitFullscreen?s.window.document.exitFullscreen():s.window.document.mozCancelFullScreen?s.window.document.mozCancelFullScreen():s.window.document.msExitFullscreen?s.window.document.msExitFullscreen():s.window.document.webkitCancelFullScreen&&s.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var ct={closeButton:!0,closeOnClick:!0,className:"",maxWidth:"240px"},vt=function(q){function $(W){q.call(this),this.options=s.extend(Object.create(ct),W),s.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return q&&($.__proto__=q),$.prototype=Object.create(q&&q.prototype),$.prototype.constructor=$,$.prototype.addTo=function(W){return this._map&&this.remove(),this._map=W,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new s.Event("open")),this},$.prototype.isOpen=function(){return!!this._map},$.prototype.remove=function(){return this._content&&y.remove(this._content),this._container&&(y.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new s.Event("close")),this},$.prototype.getLngLat=function(){return this._lngLat},$.prototype.setLngLat=function(W){return this._lngLat=s.LngLat.convert(W),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},$.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},$.prototype.getElement=function(){return this._container},$.prototype.setText=function(W){return this.setDOMContent(s.window.document.createTextNode(W))},$.prototype.setHTML=function(W){var ie,_e=s.window.document.createDocumentFragment(),ze=s.window.document.createElement("body");for(ze.innerHTML=W;ie=ze.firstChild;)_e.appendChild(ie);return this.setDOMContent(_e)},$.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},$.prototype.setMaxWidth=function(W){return this.options.maxWidth=W,this._update(),this},$.prototype.setDOMContent=function(W){return this._createContent(),this._content.appendChild(W),this._update(),this},$.prototype.addClassName=function(W){this._container&&this._container.classList.add(W)},$.prototype.removeClassName=function(W){this._container&&this._container.classList.remove(W)},$.prototype.toggleClassName=function(W){if(this._container)return this._container.classList.toggle(W)},$.prototype._createContent=function(){this._content&&y.remove(this._content),this._content=y.create("div","mapboxgl-popup-content",this._container),this.options.closeButton&&(this._closeButton=y.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},$.prototype._onMouseUp=function(W){this._update(W.point)},$.prototype._onMouseMove=function(W){this._update(W.point)},$.prototype._onDrag=function(W){this._update(W.point)},$.prototype._update=function(W){var ie=this,_e=this._lngLat||this._trackPointer;if(this._map&&_e&&this._content&&(this._container||(this._container=y.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=y.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(ve){return ie._container.classList.add(ve)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Ur(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||W)){var ze=this._pos=this._trackPointer&&W?W:this._map.project(this._lngLat),He=this.options.anchor,Xe=Mt(this.options.offset);if(!He){var at,wt=this._container.offsetWidth,At=this._container.offsetHeight;at=ze.y+Xe.bottom.ythis._map.transform.height-At?["bottom"]:[],ze.xthis._map.transform.width-wt/2&&at.push("right"),He=at.length===0?"bottom":at.join("-")}var re=ze.add(Xe[He]).round();y.setTransform(this._container,sl[He]+" translate("+re.x+"px,"+re.y+"px)"),is(this._container,He,"popup")}},$.prototype._onClose=function(){this.remove()},$}(s.Evented);function Mt(q){if(q){if(typeof q=="number"){var $=Math.round(Math.sqrt(.5*Math.pow(q,2)));return{center:new s.Point(0,0),top:new s.Point(0,q),"top-left":new s.Point($,$),"top-right":new s.Point(-$,$),bottom:new s.Point(0,-q),"bottom-left":new s.Point($,-$),"bottom-right":new s.Point(-$,-$),left:new s.Point(q,0),right:new s.Point(-q,0)}}if(q instanceof s.Point||Array.isArray(q)){var W=s.Point.convert(q);return{center:W,top:W,"top-left":W,"top-right":W,bottom:W,"bottom-left":W,"bottom-right":W,left:W,right:W}}return{center:s.Point.convert(q.center||[0,0]),top:s.Point.convert(q.top||[0,0]),"top-left":s.Point.convert(q["top-left"]||[0,0]),"top-right":s.Point.convert(q["top-right"]||[0,0]),bottom:s.Point.convert(q.bottom||[0,0]),"bottom-left":s.Point.convert(q["bottom-left"]||[0,0]),"bottom-right":s.Point.convert(q["bottom-right"]||[0,0]),left:s.Point.convert(q.left||[0,0]),right:s.Point.convert(q.right||[0,0])}}return Mt(new s.Point(0,0))}var kt={version:s.version,supported:T,setRTLTextPlugin:s.setRTLTextPlugin,getRTLTextPluginStatus:s.getRTLTextPluginStatus,Map:bs,NavigationControl:po,GeolocateControl:as,AttributionControl:to,ScaleControl:Si,FullscreenControl:rt,Popup:vt,Marker:_a,Style:cr,LngLat:s.LngLat,LngLatBounds:s.LngLatBounds,Point:s.Point,MercatorCoordinate:s.MercatorCoordinate,Evented:s.Evented,config:s.config,prewarm:function(){Ct().acquire(ut)},clearPrewarmedResources:function(){var q=bt;q&&(q.isPreloaded()&&q.numActive()===1?(q.release(ut),bt=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return s.config.ACCESS_TOKEN},set accessToken(q){s.config.ACCESS_TOKEN=q},get baseApiUrl(){return s.config.API_URL},set baseApiUrl(q){s.config.API_URL=q},get workerCount(){return pt.workerCount},set workerCount(q){pt.workerCount=q},get maxParallelImageRequests(){return s.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(q){s.config.MAX_PARALLEL_IMAGE_REQUESTS=q},clearStorage:function(q){s.clearTileCache(q)},workerUrl:""};return kt}),_}()},27084:function(D){D.exports=Math.log2||function(E){return Math.log(E)*Math.LOG2E}},16825:function(D,E,e){D.exports=function(w,s){s||(s=w,w=window);var T=0,y=0,f=0,l={shift:!1,alt:!1,control:!1,meta:!1},t=!1;function i(v){var x=!1;return"altKey"in v&&(x=x||v.altKey!==l.alt,l.alt=!!v.altKey),"shiftKey"in v&&(x=x||v.shiftKey!==l.shift,l.shift=!!v.shiftKey),"ctrlKey"in v&&(x=x||v.ctrlKey!==l.control,l.control=!!v.ctrlKey),"metaKey"in v&&(x=x||v.metaKey!==l.meta,l.meta=!!v.metaKey),x}function r(v,x){var g=_.x(x),m=_.y(x);"buttons"in x&&(v=0|x.buttons),(v!==T||g!==y||m!==f||i(x))&&(T=0|v,y=g||0,f=m||0,s&&s(T,y,f,l))}function n(v){r(0,v)}function o(){(T||y||f||l.shift||l.alt||l.meta||l.control)&&(y=f=0,T=0,l.shift=l.alt=l.control=l.meta=!1,s&&s(0,0,0,l))}function a(v){i(v)&&s&&s(T,y,f,l)}function u(v){_.buttons(v)===0?r(0,v):r(T,v)}function p(v){r(T|_.buttons(v),v)}function c(v){r(T&~_.buttons(v),v)}function b(){t||(t=!0,w.addEventListener("mousemove",u),w.addEventListener("mousedown",p),w.addEventListener("mouseup",c),w.addEventListener("mouseleave",n),w.addEventListener("mouseenter",n),w.addEventListener("mouseout",n),w.addEventListener("mouseover",n),w.addEventListener("blur",o),w.addEventListener("keyup",a),w.addEventListener("keydown",a),w.addEventListener("keypress",a),w!==window&&(window.addEventListener("blur",o),window.addEventListener("keyup",a),window.addEventListener("keydown",a),window.addEventListener("keypress",a)))}b();var d={element:w};return Object.defineProperties(d,{enabled:{get:function(){return t},set:function(v){v?b():t&&(t=!1,w.removeEventListener("mousemove",u),w.removeEventListener("mousedown",p),w.removeEventListener("mouseup",c),w.removeEventListener("mouseleave",n),w.removeEventListener("mouseenter",n),w.removeEventListener("mouseout",n),w.removeEventListener("mouseover",n),w.removeEventListener("blur",o),w.removeEventListener("keyup",a),w.removeEventListener("keydown",a),w.removeEventListener("keypress",a),w!==window&&(window.removeEventListener("blur",o),window.removeEventListener("keyup",a),window.removeEventListener("keydown",a),window.removeEventListener("keypress",a)))},enumerable:!0},buttons:{get:function(){return T},enumerable:!0},x:{get:function(){return y},enumerable:!0},y:{get:function(){return f},enumerable:!0},mods:{get:function(){return l},enumerable:!0}}),d};var _=e(74311)},48956:function(D){var E={left:0,top:0};D.exports=function(e,_,w){_=_||e.currentTarget||e.srcElement,Array.isArray(w)||(w=[0,0]);var s,T=e.clientX||0,y=e.clientY||0,f=(s=_)===window||s===document||s===document.body?E:s.getBoundingClientRect();return w[0]=T-f.left,w[1]=y-f.top,w}},74311:function(D,E){function e(_){return _.target||_.srcElement||window}E.buttons=function(_){if(typeof _=="object"){if("buttons"in _)return _.buttons;if("which"in _){if((w=_.which)===2)return 4;if(w===3)return 2;if(w>0)return 1<=0)return 1<0&&r(o,k))}catch(h){p.call(new b(k),h)}}}function p(g){var m=this;m.triggered||(m.triggered=!0,m.def&&(m=m.def),m.msg=g,m.state=2,m.chain.length>0&&r(o,m))}function c(g,m,k,h){for(var M=0;M1&&(t*=v=Math.sqrt(v),i*=v);var x=t*t,g=i*i,m=(n==o?-1:1)*Math.sqrt(Math.abs((x*g-x*d*d-g*b*b)/(x*d*d+g*b*b)));m==1/0&&(m=1);var k=m*t*d/i+(f+a)/2,h=m*-i*b/t+(l+u)/2,M=Math.asin(((l-h)/i).toFixed(9)),A=Math.asin(((u-h)/i).toFixed(9));(M=fA&&(M-=2*E),!o&&A>M&&(A-=2*E)}if(Math.abs(A-M)>e){var C=A,L=a,O=u;A=M+e*(o&&A>M?1:-1);var I=s(a=k+t*Math.cos(A),u=h+i*Math.sin(A),t,i,r,0,o,L,O,[A,C,k,h])}var R=Math.tan((A-M)/4),U=4/3*t*R,B=4/3*i*R,G=[2*f-(f+U*Math.sin(M)),2*l-(l-B*Math.cos(M)),a+U*Math.sin(A),u-B*Math.cos(A),a,u];if(p)return G;I&&(G=G.concat(I));for(var N=0;N7&&(t.push(v.splice(0,7)),v.unshift("C"));break;case"S":var g=p,m=c;l!="C"&&l!="S"||(g+=g-i,m+=m-r),v=["C",g,m,v[1],v[2],v[3],v[4]];break;case"T":l=="Q"||l=="T"?(a=2*p-a,u=2*c-u):(a=p,u=c),v=w(p,c,a,u,v[1],v[2]);break;case"Q":a=v[1],u=v[2],v=w(p,c,v[1],v[2],v[3],v[4]);break;case"L":v=_(p,c,v[1],v[2]);break;case"H":v=_(p,c,v[1],c);break;case"V":v=_(p,c,p,v[1]);break;case"Z":v=_(p,c,n,o)}l=x,p=v[v.length-2],c=v[v.length-1],v.length>4?(i=v[v.length-4],r=v[v.length-3]):(i=p,r=c),t.push(v)}return t}},56131:function(D){var E=Object.getOwnPropertySymbols,e=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable;function w(s){if(s==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(s)}D.exports=function(){try{if(!Object.assign)return!1;var s=new String("abc");if(s[5]="de",Object.getOwnPropertyNames(s)[0]==="5")return!1;for(var T={},y=0;y<10;y++)T["_"+String.fromCharCode(y)]=y;if(Object.getOwnPropertyNames(T).map(function(l){return T[l]}).join("")!=="0123456789")return!1;var f={};return"abcdefghijklmnopqrst".split("").forEach(function(l){f[l]=l}),Object.keys(Object.assign({},f)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}()?Object.assign:function(s,T){for(var y,f,l=w(s),t=1;t"u")return!1;for(var o in window)try{if(!r["$"+o]&&w.call(window,o)&&window[o]!==null&&typeof window[o]=="object")try{i(window[o])}catch{return!0}}catch{return!0}return!1}();_=function(o){var a=o!==null&&typeof o=="object",u=s.call(o)==="[object Function]",p=T(o),c=a&&s.call(o)==="[object String]",b=[];if(!a&&!u&&!p)throw new TypeError("Object.keys called on a non-object");var d=l&&u;if(c&&o.length>0&&!w.call(o,0))for(var v=0;v0)for(var x=0;x"u"||!n)return i(h);try{return i(h)}catch{return!1}}(o),k=0;k=0&&E.call(e.callee)==="[object Function]"),w}},88641:function(D){function E(w,s){if(typeof w!="string")return[w];var T=[w];typeof s=="string"||Array.isArray(s)?s={brackets:s}:s||(s={});var y=s.brackets?Array.isArray(s.brackets)?s.brackets:[s.brackets]:["{}","[]","()"],f=s.escape||"___",l=!!s.flat;y.forEach(function(i){var r=new RegExp(["\\",i[0],"[^\\",i[0],"\\",i[1],"]*\\",i[1]].join("")),n=[];function o(a,u,p){var c=T.push(a.slice(i[0].length,-i[1].length))-1;return n.push(c),f+c+f}T.forEach(function(a,u){for(var p,c=0;a!=p;)if(p=a,a=a.replace(r,o),c++>1e4)throw Error("References have circular dependency. Please, check them.");T[u]=a}),n=n.reverse(),T=T.map(function(a){return n.forEach(function(u){a=a.replace(new RegExp("(\\"+f+u+"\\"+f+")","g"),i[0]+"$1"+i[1])}),a})});var t=new RegExp("\\"+f+"([0-9]+)\\"+f);return l?T:function i(r,n,o){for(var a,u=[],p=0;a=t.exec(r);){if(p++>1e4)throw Error("Circular references in parenthesis");u.push(r.slice(0,a.index)),u.push(i(n[a[1]],n)),r=r.slice(a.index+a[0].length)}return u.push(r),u}(T[0],T)}function e(w,s){if(s&&s.flat){var T,y=s&&s.escape||"___",f=w[0];if(!f)return"";for(var l=new RegExp("\\"+y+"([0-9]+)\\"+y),t=0;f!=T;){if(t++>1e4)throw Error("Circular references in "+w);T=f,f=f.replace(l,i)}return f}return w.reduce(function r(n,o){return Array.isArray(o)&&(o=o.reduce(r,"")),n+o},"");function i(r,n){if(w[n]==null)throw Error("Reference "+n+"is undefined");return w[n]}}function _(w,s){return Array.isArray(w)?e(w,s):E(w,s)}_.parse=E,_.stringify=e,D.exports=_},18863:function(D,E,e){var _=e(71299);D.exports=function(w){var s;return arguments.length>1&&(w=arguments),typeof w=="string"?w=w.split(/\s/).map(parseFloat):typeof w=="number"&&(w=[w]),w.length&&typeof w[0]=="number"?s=w.length===1?{width:w[0],height:w[0],x:0,y:0}:w.length===2?{width:w[0],height:w[1],x:0,y:0}:{x:w[0],y:w[1],width:w[2]-w[0]||0,height:w[3]-w[1]||0}:w&&(s={x:(w=_(w,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"})).left||0,y:w.top||0},w.width==null?w.right?s.width=w.right-s.x:s.width=0:s.width=w.width,w.height==null?w.bottom?s.height=w.bottom-s.y:s.height=0:s.height=w.height),s}},95616:function(D){D.exports=function(w){var s=[];return w.replace(e,function(T,y,f){var l=y.toLowerCase();for(f=function(t){var i=t.match(_);return i?i.map(Number):[]}(f),l=="m"&&f.length>2&&(s.push([y].concat(f.splice(0,2))),l="l",y=y=="m"?"l":"L");;){if(f.length==E[l])return f.unshift(y),s.push(f);if(f.lengthT!=o>T&&s<(n-i)*(T-r)/(o-r)+i&&(y=!y)}return y}},52142:function(D,E,e){var _,w=e(69444),s=e(29023),T=e(87263),y=e(11328),f=e(55968),l=e(10670),t=!1,i=s();function r(n,o,a){var u=_.segments(n),p=_.segments(o),c=a(_.combine(u,p));return _.polygon(c)}_={buildLog:function(n){return n===!0?t=w():n===!1&&(t=!1),t!==!1&&t.list},epsilon:function(n){return i.epsilon(n)},segments:function(n){var o=T(!0,i,t);return n.regions.forEach(o.addRegion),{segments:o.calculate(n.inverted),inverted:n.inverted}},combine:function(n,o){return{combined:T(!1,i,t).calculate(n.segments,n.inverted,o.segments,o.inverted),inverted1:n.inverted,inverted2:o.inverted}},selectUnion:function(n){return{segments:f.union(n.combined,t),inverted:n.inverted1||n.inverted2}},selectIntersect:function(n){return{segments:f.intersect(n.combined,t),inverted:n.inverted1&&n.inverted2}},selectDifference:function(n){return{segments:f.difference(n.combined,t),inverted:n.inverted1&&!n.inverted2}},selectDifferenceRev:function(n){return{segments:f.differenceRev(n.combined,t),inverted:!n.inverted1&&n.inverted2}},selectXor:function(n){return{segments:f.xor(n.combined,t),inverted:n.inverted1!==n.inverted2}},polygon:function(n){return{regions:y(n.segments,i,t),inverted:n.inverted}},polygonFromGeoJSON:function(n){return l.toPolygon(_,n)},polygonToGeoJSON:function(n){return l.fromPolygon(_,i,n)},union:function(n,o){return r(n,o,_.selectUnion)},intersect:function(n,o){return r(n,o,_.selectIntersect)},difference:function(n,o){return r(n,o,_.selectDifference)},differenceRev:function(n,o){return r(n,o,_.selectDifferenceRev)},xor:function(n,o){return r(n,o,_.selectXor)}},typeof window=="object"&&(window.PolyBool=_),D.exports=_},69444:function(D){D.exports=function(){var E,e=0,_=!1;function w(s,T){return E.list.push({type:s,data:T?JSON.parse(JSON.stringify(T)):void 0}),E}return E={list:[],segmentId:function(){return e++},checkIntersection:function(s,T){return w("check",{seg1:s,seg2:T})},segmentChop:function(s,T){return w("div_seg",{seg:s,pt:T}),w("chop",{seg:s,pt:T})},statusRemove:function(s){return w("pop_seg",{seg:s})},segmentUpdate:function(s){return w("seg_update",{seg:s})},segmentNew:function(s,T){return w("new_seg",{seg:s,primary:T})},segmentRemove:function(s){return w("rem_seg",{seg:s})},tempStatus:function(s,T,y){return w("temp_status",{seg:s,above:T,below:y})},rewind:function(s){return w("rewind",{seg:s})},status:function(s,T,y){return w("status",{seg:s,above:T,below:y})},vert:function(s){return s===_?E:(_=s,w("vert",{x:s}))},log:function(s){return typeof s!="string"&&(s=JSON.stringify(s,!1," ")),w("log",{txt:s})},reset:function(){return w("reset")},selected:function(s){return w("selected",{segs:s})},chainStart:function(s){return w("chain_start",{seg:s})},chainRemoveHead:function(s,T){return w("chain_rem_head",{index:s,pt:T})},chainRemoveTail:function(s,T){return w("chain_rem_tail",{index:s,pt:T})},chainNew:function(s,T){return w("chain_new",{pt1:s,pt2:T})},chainMatch:function(s){return w("chain_match",{index:s})},chainClose:function(s){return w("chain_close",{index:s})},chainAddHead:function(s,T){return w("chain_add_head",{index:s,pt:T})},chainAddTail:function(s,T){return w("chain_add_tail",{index:s,pt:T})},chainConnect:function(s,T){return w("chain_con",{index1:s,index2:T})},chainReverse:function(s){return w("chain_rev",{index:s})},chainJoin:function(s,T){return w("chain_join",{index1:s,index2:T})},done:function(){return w("done")}}}},29023:function(D){D.exports=function(E){typeof E!="number"&&(E=1e-10);var e={epsilon:function(_){return typeof _=="number"&&(E=_),E},pointAboveOrOnLine:function(_,w,s){var T=w[0],y=w[1],f=s[0],l=s[1],t=_[0];return(f-T)*(_[1]-y)-(l-y)*(t-T)>=-E},pointBetween:function(_,w,s){var T=_[1]-w[1],y=s[0]-w[0],f=_[0]-w[0],l=s[1]-w[1],t=f*y+T*l;return!(t-E)},pointsSameX:function(_,w){return Math.abs(_[0]-w[0])E!=f-T>E&&(y-i)*(T-r)/(f-r)+i-s>E&&(l=!l),y=i,f=r}return l}};return e}},10670:function(D){var E={toPolygon:function(e,_){function w(y){if(y.length<=0)return e.segments({inverted:!1,regions:[]});function f(i){var r=i.slice(0,i.length-1);return e.segments({inverted:!1,regions:[r]})}for(var l=f(y[0]),t=1;t0})}function p(C,L){var O=C.seg,I=L.seg,R=O.start,U=O.end,B=I.start,G=I.end;T&&T.checkIntersection(O,I);var N=s.linesIntersect(R,U,B,G);if(N===!1){if(!s.pointsCollinear(R,U,B)||s.pointsSame(R,G)||s.pointsSame(U,B))return!1;var j=s.pointsSame(R,B),V=s.pointsSame(U,G);if(j&&V)return L;var H=!j&&s.pointBetween(R,B,G),ee=!V&&s.pointBetween(U,B,G);if(j)return ee?i(L,U):i(C,G),L;H&&(V||(ee?i(L,U):i(C,G)),i(L,R))}else N.alongA===0&&(N.alongB===-1?i(C,B):N.alongB===0?i(C,N.pt):N.alongB===1&&i(C,G)),N.alongB===0&&(N.alongA===-1?i(L,R):N.alongA===0?i(L,N.pt):N.alongA===1&&i(L,U));return!1}for(var c=[];!f.isEmpty();){var b=f.getHead();if(T&&T.vert(b.pt[0]),b.isStart){let C=function(){if(v){var L=p(b,v);if(L)return L}return!!x&&p(b,x)};var A=C;T&&T.segmentNew(b.seg,b.primary);var d=u(b),v=d.before?d.before.ev:null,x=d.after?d.after.ev:null;T&&T.tempStatus(b.seg,!!v&&v.seg,!!x&&x.seg);var g,m,k=C();if(k&&(w?(m=b.seg.myFill.below===null||b.seg.myFill.above!==b.seg.myFill.below)&&(k.seg.myFill.above=!k.seg.myFill.above):k.seg.otherFill=b.seg.myFill,T&&T.segmentUpdate(k.seg),b.other.remove(),b.remove()),f.getHead()!==b){T&&T.rewind(b.seg);continue}w?(m=b.seg.myFill.below===null||b.seg.myFill.above!==b.seg.myFill.below,b.seg.myFill.below=x?x.seg.myFill.above:n,b.seg.myFill.above=m?!b.seg.myFill.below:b.seg.myFill.below):b.seg.otherFill===null&&(g=x?b.primary===x.primary?x.seg.otherFill.above:x.seg.myFill.above:b.primary?o:n,b.seg.otherFill={above:g,below:g}),T&&T.status(b.seg,!!v&&v.seg,!!x&&x.seg),b.other.status=d.insert(_.node({ev:b}))}else{var h=b.status;if(h===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(a.exists(h.prev)&&a.exists(h.next)&&p(h.prev.ev,h.next.ev),T&&T.statusRemove(h.ev.seg),h.remove(),!b.primary){var M=b.seg.myFill;b.seg.myFill=b.seg.otherFill,b.seg.otherFill=M}c.push(b.seg)}f.getHead().remove()}return T&&T.done(),c}return w?{addRegion:function(n){for(var o,a,u,p=n[n.length-1],c=0;c0&&!this.aborted;){var T=this.ifds_to_read.shift();T.offset&&this.scan_ifd(T.id,T.offset,w)}},_.prototype.read_uint16=function(w){var s=this.input;if(w+2>s.length)throw E("unexpected EOF","EBADDATA");return this.big_endian?256*s[w]+s[w+1]:s[w]+256*s[w+1]},_.prototype.read_uint32=function(w){var s=this.input;if(w+4>s.length)throw E("unexpected EOF","EBADDATA");return this.big_endian?16777216*s[w]+65536*s[w+1]+256*s[w+2]+s[w+3]:s[w]+256*s[w+1]+65536*s[w+2]+16777216*s[w+3]},_.prototype.is_subifd_link=function(w,s){return w===0&&s===34665||w===0&&s===34853||w===34665&&s===40965},_.prototype.exif_format_length=function(w){switch(w){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},_.prototype.exif_format_read=function(w,s){var T;switch(w){case 1:case 2:return this.input[s];case 6:return(T=this.input[s])|33554430*(128&T);case 3:return this.read_uint16(s);case 8:return(T=this.read_uint16(s))|131070*(32768&T);case 4:return this.read_uint32(s);case 9:return 0|this.read_uint32(s);default:return null}},_.prototype.scan_ifd=function(w,s,T){var y=this.read_uint16(s);s+=2;for(var f=0;fthis.input.length)throw E("unexpected EOF","EBADDATA");for(var u=[],p=o,c=0;c0&&(this.ifds_to_read.push({id:l,offset:u[0]}),a=!0),T({is_big_endian:this.big_endian,ifd:w,tag:l,format:t,count:i,entry_offset:s+this.start,data_length:n,data_offset:o+this.start,value:u,is_subifd_link:a})===!1)return void(this.aborted=!0);s+=12}w===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(s)})},D.exports.ExifParser=_,D.exports.get_orientation=function(w){var s=0;try{return new _(w,0,w.length).each(function(T){if(T.ifd===0&&T.tag===274&&Array.isArray(T.value))return s=T.value[0],!1}),s}catch{return-1}}},76767:function(D,E,e){var _=e(14847).n8,w=e(14847).Ag;function s(i,r){if(i.length<4+r)return null;var n=w(i,r);return i.length>4&15,o=15&i[4],a=i[5]>>4&15,u=_(i,6),p=8,c=0;cd.width||b.width===d.width&&b.height>d.height?b:d}),a=n.reduce(function(b,d){return b.height>d.height||b.height===d.height&&b.width>d.width?b:d}),o.width>a.height||o.width===a.height&&o.height>a.width?o:a),p=1;r.transforms.forEach(function(b){var d={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},v={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(b.type==="imir"&&(p=b.value===0?v[p]:d[p=d[p=v[p]]]),b.type==="irot")for(var x=0;x1&&(u.variants=a.variants),a.orientation&&(u.orientation=a.orientation),a.exif_location&&a.exif_location.offset+a.exif_location.length<=l.length){var p=s(l,a.exif_location.offset),c=l.slice(a.exif_location.offset+p+4,a.exif_location.offset+a.exif_location.length),b=y.get_orientation(c);b>0&&(u.orientation=b)}return u}}}}}}},2504:function(D,E,e){var _=e(14847).eG,w=e(14847).OF,s=e(14847).mP,T=_("BM");D.exports=function(y){if(!(y.length<26)&&w(y,0,T))return{width:s(y,18),height:s(y,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}},47342:function(D,E,e){var _=e(14847).eG,w=e(14847).OF,s=e(14847).mP,T=_("GIF87a"),y=_("GIF89a");D.exports=function(f){if(!(f.length<10)&&(w(f,0,T)||w(f,0,y)))return{width:s(f,6),height:s(f,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}},31355:function(D,E,e){var _=e(14847).mP;D.exports=function(w){var s=_(w,0),T=_(w,2),y=_(w,4);if(s===0&&T===1&&y){for(var f=[],l={width:0,height:0},t=0;tl.width||r>l.height)&&(l=n)}return{width:l.width,height:l.height,variants:f,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}},54261:function(D,E,e){var _=e(14847).n8,w=e(14847).eG,s=e(14847).OF,T=e(71371),y=w("Exif\0\0");D.exports=function(f){if(!(f.length<2)&&f[0]===255&&f[1]===216&&f[2]===255)for(var l=2;;){for(;;){if(f.length-l<2)return;if(f[l++]===255)break}for(var t,i,r=f[l++];r===255;)r=f[l++];if(208<=r&&r<=217||r===1)t=0;else{if(!(192<=r&&r<=254)||f.length-l<2)return;t=_(f,l)-2,l+=2}if(r===217||r===218)return;if(r===225&&t>=10&&s(f,l,y)&&(i=T.get_orientation(f.slice(l+6,l+t))),t>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(f.length-l0&&(n.orientation=i),n}l+=t}}},6303:function(D,E,e){var _=e(14847).eG,w=e(14847).OF,s=e(14847).Ag,T=_(`‰PNG\r + +`),y=_("IHDR");D.exports=function(f){if(!(f.length<24)&&w(f,0,T)&&w(f,12,y))return{width:s(f,16),height:s(f,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}},38689:function(D,E,e){var _=e(14847).eG,w=e(14847).OF,s=e(14847).Ag,T=_("8BPS\0");D.exports=function(y){if(!(y.length<22)&&w(y,0,T))return{width:s(y,18),height:s(y,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}},6881:function(D){function E(l){return typeof l=="number"&&isFinite(l)&&l>0}var e=/<[-_.:a-zA-Z0-9][^>]*>/,_=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,w=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,s=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,T=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,y=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function f(l){return y.test(l)?l.match(y)[0]:"px"}D.exports=function(l){if(function(v){var x,g=0,m=v.length;for(v[0]===239&&v[1]===187&&v[2]===191&&(g=3);g>14&16383),type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function r(n,o){return{width:1+(n[o+6]<<16|n[o+5]<<8|n[o+4]),height:1+(n[o+9]<n.length)){for(;o+8=10?a=a||t(n,o+8):c==="VP8L"&&b>=9?a=a||i(n,o+8):c==="VP8X"&&b>=10?a=a||r(n,o+8):c==="EXIF"&&(u=y.get_orientation(n.slice(o+8,o+8+b)),o=1/0),o+=8+b}else o++;if(a)return u>0&&(a.orientation=u),a}}}},91497:function(D,E,e){D.exports={avif:e(24461),bmp:e(2504),gif:e(47342),ico:e(31355),jpeg:e(54261),png:e(6303),psd:e(38689),svg:e(6881),tiff:e(66278),webp:e(90784)}},33575:function(D,E,e){var _=e(91497);D.exports=function(w){return function(s){for(var T=Object.keys(_),y=0;y1)for(var p=1;p"u"?e.g:window,s=["moz","webkit"],T="AnimationFrame",y=w["request"+T],f=w["cancel"+T]||w["cancelRequest"+T],l=0;!y&&l1&&(C.scaleRatio=[C.scale[0]*C.viewport.width,C.scale[1]*C.viewport.height],a(C),C.after&&C.after(C))}function M(C){if(C){C.length!=null?typeof C[0]=="number"&&(C=[{positions:C}]):Array.isArray(C)||(C=[C]);var L=0,O=0;if(m.groups=g=C.map(function(j,V){var H=g[V];return j&&(typeof j=="function"?j={after:j}:typeof j[0]=="number"&&(j={positions:j}),j=T(j,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),H||(g[V]=H={id:V,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},j=y({},x,j)),s(H,j,[{lineWidth:function(ee){return .5*+ee},capSize:function(ee){return .5*+ee},opacity:parseFloat,errors:function(ee){return ee=f(ee),O+=ee.length,ee},positions:function(ee,Q){return ee=f(ee,"float64"),Q.count=Math.floor(ee.length/2),Q.bounds=_(ee,2),Q.offset=L,L+=Q.count,ee}},{color:function(ee,Q){var X=Q.count;if(ee||(ee="transparent"),!Array.isArray(ee)||typeof ee[0]=="number"){var Y=ee;ee=Array(X);for(var K=0;K 0. && baClipping < length(normalWidth * endBotJoin)) { + //handle miter clipping + bTopCoord -= normalWidth * endTopJoin; + bTopCoord += normalize(endTopJoin * normalWidth) * baClipping; + } + + if (nextReverse) { + //make join rectangular + vec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.); + bBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + bTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) { + //handle miter clipping + aBotCoord -= normalWidth * startBotJoin; + aBotCoord += normalize(startBotJoin * normalWidth) * abClipping; + } + + vec2 aTopPosition = (aTopCoord) * adjustedScale + translate; + vec2 aBotPosition = (aBotCoord) * adjustedScale + translate; + + vec2 bTopPosition = (bTopCoord) * adjustedScale + translate; + vec2 bBotPosition = (bBotCoord) * adjustedScale + translate; + + //position is normalized 0..1 coord on the screen + vec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd; + + startCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy; + endCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + enableStartMiter = step(dot(currTangent, prevTangent), .5); + enableEndMiter = step(dot(currTangent, nextTangent), .5); + + //bevel miter cutoffs + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } + + //round miter cutoffs + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } +} +`]),frag:T([`precision highp float; +#define GLSLIFY 1 + +uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; +varying vec4 startCutoff, endCutoff; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +void main() { + float alpha = 1., distToStart, distToEnd; + float cutoff = thickness * .5; + + //bevel miter + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < -1.) { + discard; + return; + } + alpha *= min(max(distToStart + 1., 0.), 1.); + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < -1.) { + discard; + return; + } + alpha *= min(max(distToEnd + 1., 0.), 1.); + } + } + + // round miter + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < 0.) { + float radius = length(gl_FragCoord.xy - startCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < 0.) { + float radius = length(gl_FragCoord.xy - endCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + } + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`]),attributes:{lineEnd:{buffer:d,divisor:0,stride:8,offset:0},lineTop:{buffer:d,divisor:0,stride:8,offset:4},aColor:{buffer:c.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:c.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:c.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:c.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:c.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:c.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},v))}catch{b=x}return{fill:c({primitive:"triangle",elements:function(g,m){return m.triangles},offset:0,vert:T([`precision highp float; +#define GLSLIFY 1 + +attribute vec2 position, positionFract; + +uniform vec4 color; +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float pixelRatio, id; +uniform vec4 viewport; +uniform float opacity; + +varying vec4 fragColor; + +const float MAX_LINES = 256.; + +void main() { + float depth = (MAX_LINES - 4. - id) / (MAX_LINES); + + vec2 position = position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; + fragColor.a *= opacity; +} +`]),frag:T([`precision highp float; +#define GLSLIFY 1 + +varying vec4 fragColor; + +void main() { + gl_FragColor = fragColor; +} +`]),uniforms:{scale:c.prop("scale"),color:c.prop("fill"),scaleFract:c.prop("scaleFract"),translateFract:c.prop("translateFract"),translate:c.prop("translate"),opacity:c.prop("opacity"),pixelRatio:c.context("pixelRatio"),id:c.prop("id"),viewport:function(g,m){return[m.viewport.x,m.viewport.y,g.viewportWidth,g.viewportHeight]}},attributes:{position:{buffer:c.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:c.prop("positionFractBuffer"),stride:8,offset:8}},blend:v.blend,depth:{enable:!1},scissor:v.scissor,stencil:v.stencil,viewport:v.viewport}),rect:x,miter:b}},p.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},p.prototype.render=function(){for(var c,b=[],d=arguments.length;d--;)b[d]=arguments[d];b.length&&(c=this).update.apply(c,b),this.draw()},p.prototype.draw=function(){for(var c=this,b=[],d=arguments.length;d--;)b[d]=arguments[d];return(b.length?b:this.passes).forEach(function(v,x){var g;if(v&&Array.isArray(v))return(g=c).draw.apply(g,v);typeof v=="number"&&(v=c.passes[v]),v&&v.count>1&&v.opacity&&(c.regl._refresh(),v.fill&&v.triangles&&v.triangles.length>2&&c.shaders.fill(v),v.thickness&&(v.scale[0]*v.viewport.width>p.precisionThreshold||v.scale[1]*v.viewport.height>p.precisionThreshold||v.join==="rect"||!v.join&&(v.thickness<=2||v.count>=p.maxPoints)?c.shaders.rect(v):c.shaders.miter(v)))}),this},p.prototype.update=function(c){var b=this;if(c){c.length!=null?typeof c[0]=="number"&&(c=[{positions:c}]):Array.isArray(c)||(c=[c]);var d=this.regl,v=this.gl;if(c.forEach(function(h,M){var A=b.passes[M];if(h!==void 0)if(h!==null){if(typeof h[0]=="number"&&(h={positions:h}),h=y(h,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),A||(b.passes[M]=A={id:M,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:d.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:d.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:d.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:d.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},h=s({},p.defaults,h)),h.thickness!=null&&(A.thickness=parseFloat(h.thickness)),h.opacity!=null&&(A.opacity=parseFloat(h.opacity)),h.miterLimit!=null&&(A.miterLimit=parseFloat(h.miterLimit)),h.overlay!=null&&(A.overlay=!!h.overlay,M=te});(X=X.slice(0,ae)).push(te)}for(var oe=function(Tt){var xt=B.slice(2*K,2*X[Tt]).concat(te?B.slice(2*te):[]),Dt=(A.hole||[]).map(function(Ft){return Ft-te+(X[Tt]-K)}),It=l(xt,Dt);It=It.map(function(Ft){return Ft+K+(Ft+Kv.length)&&(x=v.length);for(var g=0,m=new Array(x);g 1.0 + delta) { + discard; + } + + alpha -= smoothstep(1.0 - delta, 1.0 + delta, radius); + + float borderRadius = fragBorderRadius; + float ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius); + vec4 color = mix(fragColor, fragBorderColor, ratio); + color.a *= alpha * opacity; + gl_FragColor = color; +} +`]),C.vert=i([`precision highp float; +#define GLSLIFY 1 + +attribute float x, y, xFract, yFract; +attribute float size, borderSize; +attribute vec4 colorId, borderColorId; +attribute float isActive; + +uniform bool constPointSize; +uniform float pixelRatio; +uniform vec2 paletteSize, scale, scaleFract, translate, translateFract; +uniform sampler2D paletteTexture; + +const float maxSize = 100.; + +varying vec4 fragColor, fragBorderColor; +varying float fragBorderRadius, fragWidth; + +float pointSizeScale = (constPointSize) ? 2. : pixelRatio; + +bool isDirect = (paletteSize.x < 1.); + +vec4 getColor(vec4 id) { + return isDirect ? id / 255. : texture2D(paletteTexture, + vec2( + (id.x + .5) / paletteSize.x, + (id.y + .5) / paletteSize.y + ) + ); +} + +void main() { + // ignore inactive points + if (isActive == 0.) return; + + vec2 position = vec2(x, y); + vec2 positionFract = vec2(xFract, yFract); + + vec4 color = getColor(colorId); + vec4 borderColor = getColor(borderColorId); + + float size = size * maxSize / 255.; + float borderSize = borderSize * maxSize / 255.; + + gl_PointSize = (size + borderSize) * pointSizeScale; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + gl_Position = vec4(pos * 2. - 1., 0., 1.); + + fragBorderRadius = 1. - 2. * borderSize / (size + borderSize); + fragColor = color; + fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor; + fragWidth = 1. / gl_PointSize; +} +`]),a&&(C.frag=C.frag.replace("smoothstep","smoothStep"),A.frag=A.frag.replace("smoothstep","smoothStep")),this.drawCircle=v(C)}b.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var v=this,x=arguments.length,g=new Array(x),m=0;mRe)?he.tree=l(de,{bounds:ne}):Re&&Re.length&&(he.tree=Re),he.tree){var ue={primitive:"points",usage:"static",data:he.tree,type:"uint32"};he.elements?he.elements(ue):he.elements=M.elements(ue)}var me=u.float32(de);return we({data:me,usage:"dynamic"}),Ae({data:u.fract32(de,me),usage:"dynamic"}),Me({data:new Uint8Array(Ce),type:"uint8",usage:"stream"}),de}},{marker:function(de,he,xe){var Re=he.activation;if(Re.forEach(function(me){return me&&me.destroy&&me.destroy()}),Re.length=0,de&&typeof de[0]!="number"){for(var we=[],Ae=0,Me=Math.min(de.length,he.count);Ae=0)return h;if(v instanceof Uint8Array||v instanceof Uint8ClampedArray)x=v;else{x=new Uint8Array(v.length);for(var M=0,A=v.length;M4*m&&(this.tooManyColors=!0),this.updatePalette(g),k.length===1?k[0]:k},b.prototype.updatePalette=function(v){if(!this.tooManyColors){var x=this.maxColors,g=this.paletteTexture,m=Math.ceil(.25*v.length/x);if(m>1)for(var k=.25*(v=v.slice()).length%x;k2?(v[0],v[2],p=v[1],c=v[3]):v.length?(p=v[0],c=v[1]):(v.x,p=v.y,v.x,v.width,c=v.y+v.height),x.length>2?(b=x[0],d=x[2],x[1],x[3]):x.length?(b=x[0],d=x[1]):(b=x.x,x.y,d=x.x+x.width,x.y,x.height),[b,p,d,c]}function n(o){if(typeof o=="number")return[o,o,o,o];if(o.length===2)return[o[0],o[1],o[0],o[1]];var a=f(o);return[a.x,a.y,a.x+a.width,a.y+a.height]}D.exports=t,t.prototype.render=function(){for(var o,a=this,u=[],p=arguments.length;p--;)u[p]=arguments[p];return u.length&&(o=this).update.apply(o,u),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?this.planned==null&&(this.planned=T(function(){a.draw(),a.dirty=!0,a.planned=null})):(this.draw(),this.dirty=!0,T(function(){a.dirty=!1})),this)},t.prototype.update=function(){for(var o,a=[],u=arguments.length;u--;)a[u]=arguments[u];if(a.length){for(var p=0;pO))&&(b.lower||!(L"u"?1:window.devicePixelRatio,Lt=!1,Ct={},mt=function(_t){},Ot=function(){};if(typeof Qe=="string"?nt=document.querySelector(Qe):typeof Qe=="object"&&(typeof Qe.nodeName=="string"&&typeof Qe.appendChild=="function"&&typeof Qe.getBoundingClientRect=="function"?nt=Qe:typeof Qe.drawArrays=="function"||typeof Qe.drawElements=="function"?Oe=(Be=Qe).canvas:("gl"in Qe?Be=Qe.gl:"canvas"in Qe?Oe=s(Qe.canvas):"container"in Qe&&(ht=s(Qe.container)),"attributes"in Qe&&(Ge=Qe.attributes),"extensions"in Qe&&(ut=w(Qe.extensions)),"optionalExtensions"in Qe&&(pt=w(Qe.optionalExtensions)),"onDone"in Qe&&(mt=Qe.onDone),"profile"in Qe&&(Lt=!!Qe.profile),"pixelRatio"in Qe&&(bt=+Qe.pixelRatio),"cachedCode"in Qe&&(Ct=Qe.cachedCode))),nt&&(nt.nodeName.toLowerCase()==="canvas"?Oe=nt:ht=nt),!Be){if(!Oe){if(!(nt=function(_t,Pt,Bt){function Wt(){var Kt=window.innerWidth,nn=window.innerHeight;_t!==document.body&&(Kt=(nn=Xt.getBoundingClientRect()).right-nn.left,nn=nn.bottom-nn.top),Xt.width=Bt*Kt,Xt.height=Bt*nn}var Gt,Xt=document.createElement("canvas");return te(Xt.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),_t.appendChild(Xt),_t===document.body&&(Xt.style.position="absolute",te(_t.style,{margin:0,padding:0})),_t!==document.body&&typeof ResizeObserver=="function"?(Gt=new ResizeObserver(function(){setTimeout(Wt)})).observe(_t):window.addEventListener("resize",Wt,!1),Wt(),{canvas:Xt,onDestroy:function(){Gt?Gt.disconnect():window.removeEventListener("resize",Wt),_t.removeChild(Xt)}}}(ht||document.body,0,bt)))return null;Oe=nt.canvas,Ot=nt.onDestroy}Ge.premultipliedAlpha===void 0&&(Ge.premultipliedAlpha=!0),Be=function(_t,Pt){function Bt(Wt){try{return _t.getContext(Wt,Pt)}catch{return null}}return Bt("webgl")||Bt("experimental-webgl")||Bt("webgl-experimental")}(Oe,Ge)}return Be?{gl:Be,canvas:Oe,container:ht,extensions:ut,optionalExtensions:pt,pixelRatio:bt,profile:Lt,cachedCode:Ct,onDone:mt,onDestroy:Ot}:(Ot(),mt("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function y(Ge,nt){for(var ht=Array(Ge),Oe=0;Oe>>=nt))<<3,(nt|=ht=(15<(Ge>>>=ht))<<2)|(ht=(3<(Ge>>>=ht))<<1)|Ge>>>ht>>1}function l(){function Ge(Oe){e:{for(var Be=16;268435456>=Be;Be*=16)if(Oe<=Be){Oe=Be;break e}Oe=0}return 0<(Be=ht[f(Oe)>>2]).length?Be.pop():new ArrayBuffer(Oe)}function nt(Oe){ht[f(Oe.byteLength)>>2].push(Oe)}var ht=y(8,function(){return[]});return{alloc:Ge,free:nt,allocType:function(Oe,Be){var Qe=null;switch(Oe){case 5120:Qe=new Int8Array(Ge(Be),0,Be);break;case 5121:Qe=new Uint8Array(Ge(Be),0,Be);break;case 5122:Qe=new Int16Array(Ge(2*Be),0,Be);break;case 5123:Qe=new Uint16Array(Ge(2*Be),0,Be);break;case 5124:Qe=new Int32Array(Ge(4*Be),0,Be);break;case 5125:Qe=new Uint32Array(Ge(4*Be),0,Be);break;case 5126:Qe=new Float32Array(Ge(4*Be),0,Be);break;default:return null}return Qe.length!==Be?Qe.subarray(0,Be):Qe},freeType:function(Oe){nt(Oe.buffer)}}}function t(Ge){return!!Ge&&typeof Ge=="object"&&Array.isArray(Ge.shape)&&Array.isArray(Ge.stride)&&typeof Ge.offset=="number"&&Ge.shape.length===Ge.stride.length&&(Array.isArray(Ge.data)||de(Ge.data))}function i(Ge,nt,ht,Oe,Be,Qe){for(var ut=0;ut(Ot=Bt)&&(Ot=mt.buffer.byteLength,Xt===5123?Ot>>=1:Xt===5125&&(Ot>>=2)),mt.vertCount=Ot,Ot=Pt,0>Pt&&(Ot=4,(Pt=mt.buffer.dimension)===1&&(Ot=0),Pt===2&&(Ot=1),Pt===3&&(Ot=4)),mt.primType=Ot}function ut(mt){Oe.elementsCount--,delete pt[mt.id],mt.buffer.destroy(),mt.buffer=null}var pt={},bt=0,Lt={uint8:5121,uint16:5123};nt.oes_element_index_uint&&(Lt.uint32=5125),Be.prototype.bind=function(){this.buffer.bind()};var Ct=[];return{create:function(mt,Ot){function _t(Wt){if(Wt)if(typeof Wt=="number")Pt(Wt),Bt.primType=4,Bt.vertCount=0|Wt,Bt.type=5121;else{var Gt=null,Xt=35044,Kt=-1,nn=-1,yn=0,ln=0;Array.isArray(Wt)||de(Wt)||t(Wt)?Gt=Wt:("data"in Wt&&(Gt=Wt.data),"usage"in Wt&&(Xt=Ae[Wt.usage]),"primitive"in Wt&&(Kt=ue[Wt.primitive]),"count"in Wt&&(nn=0|Wt.count),"type"in Wt&&(ln=Lt[Wt.type]),"length"in Wt?yn=0|Wt.length:(yn=nn,ln===5123||ln===5122?yn*=2:ln!==5125&&ln!==5124||(yn*=4))),Qe(Bt,Gt,Xt,Kt,nn,yn,ln)}else Pt(),Bt.primType=4,Bt.vertCount=0,Bt.type=5121;return _t}var Pt=ht.create(null,34963,!0),Bt=new Be(Pt._buffer);return Oe.elementsCount++,_t(mt),_t._reglType="elements",_t._elements=Bt,_t.subdata=function(Wt,Gt){return Pt.subdata(Wt,Gt),_t},_t.destroy=function(){ut(Bt)},_t},createStream:function(mt){var Ot=Ct.pop();return Ot||(Ot=new Be(ht.create(null,34963,!0,!1)._buffer)),Qe(Ot,mt,35040,-1,-1,0,0),Ot},destroyStream:function(mt){Ct.push(mt)},getElements:function(mt){return typeof mt=="function"&&mt._elements instanceof Be?mt._elements:null},clear:function(){he(pt).forEach(ut)}}}function c(Ge){for(var nt=ye.allocType(5123,Ge.length),ht=0;ht>>31<<15,Be=(Qe<<1>>>24)-127,Qe=Qe>>13&1023;nt[ht]=-24>Be?Oe:-14>Be?Oe+(Qe+1024>>-14-Be):15>=un,jt.height>>=un,Ot(jt,Jt[un]),tn.mipmask|=1<Pn;++Pn)tn.images[Pn]=null;return tn}function yn(tn){for(var Pn=tn.images,jt=0;jttn){for(var Pn=0;Pn=--this.refCount&&fn(this)}}),ut.profile&&(Qe.getTotalTextureSize=function(){var tn=0;return Object.keys(Zn).forEach(function(Pn){tn+=Zn[Pn].stats.size}),tn}),{create2D:function(tn,Pn){function jt(un,Rn){var On=Jt.texInfo;ln.call(On);var Sn=nn();return typeof un=="number"?Gt(Sn,0|un,typeof Rn=="number"?0|Rn:0|un):un?(kn(On,un),Xt(Sn,un)):Gt(Sn,1,1),On.genMipmaps&&(Sn.mipmask=(Sn.width<<1)-1),Jt.mipmask=Sn.mipmask,bt(Jt,Sn),Jt.internalformat=Sn.internalformat,jt.width=Sn.width,jt.height=Sn.height,on(Jt),Kt(Sn,3553),Wn(On,3553),_n(),yn(Sn),ut.profile&&(Jt.stats.size=h(Jt.internalformat,Jt.type,Sn.width,Sn.height,On.genMipmaps,!1)),jt.format=ir[Jt.internalformat],jt.type=dr[Jt.type],jt.mag=yr[On.magFilter],jt.min=$t[On.minFilter],jt.wrapS=mn[On.wrapS],jt.wrapT=mn[On.wrapT],jt}var Jt=new wn(3553);return Zn[Jt.id]=Jt,Qe.textureCount++,jt(tn,Pn),jt.subimage=function(un,Rn,On,Sn){Rn|=0,On|=0,Sn|=0;var pn=Pt();return bt(pn,Jt),pn.width=0,pn.height=0,Ot(pn,un),pn.width=pn.width||(Jt.width>>Sn)-Rn,pn.height=pn.height||(Jt.height>>Sn)-On,on(Jt),_t(pn,3553,Rn,On,Sn),_n(),Bt(pn),jt},jt.resize=function(un,Rn){var On=0|un,Sn=0|Rn||On;if(On===Jt.width&&Sn===Jt.height)return jt;jt.width=Jt.width=On,jt.height=Jt.height=Sn,on(Jt);for(var pn=0;Jt.mipmask>>pn;++pn){var bn=On>>pn,dn=Sn>>pn;if(!bn||!dn)break;Ge.texImage2D(3553,pn,Jt.format,bn,dn,0,Jt.format,Jt.type,null)}return _n(),ut.profile&&(Jt.stats.size=h(Jt.internalformat,Jt.type,On,Sn,!1,!1)),jt},jt._reglType="texture2d",jt._texture=Jt,ut.profile&&(jt.stats=Jt.stats),jt.destroy=function(){Jt.decRef()},jt},createCube:function(tn,Pn,jt,Jt,un,Rn){function On(bn,dn,vn,An,Bn,Xn){var er,Jn=Sn.texInfo;for(ln.call(Jn),er=0;6>er;++er)pn[er]=nn();if(typeof bn!="number"&&bn){if(typeof bn=="object")if(dn)Xt(pn[0],bn),Xt(pn[1],dn),Xt(pn[2],vn),Xt(pn[3],An),Xt(pn[4],Bn),Xt(pn[5],Xn);else if(kn(Jn,bn),Lt(Sn,bn),"faces"in bn)for(bn=bn.faces,er=0;6>er;++er)bt(pn[er],Sn),Xt(pn[er],bn[er]);else for(er=0;6>er;++er)Xt(pn[er],bn)}else for(bn=0|bn||1,er=0;6>er;++er)Gt(pn[er],bn,bn);for(bt(Sn,pn[0]),Sn.mipmask=Jn.genMipmaps?(pn[0].width<<1)-1:pn[0].mipmask,Sn.internalformat=pn[0].internalformat,On.width=pn[0].width,On.height=pn[0].height,on(Sn),er=0;6>er;++er)Kt(pn[er],34069+er);for(Wn(Jn,34067),_n(),ut.profile&&(Sn.stats.size=h(Sn.internalformat,Sn.type,On.width,On.height,Jn.genMipmaps,!0)),On.format=ir[Sn.internalformat],On.type=dr[Sn.type],On.mag=yr[Jn.magFilter],On.min=$t[Jn.minFilter],On.wrapS=mn[Jn.wrapS],On.wrapT=mn[Jn.wrapT],er=0;6>er;++er)yn(pn[er]);return On}var Sn=new wn(34067);Zn[Sn.id]=Sn,Qe.cubeCount++;var pn=Array(6);return On(tn,Pn,jt,Jt,un,Rn),On.subimage=function(bn,dn,vn,An,Bn){vn|=0,An|=0,Bn|=0;var Xn=Pt();return bt(Xn,Sn),Xn.width=0,Xn.height=0,Ot(Xn,dn),Xn.width=Xn.width||(Sn.width>>Bn)-vn,Xn.height=Xn.height||(Sn.height>>Bn)-An,on(Sn),_t(Xn,34069+bn,vn,An,Bn),_n(),Bt(Xn),On},On.resize=function(bn){if((bn|=0)!==Sn.width){On.width=Sn.width=bn,On.height=Sn.height=bn,on(Sn);for(var dn=0;6>dn;++dn)for(var vn=0;Sn.mipmask>>vn;++vn)Ge.texImage2D(34069+dn,vn,Sn.format,bn>>vn,bn>>vn,0,Sn.format,Sn.type,null);return _n(),ut.profile&&(Sn.stats.size=h(Sn.internalformat,Sn.type,On.width,On.height,!1,!0)),On}},On._reglType="textureCube",On._texture=Sn,ut.profile&&(On.stats=Sn.stats),On.destroy=function(){Sn.decRef()},On},clear:function(){for(var tn=0;tnJt;++Jt)if(jt.mipmask&1<>Jt,jt.height>>Jt,0,jt.internalformat,jt.type,null);else for(var un=0;6>un;++un)Ge.texImage2D(34069+un,Jt,jt.internalformat,jt.width>>Jt,jt.height>>Jt,0,jt.internalformat,jt.type,null);Wn(jt.texInfo,jt.target)})},refresh:function(){for(var tn=0;tnhn;++hn){for(qn=0;qnfn;++fn)_n[fn].resize(hn);return on.width=on.height=hn,on},_reglType:"framebufferCube",destroy:function(){_n.forEach(function(fn){fn.destroy()})}})},clear:function(){he(Wn).forEach(Wt)},restore:function(){Kt.cur=null,Kt.next=null,Kt.dirty=!0,he(Wn).forEach(function(wn){wn.framebuffer=Ge.createFramebuffer(),Gt(wn)})}})}function C(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function L(Ge,nt,ht,Oe,Be,Qe,ut){function pt(){this.id=++Ct,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var _t=nt.oes_vertex_array_object;this.vao=_t?_t.createVertexArrayOES():null,mt[this.id]=this,this.buffers=[]}var bt=ht.maxAttributes,Lt=Array(bt);for(ht=0;ht=kn.byteLength?nn.subdata(kn):(nn.destroy(),Bt.buffers[Kt]=null)),Bt.buffers[Kt]||(nn=Bt.buffers[Kt]=Be.create(yn,34962,!1,!0)),ln.buffer=Be.getBuffer(nn),ln.size=0|ln.buffer.dimension,ln.normalized=!1,ln.type=ln.buffer.dtype,ln.offset=0,ln.stride=0,ln.divisor=0,ln.state=1,Wt[Kt]=1):Be.getBuffer(yn)?(ln.buffer=Be.getBuffer(yn),ln.size=0|ln.buffer.dimension,ln.normalized=!1,ln.type=ln.buffer.dtype,ln.offset=0,ln.stride=0,ln.divisor=0,ln.state=1):Be.getBuffer(yn.buffer)?(ln.buffer=Be.getBuffer(yn.buffer),ln.size=0|(+yn.size||ln.buffer.dimension),ln.normalized=!!yn.normalized||!1,ln.type="type"in yn?we[yn.type]:ln.buffer.dtype,ln.offset=0|(yn.offset||0),ln.stride=0|(yn.stride||0),ln.divisor=0|(yn.divisor||0),ln.state=1):"x"in yn&&(ln.x=+yn.x||0,ln.y=+yn.y||0,ln.z=+yn.z||0,ln.w=+yn.w||0,ln.state=2)}for(nn=0;nnPt&&(Pt=Bt.stats.uniformsCount)}),Pt},ht.getMaxAttributesCount=function(){var Pt=0;return Ot.forEach(function(Bt){Bt.stats.attributesCount>Pt&&(Pt=Bt.stats.attributesCount)}),Pt}),{clear:function(){var Pt=Ge.deleteShader.bind(Ge);he(Lt).forEach(Pt),Lt={},he(Ct).forEach(Pt),Ct={},Ot.forEach(function(Bt){Ge.deleteProgram(Bt.program)}),Ot.length=0,mt={},ht.shaderCount=0},program:function(Pt,Bt,Wt,Gt){var Xt=mt[Bt];Xt||(Xt=mt[Bt]={});var Kt=Xt[Pt];if(Kt&&(Kt.refCount++,!Gt))return Kt;var nn=new pt(Bt,Pt);return ht.shaderCount++,bt(nn,Wt,Gt),Kt||(Xt[Pt]=nn),Ot.push(nn),te(nn,{destroy:function(){if(nn.refCount--,0>=nn.refCount){Ge.deleteProgram(nn.program);var yn=Ot.indexOf(nn);Ot.splice(yn,1),ht.shaderCount--}0>=Xt[nn.vertId].refCount&&(Ge.deleteShader(Ct[nn.vertId]),delete Ct[nn.vertId],delete mt[nn.fragId][nn.vertId]),Object.keys(mt[nn.fragId]).length||(Ge.deleteShader(Lt[nn.fragId]),delete Lt[nn.fragId],delete mt[nn.fragId])}})},restore:function(){Lt={},Ct={};for(var Pt=0;Pt>>nt|Ge<<32-nt}function U(Ge,nt){var ht=(65535&Ge)+(65535&nt);return(Ge>>16)+(nt>>16)+(ht>>16)<<16|65535&ht}function B(Ge){return Array.prototype.slice.call(Ge)}function G(Ge){return B(Ge).join("")}function N(Ge){function nt(){var Ct=[],mt=[];return te(function(){Ct.push.apply(Ct,B(arguments))},{def:function(){var Ot="v"+Be++;return mt.push(Ot),0>>4&15)+"0123456789abcdef".charAt(15&Pt);return Bt}(function(_t){for(var Pt=Array(_t.length>>2),Bt=0;Bt>5]|=(255&_t.charCodeAt(Bt/8))<<24-Bt%32;var Wt,Gt,Xt,Kt,nn,yn,ln,kn,Wn,wn,on,_n=8*_t.length;for(_t=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Bt=Array(64),Pt[_n>>5]|=128<<24-_n%32,Pt[15+(_n+64>>9<<4)]=_n,kn=0;knWn;Wn++){var fn;16>Wn?Bt[Wn]=Pt[Wn+kn]:(wn=Wn,on=U(on=R(on=Bt[Wn-2],17)^R(on,19)^on>>>10,Bt[Wn-7]),fn=R(fn=Bt[Wn-15],7)^R(fn,18)^fn>>>3,Bt[wn]=U(U(on,fn),Bt[Wn-16])),wn=U(U(U(U(ln,wn=R(wn=Kt,6)^R(wn,11)^R(wn,25)),Kt&nn^~Kt&yn),xt[Wn]),Bt[Wn]),on=U(ln=R(ln=_n,2)^R(ln,13)^R(ln,22),_n&Wt^_n&Gt^Wt&Gt),ln=yn,yn=nn,nn=Kt,Kt=U(Xt,wn),Xt=Gt,Gt=Wt,Wt=_n,_n=U(wn,on)}_t[0]=U(_n,_t[0]),_t[1]=U(Wt,_t[1]),_t[2]=U(Gt,_t[2]),_t[3]=U(Xt,_t[3]),_t[4]=U(Kt,_t[4]),_t[5]=U(nn,_t[5]),_t[6]=U(yn,_t[6]),_t[7]=U(ln,_t[7])}for(Pt="",Bt=0;Bt<32*_t.length;Bt+=8)Pt+=String.fromCharCode(_t[Bt>>5]>>>24-Bt%32&255);return Pt}(function(_t){for(var Pt,Bt,Wt="",Gt=-1;++Gt<_t.length;)Pt=_t.charCodeAt(Gt),Bt=Gt+1<_t.length?_t.charCodeAt(Gt+1):0,55296<=Pt&&56319>=Pt&&56320<=Bt&&57343>=Bt&&(Pt=65536+((1023&Pt)<<10)+(1023&Bt),Gt++),127>=Pt?Wt+=String.fromCharCode(Pt):2047>=Pt?Wt+=String.fromCharCode(192|Pt>>>6&31,128|63&Pt):65535>=Pt?Wt+=String.fromCharCode(224|Pt>>>12&15,128|Pt>>>6&63,128|63&Pt):2097151>=Pt&&(Wt+=String.fromCharCode(240|Pt>>>18&7,128|Pt>>>12&63,128|Pt>>>6&63,128|63&Pt));return Wt}(Ot))),Oe[mt])?Oe[mt].apply(null,ut):(Ot=Function.apply(null,Qe.concat(Ot)),Oe&&(Oe[mt]=Ot),Ot.apply(null,ut))}}}function j(Ge){return Array.isArray(Ge)||de(Ge)||t(Ge)}function V(Ge){return Ge.sort(function(nt,ht){return nt==="viewport"?-1:ht==="viewport"?1:nt"+vr+"?"+An+".constant["+vr+"]:0;"}).join(""),"}}else{","if(",er,"(",An,".buffer)){",sr,"=",Bn,".createStream(",34962,",",An,".buffer);","}else{",sr,"=",Bn,".getBuffer(",An,".buffer);","}",fr,'="type" in ',An,"?",Xn.glTypes,"[",An,".type]:",sr,".dtype;",Jn.normalized,"=!!",An,".normalized;"),vn("size"),vn("offset"),vn("stride"),vn("divisor"),dn("}}"),dn.exit("if(",Jn.isStream,"){",Bn,".destroyStream(",sr,");","}"),Jn})}),On}function Wn(jt,Jt,un,Rn,On){function Sn(lr){var sr=bn[lr];sr&&(vn[lr]=sr)}var pn=function(lr,sr){if(typeof(fr=lr.static).frag=="string"&&typeof fr.vert=="string"){if(0"u"?"Date.now()":"performance.now()"}function pn(lr){lr(vn=Jt.def(),"=",Sn(),";"),typeof On=="string"?lr(Xn,".count+=",On,";"):lr(Xn,".count++;"),_t&&(Rn?lr(An=Jt.def(),"=",Jn,".getNumPendingQueries();"):lr(Jn,".beginQuery(",Xn,");"))}function bn(lr){lr(Xn,".cpuTime+=",Sn(),"-",vn,";"),_t&&(Rn?lr(Jn,".pushScopeStats(",An,",",Jn,".getNumPendingQueries(),",Xn,");"):lr(Jn,".endQuery();"))}function dn(lr){var sr=Jt.def(er,".profile");Jt(er,".profile=",lr,";"),Jt.exit(er,".profile=",sr,";")}var vn,An,Bn=jt.shared,Xn=jt.stats,er=Bn.current,Jn=Bn.timer;if(un=un.profile){if(ee(un))return void(un.enable?(pn(Jt),bn(Jt.exit),dn("true")):dn("false"));dn(un=un.append(jt,Jt))}else un=Jt.def(er,".profile");pn(Bn=jt.block()),Jt("if(",un,"){",Bn,"}"),bn(jt=jt.block()),Jt.exit("if(",un,"){",jt,"}")}function Cn(jt,Jt,un,Rn,On){function Sn(bn,dn,vn){function An(){Jt("if(!",Jn,".buffer){",Xn,".enableVertexAttribArray(",er,");}");var cr,vr=vn.type;cr=vn.size?Jt.def(vn.size,"||",dn):dn,Jt("if(",Jn,".type!==",vr,"||",Jn,".size!==",cr,"||",fr.map(function(Sr){return Jn+"."+Sr+"!=="+vn[Sr]}).join("||"),"){",Xn,".bindBuffer(",34962,",",lr,".buffer);",Xn,".vertexAttribPointer(",[er,cr,vr,vn.normalized,vn.stride,vn.offset],");",Jn,".type=",vr,";",Jn,".size=",cr,";",fr.map(function(Sr){return Jn+"."+Sr+"="+vn[Sr]+";"}).join(""),"}"),$t&&(vr=vn.divisor,Jt("if(",Jn,".divisor!==",vr,"){",jt.instancing,".vertexAttribDivisorANGLE(",[er,vr],");",Jn,".divisor=",vr,";}"))}function Bn(){Jt("if(",Jn,".buffer){",Xn,".disableVertexAttribArray(",er,");",Jn,".buffer=null;","}if(",Dt.map(function(cr,vr){return Jn+"."+cr+"!=="+sr[vr]}).join("||"),"){",Xn,".vertexAttrib4f(",er,",",sr,");",Dt.map(function(cr,vr){return Jn+"."+cr+"="+sr[vr]+";"}).join(""),"}")}var Xn=pn.gl,er=Jt.def(bn,".location"),Jn=Jt.def(pn.attributes,"[",er,"]");bn=vn.state;var lr=vn.buffer,sr=[vn.x,vn.y,vn.z,vn.w],fr=["buffer","normalized","offset","stride"];bn===1?An():bn===2?Bn():(Jt("if(",bn,"===",1,"){"),An(),Jt("}else{"),Bn(),Jt("}"))}var pn=jt.shared;Rn.forEach(function(bn){var dn,vn=bn.name,An=un.attributes[vn];if(An){if(!On(An))return;dn=An.append(jt,Jt)}else{if(!On(Ke))return;var Bn=jt.scopeAttrib(vn);dn={},Object.keys(new dr).forEach(function(Xn){dn[Xn]=Jt.def(Bn,".",Xn)})}Sn(jt.link(bn),function(Xn){switch(Xn){case 35664:case 35667:case 35671:return 2;case 35665:case 35668:case 35672:return 3;case 35666:case 35669:case 35673:return 4;default:return 1}}(bn.info.type),dn)})}function Nn(jt,Jt,un,Rn,On,Sn){for(var pn,bn=jt.shared,dn=bn.gl,vn=0;vn>1)",bn],");")}function Sr(){un(dn,".drawArraysInstancedANGLE(",[Jn,lr,sr,bn],");")}er&&er!=="null"?cr?vr():(un("if(",er,"){"),vr(),un("}else{"),Sr(),un("}")):Sr()}function pn(){function vr(){un(An+".drawElements("+[Jn,sr,fr,lr+"<<(("+fr+"-5121)>>1)"]+");")}function Sr(){un(An+".drawArrays("+[Jn,lr,sr]+");")}er&&er!=="null"?cr?vr():(un("if(",er,"){"),vr(),un("}else{"),Sr(),un("}")):Sr()}var bn,dn,vn=jt.shared,An=vn.gl,Bn=vn.draw,Xn=Rn.draw,er=function(){var vr=Xn.elements,Sr=Jt;return vr?((vr.contextDep&&Rn.contextDynamic||vr.propDep)&&(Sr=un),vr=vr.append(jt,Sr),Xn.elementsActive&&Sr("if("+vr+")"+An+".bindBuffer(34963,"+vr+".buffer.buffer);")):(vr=Sr.def(),Sr(vr,"=",Bn,".","elements",";","if(",vr,"){",An,".bindBuffer(",34963,",",vr,".buffer.buffer);}","else if(",vn.vao,".currentVAO){",vr,"=",jt.shared.elements+".getElements("+vn.vao,".currentVAO.elements);",Ln?"":"if("+vr+")"+An+".bindBuffer(34963,"+vr+".buffer.buffer);","}")),vr}(),Jn=On("primitive"),lr=On("offset"),sr=function(){var vr=Xn.count,Sr=Jt;return vr?((vr.contextDep&&Rn.contextDynamic||vr.propDep)&&(Sr=un),vr=vr.append(jt,Sr)):vr=Sr.def(Bn,".","count"),vr}();if(typeof sr=="number"){if(sr===0)return}else un("if(",sr,"){"),un.exit("}");$t&&(bn=On("instances"),dn=jt.instancing);var fr=er+".type",cr=Xn.elements&&ee(Xn.elements)&&!Xn.vaoActive;$t&&(typeof bn!="number"||0<=bn)?typeof bn=="string"?(un("if(",bn,">0){"),Sn(),un("}else if(",bn,"<0){"),pn(),un("}")):Sn():pn()}function qn(jt,Jt,un,Rn,On){return On=(Jt=Kt()).proc("body",On),$t&&(Jt.instancing=On.def(Jt.shared.extensions,".angle_instanced_arrays")),jt(Jt,On,un,Rn),Jt.compile().body}function or(jt,Jt,un,Rn){hn(jt,Jt),un.useVAO?un.drawVAO?Jt(jt.shared.vao,".setVAO(",un.drawVAO.append(jt,Jt),");"):Jt(jt.shared.vao,".setVAO(",jt.shared.vao,".targetVAO);"):(Jt(jt.shared.vao,".setVAO(null);"),Cn(jt,Jt,un,Rn.attributes,function(){return!0})),Nn(jt,Jt,un,Rn.uniforms,function(){return!0},!1),Hn(jt,Jt,Jt,un)}function tr(jt,Jt,un,Rn){function On(){return!0}jt.batchId="a1",hn(jt,Jt),Cn(jt,Jt,un,Rn.attributes,On),Nn(jt,Jt,un,Rn.uniforms,On,!1),Hn(jt,Jt,Jt,un)}function kr(jt,Jt,un,Rn){function On(Bn){return Bn.contextDep&&pn||Bn.propDep}function Sn(Bn){return!On(Bn)}hn(jt,Jt);var pn=un.contextDep,bn=Jt.def(),dn=Jt.def();jt.shared.props=dn,jt.batchId=bn;var vn=jt.scope(),An=jt.scope();Jt(vn.entry,"for(",bn,"=0;",bn,"<","a1",";++",bn,"){",dn,"=","a0","[",bn,"];",An,"}",vn.exit),un.needsContext&&wn(jt,An,un.context),un.needsFramebuffer&&on(jt,An,un.framebuffer),fn(jt,An,un.state,On),un.profile&&On(un.profile)&&In(jt,An,un,!1,!0),Rn?(un.useVAO?un.drawVAO?On(un.drawVAO)?An(jt.shared.vao,".setVAO(",un.drawVAO.append(jt,An),");"):vn(jt.shared.vao,".setVAO(",un.drawVAO.append(jt,vn),");"):vn(jt.shared.vao,".setVAO(",jt.shared.vao,".targetVAO);"):(vn(jt.shared.vao,".setVAO(null);"),Cn(jt,vn,un,Rn.attributes,Sn),Cn(jt,An,un,Rn.attributes,On)),Nn(jt,vn,un,Rn.uniforms,Sn,!1),Nn(jt,An,un,Rn.uniforms,On,!0),Hn(jt,vn,An,un)):(Jt=jt.global.def("{}"),Rn=un.shader.progVar.append(jt,An),dn=An.def(Rn,".id"),vn=An.def(Jt,"[",dn,"]"),An(jt.shared.gl,".useProgram(",Rn,".program);","if(!",vn,"){",vn,"=",Jt,"[",dn,"]=",jt.link(function(Bn){return qn(tr,jt,un,Bn,2)}),"(",Rn,");}",vn,".call(this,a0[",bn,"],",bn,");"))}function gr(jt,Jt){function un(bn){var dn=Jt.shader[bn];dn&&(dn=dn.append(jt,Rn),isNaN(dn)?Rn.set(On.shader,"."+bn,dn):Rn.set(On.shader,"."+bn,jt.link(dn,{stable:!0})))}var Rn=jt.proc("scope",3);jt.batchId="a2";var On=jt.shared,Sn=On.current;if(wn(jt,Rn,Jt.context),Jt.framebuffer&&Jt.framebuffer.append(jt,Rn),V(Object.keys(Jt.state)).forEach(function(bn){var dn=Jt.state[bn],vn=dn.append(jt,Rn);b(vn)?vn.forEach(function(An,Bn){isNaN(An)?Rn.set(jt.next[bn],"["+Bn+"]",An):Rn.set(jt.next[bn],"["+Bn+"]",jt.link(An,{stable:!0}))}):ee(dn)?Rn.set(On.next,"."+bn,jt.link(vn,{stable:!0})):Rn.set(On.next,"."+bn,vn)}),In(jt,Rn,Jt,!0,!0),["elements","offset","count","instances","primitive"].forEach(function(bn){var dn=Jt.draw[bn];dn&&(dn=dn.append(jt,Rn),isNaN(dn)?Rn.set(On.draw,"."+bn,dn):Rn.set(On.draw,"."+bn,jt.link(dn),{stable:!0}))}),Object.keys(Jt.uniforms).forEach(function(bn){var dn=Jt.uniforms[bn].append(jt,Rn);Array.isArray(dn)&&(dn="["+dn.map(function(vn){return isNaN(vn)?vn:jt.link(vn,{stable:!0})})+"]"),Rn.set(On.uniforms,"["+jt.link(nt.id(bn),{stable:!0})+"]",dn)}),Object.keys(Jt.attributes).forEach(function(bn){var dn=Jt.attributes[bn].append(jt,Rn),vn=jt.scopeAttrib(bn);Object.keys(new dr).forEach(function(An){Rn.set(vn,"."+An,dn[An])})}),Jt.scopeVAO){var pn=Jt.scopeVAO.append(jt,Rn);isNaN(pn)?Rn.set(On.vao,".targetVAO",pn):Rn.set(On.vao,".targetVAO",jt.link(pn,{stable:!0}))}un("vert"),un("frag"),0=--this.refCount&&ut(this)},Be.profile&&(Oe.getTotalRenderbufferSize=function(){var mt=0;return Object.keys(Ct).forEach(function(Ot){mt+=Ct[Ot].stats.size}),mt}),{create:function(mt,Ot){function _t(Bt,Wt){var Gt=0,Xt=0,Kt=32854;if(typeof Bt=="object"&&Bt?("shape"in Bt?(Gt=0|(Xt=Bt.shape)[0],Xt=0|Xt[1]):("radius"in Bt&&(Gt=Xt=0|Bt.radius),"width"in Bt&&(Gt=0|Bt.width),"height"in Bt&&(Xt=0|Bt.height)),"format"in Bt&&(Kt=pt[Bt.format])):typeof Bt=="number"?(Gt=0|Bt,Xt=typeof Wt=="number"?0|Wt:Gt):Bt||(Gt=Xt=1),Gt!==Pt.width||Xt!==Pt.height||Kt!==Pt.format)return _t.width=Pt.width=Gt,_t.height=Pt.height=Xt,Pt.format=Kt,Ge.bindRenderbuffer(36161,Pt.renderbuffer),Ge.renderbufferStorage(36161,Kt,Gt,Xt),Be.profile&&(Pt.stats.size=ft[Pt.format]*Pt.width*Pt.height),_t.format=bt[Pt.format],_t}var Pt=new Qe(Ge.createRenderbuffer());return Ct[Pt.id]=Pt,Oe.renderbufferCount++,_t(mt,Ot),_t.resize=function(Bt,Wt){var Gt=0|Bt,Xt=0|Wt||Gt;return Gt===Pt.width&&Xt===Pt.height||(_t.width=Pt.width=Gt,_t.height=Pt.height=Xt,Ge.bindRenderbuffer(36161,Pt.renderbuffer),Ge.renderbufferStorage(36161,Pt.format,Gt,Xt),Be.profile&&(Pt.stats.size=ft[Pt.format]*Pt.width*Pt.height)),_t},_t._reglType="renderbuffer",_t._renderbuffer=Pt,Be.profile&&(_t.stats=Pt.stats),_t.destroy=function(){Pt.decRef()},_t},clear:function(){he(Ct).forEach(ut)},restore:function(){he(Ct).forEach(function(mt){mt.renderbuffer=Ge.createRenderbuffer(),Ge.bindRenderbuffer(36161,mt.renderbuffer),Ge.renderbufferStorage(36161,mt.format,mt.width,mt.height)}),Ge.bindRenderbuffer(36161,null)}}},Et=[];Et[6408]=4,Et[6407]=3;var Tt=[];Tt[5121]=1,Tt[5126]=4,Tt[36193]=2;var xt=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Dt=["x","y","z","w"],It="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),Ft={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},qt={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Nt={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Je={cw:2304,ccw:2305},Ke=new H(!1,!1,!1,function(){});return function(Ge){function nt(){if(tr.length===0)nn&&nn.update(),dr=null;else{dr=se.next(nt),Ct();for(var $t=tr.length-1;0<=$t;--$t){var mn=tr[$t];mn&&mn(Wn,null,0)}_t.flush(),nn&&nn.update()}}function ht(){!dr&&0=tr.length&&Oe()}}}}function Lt(){var $t=qn.viewport,mn=qn.scissor_box;$t[0]=$t[1]=mn[0]=mn[1]=0,Wn.viewportWidth=Wn.framebufferWidth=Wn.drawingBufferWidth=$t[2]=mn[2]=_t.drawingBufferWidth,Wn.viewportHeight=Wn.framebufferHeight=Wn.drawingBufferHeight=$t[3]=mn[3]=_t.drawingBufferHeight}function Ct(){Wn.tick+=1,Wn.time=Ot(),Lt(),Hn.procs.poll()}function mt(){In.refresh(),Lt(),Hn.procs.refresh(),nn&&nn.update()}function Ot(){return(fe()-yn)/1e3}if(!(Ge=T(Ge)))return null;var _t=Ge.gl,Pt=_t.getContextAttributes();_t.isContextLost();var Bt=function($t,mn){function Ln(Zn){var Qn;Zn=Zn.toLowerCase();try{Qn=En[Zn]=$t.getExtension(Zn)}catch{}return!!Qn}for(var En={},jn=0;jnmn;++mn)yr(te({framebuffer:$t.framebuffer.faces[mn]},$t),pt);else yr($t,pt);else pt(0,$t)},prop:oe.define.bind(null,1),context:oe.define.bind(null,2),this:oe.define.bind(null,3),draw:ut({}),buffer:function($t){return on.create($t,34962,!1,!1)},elements:function($t){return _n.create($t,!1)},texture:In.create2D,cube:In.createCube,renderbuffer:Cn.create,framebuffer:Nn.create,framebufferCube:Nn.createCube,vao:fn.createVAO,attributes:Pt,frame:bt,on:function($t,mn){var Ln;switch($t){case"frame":return bt(mn);case"lost":Ln=kr;break;case"restore":Ln=gr;break;case"destroy":Ln=ir}return Ln.push(mn),{cancel:function(){for(var En=0;En2?"one of ".concat(s," ").concat(w.slice(0,T-1).join(", "),", or ")+w[T-1]:T===2?"one of ".concat(s," ").concat(w[0]," or ").concat(w[1]):"of ".concat(s," ").concat(w[0])}return"of ".concat(s," ").concat(String(w))}e("ERR_INVALID_OPT_VALUE",function(w,s){return'The value "'+s+'" is invalid for option "'+w+'"'},TypeError),e("ERR_INVALID_ARG_TYPE",function(w,s,T){var y,f,l,t,i;if(typeof s=="string"&&(f="not ",s.substr(0,f.length)===f)?(y="must not be",s=s.replace(/^not /,"")):y="must be",function(n,o,a){return(a===void 0||a>n.length)&&(a=n.length),n.substring(a-o.length,a)===o}(w," argument"))l="The ".concat(w," ").concat(y," ").concat(_(s,"type"));else{var r=(typeof i!="number"&&(i=0),i+1>(t=w).length||t.indexOf(".",i)===-1?"argument":"property");l='The "'.concat(w,'" ').concat(r," ").concat(y," ").concat(_(s,"type"))}return l+". Received type ".concat(typeof T)},TypeError),e("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),e("ERR_METHOD_NOT_IMPLEMENTED",function(w){return"The "+w+" method is not implemented"}),e("ERR_STREAM_PREMATURE_CLOSE","Premature close"),e("ERR_STREAM_DESTROYED",function(w){return"Cannot call "+w+" after a stream was destroyed"}),e("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),e("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),e("ERR_STREAM_WRITE_AFTER_END","write after end"),e("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),e("ERR_UNKNOWN_ENCODING",function(w){return"Unknown encoding: "+w},TypeError),e("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),D.exports.q=E},37865:function(D,E,e){var _=e(90386),w=Object.keys||function(n){var o=[];for(var a in n)o.push(a);return o};D.exports=t;var s=e(40410),T=e(37493);e(42018)(t,s);for(var y=w(T.prototype),f=0;f0)if(typeof X=="string"||oe.objectMode||Object.getPrototypeOf(X)===f.prototype||(X=function(se){return f.from(se)}(X)),K)oe.endEmitted?x(Q,new v):M(Q,oe,X,!0);else if(oe.ended)x(Q,new b);else{if(oe.destroyed)return!1;oe.reading=!1,oe.decoder&&!Y?(X=oe.decoder.write(X),oe.objectMode||X.length!==0?M(Q,oe,X,!1):I(Q,oe)):M(Q,oe,X,!1)}else K||(oe.reading=!1,I(Q,oe));return!oe.ended&&(oe.lengthX.highWaterMark&&(X.highWaterMark=function(Y){return Y>=A?Y=A:(Y--,Y|=Y>>>1,Y|=Y>>>2,Y|=Y>>>4,Y|=Y>>>8,Y|=Y>>>16,Y++),Y}(Q)),Q<=X.length?Q:X.ended?X.length:(X.needReadable=!0,0))}function L(Q){var X=Q._readableState;s("emitReadable",X.needReadable,X.emittedReadable),X.needReadable=!1,X.emittedReadable||(s("emitReadable",X.flowing),X.emittedReadable=!0,w.nextTick(O,Q))}function O(Q){var X=Q._readableState;s("emitReadable_",X.destroyed,X.length,X.ended),X.destroyed||!X.length&&!X.ended||(Q.emit("readable"),X.emittedReadable=!1),X.needReadable=!X.flowing&&!X.ended&&X.length<=X.highWaterMark,N(Q)}function I(Q,X){X.readingMore||(X.readingMore=!0,w.nextTick(R,Q,X))}function R(Q,X){for(;!X.reading&&!X.ended&&(X.length0,X.resumeScheduled&&!X.paused?X.flowing=!0:Q.listenerCount("data")>0&&Q.resume()}function B(Q){s("readable nexttick read 0"),Q.read(0)}function G(Q,X){s("resume",X.reading),X.reading||Q.read(0),X.resumeScheduled=!1,Q.emit("resume"),N(Q),X.flowing&&!X.reading&&Q.read(0)}function N(Q){var X=Q._readableState;for(s("flow",X.flowing);X.flowing&&Q.read()!==null;);}function j(Q,X){return X.length===0?null:(X.objectMode?Y=X.buffer.shift():!Q||Q>=X.length?(Y=X.decoder?X.buffer.join(""):X.buffer.length===1?X.buffer.first():X.buffer.concat(X.length),X.buffer.clear()):Y=X.buffer.consume(Q,X.decoder),Y);var Y}function V(Q){var X=Q._readableState;s("endReadable",X.endEmitted),X.endEmitted||(X.ended=!0,w.nextTick(H,X,Q))}function H(Q,X){if(s("endReadableNT",Q.endEmitted,Q.length),!Q.endEmitted&&Q.length===0&&(Q.endEmitted=!0,X.readable=!1,X.emit("end"),Q.autoDestroy)){var Y=X._writableState;(!Y||Y.autoDestroy&&Y.finished)&&X.destroy()}}function ee(Q,X){for(var Y=0,K=Q.length;Y=X.highWaterMark:X.length>0)||X.ended))return s("read: emitReadable",X.length,X.ended),X.length===0&&X.ended?V(this):L(this),null;if((Q=C(Q,X))===0&&X.ended)return X.length===0&&V(this),null;var K,te=X.needReadable;return s("need readable",te),(X.length===0||X.length-Q0?j(Q,X):null)===null?(X.needReadable=X.length<=X.highWaterMark,Q=0):(X.length-=Q,X.awaitDrain=0),X.length===0&&(X.ended||(X.needReadable=!0),Y!==Q&&X.ended&&V(this)),K!==null&&this.emit("data",K),K},k.prototype._read=function(Q){x(this,new d("_read()"))},k.prototype.pipe=function(Q,X){var Y=this,K=this._readableState;switch(K.pipesCount){case 0:K.pipes=Q;break;case 1:K.pipes=[K.pipes,Q];break;default:K.pipes.push(Q)}K.pipesCount+=1,s("pipe count=%d opts=%j",K.pipesCount,X);var te=X&&X.end===!1||Q===w.stdout||Q===w.stderr?he:ae;function ae(){s("onend"),Q.end()}K.endEmitted?w.nextTick(te):Y.once("end",te),Q.on("unpipe",function xe(Re,we){s("onunpipe"),Re===Y&&we&&we.hasUnpiped===!1&&(we.hasUnpiped=!0,s("cleanup"),Q.removeListener("close",pe),Q.removeListener("finish",de),Q.removeListener("drain",oe),Q.removeListener("error",ye),Q.removeListener("unpipe",xe),Y.removeListener("end",ae),Y.removeListener("end",he),Y.removeListener("data",fe),se=!0,!K.awaitDrain||Q._writableState&&!Q._writableState.needDrain||oe())});var oe=function(xe){return function(){var Re=xe._readableState;s("pipeOnDrain",Re.awaitDrain),Re.awaitDrain&&Re.awaitDrain--,Re.awaitDrain===0&&T(xe,"data")&&(Re.flowing=!0,N(xe))}}(Y);Q.on("drain",oe);var se=!1;function fe(xe){s("ondata");var Re=Q.write(xe);s("dest.write",Re),Re===!1&&((K.pipesCount===1&&K.pipes===Q||K.pipesCount>1&&ee(K.pipes,Q)!==-1)&&!se&&(s("false write response, pause",K.awaitDrain),K.awaitDrain++),Y.pause())}function ye(xe){s("onerror",xe),he(),Q.removeListener("error",ye),T(Q,"error")===0&&x(Q,xe)}function pe(){Q.removeListener("finish",de),he()}function de(){s("onfinish"),Q.removeListener("close",pe),he()}function he(){s("unpipe"),Y.unpipe(Q)}return Y.on("data",fe),function(xe,Re,we){if(typeof xe.prependListener=="function")return xe.prependListener(Re,we);xe._events&&xe._events.error?Array.isArray(xe._events.error)?xe._events.error.unshift(we):xe._events.error=[we,xe._events.error]:xe.on(Re,we)}(Q,"error",ye),Q.once("close",pe),Q.once("finish",de),Q.emit("pipe",Y),K.flowing||(s("pipe resume"),Y.resume()),Q},k.prototype.unpipe=function(Q){var X=this._readableState,Y={hasUnpiped:!1};if(X.pipesCount===0)return this;if(X.pipesCount===1)return Q&&Q!==X.pipes||(Q||(Q=X.pipes),X.pipes=null,X.pipesCount=0,X.flowing=!1,Q&&Q.emit("unpipe",this,Y)),this;if(!Q){var K=X.pipes,te=X.pipesCount;X.pipes=null,X.pipesCount=0,X.flowing=!1;for(var ae=0;ae0,K.flowing!==!1&&this.resume()):Q==="readable"&&(K.endEmitted||K.readableListening||(K.readableListening=K.needReadable=!0,K.flowing=!1,K.emittedReadable=!1,s("on readable",K.length,K.reading),K.length?L(this):K.reading||w.nextTick(B,this))),Y},k.prototype.addListener=k.prototype.on,k.prototype.removeListener=function(Q,X){var Y=y.prototype.removeListener.call(this,Q,X);return Q==="readable"&&w.nextTick(U,this),Y},k.prototype.removeAllListeners=function(Q){var X=y.prototype.removeAllListeners.apply(this,arguments);return Q!=="readable"&&Q!==void 0||w.nextTick(U,this),X},k.prototype.resume=function(){var Q=this._readableState;return Q.flowing||(s("resume"),Q.flowing=!Q.readableListening,function(X,Y){Y.resumeScheduled||(Y.resumeScheduled=!0,w.nextTick(G,X,Y))}(this,Q)),Q.paused=!1,this},k.prototype.pause=function(){return s("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(s("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},k.prototype.wrap=function(Q){var X=this,Y=this._readableState,K=!1;for(var te in Q.on("end",function(){if(s("wrapped end"),Y.decoder&&!Y.ended){var oe=Y.decoder.end();oe&&oe.length&&X.push(oe)}X.push(null)}),Q.on("data",function(oe){s("wrapped data"),Y.decoder&&(oe=Y.decoder.write(oe)),Y.objectMode&&oe==null||(Y.objectMode||oe&&oe.length)&&(X.push(oe)||(K=!0,Q.pause()))}),Q)this[te]===void 0&&typeof Q[te]=="function"&&(this[te]=function(oe){return function(){return Q[oe].apply(Q,arguments)}}(te));for(var ae=0;ae-1))throw new v(I);return this._writableState.defaultEncoding=I,this},Object.defineProperty(k.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(k.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),k.prototype._write=function(I,R,U){U(new a("_write()"))},k.prototype._writev=null,k.prototype.end=function(I,R,U){var B=this._writableState;return typeof I=="function"?(U=I,I=null,R=null):typeof R=="function"&&(U=R,R=null),I!=null&&this.write(I,R),B.corked&&(B.corked=1,this.uncork()),B.ending||function(G,N,j){N.ending=!0,O(G,N),j&&(N.finished?w.nextTick(j):G.once("finish",j)),N.ended=!0,G.writable=!1}(this,B,U),this},Object.defineProperty(k.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(k.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState!==void 0&&this._writableState.destroyed},set:function(I){this._writableState&&(this._writableState.destroyed=I)}}),k.prototype.destroy=i.destroy,k.prototype._undestroy=i.undestroy,k.prototype._destroy=function(I,R){R(I)}},68221:function(D,E,e){var _,w=e(90386);function s(b,d,v){return d in b?Object.defineProperty(b,d,{value:v,enumerable:!0,configurable:!0,writable:!0}):b[d]=v,b}var T=e(12726),y=Symbol("lastResolve"),f=Symbol("lastReject"),l=Symbol("error"),t=Symbol("ended"),i=Symbol("lastPromise"),r=Symbol("handlePromise"),n=Symbol("stream");function o(b,d){return{value:b,done:d}}function a(b){var d=b[y];if(d!==null){var v=b[n].read();v!==null&&(b[i]=null,b[y]=null,b[f]=null,d(o(v,!1)))}}function u(b){w.nextTick(a,b)}var p=Object.getPrototypeOf(function(){}),c=Object.setPrototypeOf((s(_={get stream(){return this[n]},next:function(){var b=this,d=this[l];if(d!==null)return Promise.reject(d);if(this[t])return Promise.resolve(o(void 0,!0));if(this[n].destroyed)return new Promise(function(m,k){w.nextTick(function(){b[l]?k(b[l]):m(o(void 0,!0))})});var v,x=this[i];if(x)v=new Promise(function(m,k){return function(h,M){m.then(function(){k[t]?h(o(void 0,!0)):k[r](h,M)},M)}}(x,this));else{var g=this[n].read();if(g!==null)return Promise.resolve(o(g,!1));v=new Promise(this[r])}return this[i]=v,v}},Symbol.asyncIterator,function(){return this}),s(_,"return",function(){var b=this;return new Promise(function(d,v){b[n].destroy(null,function(x){x?v(x):d(o(void 0,!0))})})}),_),p);D.exports=function(b){var d,v=Object.create(c,(s(d={},n,{value:b,writable:!0}),s(d,y,{value:null,writable:!0}),s(d,f,{value:null,writable:!0}),s(d,l,{value:null,writable:!0}),s(d,t,{value:b._readableState.endEmitted,writable:!0}),s(d,r,{value:function(x,g){var m=v[n].read();m?(v[i]=null,v[y]=null,v[f]=null,x(o(m,!1))):(v[y]=x,v[f]=g)},writable:!0}),d));return v[i]=null,T(b,function(x){if(x&&x.code!=="ERR_STREAM_PREMATURE_CLOSE"){var g=v[f];return g!==null&&(v[i]=null,v[y]=null,v[f]=null,g(x)),void(v[l]=x)}var m=v[y];m!==null&&(v[i]=null,v[y]=null,v[f]=null,m(o(void 0,!0))),v[t]=!0}),b.on("readable",u.bind(null,v)),v}},31125:function(D,E,e){function _(l,t){var i=Object.keys(l);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(l);t&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(l,n).enumerable})),i.push.apply(i,r)}return i}function w(l,t,i){return t in l?Object.defineProperty(l,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):l[t]=i,l}function s(l,t){for(var i=0;i0?this.tail.next=n:this.head=n,this.tail=n,++this.length}},{key:"unshift",value:function(r){var n={data:r,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var n=this.head,o=""+n.data;n=n.next;)o+=r+n.data;return o}},{key:"concat",value:function(r){if(this.length===0)return T.alloc(0);for(var n,o,a,u=T.allocUnsafe(r>>>0),p=this.head,c=0;p;)n=p.data,o=u,a=c,T.prototype.copy.call(n,o,a),c+=p.data.length,p=p.next;return u}},{key:"consume",value:function(r,n){var o;return ru.length?u.length:r;if(p===u.length?a+=u:a+=u.slice(0,r),(r-=p)==0){p===u.length?(++o,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=u.slice(p));break}++o}return this.length-=o,a}},{key:"_getBuffer",value:function(r){var n=T.allocUnsafe(r),o=this.head,a=1;for(o.data.copy(n),r-=o.data.length;o=o.next;){var u=o.data,p=r>u.length?u.length:r;if(u.copy(n,n.length-r,0,p),(r-=p)==0){p===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(p));break}++a}return this.length-=a,n}},{key:f,value:function(r,n){return y(this,function(o){for(var a=1;a0,function(v){a||(a=v),v&&p.forEach(l),d||(p.forEach(l),u(a))})});return n.reduce(t)}},56306:function(D,E,e){var _=e(74322).q.ERR_INVALID_OPT_VALUE;D.exports={getHighWaterMark:function(w,s,T,y){var f=function(l,t,i){return l.highWaterMark!=null?l.highWaterMark:t?l[i]:null}(s,y,T);if(f!=null){if(!isFinite(f)||Math.floor(f)!==f||f<0)throw new _(y?T:"highWaterMark",f);return Math.floor(f)}return w.objectMode?16:16384}}},71405:function(D,E,e){D.exports=e(15398).EventEmitter},68019:function(D,E,e){var _=e(71665).Buffer,w=_.isEncoding||function(o){switch((o=""+o)&&o.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function s(o){var a;switch(this.encoding=function(u){var p=function(c){if(!c)return"utf8";for(var b;;)switch(c){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return c;default:if(b)return;c=(""+c).toLowerCase(),b=!0}}(u);if(typeof p!="string"&&(_.isEncoding===w||!w(u)))throw new Error("Unknown encoding: "+u);return p||u}(o),this.encoding){case"utf16le":this.text=f,this.end=l,a=4;break;case"utf8":this.fillLast=y,a=4;break;case"base64":this.text=t,this.end=i,a=3;break;default:return this.write=r,void(this.end=n)}this.lastNeed=0,this.lastTotal=0,this.lastChar=_.allocUnsafe(a)}function T(o){return o<=127?0:o>>5==6?2:o>>4==14?3:o>>3==30?4:o>>6==2?-1:-2}function y(o){var a=this.lastTotal-this.lastNeed,u=function(p,c,b){if((192&c[0])!=128)return p.lastNeed=0,"�";if(p.lastNeed>1&&c.length>1){if((192&c[1])!=128)return p.lastNeed=1,"�";if(p.lastNeed>2&&c.length>2&&(192&c[2])!=128)return p.lastNeed=2,"�"}}(this,o);return u!==void 0?u:this.lastNeed<=o.length?(o.copy(this.lastChar,a,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(o.copy(this.lastChar,a,0,o.length),void(this.lastNeed-=o.length))}function f(o,a){if((o.length-a)%2==0){var u=o.toString("utf16le",a);if(u){var p=u.charCodeAt(u.length-1);if(p>=55296&&p<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=o[o.length-2],this.lastChar[1]=o[o.length-1],u.slice(0,-1)}return u}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=o[o.length-1],o.toString("utf16le",a,o.length-1)}function l(o){var a=o&&o.length?this.write(o):"";if(this.lastNeed){var u=this.lastTotal-this.lastNeed;return a+this.lastChar.toString("utf16le",0,u)}return a}function t(o,a){var u=(o.length-a)%3;return u===0?o.toString("base64",a):(this.lastNeed=3-u,this.lastTotal=3,u===1?this.lastChar[0]=o[o.length-1]:(this.lastChar[0]=o[o.length-2],this.lastChar[1]=o[o.length-1]),o.toString("base64",a,o.length-u))}function i(o){var a=o&&o.length?this.write(o):"";return this.lastNeed?a+this.lastChar.toString("base64",0,3-this.lastNeed):a}function r(o){return o.toString(this.encoding)}function n(o){return o&&o.length?this.write(o):""}E.s=s,s.prototype.write=function(o){if(o.length===0)return"";var a,u;if(this.lastNeed){if((a=this.fillLast(o))===void 0)return"";u=this.lastNeed,this.lastNeed=0}else u=0;return u=0?(x>0&&(c.lastNeed=x-1),x):--v=0?(x>0&&(c.lastNeed=x-2),x):--v=0?(x>0&&(x===2?x=0:c.lastNeed=x-3),x):0}(this,o,a);if(!this.lastNeed)return o.toString("utf8",a);this.lastTotal=u;var p=o.length-(u-this.lastNeed);return o.copy(this.lastChar,0,p),o.toString("utf8",a,p)},s.prototype.fillLast=function(o){if(this.lastNeed<=o.length)return o.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);o.copy(this.lastChar,this.lastTotal-this.lastNeed,0,o.length),this.lastNeed-=o.length}},90715:function(D,E,e){var _=e(32791),w=e(41633)("stream-parser");function s(o){w("initializing parser stream"),o._parserBytesLeft=0,o._parserBuffers=[],o._parserBuffered=0,o._parserState=-1,o._parserCallback=null,typeof o.push=="function"&&(o._parserOutput=o.push.bind(o)),o._parserInit=!0}function T(o,a){_(!this._parserCallback,'there is already a "callback" set!'),_(isFinite(o)&&o>0,'can only buffer a finite number of bytes > 0, got "'+o+'"'),this._parserInit||s(this),w("buffering %o bytes",o),this._parserBytesLeft=o,this._parserCallback=a,this._parserState=0}function y(o,a){_(!this._parserCallback,'there is already a "callback" set!'),_(o>0,'can only skip > 0 bytes, got "'+o+'"'),this._parserInit||s(this),w("skipping %o bytes",o),this._parserBytesLeft=o,this._parserCallback=a,this._parserState=1}function f(o,a){_(!this._parserCallback,'There is already a "callback" set!'),_(o>0,'can only pass through > 0 bytes, got "'+o+'"'),this._parserInit||s(this),w("passing through %o bytes",o),this._parserBytesLeft=o,this._parserCallback=a,this._parserState=2}function l(o,a,u){this._parserInit||s(this),w("write(%o bytes)",o.length),typeof a=="function"&&(u=a),r(this,o,null,u)}function t(o,a,u){this._parserInit||s(this),w("transform(%o bytes)",o.length),typeof a!="function"&&(a=this._parserOutput),r(this,o,a,u)}function i(o,a,u,p){if(o._parserBytesLeft-=a.length,w("%o bytes left for stream piece",o._parserBytesLeft),o._parserState===0?(o._parserBuffers.push(a),o._parserBuffered+=a.length):o._parserState===2&&u(a),o._parserBytesLeft!==0)return p;var c=o._parserCallback;if(c&&o._parserState===0&&o._parserBuffers.length>1&&(a=Buffer.concat(o._parserBuffers,o._parserBuffered)),o._parserState!==0&&(a=null),o._parserCallback=null,o._parserBuffered=0,o._parserState=-1,o._parserBuffers.splice(0),c){var b=[];a&&b.push(a),u&&b.push(u);var d=c.length>b.length;d&&b.push(n(p));var v=c.apply(o,b);if(!d||p===v)return p}}D.exports=function(o){var a=o&&typeof o._transform=="function",u=o&&typeof o._write=="function";if(!a&&!u)throw new Error("must pass a Writable or Transform stream in");w("extending Parser into stream"),o._bytes=T,o._skipBytes=y,a&&(o._passthrough=f),a?o._transform=t:o._write=l};var r=n(function o(a,u,p,c){return a._parserBytesLeft<=0?c(new Error("got data but not currently parsing anything")):u.length<=a._parserBytesLeft?function(){return i(a,u,p,c)}:function(){var b=u.slice(0,a._parserBytesLeft);return i(a,b,p,function(d){return d?c(d):u.length>b.length?function(){return o(a,u.slice(b.length),p,c)}:void 0})}});function n(o){return function(){for(var a=o.apply(this,arguments);typeof a=="function";)a=a();return a}}},41633:function(D,E,e){var _=e(90386);function w(){var s;try{s=E.storage.debug}catch{}return!s&&_!==void 0&&"env"in _&&(s=_.env.DEBUG),s}(E=D.exports=e(74469)).log=function(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},E.formatArgs=function(s){var T=this.useColors;if(s[0]=(T?"%c":"")+this.namespace+(T?" %c":" ")+s[0]+(T?"%c ":" ")+"+"+E.humanize(this.diff),T){var y="color: "+this.color;s.splice(1,0,y,"color: inherit");var f=0,l=0;s[0].replace(/%[a-zA-Z%]/g,function(t){t!=="%%"&&(f++,t==="%c"&&(l=f))}),s.splice(l,0,y)}},E.save=function(s){try{s==null?E.storage.removeItem("debug"):E.storage.debug=s}catch{}},E.load=w,E.useColors=function(){return!(typeof window>"u"||!window.process||window.process.type!=="renderer")||typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},E.storage=typeof chrome<"u"&&chrome.storage!==void 0?chrome.storage.local:function(){try{return window.localStorage}catch{}}(),E.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],E.formatters.j=function(s){try{return JSON.stringify(s)}catch(T){return"[UnexpectedJSONParseError]: "+T.message}},E.enable(w())},74469:function(D,E,e){var _;function w(s){function T(){if(T.enabled){var y=T,f=+new Date,l=f-(_||f);y.diff=l,y.prev=_,y.curr=f,_=f;for(var t=new Array(arguments.length),i=0;i0)return function(t){if(!((t=String(t)).length>100)){var i=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(i){var r=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"days":case"day":case"d":return r*w;case"hours":case"hour":case"hrs":case"hr":case"h":return r*_;case"minutes":case"minute":case"mins":case"min":case"m":return r*e;case"seconds":case"second":case"secs":case"sec":case"s":return r*E;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}(T);if(l==="number"&&isNaN(T)===!1)return y.long?s(f=T,w,"day")||s(f,_,"hour")||s(f,e,"minute")||s(f,E,"second")||f+" ms":function(t){return t>=w?Math.round(t/w)+"d":t>=_?Math.round(t/_)+"h":t>=e?Math.round(t/e)+"m":t>=E?Math.round(t/E)+"s":t+"ms"}(T);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(T))}},99011:function(D,E,e){var _=e(88641);D.exports=function(w,s,T){if(w==null)throw Error("First argument should be a string");if(s==null)throw Error("Separator should be a string or a RegExp");T?(typeof T=="string"||Array.isArray(T))&&(T={ignore:T}):T={},T.escape==null&&(T.escape=!0),T.ignore==null?T.ignore=["[]","()","{}","<>",'""',"''","``","“”","«»"]:(typeof T.ignore=="string"&&(T.ignore=[T.ignore]),T.ignore=T.ignore.map(function(n){return n.length===1&&(n+=n),n}));var y=_.parse(w,{flat:!0,brackets:T.ignore}),f=y[0].split(s);if(T.escape){for(var l=[],t=0;t0;){p=b[b.length-1];var d=E[p];if(T[p]=0&&f[p].push(y[x])}T[p]=v}else{if(w[p]===_[p]){var g=[],m=[],k=0;for(v=c.length-1;v>=0;--v){var h=c[v];if(s[h]=!1,g.push(h),m.push(f[h]),k+=f[h].length,y[h]=r.length,h===p){c.length=v;break}}r.push(g);var M=new Array(k);for(v=0;v1&&(i=1),i<-1&&(i=-1),(y*t-f*l<0?-1:1)*Math.acos(i)};E.default=function(y){var f=y.px,l=y.py,t=y.cx,i=y.cy,r=y.rx,n=y.ry,o=y.xAxisRotation,a=o===void 0?0:o,u=y.largeArcFlag,p=u===void 0?0:u,c=y.sweepFlag,b=c===void 0?0:c,d=[];if(r===0||n===0)return[];var v=Math.sin(a*_/360),x=Math.cos(a*_/360),g=x*(f-t)/2+v*(l-i)/2,m=-v*(f-t)/2+x*(l-i)/2;if(g===0&&m===0)return[];r=Math.abs(r),n=Math.abs(n);var k=Math.pow(g,2)/Math.pow(r,2)+Math.pow(m,2)/Math.pow(n,2);k>1&&(r*=Math.sqrt(k),n*=Math.sqrt(k));var h=function(B,G,N,j,V,H,ee,Q,X,Y,K,te){var ae=Math.pow(V,2),oe=Math.pow(H,2),se=Math.pow(K,2),fe=Math.pow(te,2),ye=ae*oe-ae*fe-oe*se;ye<0&&(ye=0),ye/=ae*fe+oe*se;var pe=(ye=Math.sqrt(ye)*(ee===Q?-1:1))*V/H*te,de=ye*-H/V*K,he=Y*pe-X*de+(B+N)/2,xe=X*pe+Y*de+(G+j)/2,Re=(K-pe)/V,we=(te-de)/H,Ae=(-K-pe)/V,Me=(-te-de)/H,Ce=T(1,0,Re,we),ne=T(Re,we,Ae,Me);return Q===0&&ne>0&&(ne-=_),Q===1&&ne<0&&(ne+=_),[he,xe,Ce,ne]}(f,l,t,i,r,n,p,b,v,x,g,m),M=function(B,G){if(Array.isArray(B))return B;if(Symbol.iterator in Object(B))return function(N,j){var V=[],H=!0,ee=!1,Q=void 0;try{for(var X,Y=N[Symbol.iterator]();!(H=(X=Y.next()).done)&&(V.push(X.value),!j||V.length!==j);H=!0);}catch(K){ee=!0,Q=K}finally{try{!H&&Y.return&&Y.return()}finally{if(ee)throw Q}}return V}(B,G);throw new TypeError("Invalid attempt to destructure non-iterable instance")}(h,4),A=M[0],C=M[1],L=M[2],O=M[3],I=Math.abs(O)/(_/4);Math.abs(1-I)<1e-7&&(I=1);var R=Math.max(Math.ceil(I),1);O/=R;for(var U=0;Ul[2]&&(l[2]=r[n+0]),r[n+1]>l[3]&&(l[3]=r[n+1]);return l}},29988:function(D,E,e){D.exports=function(T){for(var y,f=[],l=0,t=0,i=0,r=0,n=null,o=null,a=0,u=0,p=0,c=T.length;p4?(l=b[b.length-4],t=b[b.length-3]):(l=a,t=u),f.push(b)}return f};var _=e(7095);function w(T,y,f,l){return["C",T,y,f,l,f,l]}function s(T,y,f,l,t,i){return["C",T/3+.6666666666666666*f,y/3+.6666666666666666*l,t/3+.6666666666666666*f,i/3+.6666666666666666*l,t,i]}},82019:function(D,E,e){var _,w=e(1750),s=e(95616),T=e(31457),y=e(89546),f=e(44781),l=document.createElement("canvas"),t=l.getContext("2d");D.exports=function(i,r){if(!y(i))throw Error("Argument should be valid svg path string");var n,o;r||(r={}),r.shape?(n=r.shape[0],o=r.shape[1]):(n=l.width=r.w||r.width||200,o=l.height=r.h||r.height||200);var a=Math.min(n,o),u=r.stroke||0,p=r.viewbox||r.viewBox||w(i),c=[n/(p[2]-p[0]),o/(p[3]-p[1])],b=Math.min(c[0]||0,c[1]||0)/2;if(t.fillStyle="black",t.fillRect(0,0,n,o),t.fillStyle="white",u&&(typeof u!="number"&&(u=1),t.strokeStyle=u>0?"white":"black",t.lineWidth=Math.abs(u)),t.translate(.5*n,.5*o),t.scale(b,b),function(){if(_!=null)return _;var x=document.createElement("canvas").getContext("2d");if(x.canvas.width=x.canvas.height=1,!window.Path2D)return _=!1;var g=new Path2D("M0,0h1v1h-1v-1Z");x.fillStyle="black",x.fill(g);var m=x.getImageData(0,0,1,1);return _=m&&m.data&&m.data[3]===255}()){var d=new Path2D(i);t.fill(d),u&&t.stroke(d)}else{var v=s(i);T(t,v),t.fill(),u&&t.stroke()}return t.setTransform(1,0,0,1,0,0),f(t,{cutoff:r.cutoff!=null?r.cutoff:.5,radius:r.radius!=null?r.radius:.5*a})}},84267:function(D,E,e){var _;(function(w){var s=/^\s+/,T=/\s+$/,y=0,f=w.round,l=w.min,t=w.max,i=w.random;function r(K,te){if(te=te||{},(K=K||"")instanceof r)return K;if(!(this instanceof r))return new r(K,te);var ae=function(oe){var se,fe,ye,pe={r:0,g:0,b:0},de=1,he=null,xe=null,Re=null,we=!1,Ae=!1;return typeof oe=="string"&&(oe=function(Me){Me=Me.replace(s,"").replace(T,"").toLowerCase();var Ce,ne=!1;if(L[Me])Me=L[Me],ne=!0;else if(Me=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};return(Ce=X.rgb.exec(Me))?{r:Ce[1],g:Ce[2],b:Ce[3]}:(Ce=X.rgba.exec(Me))?{r:Ce[1],g:Ce[2],b:Ce[3],a:Ce[4]}:(Ce=X.hsl.exec(Me))?{h:Ce[1],s:Ce[2],l:Ce[3]}:(Ce=X.hsla.exec(Me))?{h:Ce[1],s:Ce[2],l:Ce[3],a:Ce[4]}:(Ce=X.hsv.exec(Me))?{h:Ce[1],s:Ce[2],v:Ce[3]}:(Ce=X.hsva.exec(Me))?{h:Ce[1],s:Ce[2],v:Ce[3],a:Ce[4]}:(Ce=X.hex8.exec(Me))?{r:B(Ce[1]),g:B(Ce[2]),b:B(Ce[3]),a:V(Ce[4]),format:ne?"name":"hex8"}:(Ce=X.hex6.exec(Me))?{r:B(Ce[1]),g:B(Ce[2]),b:B(Ce[3]),format:ne?"name":"hex"}:(Ce=X.hex4.exec(Me))?{r:B(Ce[1]+""+Ce[1]),g:B(Ce[2]+""+Ce[2]),b:B(Ce[3]+""+Ce[3]),a:V(Ce[4]+""+Ce[4]),format:ne?"name":"hex8"}:!!(Ce=X.hex3.exec(Me))&&{r:B(Ce[1]+""+Ce[1]),g:B(Ce[2]+""+Ce[2]),b:B(Ce[3]+""+Ce[3]),format:ne?"name":"hex"}}(oe)),typeof oe=="object"&&(Y(oe.r)&&Y(oe.g)&&Y(oe.b)?(se=oe.r,fe=oe.g,ye=oe.b,pe={r:255*R(se,255),g:255*R(fe,255),b:255*R(ye,255)},we=!0,Ae=String(oe.r).substr(-1)==="%"?"prgb":"rgb"):Y(oe.h)&&Y(oe.s)&&Y(oe.v)?(he=N(oe.s),xe=N(oe.v),pe=function(Me,Ce,ne){Me=6*R(Me,360),Ce=R(Ce,100),ne=R(ne,100);var ue=w.floor(Me),me=Me-ue,Te=ne*(1-Ce),Ee=ne*(1-me*Ce),Ue=ne*(1-(1-me)*Ce),De=ue%6;return{r:255*[ne,Ee,Te,Te,Ue,ne][De],g:255*[Ue,ne,ne,Ee,Te,Te][De],b:255*[Te,Te,Ue,ne,ne,Ee][De]}}(oe.h,he,xe),we=!0,Ae="hsv"):Y(oe.h)&&Y(oe.s)&&Y(oe.l)&&(he=N(oe.s),Re=N(oe.l),pe=function(Me,Ce,ne){var ue,me,Te;function Ee(je,ge,be){return be<0&&(be+=1),be>1&&(be-=1),be<1/6?je+6*(ge-je)*be:be<.5?ge:be<2/3?je+(ge-je)*(2/3-be)*6:je}if(Me=R(Me,360),Ce=R(Ce,100),ne=R(ne,100),Ce===0)ue=me=Te=ne;else{var Ue=ne<.5?ne*(1+Ce):ne+Ce-ne*Ce,De=2*ne-Ue;ue=Ee(De,Ue,Me+1/3),me=Ee(De,Ue,Me),Te=Ee(De,Ue,Me-1/3)}return{r:255*ue,g:255*me,b:255*Te}}(oe.h,he,Re),we=!0,Ae="hsl"),oe.hasOwnProperty("a")&&(de=oe.a)),de=I(de),{ok:we,format:oe.format||Ae,r:l(255,t(pe.r,0)),g:l(255,t(pe.g,0)),b:l(255,t(pe.b,0)),a:de}}(K);this._originalInput=K,this._r=ae.r,this._g=ae.g,this._b=ae.b,this._a=ae.a,this._roundA=f(100*this._a)/100,this._format=te.format||ae.format,this._gradientType=te.gradientType,this._r<1&&(this._r=f(this._r)),this._g<1&&(this._g=f(this._g)),this._b<1&&(this._b=f(this._b)),this._ok=ae.ok,this._tc_id=y++}function n(K,te,ae){K=R(K,255),te=R(te,255),ae=R(ae,255);var oe,se,fe=t(K,te,ae),ye=l(K,te,ae),pe=(fe+ye)/2;if(fe==ye)oe=se=0;else{var de=fe-ye;switch(se=pe>.5?de/(2-fe-ye):de/(fe+ye),fe){case K:oe=(te-ae)/de+(te>1)+720)%360;--te;)oe.h=(oe.h+se)%360,fe.push(r(oe));return fe}function C(K,te){te=te||6;for(var ae=r(K).toHsv(),oe=ae.h,se=ae.s,fe=ae.v,ye=[],pe=1/te;te--;)ye.push(r({h:oe,s:se,v:fe})),fe=(fe+pe)%1;return ye}r.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var K=this.toRgb();return(299*K.r+587*K.g+114*K.b)/1e3},getLuminance:function(){var K,te,ae,oe=this.toRgb();return K=oe.r/255,te=oe.g/255,ae=oe.b/255,.2126*(K<=.03928?K/12.92:w.pow((K+.055)/1.055,2.4))+.7152*(te<=.03928?te/12.92:w.pow((te+.055)/1.055,2.4))+.0722*(ae<=.03928?ae/12.92:w.pow((ae+.055)/1.055,2.4))},setAlpha:function(K){return this._a=I(K),this._roundA=f(100*this._a)/100,this},toHsv:function(){var K=o(this._r,this._g,this._b);return{h:360*K.h,s:K.s,v:K.v,a:this._a}},toHsvString:function(){var K=o(this._r,this._g,this._b),te=f(360*K.h),ae=f(100*K.s),oe=f(100*K.v);return this._a==1?"hsv("+te+", "+ae+"%, "+oe+"%)":"hsva("+te+", "+ae+"%, "+oe+"%, "+this._roundA+")"},toHsl:function(){var K=n(this._r,this._g,this._b);return{h:360*K.h,s:K.s,l:K.l,a:this._a}},toHslString:function(){var K=n(this._r,this._g,this._b),te=f(360*K.h),ae=f(100*K.s),oe=f(100*K.l);return this._a==1?"hsl("+te+", "+ae+"%, "+oe+"%)":"hsla("+te+", "+ae+"%, "+oe+"%, "+this._roundA+")"},toHex:function(K){return a(this._r,this._g,this._b,K)},toHexString:function(K){return"#"+this.toHex(K)},toHex8:function(K){return function(te,ae,oe,se,fe){var ye=[G(f(te).toString(16)),G(f(ae).toString(16)),G(f(oe).toString(16)),G(j(se))];return fe&&ye[0].charAt(0)==ye[0].charAt(1)&&ye[1].charAt(0)==ye[1].charAt(1)&&ye[2].charAt(0)==ye[2].charAt(1)&&ye[3].charAt(0)==ye[3].charAt(1)?ye[0].charAt(0)+ye[1].charAt(0)+ye[2].charAt(0)+ye[3].charAt(0):ye.join("")}(this._r,this._g,this._b,this._a,K)},toHex8String:function(K){return"#"+this.toHex8(K)},toRgb:function(){return{r:f(this._r),g:f(this._g),b:f(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+f(this._r)+", "+f(this._g)+", "+f(this._b)+")":"rgba("+f(this._r)+", "+f(this._g)+", "+f(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:f(100*R(this._r,255))+"%",g:f(100*R(this._g,255))+"%",b:f(100*R(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+f(100*R(this._r,255))+"%, "+f(100*R(this._g,255))+"%, "+f(100*R(this._b,255))+"%)":"rgba("+f(100*R(this._r,255))+"%, "+f(100*R(this._g,255))+"%, "+f(100*R(this._b,255))+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":!(this._a<1)&&(O[a(this._r,this._g,this._b,!0)]||!1)},toFilter:function(K){var te="#"+u(this._r,this._g,this._b,this._a),ae=te,oe=this._gradientType?"GradientType = 1, ":"";if(K){var se=r(K);ae="#"+u(se._r,se._g,se._b,se._a)}return"progid:DXImageTransform.Microsoft.gradient("+oe+"startColorstr="+te+",endColorstr="+ae+")"},toString:function(K){var te=!!K;K=K||this._format;var ae=!1,oe=this._a<1&&this._a>=0;return te||!oe||K!=="hex"&&K!=="hex6"&&K!=="hex3"&&K!=="hex4"&&K!=="hex8"&&K!=="name"?(K==="rgb"&&(ae=this.toRgbString()),K==="prgb"&&(ae=this.toPercentageRgbString()),K!=="hex"&&K!=="hex6"||(ae=this.toHexString()),K==="hex3"&&(ae=this.toHexString(!0)),K==="hex4"&&(ae=this.toHex8String(!0)),K==="hex8"&&(ae=this.toHex8String()),K==="name"&&(ae=this.toName()),K==="hsl"&&(ae=this.toHslString()),K==="hsv"&&(ae=this.toHsvString()),ae||this.toHexString()):K==="name"&&this._a===0?this.toName():this.toRgbString()},clone:function(){return r(this.toString())},_applyModification:function(K,te){var ae=K.apply(null,[this].concat([].slice.call(te)));return this._r=ae._r,this._g=ae._g,this._b=ae._b,this.setAlpha(ae._a),this},lighten:function(){return this._applyModification(d,arguments)},brighten:function(){return this._applyModification(v,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(p,arguments)},saturate:function(){return this._applyModification(c,arguments)},greyscale:function(){return this._applyModification(b,arguments)},spin:function(){return this._applyModification(g,arguments)},_applyCombination:function(K,te){return K.apply(null,[this].concat([].slice.call(te)))},analogous:function(){return this._applyCombination(A,arguments)},complement:function(){return this._applyCombination(m,arguments)},monochromatic:function(){return this._applyCombination(C,arguments)},splitcomplement:function(){return this._applyCombination(M,arguments)},triad:function(){return this._applyCombination(k,arguments)},tetrad:function(){return this._applyCombination(h,arguments)}},r.fromRatio=function(K,te){if(typeof K=="object"){var ae={};for(var oe in K)K.hasOwnProperty(oe)&&(ae[oe]=oe==="a"?K[oe]:N(K[oe]));K=ae}return r(K,te)},r.equals=function(K,te){return!(!K||!te)&&r(K).toRgbString()==r(te).toRgbString()},r.random=function(){return r.fromRatio({r:i(),g:i(),b:i()})},r.mix=function(K,te,ae){ae=ae===0?0:ae||50;var oe=r(K).toRgb(),se=r(te).toRgb(),fe=ae/100;return r({r:(se.r-oe.r)*fe+oe.r,g:(se.g-oe.g)*fe+oe.g,b:(se.b-oe.b)*fe+oe.b,a:(se.a-oe.a)*fe+oe.a})},r.readability=function(K,te){var ae=r(K),oe=r(te);return(w.max(ae.getLuminance(),oe.getLuminance())+.05)/(w.min(ae.getLuminance(),oe.getLuminance())+.05)},r.isReadable=function(K,te,ae){var oe,se,fe,ye,pe,de=r.readability(K,te);switch(se=!1,(fe=ae,(ye=((fe=fe||{level:"AA",size:"small"}).level||"AA").toUpperCase())!=="AA"&&ye!=="AAA"&&(ye="AA"),(pe=(fe.size||"small").toLowerCase())!=="small"&&pe!=="large"&&(pe="small"),oe={level:ye,size:pe}).level+oe.size){case"AAsmall":case"AAAlarge":se=de>=4.5;break;case"AAlarge":se=de>=3;break;case"AAAsmall":se=de>=7}return se},r.mostReadable=function(K,te,ae){var oe,se,fe,ye,pe=null,de=0;se=(ae=ae||{}).includeFallbackColors,fe=ae.level,ye=ae.size;for(var he=0;hede&&(de=oe,pe=r(te[he]));return r.isReadable(K,pe,{level:fe,size:ye})||!se?pe:(ae.includeFallbackColors=!1,r.mostReadable(K,["#fff","#000"],ae))};var L=r.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},O=r.hexNames=function(K){var te={};for(var ae in K)K.hasOwnProperty(ae)&&(te[K[ae]]=ae);return te}(L);function I(K){return K=parseFloat(K),(isNaN(K)||K<0||K>1)&&(K=1),K}function R(K,te){(function(oe){return typeof oe=="string"&&oe.indexOf(".")!=-1&&parseFloat(oe)===1})(K)&&(K="100%");var ae=function(oe){return typeof oe=="string"&&oe.indexOf("%")!=-1}(K);return K=l(te,t(0,parseFloat(K))),ae&&(K=parseInt(K*te,10)/100),w.abs(K-te)<1e-6?1:K%te/parseFloat(te)}function U(K){return l(1,t(0,K))}function B(K){return parseInt(K,16)}function G(K){return K.length==1?"0"+K:""+K}function N(K){return K<=1&&(K=100*K+"%"),K}function j(K){return w.round(255*parseFloat(K)).toString(16)}function V(K){return B(K)/255}var H,ee,Q,X=(ee="[\\s|\\(]+("+(H="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+H+")[,|\\s]+("+H+")\\s*\\)?",Q="[\\s|\\(]+("+H+")[,|\\s]+("+H+")[,|\\s]+("+H+")[,|\\s]+("+H+")\\s*\\)?",{CSS_UNIT:new RegExp(H),rgb:new RegExp("rgb"+ee),rgba:new RegExp("rgba"+Q),hsl:new RegExp("hsl"+ee),hsla:new RegExp("hsla"+Q),hsv:new RegExp("hsv"+ee),hsva:new RegExp("hsva"+Q),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function Y(K){return!!X.CSS_UNIT.exec(K)}D.exports?D.exports=r:(_=function(){return r}.call(E,e,E,D))===void 0||(D.exports=_)})(Math)},57060:function(D){D.exports=e,D.exports.float32=D.exports.float=e,D.exports.fract32=D.exports.fract=function(_,w){if(_.length){if(_ instanceof Float32Array)return new Float32Array(_.length);w instanceof Float32Array||(w=e(_));for(var s=0,T=w.length;s":(T.length>100&&(T=T.slice(0,99)+"…"),T=T.replace(w,function(y){switch(y){case` +`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}))}},47403:function(D,E,e){var _=e(24582),w={object:!0,function:!0,undefined:!0};D.exports=function(s){return!!_(s)&&hasOwnProperty.call(w,typeof s)}},82527:function(D,E,e){var _=e(69190),w=e(84985);D.exports=function(s){return w(s)?s:_(s,"%v is not a plain function",arguments[1])}},84985:function(D,E,e){var _=e(73116),w=/^\s*class[\s{/}]/,s=Function.prototype.toString;D.exports=function(T){return!!_(T)&&!w.test(s.call(T))}},24511:function(D,E,e){var _=e(47403);D.exports=function(w){if(!_(w))return!1;try{return!!w.constructor&&w.constructor.prototype===w}catch{return!1}}},9234:function(D,E,e){var _=e(24582),w=e(47403),s=Object.prototype.toString;D.exports=function(T){if(!_(T))return null;if(w(T)){var y=T.toString;if(typeof y!="function"||y===s)return null}try{return""+T}catch{return null}}},10424:function(D,E,e){var _=e(69190),w=e(24582);D.exports=function(s){return w(s)?s:_(s,"Cannot use %v",arguments[1])}},24582:function(D){D.exports=function(E){return E!=null}},58404:function(D,E,e){var _=e(13547),w=e(12129),s=e(12856).Buffer;e.g.__TYPEDARRAY_POOL||(e.g.__TYPEDARRAY_POOL={UINT8:w([32,0]),UINT16:w([32,0]),UINT32:w([32,0]),BIGUINT64:w([32,0]),INT8:w([32,0]),INT16:w([32,0]),INT32:w([32,0]),BIGINT64:w([32,0]),FLOAT:w([32,0]),DOUBLE:w([32,0]),DATA:w([32,0]),UINT8C:w([32,0]),BUFFER:w([32,0])});var T=typeof Uint8ClampedArray<"u",y=typeof BigUint64Array<"u",f=typeof BigInt64Array<"u",l=e.g.__TYPEDARRAY_POOL;l.UINT8C||(l.UINT8C=w([32,0])),l.BIGUINT64||(l.BIGUINT64=w([32,0])),l.BIGINT64||(l.BIGINT64=w([32,0])),l.BUFFER||(l.BUFFER=w([32,0]));var t=l.DATA,i=l.BUFFER;function r(M){if(M){var A=M.length||M.byteLength,C=_.log2(A);t[C].push(M)}}function n(M){M=_.nextPow2(M);var A=_.log2(M),C=t[A];return C.length>0?C.pop():new ArrayBuffer(M)}function o(M){return new Uint8Array(n(M),0,M)}function a(M){return new Uint16Array(n(2*M),0,M)}function u(M){return new Uint32Array(n(4*M),0,M)}function p(M){return new Int8Array(n(M),0,M)}function c(M){return new Int16Array(n(2*M),0,M)}function b(M){return new Int32Array(n(4*M),0,M)}function d(M){return new Float32Array(n(4*M),0,M)}function v(M){return new Float64Array(n(8*M),0,M)}function x(M){return T?new Uint8ClampedArray(n(M),0,M):o(M)}function g(M){return y?new BigUint64Array(n(8*M),0,M):null}function m(M){return f?new BigInt64Array(n(8*M),0,M):null}function k(M){return new DataView(n(M),0,M)}function h(M){M=_.nextPow2(M);var A=_.log2(M),C=i[A];return C.length>0?C.pop():new s(M)}E.free=function(M){if(s.isBuffer(M))i[_.log2(M.length)].push(M);else{if(Object.prototype.toString.call(M)!=="[object ArrayBuffer]"&&(M=M.buffer),!M)return;var A=M.length||M.byteLength,C=0|_.log2(A);t[C].push(M)}},E.freeUint8=E.freeUint16=E.freeUint32=E.freeBigUint64=E.freeInt8=E.freeInt16=E.freeInt32=E.freeBigInt64=E.freeFloat32=E.freeFloat=E.freeFloat64=E.freeDouble=E.freeUint8Clamped=E.freeDataView=function(M){r(M.buffer)},E.freeArrayBuffer=r,E.freeBuffer=function(M){i[_.log2(M.length)].push(M)},E.malloc=function(M,A){if(A===void 0||A==="arraybuffer")return n(M);switch(A){case"uint8":return o(M);case"uint16":return a(M);case"uint32":return u(M);case"int8":return p(M);case"int16":return c(M);case"int32":return b(M);case"float":case"float32":return d(M);case"double":case"float64":return v(M);case"uint8_clamped":return x(M);case"bigint64":return m(M);case"biguint64":return g(M);case"buffer":return h(M);case"data":case"dataview":return k(M);default:return null}return null},E.mallocArrayBuffer=n,E.mallocUint8=o,E.mallocUint16=a,E.mallocUint32=u,E.mallocInt8=p,E.mallocInt16=c,E.mallocInt32=b,E.mallocFloat32=E.mallocFloat=d,E.mallocFloat64=E.mallocDouble=v,E.mallocUint8Clamped=x,E.mallocBigUint64=g,E.mallocBigInt64=m,E.mallocDataView=k,E.mallocBuffer=h,E.clearCache=function(){for(var M=0;M<32;++M)l.UINT8[M].length=0,l.UINT16[M].length=0,l.UINT32[M].length=0,l.INT8[M].length=0,l.INT16[M].length=0,l.INT32[M].length=0,l.FLOAT[M].length=0,l.DOUBLE[M].length=0,l.BIGUINT64[M].length=0,l.BIGINT64[M].length=0,l.UINT8C[M].length=0,t[M].length=0,i[M].length=0}},90448:function(D){var E=/[\'\"]/;D.exports=function(e){return e?(E.test(e.charAt(0))&&(e=e.substr(1)),E.test(e.charAt(e.length-1))&&(e=e.substr(0,e.length-1)),e):""}},93447:function(D){D.exports=function(E,e,_){Array.isArray(_)||(_=[].slice.call(arguments,2));for(var w=0,s=_.length;w=N)return H;switch(H){case"%s":return String(G[B++]);case"%d":return Number(G[B++]);case"%j":try{return JSON.stringify(G[B++])}catch{return"[Circular]"}default:return H}}),V=G[B];B=3&&(B.depth=arguments[2]),arguments.length>=4&&(B.colors=arguments[3]),u(U)?B.showHidden=U:U&&E._extend(B,U),d(B.showHidden)&&(B.showHidden=!1),d(B.depth)&&(B.depth=2),d(B.colors)&&(B.colors=!1),d(B.customInspect)&&(B.customInspect=!0),B.colors&&(B.stylize=t),r(B,R,B.depth)}function t(R,U){var B=l.styles[U];return B?"\x1B["+l.colors[B][0]+"m"+R+"\x1B["+l.colors[B][1]+"m":R}function i(R,U){return R}function r(R,U,B){if(R.customInspect&&U&&k(U.inspect)&&U.inspect!==E.inspect&&(!U.constructor||U.constructor.prototype!==U)){var G=U.inspect(B,R);return b(G)||(G=r(R,G,B)),G}var N=function(K,te){if(d(te))return K.stylize("undefined","undefined");if(b(te)){var ae="'"+JSON.stringify(te).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return K.stylize(ae,"string")}return c(te)?K.stylize(""+te,"number"):u(te)?K.stylize(""+te,"boolean"):p(te)?K.stylize("null","null"):void 0}(R,U);if(N)return N;var j=Object.keys(U),V=function(K){var te={};return K.forEach(function(ae,oe){te[ae]=!0}),te}(j);if(R.showHidden&&(j=Object.getOwnPropertyNames(U)),m(U)&&(j.indexOf("message")>=0||j.indexOf("description")>=0))return n(U);if(j.length===0){if(k(U)){var H=U.name?": "+U.name:"";return R.stylize("[Function"+H+"]","special")}if(v(U))return R.stylize(RegExp.prototype.toString.call(U),"regexp");if(g(U))return R.stylize(Date.prototype.toString.call(U),"date");if(m(U))return n(U)}var ee,Q="",X=!1,Y=["{","}"];return a(U)&&(X=!0,Y=["[","]"]),k(U)&&(Q=" [Function"+(U.name?": "+U.name:"")+"]"),v(U)&&(Q=" "+RegExp.prototype.toString.call(U)),g(U)&&(Q=" "+Date.prototype.toUTCString.call(U)),m(U)&&(Q=" "+n(U)),j.length!==0||X&&U.length!=0?B<0?v(U)?R.stylize(RegExp.prototype.toString.call(U),"regexp"):R.stylize("[Object]","special"):(R.seen.push(U),ee=X?function(K,te,ae,oe,se){for(var fe=[],ye=0,pe=te.length;ye60?ae[0]+(te===""?"":te+` + `)+" "+K.join(`, + `)+" "+ae[1]:ae[0]+te+" "+K.join(", ")+" "+ae[1]}(ee,Q,Y)):Y[0]+Q+Y[1]}function n(R){return"["+Error.prototype.toString.call(R)+"]"}function o(R,U,B,G,N,j){var V,H,ee;if((ee=Object.getOwnPropertyDescriptor(U,N)||{value:U[N]}).get?H=ee.set?R.stylize("[Getter/Setter]","special"):R.stylize("[Getter]","special"):ee.set&&(H=R.stylize("[Setter]","special")),L(G,N)||(V="["+N+"]"),H||(R.seen.indexOf(ee.value)<0?(H=p(B)?r(R,ee.value,null):r(R,ee.value,B-1)).indexOf(` +`)>-1&&(H=j?H.split(` +`).map(function(Q){return" "+Q}).join(` +`).slice(2):` +`+H.split(` +`).map(function(Q){return" "+Q}).join(` +`)):H=R.stylize("[Circular]","special")),d(V)){if(j&&N.match(/^\d+$/))return H;(V=JSON.stringify(""+N)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(V=V.slice(1,-1),V=R.stylize(V,"name")):(V=V.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),V=R.stylize(V,"string"))}return V+": "+H}function a(R){return Array.isArray(R)}function u(R){return typeof R=="boolean"}function p(R){return R===null}function c(R){return typeof R=="number"}function b(R){return typeof R=="string"}function d(R){return R===void 0}function v(R){return x(R)&&h(R)==="[object RegExp]"}function x(R){return typeof R=="object"&&R!==null}function g(R){return x(R)&&h(R)==="[object Date]"}function m(R){return x(R)&&(h(R)==="[object Error]"||R instanceof Error)}function k(R){return typeof R=="function"}function h(R){return Object.prototype.toString.call(R)}function M(R){return R<10?"0"+R.toString(10):R.toString(10)}E.debuglog=function(R){if(R=R.toUpperCase(),!T[R])if(y.test(R)){var U=_.pid;T[R]=function(){var B=E.format.apply(E,arguments);console.error("%s %d: %s",R,U,B)}}else T[R]=function(){};return T[R]},E.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},E.types=e(4936),E.isArray=a,E.isBoolean=u,E.isNull=p,E.isNullOrUndefined=function(R){return R==null},E.isNumber=c,E.isString=b,E.isSymbol=function(R){return typeof R=="symbol"},E.isUndefined=d,E.isRegExp=v,E.types.isRegExp=v,E.isObject=x,E.isDate=g,E.types.isDate=g,E.isError=m,E.types.isNativeError=m,E.isFunction=k,E.isPrimitive=function(R){return R===null||typeof R=="boolean"||typeof R=="number"||typeof R=="string"||typeof R=="symbol"||R===void 0},E.isBuffer=e(45920);var A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(){var R=new Date,U=[M(R.getHours()),M(R.getMinutes()),M(R.getSeconds())].join(":");return[R.getDate(),A[R.getMonth()],U].join(" ")}function L(R,U){return Object.prototype.hasOwnProperty.call(R,U)}E.log=function(){console.log("%s - %s",C(),E.format.apply(E,arguments))},E.inherits=e(42018),E._extend=function(R,U){if(!U||!x(U))return R;for(var B=Object.keys(U),G=B.length;G--;)R[B[G]]=U[B[G]];return R};var O=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;function I(R,U){if(!R){var B=new Error("Promise was rejected with a falsy value");B.reason=R,R=B}return U(R)}E.promisify=function(R){if(typeof R!="function")throw new TypeError('The "original" argument must be of type Function');if(O&&R[O]){var U;if(typeof(U=R[O])!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(U,O,{value:U,enumerable:!1,writable:!1,configurable:!0}),U}function U(){for(var B,G,N=new Promise(function(H,ee){B=H,G=ee}),j=[],V=0;V"u"?e.g:globalThis,t=w(),i=s("String.prototype.slice"),r={},n=Object.getPrototypeOf;f&&T&&n&&_(t,function(a){if(typeof l[a]=="function"){var u=new l[a];if(Symbol.toStringTag in u){var p=n(u),c=T(p,Symbol.toStringTag);if(!c){var b=n(p);c=T(b,Symbol.toStringTag)}r[a]=c.get}}});var o=e(9187);D.exports=function(a){return!!o(a)&&(f&&Symbol.toStringTag in a?function(u){var p=!1;return _(r,function(c,b){if(!p)try{var d=c.call(u);d===b&&(p=d)}catch{}}),p}(a):i(y(a),8,-1))}},3961:function(D,E,e){var _=e(63489),w=e(56131),s=_.instance();function T(n){this.local=this.regionalOptions[n||""]||this.regionalOptions[""]}T.prototype=new _.baseCalendar,w(T.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(n,o){if(typeof n=="string"){var a=n.match(f);return a?a[0]:""}var u=this._validateYear(n),p=n.month(),c=""+this.toChineseMonth(u,p);return o&&c.length<2&&(c="0"+c),this.isIntercalaryMonth(u,p)&&(c+="i"),c},monthNames:function(n){if(typeof n=="string"){var o=n.match(l);return o?o[0]:""}var a=this._validateYear(n),u=n.month(),p=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"][this.toChineseMonth(a,u)-1];return this.isIntercalaryMonth(a,u)&&(p="闰"+p),p},monthNamesShort:function(n){if(typeof n=="string"){var o=n.match(t);return o?o[0]:""}var a=this._validateYear(n),u=n.month(),p=["一","二","三","四","五","六","七","八","九","十","十一","十二"][this.toChineseMonth(a,u)-1];return this.isIntercalaryMonth(a,u)&&(p="闰"+p),p},parseMonth:function(n,o){n=this._validateYear(n);var a,u=parseInt(o);if(isNaN(u))o[0]==="闰"&&(a=!0,o=o.substring(1)),o[o.length-1]==="月"&&(o=o.substring(0,o.length-1)),u=1+["一","二","三","四","五","六","七","八","九","十","十一","十二"].indexOf(o);else{var p=o[o.length-1];a=p==="i"||p==="I"}return this.toMonthIndex(n,u,a)},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(n,o){if(n.year&&(n=n.year()),typeof n!="number"||n<1888||n>2111)throw o.replace(/\{0\}/,this.local.name);return n},toMonthIndex:function(n,o,a){var u=this.intercalaryMonth(n);if(a&&o!==u||o<1||o>12)throw _.local.invalidMonth.replace(/\{0\}/,this.local.name);return u?!a&&o<=u?o-1:o:o-1},toChineseMonth:function(n,o){n.year&&(o=(n=n.year()).month());var a=this.intercalaryMonth(n);if(o<0||o>(a?12:11))throw _.local.invalidMonth.replace(/\{0\}/,this.local.name);return a?o>13},isIntercalaryMonth:function(n,o){n.year&&(o=(n=n.year()).month());var a=this.intercalaryMonth(n);return!!a&&a===o},leapYear:function(n){return this.intercalaryMonth(n)!==0},weekOfYear:function(n,o,a){var u,p=this._validateYear(n,_.local.invalidyear),c=r[p-r[0]],b=c>>9&4095,d=c>>5&15,v=31&c;(u=s.newDate(b,d,v)).add(4-(u.dayOfWeek()||7),"d");var x=this.toJD(n,o,a)-u.toJD();return 1+Math.floor(x/7)},monthsInYear:function(n){return this.leapYear(n)?13:12},daysInMonth:function(n,o){n.year&&(o=n.month(),n=n.year()),n=this._validateYear(n);var a=i[n-i[0]];if(o>(a>>13?12:11))throw _.local.invalidMonth.replace(/\{0\}/,this.local.name);return a&1<<12-o?30:29},weekDay:function(n,o,a){return(this.dayOfWeek(n,o,a)||7)<6},toJD:function(n,o,a){var u=this._validate(n,c,a,_.local.invalidDate);n=this._validateYear(u.year()),o=u.month(),a=u.day();var p=this.isIntercalaryMonth(n,o),c=this.toChineseMonth(n,o),b=function(d,v,x,g,m){var k,h,M;if(typeof d=="object")h=d,k=v||{};else{var A;if(!(typeof d=="number"&&d>=1888&&d<=2111))throw new Error("Lunar year outside range 1888-2111");if(!(typeof v=="number"&&v>=1&&v<=12))throw new Error("Lunar month outside range 1 - 12");if(!(typeof x=="number"&&x>=1&&x<=30))throw new Error("Lunar day outside range 1 - 30");typeof g=="object"?(A=!1,k=g):(A=!!g,k={}),h={year:d,month:v,day:x,isIntercalary:A}}M=h.day-1;var C,L=i[h.year-i[0]],O=L>>13;C=O&&(h.month>O||h.isIntercalary)?h.month:h.month-1;for(var I=0;I>9&4095,(R>>5&15)-1,(31&R)+M);return k.year=U.getFullYear(),k.month=1+U.getMonth(),k.day=U.getDate(),k}(n,c,a,p);return s.toJD(b.year,b.month,b.day)},fromJD:function(n){var o=s.fromJD(n),a=function(p,c,b,d){var v,x;if(typeof p=="object")v=p,x=c||{};else{if(!(typeof p=="number"&&p>=1888&&p<=2111))throw new Error("Solar year outside range 1888-2111");if(!(typeof c=="number"&&c>=1&&c<=12))throw new Error("Solar month outside range 1 - 12");if(!(typeof b=="number"&&b>=1&&b<=31))throw new Error("Solar day outside range 1 - 31");v={year:p,month:c,day:b},x={}}var g=r[v.year-r[0]],m=v.year<<9|v.month<<5|v.day;x.year=m>=g?v.year:v.year-1,g=r[x.year-r[0]];var k,h=new Date(g>>9&4095,(g>>5&15)-1,31&g),M=new Date(v.year,v.month-1,v.day);k=Math.round((M-h)/864e5);var A,C=i[x.year-i[0]];for(A=0;A<13;A++){var L=C&1<<12-A?30:29;if(k>13;return!O||A=2&&t<=6},extraInfo:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);return{century:T[Math.floor((t.year()-1)/100)+1]||""}},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);return y=t.year()+(t.year()<0?1:0),f=t.month(),(l=t.day())+(f>1?16:0)+(f>2?32*(f-2):0)+400*(y-1)+this.jdEpoch-1},fromJD:function(y){y=Math.floor(y+.5)-Math.floor(this.jdEpoch)-1;var f=Math.floor(y/400)+1;y-=400*(f-1),y+=y>15?16:0;var l=Math.floor(y/32)+1,t=y-32*(l-1)+1;return this.newDate(f<=0?f-1:f,l,t)}});var T={20:"Fruitbat",21:"Anchovy"};_.calendars.discworld=s},37715:function(D,E,e){var _=e(63489),w=e(56131);function s(T){this.local=this.regionalOptions[T||""]||this.regionalOptions[""]}s.prototype=new _.baseCalendar,w(s.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(T){var y=this._validate(T,this.minMonth,this.minDay,_.local.invalidYear);return(T=y.year()+(y.year()<0?1:0))%4==3||T%4==-1},monthsInYear:function(T){return this._validate(T,this.minMonth,this.minDay,_.local.invalidYear||_.regionalOptions[""].invalidYear),13},weekOfYear:function(T,y,f){var l=this.newDate(T,y,f);return l.add(-l.dayOfWeek(),"d"),Math.floor((l.dayOfYear()-1)/7)+1},daysInMonth:function(T,y){var f=this._validate(T,y,this.minDay,_.local.invalidMonth);return this.daysPerMonth[f.month()-1]+(f.month()===13&&this.leapYear(f.year())?1:0)},weekDay:function(T,y,f){return(this.dayOfWeek(T,y,f)||7)<6},toJD:function(T,y,f){var l=this._validate(T,y,f,_.local.invalidDate);return(T=l.year())<0&&T++,l.day()+30*(l.month()-1)+365*(T-1)+Math.floor(T/4)+this.jdEpoch-1},fromJD:function(T){var y=Math.floor(T)+.5-this.jdEpoch,f=Math.floor((y-Math.floor((y+366)/1461))/365)+1;f<=0&&f--,y=Math.floor(T)+.5-this.newDate(f,1,1).toJD();var l=Math.floor(y/30)+1,t=y-30*(l-1)+1;return this.newDate(f,l,t)}}),_.calendars.ethiopian=s},99384:function(D,E,e){var _=e(63489),w=e(56131);function s(y){this.local=this.regionalOptions[y||""]||this.regionalOptions[""]}function T(y,f){return y-f*Math.floor(y/f)}s.prototype=new _.baseCalendar,w(s.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(y){var f=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear);return this._leapYear(f.year())},_leapYear:function(y){return T(7*(y=y<0?y+1:y)+1,19)<7},monthsInYear:function(y){return this._validate(y,this.minMonth,this.minDay,_.local.invalidYear),this._leapYear(y.year?y.year():y)?13:12},weekOfYear:function(y,f,l){var t=this.newDate(y,f,l);return t.add(-t.dayOfWeek(),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInYear:function(y){return y=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear).year(),this.toJD(y===-1?1:y+1,7,1)-this.toJD(y,7,1)},daysInMonth:function(y,f){return y.year&&(f=y.month(),y=y.year()),this._validate(y,f,this.minDay,_.local.invalidMonth),f===12&&this.leapYear(y)||f===8&&T(this.daysInYear(y),10)===5?30:f===9&&T(this.daysInYear(y),10)===3?29:this.daysPerMonth[f-1]},weekDay:function(y,f,l){return this.dayOfWeek(y,f,l)!==6},extraInfo:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);return{yearType:(this.leapYear(t)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(t)%10-3]}},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);y=t.year(),f=t.month(),l=t.day();var i=y<=0?y+1:y,r=this.jdEpoch+this._delay1(i)+this._delay2(i)+l+1;if(f<7){for(var n=7;n<=this.monthsInYear(y);n++)r+=this.daysInMonth(y,n);for(n=1;n=this.toJD(f===-1?1:f+1,7,1);)f++;for(var l=ythis.toJD(f,l,this.daysInMonth(f,l));)l++;var t=y-this.toJD(f,l,1)+1;return this.newDate(f,l,t)}}),_.calendars.hebrew=s},43805:function(D,E,e){var _=e(63489),w=e(56131);function s(T){this.local=this.regionalOptions[T||""]||this.regionalOptions[""]}s.prototype=new _.baseCalendar,w(s.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-khamīs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(T){return(11*this._validate(T,this.minMonth,this.minDay,_.local.invalidYear).year()+14)%30<11},weekOfYear:function(T,y,f){var l=this.newDate(T,y,f);return l.add(-l.dayOfWeek(),"d"),Math.floor((l.dayOfYear()-1)/7)+1},daysInYear:function(T){return this.leapYear(T)?355:354},daysInMonth:function(T,y){var f=this._validate(T,y,this.minDay,_.local.invalidMonth);return this.daysPerMonth[f.month()-1]+(f.month()===12&&this.leapYear(f.year())?1:0)},weekDay:function(T,y,f){return this.dayOfWeek(T,y,f)!==5},toJD:function(T,y,f){var l=this._validate(T,y,f,_.local.invalidDate);return T=l.year(),y=l.month(),T=T<=0?T+1:T,(f=l.day())+Math.ceil(29.5*(y-1))+354*(T-1)+Math.floor((3+11*T)/30)+this.jdEpoch-1},fromJD:function(T){T=Math.floor(T)+.5;var y=Math.floor((30*(T-this.jdEpoch)+10646)/10631);y=y<=0?y-1:y;var f=Math.min(12,Math.ceil((T-29-this.toJD(y,1,1))/29.5)+1),l=T-this.toJD(y,f,1)+1;return this.newDate(y,f,l)}}),_.calendars.islamic=s},88874:function(D,E,e){var _=e(63489),w=e(56131);function s(T){this.local=this.regionalOptions[T||""]||this.regionalOptions[""]}s.prototype=new _.baseCalendar,w(s.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(T){var y=this._validate(T,this.minMonth,this.minDay,_.local.invalidYear);return(T=y.year()<0?y.year()+1:y.year())%4==0},weekOfYear:function(T,y,f){var l=this.newDate(T,y,f);return l.add(4-(l.dayOfWeek()||7),"d"),Math.floor((l.dayOfYear()-1)/7)+1},daysInMonth:function(T,y){var f=this._validate(T,y,this.minDay,_.local.invalidMonth);return this.daysPerMonth[f.month()-1]+(f.month()===2&&this.leapYear(f.year())?1:0)},weekDay:function(T,y,f){return(this.dayOfWeek(T,y,f)||7)<6},toJD:function(T,y,f){var l=this._validate(T,y,f,_.local.invalidDate);return T=l.year(),y=l.month(),f=l.day(),T<0&&T++,y<=2&&(T--,y+=12),Math.floor(365.25*(T+4716))+Math.floor(30.6001*(y+1))+f-1524.5},fromJD:function(T){var y=Math.floor(T+.5)+1524,f=Math.floor((y-122.1)/365.25),l=Math.floor(365.25*f),t=Math.floor((y-l)/30.6001),i=t-Math.floor(t<14?1:13),r=f-Math.floor(i>2?4716:4715),n=y-l-Math.floor(30.6001*t);return r<=0&&r--,this.newDate(r,i,n)}}),_.calendars.julian=s},83290:function(D,E,e){var _=e(63489),w=e(56131);function s(f){this.local=this.regionalOptions[f||""]||this.regionalOptions[""]}function T(f,l){return f-l*Math.floor(f/l)}function y(f,l){return T(f-1,l)+1}s.prototype=new _.baseCalendar,w(s.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(f){return this._validate(f,this.minMonth,this.minDay,_.local.invalidYear),!1},formatYear:function(f){f=this._validate(f,this.minMonth,this.minDay,_.local.invalidYear).year();var l=Math.floor(f/400);return f%=400,f+=f<0?400:0,l+"."+Math.floor(f/20)+"."+f%20},forYear:function(f){if((f=f.split(".")).length<3)throw"Invalid Mayan year";for(var l=0,t=0;t19||t>0&&i<0)throw"Invalid Mayan year";l=20*l+i}return l},monthsInYear:function(f){return this._validate(f,this.minMonth,this.minDay,_.local.invalidYear),18},weekOfYear:function(f,l,t){return this._validate(f,l,t,_.local.invalidDate),0},daysInYear:function(f){return this._validate(f,this.minMonth,this.minDay,_.local.invalidYear),360},daysInMonth:function(f,l){return this._validate(f,l,this.minDay,_.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(f,l,t){return this._validate(f,l,t,_.local.invalidDate).day()},weekDay:function(f,l,t){return this._validate(f,l,t,_.local.invalidDate),!0},extraInfo:function(f,l,t){var i=this._validate(f,l,t,_.local.invalidDate).toJD(),r=this._toHaab(i),n=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[r[0]-1],haabMonth:r[0],haabDay:r[1],tzolkinDayName:this.local.tzolkinMonths[n[0]-1],tzolkinDay:n[0],tzolkinTrecena:n[1]}},_toHaab:function(f){var l=T(8+(f-=this.jdEpoch)+340,365);return[Math.floor(l/20)+1,T(l,20)]},_toTzolkin:function(f){return[y(20+(f-=this.jdEpoch),20),y(f+4,13)]},toJD:function(f,l,t){var i=this._validate(f,l,t,_.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(f){f=Math.floor(f)+.5-this.jdEpoch;var l=Math.floor(f/360);f%=360,f+=f<0?360:0;var t=Math.floor(f/20),i=f%20;return this.newDate(l,t,i)}}),_.calendars.mayan=s},29108:function(D,E,e){var _=e(63489),w=e(56131);function s(y){this.local=this.regionalOptions[y||""]||this.regionalOptions[""]}s.prototype=new _.baseCalendar;var T=_.instance("gregorian");w(s.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(y){var f=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear||_.regionalOptions[""].invalidYear);return T.leapYear(f.year()+(f.year()<1?1:0)+1469)},weekOfYear:function(y,f,l){var t=this.newDate(y,f,l);return t.add(1-(t.dayOfWeek()||7),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInMonth:function(y,f){var l=this._validate(y,f,this.minDay,_.local.invalidMonth);return this.daysPerMonth[l.month()-1]+(l.month()===12&&this.leapYear(l.year())?1:0)},weekDay:function(y,f,l){return(this.dayOfWeek(y,f,l)||7)<6},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidMonth);(y=t.year())<0&&y++;for(var i=t.day(),r=1;r=this.toJD(f+1,1,1);)f++;for(var l=y-Math.floor(this.toJD(f,1,1)+.5)+1,t=1;l>this.daysInMonth(f,t);)l-=this.daysInMonth(f,t),t++;return this.newDate(f,t,l)}}),_.calendars.nanakshahi=s},55422:function(D,E,e){var _=e(63489),w=e(56131);function s(T){this.local=this.regionalOptions[T||""]||this.regionalOptions[""]}s.prototype=new _.baseCalendar,w(s.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(T){return this.daysInYear(T)!==this.daysPerYear},weekOfYear:function(T,y,f){var l=this.newDate(T,y,f);return l.add(-l.dayOfWeek(),"d"),Math.floor((l.dayOfYear()-1)/7)+1},daysInYear:function(T){if(T=this._validate(T,this.minMonth,this.minDay,_.local.invalidYear).year(),this.NEPALI_CALENDAR_DATA[T]===void 0)return this.daysPerYear;for(var y=0,f=this.minMonth;f<=12;f++)y+=this.NEPALI_CALENDAR_DATA[T][f];return y},daysInMonth:function(T,y){return T.year&&(y=T.month(),T=T.year()),this._validate(T,y,this.minDay,_.local.invalidMonth),this.NEPALI_CALENDAR_DATA[T]===void 0?this.daysPerMonth[y-1]:this.NEPALI_CALENDAR_DATA[T][y]},weekDay:function(T,y,f){return this.dayOfWeek(T,y,f)!==6},toJD:function(T,y,f){var l=this._validate(T,y,f,_.local.invalidDate);T=l.year(),y=l.month(),f=l.day();var t=_.instance(),i=0,r=y,n=T;this._createMissingCalendarData(T);var o=T-(r>9||r===9&&f>=this.NEPALI_CALENDAR_DATA[n][0]?56:57);for(y!==9&&(i=f,r--);r!==9;)r<=0&&(r=12,n--),i+=this.NEPALI_CALENDAR_DATA[n][r],r--;return y===9?(i+=f-this.NEPALI_CALENDAR_DATA[n][0])<0&&(i+=t.daysInYear(o)):i+=this.NEPALI_CALENDAR_DATA[n][9]-this.NEPALI_CALENDAR_DATA[n][0],t.newDate(o,1,1).add(i,"d").toJD()},fromJD:function(T){var y=_.instance().fromJD(T),f=y.year(),l=y.dayOfYear(),t=f+56;this._createMissingCalendarData(t);for(var i=9,r=this.NEPALI_CALENDAR_DATA[t][0],n=this.NEPALI_CALENDAR_DATA[t][i]-r+1;l>n;)++i>12&&(i=1,t++),n+=this.NEPALI_CALENDAR_DATA[t][i];var o=this.NEPALI_CALENDAR_DATA[t][i]-(n-l);return this.newDate(t,i,o)},_createMissingCalendarData:function(T){var y=this.daysPerMonth.slice(0);y.unshift(17);for(var f=T-1;f0?474:473))%2820+474+38)%2816<682},weekOfYear:function(y,f,l){var t=this.newDate(y,f,l);return t.add(-(t.dayOfWeek()+1)%7,"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInMonth:function(y,f){var l=this._validate(y,f,this.minDay,_.local.invalidMonth);return this.daysPerMonth[l.month()-1]+(l.month()===12&&this.leapYear(l.year())?1:0)},weekDay:function(y,f,l){return this.dayOfWeek(y,f,l)!==5},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);y=t.year(),f=t.month(),l=t.day();var i=y-(y>=0?474:473),r=474+T(i,2820);return l+(f<=7?31*(f-1):30*(f-1)+6)+Math.floor((682*r-110)/2816)+365*(r-1)+1029983*Math.floor(i/2820)+this.jdEpoch-1},fromJD:function(y){var f=(y=Math.floor(y)+.5)-this.toJD(475,1,1),l=Math.floor(f/1029983),t=T(f,1029983),i=2820;if(t!==1029982){var r=Math.floor(t/366),n=T(t,366);i=Math.floor((2134*r+2816*n+2815)/1028522)+r+1}var o=i+2820*l+474;o=o<=0?o-1:o;var a=y-this.toJD(o,1,1)+1,u=a<=186?Math.ceil(a/31):Math.ceil((a-6)/30),p=y-this.toJD(o,u,1)+1;return this.newDate(o,u,p)}}),_.calendars.persian=s,_.calendars.jalali=s},31320:function(D,E,e){var _=e(63489),w=e(56131),s=_.instance();function T(y){this.local=this.regionalOptions[y||""]||this.regionalOptions[""]}T.prototype=new _.baseCalendar,w(T.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(y){var f=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear);return y=this._t2gYear(f.year()),s.leapYear(y)},weekOfYear:function(y,f,l){var t=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear);return y=this._t2gYear(t.year()),s.weekOfYear(y,t.month(),t.day())},daysInMonth:function(y,f){var l=this._validate(y,f,this.minDay,_.local.invalidMonth);return this.daysPerMonth[l.month()-1]+(l.month()===2&&this.leapYear(l.year())?1:0)},weekDay:function(y,f,l){return(this.dayOfWeek(y,f,l)||7)<6},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);return y=this._t2gYear(t.year()),s.toJD(y,t.month(),t.day())},fromJD:function(y){var f=s.fromJD(y),l=this._g2tYear(f.year());return this.newDate(l,f.month(),f.day())},_t2gYear:function(y){return y+this.yearsOffset+(y>=-this.yearsOffset&&y<=-1?1:0)},_g2tYear:function(y){return y-this.yearsOffset-(y>=1&&y<=this.yearsOffset?1:0)}}),_.calendars.taiwan=T},51367:function(D,E,e){var _=e(63489),w=e(56131),s=_.instance();function T(y){this.local=this.regionalOptions[y||""]||this.regionalOptions[""]}T.prototype=new _.baseCalendar,w(T.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(y){var f=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear);return y=this._t2gYear(f.year()),s.leapYear(y)},weekOfYear:function(y,f,l){var t=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear);return y=this._t2gYear(t.year()),s.weekOfYear(y,t.month(),t.day())},daysInMonth:function(y,f){var l=this._validate(y,f,this.minDay,_.local.invalidMonth);return this.daysPerMonth[l.month()-1]+(l.month()===2&&this.leapYear(l.year())?1:0)},weekDay:function(y,f,l){return(this.dayOfWeek(y,f,l)||7)<6},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate);return y=this._t2gYear(t.year()),s.toJD(y,t.month(),t.day())},fromJD:function(y){var f=s.fromJD(y),l=this._g2tYear(f.year());return this.newDate(l,f.month(),f.day())},_t2gYear:function(y){return y-this.yearsOffset-(y>=1&&y<=this.yearsOffset?1:0)},_g2tYear:function(y){return y+this.yearsOffset+(y>=-this.yearsOffset&&y<=-1?1:0)}}),_.calendars.thai=T},21457:function(D,E,e){var _=e(63489),w=e(56131);function s(y){this.local=this.regionalOptions[y||""]||this.regionalOptions[""]}s.prototype=new _.baseCalendar,w(s.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thalāthā’","Yawm al-Arba‘ā’","Yawm al-Khamīs","Yawm al-Jum‘a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(y){var f=this._validate(y,this.minMonth,this.minDay,_.local.invalidYear);return this.daysInYear(f.year())===355},weekOfYear:function(y,f,l){var t=this.newDate(y,f,l);return t.add(-t.dayOfWeek(),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInYear:function(y){for(var f=0,l=1;l<=12;l++)f+=this.daysInMonth(y,l);return f},daysInMonth:function(y,f){for(var l=this._validate(y,f,this.minDay,_.local.invalidMonth).toJD()-24e5+.5,t=0,i=0;il)return T[t]-T[t-1];t++}return 30},weekDay:function(y,f,l){return this.dayOfWeek(y,f,l)!==5},toJD:function(y,f,l){var t=this._validate(y,f,l,_.local.invalidDate),i=12*(t.year()-1)+t.month()-15292;return t.day()+T[i-1]-1+24e5-.5},fromJD:function(y){for(var f=y-24e5+.5,l=0,t=0;tf);t++)l++;var i=l+15292,r=Math.floor((i-1)/12),n=r+1,o=i-12*r,a=f-T[l-1]+1;return this.newDate(n,o,a)},isValid:function(y,f,l){var t=_.baseCalendar.prototype.isValid.apply(this,arguments);return t&&(t=(y=y.year!=null?y.year:y)>=1276&&y<=1500),t},_validate:function(y,f,l,t){var i=_.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw t.replace(/\{0\}/,this.local.name);return i}}),_.calendars.ummalqura=s;var T=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},63489:function(D,E,e){var _=e(56131);function w(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}function s(t,i,r,n){if(this._calendar=t,this._year=i,this._month=r,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(l.local.invalidDate||l.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function T(t,i){return"000000".substring(0,i-(t=""+t).length)+t}function y(){this.shortYearCutoff="+10"}function f(t){this.local=this.regionalOptions[t]||this.regionalOptions[""]}_(w.prototype,{instance:function(t,i){t=(t||"gregorian").toLowerCase(),i=i||"";var r=this._localCals[t+"-"+i];if(!r&&this.calendars[t]&&(r=new this.calendars[t](i),this._localCals[t+"-"+i]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,t);return r},newDate:function(t,i,r,n,o){return(n=(t!=null&&t.year?t.calendar():typeof n=="string"?this.instance(n,o):n)||this.instance()).newDate(t,i,r)},substituteDigits:function(t){return function(i){return(i+"").replace(/[0-9]/g,function(r){return t[r]})}},substituteChineseDigits:function(t,i){return function(r){for(var n="",o=0;r>0;){var a=r%10;n=(a===0?"":t[a]+i[o])+n,o++,r=Math.floor(r/10)}return n.indexOf(t[1]+i[1])===0&&(n=n.substr(1)),n||t[0]}}}),_(s.prototype,{newDate:function(t,i,r){return this._calendar.newDate(t??this,i,r)},year:function(t){return arguments.length===0?this._year:this.set(t,"y")},month:function(t){return arguments.length===0?this._month:this.set(t,"m")},day:function(t){return arguments.length===0?this._day:this.set(t,"d")},date:function(t,i,r){if(!this._calendar.isValid(t,i,r))throw(l.local.invalidDate||l.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=t,this._month=i,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,i){return this._calendar.add(this,t,i)},set:function(t,i){return this._calendar.set(this,t,i)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(l.local.differentCalendars||l.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,t._calendar.local.name);var i=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return i===0?0:i<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?"-":"")+T(Math.abs(this.year()),4)+"-"+T(this.month(),2)+"-"+T(this.day(),2)}}),_(y.prototype,{_validateLevel:0,newDate:function(t,i,r){return t==null?this.today():(t.year&&(this._validate(t,i,r,l.local.invalidDate||l.regionalOptions[""].invalidDate),r=t.day(),i=t.month(),t=t.year()),new s(this,t,i,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var i=this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear);return(i.year()<0?"-":"")+T(Math.abs(i.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear),12},monthOfYear:function(t,i){var r=this._validate(t,i,this.minDay,l.local.invalidMonth||l.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,i){var r=(i+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,l.local.invalidMonth||l.regionalOptions[""].invalidMonth),r},daysInYear:function(t){var i=this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear);return this.leapYear(i)?366:365},dayOfYear:function(t,i,r){var n=this._validate(t,i,r,l.local.invalidDate||l.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,i,r){var n=this._validate(t,i,r,l.local.invalidDate||l.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,i,r){return this._validate(t,i,r,l.local.invalidDate||l.regionalOptions[""].invalidDate),{}},add:function(t,i,r){return this._validate(t,this.minMonth,this.minDay,l.local.invalidDate||l.regionalOptions[""].invalidDate),this._correctAdd(t,this._add(t,i,r),i,r)},_add:function(t,i,r){if(this._validateLevel++,r==="d"||r==="w"){var n=t.toJD()+i*(r==="w"?this.daysInWeek():1),o=t.calendar().fromJD(n);return this._validateLevel--,[o.year(),o.month(),o.day()]}try{var a=t.year()+(r==="y"?i:0),u=t.monthOfYear()+(r==="m"?i:0);o=t.day(),r==="y"?(t.month()!==this.fromMonthOfYear(a,u)&&(u=this.newDate(a,t.month(),this.minDay).monthOfYear()),u=Math.min(u,this.monthsInYear(a)),o=Math.min(o,this.daysInMonth(a,this.fromMonthOfYear(a,u)))):r==="m"&&(function(c){for(;ub-1+c.minMonth;)a++,u-=b,b=c.monthsInYear(a)}(this),o=Math.min(o,this.daysInMonth(a,this.fromMonthOfYear(a,u))));var p=[a,this.fromMonthOfYear(a,u),o];return this._validateLevel--,p}catch(c){throw this._validateLevel--,c}},_correctAdd:function(t,i,r,n){if(!(this.hasYearZero||n!=="y"&&n!=="m"||i[0]!==0&&t.year()>0==i[0]>0)){var o={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;i=this._add(t,r*o[0]+a*o[1],o[2])}return t.date(i[0],i[1],i[2])},set:function(t,i,r){this._validate(t,this.minMonth,this.minDay,l.local.invalidDate||l.regionalOptions[""].invalidDate);var n=r==="y"?i:t.year(),o=r==="m"?i:t.month(),a=r==="d"?i:t.day();return r!=="y"&&r!=="m"||(a=Math.min(a,this.daysInMonth(n,o))),t.date(n,o,a)},isValid:function(t,i,r){this._validateLevel++;var n=this.hasYearZero||t!==0;if(n){var o=this.newDate(t,i,this.minDay);n=i>=this.minMonth&&i-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),b=o-(c>2.5?4716:4715);return b<=0&&b--,this.newDate(b,c,p)},toJSDate:function(t,i,r){var n=this._validate(t,i,r,l.local.invalidDate||l.regionalOptions[""].invalidDate),o=new Date(n.year(),n.month()-1,n.day());return o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0),o.setHours(o.getHours()>12?o.getHours()+2:0),o},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var l=D.exports=new w;l.cdate=s,l.baseCalendar=y,l.calendars.gregorian=f},94338:function(D,E,e){var _=e(56131),w=e(63489);_(w.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"}),w.local=w.regionalOptions[""],_(w.cdate.prototype,{formatDate:function(s,T){return typeof s!="string"&&(T=s,s=""),this._calendar.formatDate(s||"",this,T)}}),_(w.baseCalendar.prototype,{UNIX_EPOCH:w.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:w.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(s,T,y){if(typeof s!="string"&&(y=T,T=s,s=""),!T)return"";if(T.calendar()!==this)throw w.local.invalidFormat||w.regionalOptions[""].invalidFormat;s=s||this.local.dateFormat;for(var f,l,t,i=(y=y||{}).dayNamesShort||this.local.dayNamesShort,r=y.dayNames||this.local.dayNames,n=y.monthNumbers||this.local.monthNumbers,o=y.monthNamesShort||this.local.monthNamesShort,a=y.monthNames||this.local.monthNames,u=(y.calculateWeek||this.local.calculateWeek,function(h,M){for(var A=1;k+A1}),p=function(h,M,A,C){var L=""+M;if(u(h,C))for(;L.length1},g=function(R,U){var B=x(R,U),G=[2,3,B?4:2,B?4:2,10,11,20]["oyYJ@!".indexOf(R)+1],N=new RegExp("^-?\\d{1,"+G+"}"),j=T.substring(C).match(N);if(!j)throw(w.local.missingNumberAt||w.regionalOptions[""].missingNumberAt).replace(/\{0\}/,C);return C+=j[0].length,parseInt(j[0],10)},m=this,k=function(){if(typeof r=="function"){x("m");var R=r.call(m,T.substring(C));return C+=R.length,R}return g("m")},h=function(R,U,B,G){for(var N=x(R,G)?B:U,j=0;j-1){p=1,c=b;for(var I=this.daysInMonth(u,p);c>I;I=this.daysInMonth(u,p))p++,c-=I}return a>-1?this.fromJD(a):this.newDate(u,p,c)},determineDate:function(s,T,y,f,l){y&&typeof y!="object"&&(l=f,f=y,y=null),typeof f!="string"&&(l=f,f="");var t=this;return T=T?T.newDate():null,s==null?T:typeof s=="string"?function(i){try{return t.parseDate(f,i,l)}catch{}for(var r=((i=i.toLowerCase()).match(/^c/)&&y?y.newDate():null)||t.today(),n=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,o=n.exec(i);o;)r.add(parseInt(o[1],10),o[2]||"d"),o=n.exec(i);return r}(s):typeof s=="number"?isNaN(s)||s===1/0||s===-1/0?T:t.today().add(s,"d"):t.newDate(s)}})},69862:function(){},40964:function(){},72077:function(D,E,e){var _=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],w=typeof globalThis>"u"?e.g:globalThis;D.exports=function(){for(var s=[],T=0;T<_.length;T++)typeof w[_[T]]=="function"&&(s[s.length]=_[T]);return s}},81684:function(D,E,e){function _(pe,de,he){pe.prototype=de.prototype=he,he.constructor=pe}function w(pe,de){var he=Object.create(pe.prototype);for(var xe in de)he[xe]=de[xe];return he}function s(){}e.d(E,{sX:function(){return ye},k4:function(){return X}});var T=.7,y=1/T,f="\\s*([+-]?\\d+)\\s*",l="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",t="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",i=/^#([0-9a-f]{3,8})$/,r=new RegExp("^rgb\\(".concat(f,",").concat(f,",").concat(f,"\\)$")),n=new RegExp("^rgb\\(".concat(t,",").concat(t,",").concat(t,"\\)$")),o=new RegExp("^rgba\\(".concat(f,",").concat(f,",").concat(f,",").concat(l,"\\)$")),a=new RegExp("^rgba\\(".concat(t,",").concat(t,",").concat(t,",").concat(l,"\\)$")),u=new RegExp("^hsl\\(".concat(l,",").concat(t,",").concat(t,"\\)$")),p=new RegExp("^hsla\\(".concat(l,",").concat(t,",").concat(t,",").concat(l,"\\)$")),c={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function b(){return this.rgb().formatHex()}function d(){return this.rgb().formatRgb()}function v(pe){var de,he;return pe=(pe+"").trim().toLowerCase(),(de=i.exec(pe))?(he=de[1].length,de=parseInt(de[1],16),he===6?x(de):he===3?new h(de>>8&15|de>>4&240,de>>4&15|240&de,(15&de)<<4|15&de,1):he===8?g(de>>24&255,de>>16&255,de>>8&255,(255&de)/255):he===4?g(de>>12&15|de>>8&240,de>>8&15|de>>4&240,de>>4&15|240&de,((15&de)<<4|15&de)/255):null):(de=r.exec(pe))?new h(de[1],de[2],de[3],1):(de=n.exec(pe))?new h(255*de[1]/100,255*de[2]/100,255*de[3]/100,1):(de=o.exec(pe))?g(de[1],de[2],de[3],de[4]):(de=a.exec(pe))?g(255*de[1]/100,255*de[2]/100,255*de[3]/100,de[4]):(de=u.exec(pe))?I(de[1],de[2]/100,de[3]/100,1):(de=p.exec(pe))?I(de[1],de[2]/100,de[3]/100,de[4]):c.hasOwnProperty(pe)?x(c[pe]):pe==="transparent"?new h(NaN,NaN,NaN,0):null}function x(pe){return new h(pe>>16&255,pe>>8&255,255&pe,1)}function g(pe,de,he,xe){return xe<=0&&(pe=de=he=NaN),new h(pe,de,he,xe)}function m(pe){return pe instanceof s||(pe=v(pe)),pe?new h((pe=pe.rgb()).r,pe.g,pe.b,pe.opacity):new h}function k(pe,de,he,xe){return arguments.length===1?m(pe):new h(pe,de,he,xe??1)}function h(pe,de,he,xe){this.r=+pe,this.g=+de,this.b=+he,this.opacity=+xe}function M(){return"#".concat(O(this.r)).concat(O(this.g)).concat(O(this.b))}function A(){var pe=C(this.opacity);return"".concat(pe===1?"rgb(":"rgba(").concat(L(this.r),", ").concat(L(this.g),", ").concat(L(this.b)).concat(pe===1?")":", ".concat(pe,")"))}function C(pe){return isNaN(pe)?1:Math.max(0,Math.min(1,pe))}function L(pe){return Math.max(0,Math.min(255,Math.round(pe)||0))}function O(pe){return((pe=L(pe))<16?"0":"")+pe.toString(16)}function I(pe,de,he,xe){return xe<=0?pe=de=he=NaN:he<=0||he>=1?pe=de=NaN:de<=0&&(pe=NaN),new U(pe,de,he,xe)}function R(pe){if(pe instanceof U)return new U(pe.h,pe.s,pe.l,pe.opacity);if(pe instanceof s||(pe=v(pe)),!pe)return new U;if(pe instanceof U)return pe;var de=(pe=pe.rgb()).r/255,he=pe.g/255,xe=pe.b/255,Re=Math.min(de,he,xe),we=Math.max(de,he,xe),Ae=NaN,Me=we-Re,Ce=(we+Re)/2;return Me?(Ae=de===we?(he-xe)/Me+6*(he0&&Ce<1?0:Ae,new U(Ae,Me,Ce,pe.opacity)}function U(pe,de,he,xe){this.h=+pe,this.s=+de,this.l=+he,this.opacity=+xe}function B(pe){return(pe=(pe||0)%360)<0?pe+360:pe}function G(pe){return Math.max(0,Math.min(1,pe||0))}function N(pe,de,he){return 255*(pe<60?de+(he-de)*pe/60:pe<180?he:pe<240?de+(he-de)*(240-pe)/60:de)}_(s,v,{copy:function(pe){return Object.assign(new this.constructor,this,pe)},displayable:function(){return this.rgb().displayable()},hex:b,formatHex:b,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return R(this).formatHsl()},formatRgb:d,toString:d}),_(h,k,w(s,{brighter:function(pe){return pe=pe==null?y:Math.pow(y,pe),new h(this.r*pe,this.g*pe,this.b*pe,this.opacity)},darker:function(pe){return pe=pe==null?T:Math.pow(T,pe),new h(this.r*pe,this.g*pe,this.b*pe,this.opacity)},rgb:function(){return this},clamp:function(){return new h(L(this.r),L(this.g),L(this.b),C(this.opacity))},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:M,formatHex:M,formatHex8:function(){return"#".concat(O(this.r)).concat(O(this.g)).concat(O(this.b)).concat(O(255*(isNaN(this.opacity)?1:this.opacity)))},formatRgb:A,toString:A})),_(U,function(pe,de,he,xe){return arguments.length===1?R(pe):new U(pe,de,he,xe??1)},w(s,{brighter:function(pe){return pe=pe==null?y:Math.pow(y,pe),new U(this.h,this.s,this.l*pe,this.opacity)},darker:function(pe){return pe=pe==null?T:Math.pow(T,pe),new U(this.h,this.s,this.l*pe,this.opacity)},rgb:function(){var pe=this.h%360+360*(this.h<0),de=isNaN(pe)||isNaN(this.s)?0:this.s,he=this.l,xe=he+(he<.5?he:1-he)*de,Re=2*he-xe;return new h(N(pe>=240?pe-240:pe+120,Re,xe),N(pe,Re,xe),N(pe<120?pe+240:pe-120,Re,xe),this.opacity)},clamp:function(){return new U(B(this.h),G(this.s),G(this.l),C(this.opacity))},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var pe=C(this.opacity);return"".concat(pe===1?"hsl(":"hsla(").concat(B(this.h),", ").concat(100*G(this.s),"%, ").concat(100*G(this.l),"%").concat(pe===1?")":", ".concat(pe,")"))}}));var j=function(pe){return function(){return pe}};function V(pe,de){var he=de-pe;return he?function(xe,Re){return function(we){return xe+we*Re}}(pe,he):j(isNaN(pe)?de:pe)}var H=function pe(de){var he=function(Re){return(Re=+Re)==1?V:function(we,Ae){return Ae-we?function(Me,Ce,ne){return Me=Math.pow(Me,ne),Ce=Math.pow(Ce,ne)-Me,ne=1/ne,function(ue){return Math.pow(Me+ue*Ce,ne)}}(we,Ae,Re):j(isNaN(we)?Ae:we)}}(de);function xe(Re,we){var Ae=he((Re=k(Re)).r,(we=k(we)).r),Me=he(Re.g,we.g),Ce=he(Re.b,we.b),ne=V(Re.opacity,we.opacity);return function(ue){return Re.r=Ae(ue),Re.g=Me(ue),Re.b=Ce(ue),Re.opacity=ne(ue),Re+""}}return xe.gamma=pe,xe}(1);function ee(pe,de){var he,xe=de?de.length:0,Re=pe?Math.min(xe,pe.length):0,we=new Array(Re),Ae=new Array(xe);for(he=0;hewe&&(Re=de.slice(we,Re),Me[Ae]?Me[Ae]+=Re:Me[++Ae]=Re),(he=he[0])===(xe=xe[0])?Me[Ae]?Me[Ae]+=xe:Me[++Ae]=xe:(Me[++Ae]=null,Ce.push({i:Ae,x:X(he,xe)})),we=ae.lastIndex;return we"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function i(u){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(c){return c.__proto__||Object.getPrototypeOf(c)},i(u)}var r=["AfterExport","AfterPlot","Animated","AnimatingFrame","AnimationInterrupted","AutoSize","BeforeExport","BeforeHover","ButtonClicked","Click","ClickAnnotation","Deselect","DoubleClick","Framework","Hover","LegendClick","LegendDoubleClick","Relayout","Relayouting","Restyle","Redraw","Selected","Selecting","SliderChange","SliderEnd","SliderStart","SunburstClick","Transitioning","TransitionInterrupted","Unhover","WebGlContextLost"],n=["plotly_restyle","plotly_redraw","plotly_relayout","plotly_relayouting","plotly_doubleclick","plotly_animated","plotly_sunburstclick"],o=typeof window<"u";function a(u){var p=function(c){s(d,c);var b=y(d);function d(v){var x;return e(this,d),x=b.call(this,v),x.p=Promise.resolve(),x.resizeHandler=null,x.handlers={},x.syncWindowResize=x.syncWindowResize.bind(l(x)),x.syncEventHandlers=x.syncEventHandlers.bind(l(x)),x.attachUpdateEvents=x.attachUpdateEvents.bind(l(x)),x.getRef=x.getRef.bind(l(x)),x.handleUpdate=x.handleUpdate.bind(l(x)),x.figureCallback=x.figureCallback.bind(l(x)),x.updatePlotly=x.updatePlotly.bind(l(x)),x}return w(d,[{key:"updatePlotly",value:function(x,g,m){var k=this;this.p=this.p.then(function(){if(!k.unmounting){if(!k.el)throw new Error("Missing element reference");return u.react(k.el,{data:k.props.data,layout:k.props.layout,config:k.props.config,frames:k.props.frames})}}).then(function(){k.unmounting||(k.syncWindowResize(x),k.syncEventHandlers(),k.figureCallback(g),m&&k.attachUpdateEvents())}).catch(function(h){k.props.onError&&k.props.onError(h)})}},{key:"componentDidMount",value:function(){this.unmounting=!1,this.updatePlotly(!0,this.props.onInitialized,!0)}},{key:"componentDidUpdate",value:function(x){this.unmounting=!1;var g=x.frames&&x.frames.length?x.frames.length:0,m=this.props.frames&&this.props.frames.length?this.props.frames.length:0,k=!(x.layout===this.props.layout&&x.data===this.props.data&&x.config===this.props.config&&m===g),h=x.revision!==void 0,M=x.revision!==this.props.revision;!k&&(!h||h&&!M)||this.updatePlotly(!1,this.props.onUpdate,!1)}},{key:"componentWillUnmount",value:function(){this.unmounting=!0,this.figureCallback(this.props.onPurge),this.resizeHandler&&o&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null),this.removeUpdateEvents(),u.purge(this.el)}},{key:"attachUpdateEvents",value:function(){var x=this;!this.el||!this.el.removeListener||n.forEach(function(g){x.el.on(g,x.handleUpdate)})}},{key:"removeUpdateEvents",value:function(){var x=this;!this.el||!this.el.removeListener||n.forEach(function(g){x.el.removeListener(g,x.handleUpdate)})}},{key:"handleUpdate",value:function(){this.figureCallback(this.props.onUpdate)}},{key:"figureCallback",value:function(x){if(typeof x=="function"){var g=this.el,m=g.data,k=g.layout,h=this.el._transitionData?this.el._transitionData._frames:null,M={data:m,layout:k,frames:h};x(M,this.el)}}},{key:"syncWindowResize",value:function(x){var g=this;o&&(this.props.useResizeHandler&&!this.resizeHandler?(this.resizeHandler=function(){return u.Plots.resize(g.el)},window.addEventListener("resize",this.resizeHandler),x&&this.resizeHandler()):!this.props.useResizeHandler&&this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null))}},{key:"getRef",value:function(x){this.el=x,this.props.debug&&o&&(window.gd=this.el)}},{key:"syncEventHandlers",value:function(){var x=this;r.forEach(function(g){var m=x.props["on"+g],k=x.handlers[g],h=!!k;m&&!h?x.addEventHandler(g,m):!m&&h?x.removeEventHandler(g):m&&h&&m!==k&&(x.removeEventHandler(g),x.addEventHandler(g,m))})}},{key:"addEventHandler",value:function(x,g){this.handlers[x]=g,this.el.on(this.getPlotlyEventName(x),this.handlers[x])}},{key:"removeEventHandler",value:function(x){this.el.removeListener(this.getPlotlyEventName(x),this.handlers[x]),delete this.handlers[x]}},{key:"getPlotlyEventName",value:function(x){return"plotly_"+x.toLowerCase()}},{key:"render",value:function(){return J.default.createElement("div",{id:this.props.divId,style:this.props.style,ref:this.getRef,className:this.props.className})}}]),d}(J.Component);return p.propTypes={data:ce.default.arrayOf(ce.default.object),config:ce.default.object,layout:ce.default.object,frames:ce.default.arrayOf(ce.default.object),revision:ce.default.number,onInitialized:ce.default.func,onPurge:ce.default.func,onError:ce.default.func,onUpdate:ce.default.func,debug:ce.default.bool,style:ce.default.object,className:ce.default.string,useResizeHandler:ce.default.bool,divId:ce.default.string},r.forEach(function(c){p.propTypes["on"+c]=ce.default.func}),p.defaultProps={debug:!1,useResizeHandler:!1,data:[],style:{position:"relative",display:"inline-block"}},p}})(pw);const QT=jp(pw),Pu={sunIcon:{viewBox:"0 0 16 16",width:16,height:16,path:"M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"},moonIcon:{viewBox:"0 0 25 25",width:25,height:25,path:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"},plotCsv:{width:900,height:900,path:"M170.666667 106.666667l0.192 736H906.666667v64H149.546667c-23.552 0-42.666667-19.093333-42.666667-42.666667L106.666667 106.666667h64z m686.506666 454.144l13.653334 16.362666a21.333333 21.333333 0 0 1-2.666667 30.058667l-171.157333 143.146667a21.333333 21.333333 0 0 1-21.546667 3.477333l-229.973333-91.285333-113.834667 94.997333a21.333333 21.333333 0 0 1-30.037333-2.709333l-13.653334-16.362667a21.333333 21.333333 0 0 1 2.688-30.058667l133.312-111.274666a21.333333 21.333333 0 0 1 21.546667-3.456l229.930667 91.264 151.68-126.826667a21.333333 21.333333 0 0 1 30.037333 2.666667z m-1.621333-417.962667l16.896 13.013333a21.333333 21.333333 0 0 1 3.925333 29.888L685.802667 433.706667a21.333333 21.333333 0 0 1-20.202667 8.085333l-226.794667-35.413333-150.186666 222.357333a21.333333 21.333333 0 0 1-27.477334 7.018667l-2.133333-1.28-17.685333-11.946667a21.333333 21.333333 0 0 1-5.738667-29.610667l165.354667-244.821333a21.333333 21.333333 0 0 1 20.992-9.130667L650.453333 374.613333l175.146667-227.882666a21.333333 21.333333 0 0 1 29.930667-3.904z"},addText:{path:"M896 928H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32z m-736-64h704v-704h-704z M704 352H320a32 32 0 0 1 0-64h384a32 32 0 0 1 0 64z M512 736a32 32 0 0 1-32-32V320a32 32 0 0 1 64 0v384a32 32 0 0 1-32 32z",width:950,height:950},changeTitle:{path:"M122.368 165.888h778.24c-9.216 0-16.384-7.168-16.384-16.384v713.728c0-9.216 7.168-16.384 16.384-16.384h-778.24c9.216 0 16.384 7.168 16.384 16.384V150.016c0 8.192-6.656 15.872-16.384 15.872z m-32.768 684.544c0 26.112 20.992 47.104 47.104 47.104h750.08c26.112 0 47.104-20.992 47.104-47.104V162.304c0-26.112-20.992-47.104-47.104-47.104H136.704c-26.112 0-47.104 20.992-47.104 47.104v688.128z M244.736 656.896h534.016v62.464H244.736z M373.76 358.4H307.2v219.136h-45.568V358.4H192v-41.472H373.76V358.4zM403.968 316.928h44.032v50.176h-44.032v-50.176z m0 67.072h44.032v194.048h-44.032V384zM576.512 541.184l8.704 31.744c-13.312 5.12-26.624 8.192-38.912 8.704-32.768 1.024-48.64-15.36-48.128-48.128V422.912h-26.624V384h26.624v-46.592l44.032-21.504V384h36.352v38.912h-36.352V532.48c-1.024 10.24 3.072 14.848 11.264 13.824 5.12 0 12.8-1.536 23.04-5.12zM619.008 316.928h44.032v260.608h-44.032V316.928zM813.056 509.952l41.472 12.8c-11.776 40.96-37.888 61.44-78.336 60.416-52.736-1.536-80.384-34.304-81.92-98.304 2.56-67.072 29.696-102.4 81.92-105.984 52.224 1.536 78.336 36.864 79.36 105.984v13.824h-117.248c3.584 30.208 15.872 45.568 37.888 46.592 19.968 0.512 32.256-11.264 36.864-35.328z m-72.704-51.712h70.656c-1.024-25.088-12.288-38.4-33.792-38.912-21.504 0.512-33.792 13.824-36.864 38.912z",width:920,height:900},changeColor:{path:"M8 3C5.79 3 4 4.79 4 7V14C4 15.1 4.9 16 6 16H9V20C9 21.1 9.9 22 11 22H13C14.1 22 15 21.1 15 20V16H18C19.1 16 20 15.1 20 14V3H8M8 5H12V7H14V5H15V9H17V5H18V10H6V7C6 5.9 6.9 5 8 5M6 14V12H18V14H6Z",width:22,height:22},uploadImage:{path:"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5",width:1024,height:1024},downloadCsv:{path:`M486.2,196.121h-13.164V132.59c0-0.399-0.064-0.795-0.116-1.2c-0.021-2.52-0.824-5-2.551-6.96L364.656,3.677 + c-0.031-0.034-0.064-0.044-0.085-0.075c-0.629-0.707-1.364-1.292-2.141-1.796c-0.231-0.157-0.462-0.286-0.704-0.419 + c-0.672-0.365-1.386-0.672-2.121-0.893c-0.199-0.052-0.377-0.134-0.576-0.188C358.229,0.118,357.4,0,356.562,0H96.757 + C84.893,0,75.256,9.649,75.256,21.502v174.613H62.093c-16.972,0-30.733,13.756-30.733,30.73v159.81 + c0,16.966,13.761,30.736,30.733,30.736h13.163V526.79c0,11.854,9.637,21.501,21.501,21.501h354.777 + c11.853,0,21.502-9.647,21.502-21.501V417.392H486.2c16.966,0,30.729-13.764,30.729-30.731v-159.81 + C516.93,209.872,503.166,196.121,486.2,196.121z M96.757,21.502h249.053v110.006c0,5.94,4.818,10.751,10.751,10.751h94.973v53.861 + H96.757V21.502z M258.618,313.18c-26.68-9.291-44.063-24.053-44.063-47.389c0-27.404,22.861-48.368,60.733-48.368 + c18.107,0,31.447,3.811,40.968,8.107l-8.09,29.3c-6.43-3.107-17.862-7.632-33.59-7.632c-15.717,0-23.339,7.149-23.339,15.485 + c0,10.247,9.047,14.769,29.78,22.632c28.341,10.479,41.681,25.239,41.681,47.874c0,26.909-20.721,49.786-64.792,49.786 + c-18.338,0-36.449-4.776-45.497-9.77l7.38-30.016c9.772,5.014,24.775,10.006,40.264,10.006c16.671,0,25.488-6.908,25.488-17.396 + C285.536,325.789,277.909,320.078,258.618,313.18z M69.474,302.692c0-54.781,39.074-85.269,87.654-85.269 + c18.822,0,33.113,3.811,39.549,7.149l-7.392,28.816c-7.38-3.084-17.632-5.939-30.491-5.939c-28.822,0-51.206,17.375-51.206,53.099 + c0,32.158,19.051,52.4,51.456,52.4c10.947,0,23.097-2.378,30.241-5.238l5.483,28.346c-6.672,3.34-21.674,6.919-41.208,6.919 + C98.06,382.976,69.474,348.424,69.474,302.692z M451.534,520.962H96.757v-103.57h354.777V520.962z M427.518,380.583h-42.399 + l-51.45-160.536h39.787l19.526,67.894c5.479,19.046,10.479,37.386,14.299,57.397h0.709c4.048-19.298,9.045-38.352,14.526-56.693 + l20.487-68.598h38.599L427.518,380.583z`,width:550,height:550,transform:"translate(4, 0)"},downloadImage:{path:"M22.71,6.29a1,1,0,0,0-1.42,0L20,7.59V2a1,1,0,0,0-2,0V7.59l-1.29-1.3a1,1,0,0,0-1.42,1.42l3,3a1,1,0,0,0,.33.21.94.94,0,0,0,.76,0,1,1,0,0,0,.33-.21l3-3A1,1,0,0,0,22.71,6.29ZM19,13a1,1,0,0,0-1,1v.38L16.52,12.9a2.79,2.79,0,0,0-3.93,0l-.7.7L9.41,11.12a2.85,2.85,0,0,0-3.93,0L4,12.6V7A1,1,0,0,1,5,6h8a1,1,0,0,0,0-2H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H17a3,3,0,0,0,3-3V14A1,1,0,0,0,19,13ZM5,20a1,1,0,0,1-1-1V15.43l2.9-2.9a.79.79,0,0,1,1.09,0l3.17,3.17,0,0L15.46,20Zm13-1a.89.89,0,0,1-.18.53L13.31,15l.7-.7a.77.77,0,0,1,1.1,0L18,17.21Z",width:21,height:21,transform:"translate(-2, -2)"}},ek={data:{candlestick:[{decreasing:{fillcolor:"#e4003a",line:{color:"#e4003a"}},increasing:{fillcolor:"#00ACFF",line:{color:"#00ACFF"}},type:"candlestick"}]},layout:{annotationdefaults:{showarrow:!1},autotypenumbers:"strict",colorway:["#ffed00","#ef7d00","#e4003a","#c13246","#822661","#48277c","#005ca9","#00aaff","#9b30d9","#af005f","#5f00af","#af87ff"],dragmode:"pan",font:{family:"Fira Code",size:18},hoverlabel:{align:"left"},mapbox:{style:"dark"},hovermode:"x",legend:{bgcolor:"rgba(0, 0, 0, 0)",x:.01,xanchor:"left",y:.99,yanchor:"top",font:{size:15}},paper_bgcolor:"#000000",plot_bgcolor:"#000000",xaxis:{automargin:!0,autorange:!0,rangeslider:{visible:!1},showgrid:!0,showline:!0,tickfont:{size:14},zeroline:!1,tick0:1,title:{standoff:20},linecolor:"#F5EFF3",mirror:!0,ticks:"outside"},yaxis:{anchor:"x",automargin:!0,fixedrange:!1,zeroline:!1,showgrid:!0,showline:!0,side:"right",tick0:.5,title:{standoff:20},gridcolor:"#283442",linecolor:"#F5EFF3",mirror:!0,ticks:"outside"}}},tk={data:{barpolar:[{marker:{line:{color:"white",width:.5},pattern:{fillmode:"overlay",size:10,solidity:.2}},type:"barpolar"}],bar:[{error_x:{color:"#2a3f5f"},error_y:{color:"#2a3f5f"},marker:{line:{color:"white",width:.5},pattern:{fillmode:"overlay",size:10,solidity:.2}},type:"bar"}],carpet:[{aaxis:{endlinecolor:"#2a3f5f",gridcolor:"#C8D4E3",linecolor:"#C8D4E3",minorgridcolor:"#C8D4E3",startlinecolor:"#2a3f5f"},baxis:{endlinecolor:"#2a3f5f",gridcolor:"#C8D4E3",linecolor:"#C8D4E3",minorgridcolor:"#C8D4E3",startlinecolor:"#2a3f5f"},type:"carpet"}],choropleth:[{colorbar:{outlinewidth:0,ticks:""},type:"choropleth"}],contourcarpet:[{colorbar:{outlinewidth:0,ticks:""},type:"contourcarpet"}],contour:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"contour"}],heatmapgl:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"heatmapgl"}],heatmap:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"heatmap"}],histogram2dcontour:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"histogram2dcontour"}],histogram2d:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"histogram2d"}],histogram:[{marker:{pattern:{fillmode:"overlay",size:10,solidity:.2}},type:"histogram"}],mesh3d:[{colorbar:{outlinewidth:0,ticks:""},type:"mesh3d"}],parcoords:[{line:{colorbar:{outlinewidth:0,ticks:""}},type:"parcoords"}],pie:[{automargin:!0,type:"pie"}],scatter3d:[{line:{colorbar:{outlinewidth:0,ticks:""}},marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatter3d"}],scattercarpet:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattercarpet"}],scattergeo:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattergeo"}],scattergl:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattergl"}],scattermapbox:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattermapbox"}],scatterpolargl:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatterpolargl"}],scatterpolar:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatterpolar"}],scatter:[{fillpattern:{fillmode:"overlay",size:10,solidity:.2},type:"scatter"}],scatterternary:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatterternary"}],surface:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"surface"}],table:[{cells:{fill:{color:"#EBF0F8"},line:{color:"white"}},header:{fill:{color:"#C8D4E3"},line:{color:"white"}},type:"table"}],candlestick:[{decreasing:{fillcolor:"#c80000",line:{color:"#990000"}},increasing:{fillcolor:"#009600",line:{color:"#007500"}},type:"candlestick"}]},layout:{annotationdefaults:{arrowcolor:"#2a3f5f",arrowhead:0,arrowwidth:1,showarrow:!1},autotypenumbers:"strict",coloraxis:{colorbar:{outlinewidth:0,ticks:""}},colorscale:{diverging:[[0,"#8e0152"],[.1,"#c51b7d"],[.2,"#de77ae"],[.3,"#f1b6da"],[.4,"#fde0ef"],[.5,"#f7f7f7"],[.6,"#e6f5d0"],[.7,"#b8e186"],[.8,"#7fbc41"],[.9,"#4d9221"],[1,"#276419"]],sequential:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],sequentialminus:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]]},colorway:["#254495","#c13246","#48277c","#e4003a","#ef7d00","#822661","#ffed00","#00aaff","#9b30d9","#af005f","#5f00af","#af87ff"],font:{color:"#2a3f5f"},geo:{bgcolor:"white",lakecolor:"white",landcolor:"white",showlakes:!0,showland:!0,subunitcolor:"#C8D4E3"},hoverlabel:{align:"left"},hovermode:"x",mapbox:{style:"light"},paper_bgcolor:"white",plot_bgcolor:"white",polar:{angularaxis:{gridcolor:"#EBF0F8",linecolor:"#EBF0F8",ticks:""},bgcolor:"white",radialaxis:{gridcolor:"#EBF0F8",linecolor:"#EBF0F8",ticks:""}},scene:{xaxis:{backgroundcolor:"white",gridcolor:"#DFE8F3",gridwidth:2,linecolor:"#EBF0F8",showbackground:!0,ticks:"",zerolinecolor:"#EBF0F8"},yaxis:{backgroundcolor:"white",gridcolor:"#DFE8F3",gridwidth:2,linecolor:"#EBF0F8",showbackground:!0,ticks:"",zerolinecolor:"#EBF0F8"},zaxis:{backgroundcolor:"white",gridcolor:"#DFE8F3",gridwidth:2,linecolor:"#EBF0F8",showbackground:!0,ticks:"",zerolinecolor:"#EBF0F8"}},shapedefaults:{line:{color:"#2a3f5f"}},ternary:{aaxis:{gridcolor:"#DFE8F3",linecolor:"#A2B1C6",ticks:""},baxis:{gridcolor:"#DFE8F3",linecolor:"#A2B1C6",ticks:""},bgcolor:"white",caxis:{gridcolor:"#DFE8F3",linecolor:"#A2B1C6",ticks:""}},title:{x:.05},xaxis:{automargin:!0,ticks:"outside",zerolinewidth:2,rangeslider:{visible:!1},showgrid:!0,showline:!0,tickfont:{size:15},title:{standoff:20},mirror:!0,zeroline:!1},yaxis:{automargin:!0,ticks:"outside",tickfont:{size:15},zerolinewidth:2,fixedrange:!1,title:{standoff:20},nticks:8,showgrid:!0,showline:!0,side:"right",mirror:!0,zeroline:!1},dragmode:"pan",legend:{bgcolor:"rgba(0, 0, 0, 0)",x:1.03,xanchor:"left",y:.99,yanchor:"top"}}};function Io(){return Io=Object.assign?Object.assign.bind():function(P){for(var F=1;FP.forEach(J=>nk(J,F))}function Yp(...P){return Un.useCallback(mw(...P),P)}function rk(P,F=[]){let J=[];function ce(D,E){const e=Un.createContext(E),_=J.length;J=[...J,E];function w(T){const{scope:y,children:f,...l}=T,t=(y==null?void 0:y[P][_])||e,i=Un.useMemo(()=>l,Object.values(l));return Un.createElement(t.Provider,{value:i},f)}function s(T,y){const f=(y==null?void 0:y[P][_])||e,l=Un.useContext(f);if(l)return l;if(E!==void 0)return E;throw new Error(`\`${T}\` must be used within \`${D}\``)}return w.displayName=D+"Provider",[w,s]}const Pe=()=>{const D=J.map(E=>Un.createContext(E));return function(e){const _=(e==null?void 0:e[P])||D;return Un.useMemo(()=>({[`__scope${P}`]:{...e,[P]:_}}),[e,_])}};return Pe.scopeName=P,[ce,ik(Pe,...F)]}function ik(...P){const F=P[0];if(P.length===1)return F;const J=()=>{const ce=P.map(Pe=>({useScope:Pe(),scopeName:Pe.scopeName}));return function(D){const E=ce.reduce((e,{useScope:_,scopeName:w})=>{const T=_(D)[`__scope${w}`];return{...e,...T}},{});return Un.useMemo(()=>({[`__scope${F.scopeName}`]:E}),[E])}};return J.scopeName=F.scopeName,J}const Uv=globalThis!=null&&globalThis.document?Un.useLayoutEffect:()=>{},ak=z4["useId".toString()]||(()=>{});let ok=0;function Pg(P){const[F,J]=Un.useState(ak());return Uv(()=>{P||J(ce=>ce??String(ok++))},[P]),P||(F?`radix-${F}`:"")}function uf(P){const F=Un.useRef(P);return Un.useEffect(()=>{F.current=P}),Un.useMemo(()=>(...J)=>{var ce;return(ce=F.current)===null||ce===void 0?void 0:ce.call(F,...J)},[])}function sk({prop:P,defaultProp:F,onChange:J=()=>{}}){const[ce,Pe]=lk({defaultProp:F,onChange:J}),D=P!==void 0,E=D?P:ce,e=uf(J),_=Un.useCallback(w=>{if(D){const T=typeof w=="function"?w(P):w;T!==P&&e(T)}else Pe(w)},[D,P,Pe,e]);return[E,_]}function lk({defaultProp:P,onChange:F}){const J=Un.useState(P),[ce]=J,Pe=Un.useRef(ce),D=uf(F);return Un.useEffect(()=>{Pe.current!==ce&&(D(ce),Pe.current=ce)},[ce,Pe,D]),J}const Qm=Un.forwardRef((P,F)=>{const{children:J,...ce}=P,Pe=Un.Children.toArray(J),D=Pe.find(ck);if(D){const E=D.props.children,e=Pe.map(_=>_===D?Un.Children.count(E)>1?Un.Children.only(null):Un.isValidElement(E)?E.props.children:null:_);return Un.createElement(Vv,Io({},ce,{ref:F}),Un.isValidElement(E)?Un.cloneElement(E,void 0,e):null)}return Un.createElement(Vv,Io({},ce,{ref:F}),J)});Qm.displayName="Slot";const Vv=Un.forwardRef((P,F)=>{const{children:J,...ce}=P;return Un.isValidElement(J)?Un.cloneElement(J,{...fk(ce,J.props),ref:mw(F,J.ref)}):Un.Children.count(J)>1?Un.Children.only(null):null});Vv.displayName="SlotClone";const uk=({children:P})=>Un.createElement(Un.Fragment,null,P);function ck(P){return Un.isValidElement(P)&&P.type===uk}function fk(P,F){const J={...F};for(const ce in F){const Pe=P[ce],D=F[ce];/^on[A-Z]/.test(ce)?Pe&&D?J[ce]=(...e)=>{D(...e),Pe(...e)}:Pe&&(J[ce]=Pe):ce==="style"?J[ce]={...Pe,...D}:ce==="className"&&(J[ce]=[Pe,D].filter(Boolean).join(" "))}return{...P,...J}}const hk=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],gh=hk.reduce((P,F)=>{const J=Un.forwardRef((ce,Pe)=>{const{asChild:D,...E}=ce,e=D?Qm:F;return Un.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),Un.createElement(e,Io({},E,{ref:Pe}))});return J.displayName=`Primitive.${F}`,{...P,[F]:J}},{});function pk(P,F){P&&qm.flushSync(()=>P.dispatchEvent(F))}function dk(P,F=globalThis==null?void 0:globalThis.document){const J=uf(P);Un.useEffect(()=>{const ce=Pe=>{Pe.key==="Escape"&&J(Pe)};return F.addEventListener("keydown",ce),()=>F.removeEventListener("keydown",ce)},[J,F])}const Hv="dismissableLayer.update",gk="dismissableLayer.pointerDownOutside",vk="dismissableLayer.focusOutside";let kb;const mk=Un.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),yk=Un.forwardRef((P,F)=>{var J;const{disableOutsidePointerEvents:ce=!1,onEscapeKeyDown:Pe,onPointerDownOutside:D,onFocusOutside:E,onInteractOutside:e,onDismiss:_,...w}=P,s=Un.useContext(mk),[T,y]=Un.useState(null),f=(J=T==null?void 0:T.ownerDocument)!==null&&J!==void 0?J:globalThis==null?void 0:globalThis.document,[,l]=Un.useState({}),t=Yp(F,b=>y(b)),i=Array.from(s.layers),[r]=[...s.layersWithOutsidePointerEventsDisabled].slice(-1),n=i.indexOf(r),o=T?i.indexOf(T):-1,a=s.layersWithOutsidePointerEventsDisabled.size>0,u=o>=n,p=xk(b=>{const d=b.target,v=[...s.branches].some(x=>x.contains(d));!u||v||(D==null||D(b),e==null||e(b),b.defaultPrevented||_==null||_())},f),c=bk(b=>{const d=b.target;[...s.branches].some(x=>x.contains(d))||(E==null||E(b),e==null||e(b),b.defaultPrevented||_==null||_())},f);return dk(b=>{o===s.layers.size-1&&(Pe==null||Pe(b),!b.defaultPrevented&&_&&(b.preventDefault(),_()))},f),Un.useEffect(()=>{if(T)return ce&&(s.layersWithOutsidePointerEventsDisabled.size===0&&(kb=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),s.layersWithOutsidePointerEventsDisabled.add(T)),s.layers.add(T),Ab(),()=>{ce&&s.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=kb)}},[T,f,ce,s]),Un.useEffect(()=>()=>{T&&(s.layers.delete(T),s.layersWithOutsidePointerEventsDisabled.delete(T),Ab())},[T,s]),Un.useEffect(()=>{const b=()=>l({});return document.addEventListener(Hv,b),()=>document.removeEventListener(Hv,b)},[]),Un.createElement(gh.div,Io({},w,{ref:t,style:{pointerEvents:a?u?"auto":"none":void 0,...P.style},onFocusCapture:rf(P.onFocusCapture,c.onFocusCapture),onBlurCapture:rf(P.onBlurCapture,c.onBlurCapture),onPointerDownCapture:rf(P.onPointerDownCapture,p.onPointerDownCapture)}))});function xk(P,F=globalThis==null?void 0:globalThis.document){const J=uf(P),ce=Un.useRef(!1),Pe=Un.useRef(()=>{});return Un.useEffect(()=>{const D=e=>{if(e.target&&!ce.current){let s=function(){yw(gk,J,w,{discrete:!0})};var _=s;const w={originalEvent:e};e.pointerType==="touch"?(F.removeEventListener("click",Pe.current),Pe.current=s,F.addEventListener("click",Pe.current,{once:!0})):s()}ce.current=!1},E=window.setTimeout(()=>{F.addEventListener("pointerdown",D)},0);return()=>{window.clearTimeout(E),F.removeEventListener("pointerdown",D),F.removeEventListener("click",Pe.current)}},[F,J]),{onPointerDownCapture:()=>ce.current=!0}}function bk(P,F=globalThis==null?void 0:globalThis.document){const J=uf(P),ce=Un.useRef(!1);return Un.useEffect(()=>{const Pe=D=>{D.target&&!ce.current&&yw(vk,J,{originalEvent:D},{discrete:!1})};return F.addEventListener("focusin",Pe),()=>F.removeEventListener("focusin",Pe)},[F,J]),{onFocusCapture:()=>ce.current=!0,onBlurCapture:()=>ce.current=!1}}function Ab(){const P=new CustomEvent(Hv);document.dispatchEvent(P)}function yw(P,F,J,{discrete:ce}){const Pe=J.originalEvent.target,D=new CustomEvent(P,{bubbles:!1,cancelable:!0,detail:J});F&&Pe.addEventListener(P,F,{once:!0}),ce?pk(Pe,D):Pe.dispatchEvent(D)}const Og="focusScope.autoFocusOnMount",Ig="focusScope.autoFocusOnUnmount",Mb={bubbles:!1,cancelable:!0},_k=Un.forwardRef((P,F)=>{const{loop:J=!1,trapped:ce=!1,onMountAutoFocus:Pe,onUnmountAutoFocus:D,...E}=P,[e,_]=Un.useState(null),w=uf(Pe),s=uf(D),T=Un.useRef(null),y=Yp(F,t=>_(t)),f=Un.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;Un.useEffect(()=>{if(ce){let r=function(o){if(f.paused||!e)return;const a=o.target;e.contains(a)?T.current=a:Zc(T.current,{select:!0})},n=function(o){f.paused||!e||e.contains(o.relatedTarget)||Zc(T.current,{select:!0})};var t=r,i=n;return document.addEventListener("focusin",r),document.addEventListener("focusout",n),()=>{document.removeEventListener("focusin",r),document.removeEventListener("focusout",n)}}},[ce,e,f.paused]),Un.useEffect(()=>{if(e){Eb.add(f);const t=document.activeElement;if(!e.contains(t)){const r=new CustomEvent(Og,Mb);e.addEventListener(Og,w),e.dispatchEvent(r),r.defaultPrevented||(wk(Sk(xw(e)),{select:!0}),document.activeElement===t&&Zc(e))}return()=>{e.removeEventListener(Og,w),setTimeout(()=>{const r=new CustomEvent(Ig,Mb);e.addEventListener(Ig,s),e.dispatchEvent(r),r.defaultPrevented||Zc(t??document.body,{select:!0}),e.removeEventListener(Ig,s),Eb.remove(f)},0)}}},[e,w,s,f]);const l=Un.useCallback(t=>{if(!J&&!ce||f.paused)return;const i=t.key==="Tab"&&!t.altKey&&!t.ctrlKey&&!t.metaKey,r=document.activeElement;if(i&&r){const n=t.currentTarget,[o,a]=Tk(n);o&&a?!t.shiftKey&&r===a?(t.preventDefault(),J&&Zc(o,{select:!0})):t.shiftKey&&r===o&&(t.preventDefault(),J&&Zc(a,{select:!0})):r===n&&t.preventDefault()}},[J,ce,f.paused]);return Un.createElement(gh.div,Io({tabIndex:-1},E,{ref:y,onKeyDown:l}))});function wk(P,{select:F=!1}={}){const J=document.activeElement;for(const ce of P)if(Zc(ce,{select:F}),document.activeElement!==J)return}function Tk(P){const F=xw(P),J=Sb(F,P),ce=Sb(F.reverse(),P);return[J,ce]}function xw(P){const F=[],J=document.createTreeWalker(P,NodeFilter.SHOW_ELEMENT,{acceptNode:ce=>{const Pe=ce.tagName==="INPUT"&&ce.type==="hidden";return ce.disabled||ce.hidden||Pe?NodeFilter.FILTER_SKIP:ce.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;J.nextNode();)F.push(J.currentNode);return F}function Sb(P,F){for(const J of P)if(!kk(J,{upTo:F}))return J}function kk(P,{upTo:F}){if(getComputedStyle(P).visibility==="hidden")return!0;for(;P;){if(F!==void 0&&P===F)return!1;if(getComputedStyle(P).display==="none")return!0;P=P.parentElement}return!1}function Ak(P){return P instanceof HTMLInputElement&&"select"in P}function Zc(P,{select:F=!1}={}){if(P&&P.focus){const J=document.activeElement;P.focus({preventScroll:!0}),P!==J&&Ak(P)&&F&&P.select()}}const Eb=Mk();function Mk(){let P=[];return{add(F){const J=P[0];F!==J&&(J==null||J.pause()),P=Cb(P,F),P.unshift(F)},remove(F){var J;P=Cb(P,F),(J=P[0])===null||J===void 0||J.resume()}}}function Cb(P,F){const J=[...P],ce=J.indexOf(F);return ce!==-1&&J.splice(ce,1),J}function Sk(P){return P.filter(F=>F.tagName!=="A")}function Ek(P,F){return Un.useReducer((J,ce)=>{const Pe=F[J][ce];return Pe??J},P)}const ey=P=>{const{present:F,children:J}=P,ce=Ck(F),Pe=typeof J=="function"?J({present:ce.isPresent}):Un.Children.only(J),D=Yp(ce.ref,Pe.ref);return typeof J=="function"||ce.isPresent?Un.cloneElement(Pe,{ref:D}):null};ey.displayName="Presence";function Ck(P){const[F,J]=Un.useState(),ce=Un.useRef({}),Pe=Un.useRef(P),D=Un.useRef("none"),E=P?"mounted":"unmounted",[e,_]=Ek(E,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return Un.useEffect(()=>{const w=Jd(ce.current);D.current=e==="mounted"?w:"none"},[e]),Uv(()=>{const w=ce.current,s=Pe.current;if(s!==P){const y=D.current,f=Jd(w);P?_("MOUNT"):f==="none"||(w==null?void 0:w.display)==="none"?_("UNMOUNT"):_(s&&y!==f?"ANIMATION_OUT":"UNMOUNT"),Pe.current=P}},[P,_]),Uv(()=>{if(F){const w=T=>{const f=Jd(ce.current).includes(T.animationName);T.target===F&&f&&qm.flushSync(()=>_("ANIMATION_END"))},s=T=>{T.target===F&&(D.current=Jd(ce.current))};return F.addEventListener("animationstart",s),F.addEventListener("animationcancel",w),F.addEventListener("animationend",w),()=>{F.removeEventListener("animationstart",s),F.removeEventListener("animationcancel",w),F.removeEventListener("animationend",w)}}else _("ANIMATION_END")},[F,_]),{isPresent:["mounted","unmountSuspended"].includes(e),ref:Un.useCallback(w=>{w&&(ce.current=getComputedStyle(w)),J(w)},[])}}function Jd(P){return(P==null?void 0:P.animationName)||"none"}let Rg=0;function Lk(){Un.useEffect(()=>{var P,F;const J=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(P=J[0])!==null&&P!==void 0?P:Lb()),document.body.insertAdjacentElement("beforeend",(F=J[1])!==null&&F!==void 0?F:Lb()),Rg++,()=>{Rg===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(ce=>ce.remove()),Rg--}},[])}function Lb(){const P=document.createElement("span");return P.setAttribute("data-radix-focus-guard",""),P.tabIndex=0,P.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",P}var iu=function(){return iu=Object.assign||function(F){for(var J,ce=1,Pe=arguments.length;ce"u")return Zk;var F=Yk(P),J=document.documentElement.clientWidth,ce=window.innerWidth;return{left:F[0],top:F[1],right:F[2],gap:Math.max(0,ce-J+F[2]-F[0])}},$k=Tw(),Jk=function(P,F,J,ce){var Pe=P.left,D=P.top,E=P.right,e=P.gap;return J===void 0&&(J="margin"),` + .`.concat(Ok,` { + overflow: hidden `).concat(ce,`; + padding-right: `).concat(e,"px ").concat(ce,`; + } + body { + overflow: hidden `).concat(ce,`; + overscroll-behavior: contain; + `).concat([F&&"position: relative ".concat(ce,";"),J==="margin"&&` + padding-left: `.concat(Pe,`px; + padding-top: `).concat(D,`px; + padding-right: `).concat(E,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(e,"px ").concat(ce,`; + `),J==="padding"&&"padding-right: ".concat(e,"px ").concat(ce,";")].filter(Boolean).join(""),` + } + + .`).concat(m0,` { + right: `).concat(e,"px ").concat(ce,`; + } + + .`).concat(y0,` { + margin-right: `).concat(e,"px ").concat(ce,`; + } + + .`).concat(m0," .").concat(m0,` { + right: 0 `).concat(ce,`; + } + + .`).concat(y0," .").concat(y0,` { + margin-right: 0 `).concat(ce,`; + } + + body { + `).concat(Ik,": ").concat(e,`px; + } +`)},Kk=function(P){var F=P.noRelative,J=P.noImportant,ce=P.gapMode,Pe=ce===void 0?"margin":ce,D=Un.useMemo(function(){return Xk(Pe)},[Pe]);return Un.createElement($k,{styles:Jk(D,!F,Pe,J?"":"!important")})},qv=!1;if(typeof window<"u")try{var Kd=Object.defineProperty({},"passive",{get:function(){return qv=!0,!0}});window.addEventListener("test",Kd,Kd),window.removeEventListener("test",Kd,Kd)}catch{qv=!1}var zf=qv?{passive:!1}:!1,Qk=function(P){return P.tagName==="TEXTAREA"},kw=function(P,F){var J=window.getComputedStyle(P);return J[F]!=="hidden"&&!(J.overflowY===J.overflowX&&!Qk(P)&&J[F]==="visible")},e7=function(P){return kw(P,"overflowY")},t7=function(P){return kw(P,"overflowX")},Ob=function(P,F){var J=F;do{typeof ShadowRoot<"u"&&J instanceof ShadowRoot&&(J=J.host);var ce=Aw(P,J);if(ce){var Pe=Mw(P,J),D=Pe[1],E=Pe[2];if(D>E)return!0}J=J.parentNode}while(J&&J!==document.body);return!1},n7=function(P){var F=P.scrollTop,J=P.scrollHeight,ce=P.clientHeight;return[F,J,ce]},r7=function(P){var F=P.scrollLeft,J=P.scrollWidth,ce=P.clientWidth;return[F,J,ce]},Aw=function(P,F){return P==="v"?e7(F):t7(F)},Mw=function(P,F){return P==="v"?n7(F):r7(F)},i7=function(P,F){return P==="h"&&F==="rtl"?-1:1},a7=function(P,F,J,ce,Pe){var D=i7(P,window.getComputedStyle(F).direction),E=D*ce,e=J.target,_=F.contains(e),w=!1,s=E>0,T=0,y=0;do{var f=Mw(P,e),l=f[0],t=f[1],i=f[2],r=t-i-D*l;(l||r)&&Aw(P,e)&&(T+=r,y+=l),e=e.parentNode}while(!_&&e!==document.body||_&&(F.contains(e)||F===e));return(s&&(Pe&&T===0||!Pe&&E>T)||!s&&(Pe&&y===0||!Pe&&-E>y))&&(w=!0),w},Qd=function(P){return"changedTouches"in P?[P.changedTouches[0].clientX,P.changedTouches[0].clientY]:[0,0]},Ib=function(P){return[P.deltaX,P.deltaY]},Rb=function(P){return P&&"current"in P?P.current:P},o7=function(P,F){return P[0]===F[0]&&P[1]===F[1]},s7=function(P){return` + .block-interactivity-`.concat(P,` {pointer-events: none;} + .allow-interactivity-`).concat(P,` {pointer-events: all;} +`)},l7=0,Df=[];function u7(P){var F=Un.useRef([]),J=Un.useRef([0,0]),ce=Un.useRef(),Pe=Un.useState(l7++)[0],D=Un.useState(function(){return Tw()})[0],E=Un.useRef(P);Un.useEffect(function(){E.current=P},[P]),Un.useEffect(function(){if(P.inert){document.body.classList.add("block-interactivity-".concat(Pe));var t=Pk([P.lockRef.current],(P.shards||[]).map(Rb),!0).filter(Boolean);return t.forEach(function(i){return i.classList.add("allow-interactivity-".concat(Pe))}),function(){document.body.classList.remove("block-interactivity-".concat(Pe)),t.forEach(function(i){return i.classList.remove("allow-interactivity-".concat(Pe))})}}},[P.inert,P.lockRef.current,P.shards]);var e=Un.useCallback(function(t,i){if("touches"in t&&t.touches.length===2)return!E.current.allowPinchZoom;var r=Qd(t),n=J.current,o="deltaX"in t?t.deltaX:n[0]-r[0],a="deltaY"in t?t.deltaY:n[1]-r[1],u,p=t.target,c=Math.abs(o)>Math.abs(a)?"h":"v";if("touches"in t&&c==="h"&&p.type==="range")return!1;var b=Ob(c,p);if(!b)return!0;if(b?u=c:(u=c==="v"?"h":"v",b=Ob(c,p)),!b)return!1;if(!ce.current&&"changedTouches"in t&&(o||a)&&(ce.current=u),!u)return!0;var d=ce.current||u;return a7(d,i,t,d==="h"?o:a,!0)},[]),_=Un.useCallback(function(t){var i=t;if(!(!Df.length||Df[Df.length-1]!==D)){var r="deltaY"in i?Ib(i):Qd(i),n=F.current.filter(function(u){return u.name===i.type&&u.target===i.target&&o7(u.delta,r)})[0];if(n&&n.should){i.cancelable&&i.preventDefault();return}if(!n){var o=(E.current.shards||[]).map(Rb).filter(Boolean).filter(function(u){return u.contains(i.target)}),a=o.length>0?e(i,o[0]):!E.current.noIsolation;a&&i.cancelable&&i.preventDefault()}}},[]),w=Un.useCallback(function(t,i,r,n){var o={name:t,delta:i,target:r,should:n};F.current.push(o),setTimeout(function(){F.current=F.current.filter(function(a){return a!==o})},1)},[]),s=Un.useCallback(function(t){J.current=Qd(t),ce.current=void 0},[]),T=Un.useCallback(function(t){w(t.type,Ib(t),t.target,e(t,P.lockRef.current))},[]),y=Un.useCallback(function(t){w(t.type,Qd(t),t.target,e(t,P.lockRef.current))},[]);Un.useEffect(function(){return Df.push(D),P.setCallbacks({onScrollCapture:T,onWheelCapture:T,onTouchMoveCapture:y}),document.addEventListener("wheel",_,zf),document.addEventListener("touchmove",_,zf),document.addEventListener("touchstart",s,zf),function(){Df=Df.filter(function(t){return t!==D}),document.removeEventListener("wheel",_,zf),document.removeEventListener("touchmove",_,zf),document.removeEventListener("touchstart",s,zf)}},[]);var f=P.removeScrollBar,l=P.inert;return Un.createElement(Un.Fragment,null,l?Un.createElement(D,{styles:s7(Pe)}):null,f?Un.createElement(Kk,{gapMode:"margin"}):null)}const c7=jk(ww,u7);var Sw=Un.forwardRef(function(P,F){return Un.createElement(f1,iu({},P,{ref:F,sideCar:c7}))});Sw.classNames=f1.classNames;const f7=Sw;var h7=function(P){if(typeof document>"u")return null;var F=Array.isArray(P)?P[0]:P;return F.ownerDocument.body},Ff=new WeakMap,e0=new WeakMap,t0={},Fg=0,Ew=function(P){return P&&(P.host||Ew(P.parentNode))},p7=function(P,F){return F.map(function(J){if(P.contains(J))return J;var ce=Ew(J);return ce&&P.contains(ce)?ce:(console.error("aria-hidden",J,"in not contained inside",P,". Doing nothing"),null)}).filter(function(J){return!!J})},d7=function(P,F,J,ce){var Pe=p7(F,Array.isArray(P)?P:[P]);t0[J]||(t0[J]=new WeakMap);var D=t0[J],E=[],e=new Set,_=new Set(Pe),w=function(T){!T||e.has(T)||(e.add(T),w(T.parentNode))};Pe.forEach(w);var s=function(T){!T||_.has(T)||Array.prototype.forEach.call(T.children,function(y){if(e.has(y))s(y);else{var f=y.getAttribute(ce),l=f!==null&&f!=="false",t=(Ff.get(y)||0)+1,i=(D.get(y)||0)+1;Ff.set(y,t),D.set(y,i),E.push(y),t===1&&l&&e0.set(y,!0),i===1&&y.setAttribute(J,"true"),l||y.setAttribute(ce,"true")}})};return s(F),e.clear(),Fg++,function(){E.forEach(function(T){var y=Ff.get(T)-1,f=D.get(T)-1;Ff.set(T,y),D.set(T,f),y||(e0.has(T)||T.removeAttribute(ce),e0.delete(T)),f||T.removeAttribute(J)}),Fg--,Fg||(Ff=new WeakMap,Ff=new WeakMap,e0=new WeakMap,t0={})}},g7=function(P,F,J){J===void 0&&(J="data-aria-hidden");var ce=Array.from(Array.isArray(P)?P:[P]),Pe=F||h7(P);return Pe?(ce.push.apply(ce,Array.from(Pe.querySelectorAll("[aria-live]"))),d7(ce,Pe,J,"aria-hidden")):function(){return null}};const Cw="Dialog",[Lw,m9]=rk(Cw),[v7,ju]=Lw(Cw),m7=P=>{const{__scopeDialog:F,children:J,open:ce,defaultOpen:Pe,onOpenChange:D,modal:E=!0}=P,e=Un.useRef(null),_=Un.useRef(null),[w=!1,s]=sk({prop:ce,defaultProp:Pe,onChange:D});return Un.createElement(v7,{scope:F,triggerRef:e,contentRef:_,contentId:Pg(),titleId:Pg(),descriptionId:Pg(),open:w,onOpenChange:s,onOpenToggle:Un.useCallback(()=>s(T=>!T),[s]),modal:E},J)},y7="DialogPortal",[y9,Pw]=Lw(y7,{forceMount:void 0}),Gv="DialogOverlay",x7=Un.forwardRef((P,F)=>{const J=Pw(Gv,P.__scopeDialog),{forceMount:ce=J.forceMount,...Pe}=P,D=ju(Gv,P.__scopeDialog);return D.modal?Un.createElement(ey,{present:ce||D.open},Un.createElement(b7,Io({},Pe,{ref:F}))):null}),b7=Un.forwardRef((P,F)=>{const{__scopeDialog:J,...ce}=P,Pe=ju(Gv,J);return Un.createElement(f7,{as:Qm,allowPinchZoom:!0,shards:[Pe.contentRef]},Un.createElement(gh.div,Io({"data-state":Iw(Pe.open)},ce,{ref:F,style:{pointerEvents:"auto",...ce.style}})))}),Fp="DialogContent",_7=Un.forwardRef((P,F)=>{const J=Pw(Fp,P.__scopeDialog),{forceMount:ce=J.forceMount,...Pe}=P,D=ju(Fp,P.__scopeDialog);return Un.createElement(ey,{present:ce||D.open},D.modal?Un.createElement(w7,Io({},Pe,{ref:F})):Un.createElement(T7,Io({},Pe,{ref:F})))}),w7=Un.forwardRef((P,F)=>{const J=ju(Fp,P.__scopeDialog),ce=Un.useRef(null),Pe=Yp(F,J.contentRef,ce);return Un.useEffect(()=>{const D=ce.current;if(D)return g7(D)},[]),Un.createElement(Ow,Io({},P,{ref:Pe,trapFocus:J.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:rf(P.onCloseAutoFocus,D=>{var E;D.preventDefault(),(E=J.triggerRef.current)===null||E===void 0||E.focus()}),onPointerDownOutside:rf(P.onPointerDownOutside,D=>{const E=D.detail.originalEvent,e=E.button===0&&E.ctrlKey===!0;(E.button===2||e)&&D.preventDefault()}),onFocusOutside:rf(P.onFocusOutside,D=>D.preventDefault())}))}),T7=Un.forwardRef((P,F)=>{const J=ju(Fp,P.__scopeDialog),ce=Un.useRef(!1);return Un.createElement(Ow,Io({},P,{ref:F,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:Pe=>{var D;if((D=P.onCloseAutoFocus)===null||D===void 0||D.call(P,Pe),!Pe.defaultPrevented){var E;ce.current||(E=J.triggerRef.current)===null||E===void 0||E.focus(),Pe.preventDefault()}ce.current=!1},onInteractOutside:Pe=>{var D,E;(D=P.onInteractOutside)===null||D===void 0||D.call(P,Pe),Pe.defaultPrevented||(ce.current=!0);const e=Pe.target;((E=J.triggerRef.current)===null||E===void 0?void 0:E.contains(e))&&Pe.preventDefault()}}))}),Ow=Un.forwardRef((P,F)=>{const{__scopeDialog:J,trapFocus:ce,onOpenAutoFocus:Pe,onCloseAutoFocus:D,...E}=P,e=ju(Fp,J),_=Un.useRef(null),w=Yp(F,_);return Lk(),Un.createElement(Un.Fragment,null,Un.createElement(_k,{asChild:!0,loop:!0,trapped:ce,onMountAutoFocus:Pe,onUnmountAutoFocus:D},Un.createElement(yk,Io({role:"dialog",id:e.contentId,"aria-describedby":e.descriptionId,"aria-labelledby":e.titleId,"data-state":Iw(e.open)},E,{ref:w,onDismiss:()=>e.onOpenChange(!1)}))),!1)}),k7="DialogTitle",A7=Un.forwardRef((P,F)=>{const{__scopeDialog:J,...ce}=P,Pe=ju(k7,J);return Un.createElement(gh.h2,Io({id:Pe.titleId},ce,{ref:F}))}),M7="DialogDescription",S7=Un.forwardRef((P,F)=>{const{__scopeDialog:J,...ce}=P,Pe=ju(M7,J);return Un.createElement(gh.p,Io({id:Pe.descriptionId},ce,{ref:F}))}),E7="DialogClose",C7=Un.forwardRef((P,F)=>{const{__scopeDialog:J,...ce}=P,Pe=ju(E7,J);return Un.createElement(gh.button,Io({type:"button"},ce,{ref:F,onClick:rf(P.onClick,()=>Pe.onOpenChange(!1))}))});function Iw(P){return P?"open":"closed"}const L7=m7,P7=x7,O7=_7,I7=A7,R7=S7,zb=C7,Db=({title:P,titleId:F,...J})=>br("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,...J,children:br("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}),Rw={margin:"2px 0px 2px 10px",padding:"5px 2px 2px 5px"};function h1({open:P,close:F,title:J,description:ce,children:Pe}){return ni(L7,{open:P,onOpenChange:F,children:[br(P7,{onClick:F,className:"_modal-overlay"}),ni(O7,{className:"_modal",children:[br(I7,{className:"_modal-title",children:J}),br(R7,{className:"_modal_description",children:ce}),br(zb,{children:br(Db,{})}),Pe,br(zb,{className:"_modal-close",onClick:F,children:br(Db,{className:"w-6 h-6"})})]})]})}const Fb=new FileReader,z7={overlaying:"y",side:"left",tickfont:{size:12},tickpadding:5,showgrid:!1,showline:!1,showticklabels:!0,showlegend:!0,zeroline:!1,anchor:"x",type:"linear",autorange:!0};function D7({open:P,close:F,setLoading:J,addOverlay:ce,plotlyData:Pe}){const[D,E]=Un.useState("scatter"),[e,_]=Un.useState("#FFDD00"),[w,s]=Un.useState("#00ACFF"),[T,y]=Un.useState("#FF0000"),[f,l]=Un.useState(""),[t,i]=Un.useState([]),[r,n]=Un.useState([]),[o,a]=Un.useState({}),[u,p]=Un.useState({}),c=["x","open","high","low","close"];let b={scatter:"Scatter (Line)",candlestick:"Candlestick",bar:"Bar"};const[d,v]=Un.useState({});function x(){F(),E("scatter"),l(""),i([]),n([]),a({}),v({})}function g(){var k,h;if(t.length==0){(k=document.getElementById("csv_file"))==null||k.focus(),(h=document.getElementById("csv_file"))==null||h.style.setProperty("border","1px solid red"),document.getElementById("csv_file_warning").style.display="block";return}const m=F7({csvData:t,plotlyData:Pe,yaxisOptions:u,traceType:D,traceColor:e,traceName:f,options:d,increasingColor:w,decreasingColor:T});ce(m),x()}return br(h1,{title:"Overlay Chart",description:"Upload a CSV file to overlay a chart on the main chart.",open:P,close:F,children:ni("div",{id:"popup_csv",className:"popup_content",children:[ni("div",{children:[ni("label",{htmlFor:"csv_file",children:[br("b",{children:"CSV file:"}),br("div",{id:"csv_file_warning",className:"popup_warning",style:{marginLeft:"80px",marginBottom:"10px"},children:"CSV file is required."})]}),br("input",{onChange:m=>{var k,h;if(m.target.files){if(m.target.files[0].type!=="text/csv"){(k=document.getElementById("csv_file"))==null||k.focus(),(h=document.getElementById("csv_file"))==null||h.style.setProperty("border","1px solid red"),document.getElementById("csv_file_warning").style.display="block";return}}else return;r.length>0&&(n([]),a({}),v({}),E("scatter")),Fb.onload=M=>{var G;if(!((G=M.target)!=null&&G.result)||typeof M.target.result!="string")return;let A=M.target.result.split(` +`).map(N=>N.replace(/\r/g,""));const C=A[0].split(","),L=C.map(N=>N.trim().toLowerCase());let O={};for(let N=0;NL.includes(N))&&E("candlestick"),L.includes("close")&&(v({...d,y:C[L.indexOf("close")]}),O.y=C[L.indexOf("close")]);let U=[];for(let N=1;N2&&(j.test(N[0])?N.splice(0,2):j.test(N[N.length-2])&&N.splice(N.length-2,2),B=N.join("_").replace(/openbb_/g,""))}}catch(N){console.log(N)}l(B),v(O),n(C),i(U)},Fb.readAsText(m.target.files[0])},type:"file",id:"csv_file",accept:".csv",style:{marginLeft:10}})]}),ni("div",{style:{marginTop:15},children:[br("label",{htmlFor:"csv_trace_type",children:br("b",{children:"Display data type:"})}),ni("select",{onChange:m=>{E(m.target.value)},id:"csv_trace_type",style:Rw,defaultValue:b[D],children:[D&&br("option",{value:D,children:b[D]},D),Object.keys(b).map(m=>D!==m&&br("option",{value:m,children:b[m]},m))]})]}),ni("div",{style:{marginTop:12},children:[br("label",{htmlFor:"csv_name",children:br("b",{children:"Trace Name:"})}),br("textarea",{id:"csv_name",value:f,onChange:m=>{l(m.target.value)},style:{padding:"5px 2px 2px 5px",width:"100%",maxWidth:"100%",maxHeight:200,marginTop:2},rows:2,cols:20,placeholder:"Enter a name to give this trace"})]}),r.length>0&&ni(tg,{children:[["scatter","bar"].includes(D)&&br("div",{style:{marginTop:15,marginBottom:10},id:"csv_columns",className:"csv_column_container",children:["x","y"].map(m=>ni("div",{style:{marginTop:10,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[ni("label",{htmlFor:`csv_${m}`,style:{width:"100px"},children:[m.toUpperCase()," Axis"]}),ni("select",{onChange:k=>{a({...o,[m]:k.target.value}),v({...d,[m]:k.target.value})},id:`csv_${m}`,style:{width:"100%"},defaultValue:d[m],children:[d[m]&&br("option",{value:d[m],children:d[m]},m),r.map(k=>br("option",{value:k,children:k},k))]})]},m))}),D==="candlestick"&&br("div",{id:"csv_columns",className:"csv_column_container",style:{marginTop:15},children:["x","open","high","low","close"].map(m=>ni("div",{style:{marginTop:10,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[br("label",{htmlFor:`csv_${m}`,style:{width:"100px"},children:m.charAt(0).toUpperCase()+m.slice(1)}),ni("select",{onChange:k=>{a({...o,[m]:k.target.value}),v({...d,[m]:k.target.value})},id:`csv_${m}`,style:{width:"100%"},children:[d[m]&&br("option",{value:d[m],children:d[m]},m),r.map(k=>k!=d[k]&&br("option",{value:k,children:k},k))]})]},m))}),ni("div",{style:{marginTop:20},id:"csv_colors",children:[["scatter","bar"].includes(D)&&ni("div",{children:[br("label",{htmlFor:"csv_color",children:`${D.charAt(0).toUpperCase()}${D.slice(1)} color`}),br("input",{type:"color",id:"csv_color",defaultValue:"#FFDD00",style:{margin:"2px 2px 2px 10px"},onChange:m=>{console.log(m.target.value),_(m.target.value)}})]}),D==="candlestick"&&ni(tg,{children:[br("label",{htmlFor:"csv_increasing",children:"Increasing color"}),br("input",{type:"color",id:"csv_increasing",defaultValue:"#00ACFF",style:{margin:"2px 0px 2px 10px"},onChange:m=>{s(m.target.value)}}),br("label",{htmlFor:"csv_decreasing",style:{marginLeft:15},children:"Decreasing color"}),br("input",{style:{margin:"2px 0px 2px 10px"},type:"color",id:"csv_decreasing",defaultValue:"#FF0000",onChange:m=>{y(m.target.value)}})]})]}),ni("div",{style:{marginTop:20},id:"csv_plot_yaxis_options",children:[D!=="candlestick"&&ni(tg,{children:[br("input",{type:"checkbox",id:"csv_percent_change",name:"csv_plot_yaxis_check",style:{marginBottom:2},onChange:m=>{p({...u,percentChange:m.target.checked,sameYaxis:!1})},checked:!u.sameYaxis&&u.percentChange}),br("label",{htmlFor:"csv_percent_change",style:{marginLeft:5},children:"Plot as percent change from first value"}),br("br",{})]}),br("input",{style:{marginTop:2},type:"checkbox",id:"csv_same_yaxis",name:"csv_plot_yaxis_check",onChange:m=>{p({...u,sameYaxis:m.target.checked,percentChange:!1})},checked:!u.percentChange&&u.sameYaxis}),br("label",{htmlFor:"csv_same_yaxis",style:{marginLeft:5},children:"Share Y-axis"}),D==="bar"&&ni("div",{style:{marginTop:2},id:"csv_bar_orientation",children:[br("input",{type:"checkbox",id:"csv_bar_horizontal",onChange:m=>{v({...d,orientation:m.target.checked?"h":"v"})}}),br("label",{htmlFor:"csv_bar_horizontal",style:{marginLeft:5},children:"Plot horizontally"})]})]})]}),br("br",{}),ni("div",{style:{float:"right",marginTop:20},children:[br("button",{className:"_btn-tertiary",id:"csv_cancel",onClick:x,children:"Cancel"}),br("button",{className:"_btn",id:"csv_submit",onClick:g,children:"Submit"})]})]})})}function F7({csvData:P,plotlyData:F,yaxisOptions:J,traceType:ce,traceColor:Pe,traceName:D,options:E,increasingColor:e,decreasingColor:_}){let w=F.data[0];w.xaxis==null&&(w.xaxis="x"),w.yaxis==null&&(w.yaxis="y");let s=w.yaxis,T,f=Object.keys(F.layout).filter(r=>r.startsWith("yaxis")).map(r=>F.layout[r]).filter(r=>r.side=="left"&&(r.overlaying=="y"||r.fixedrange!=null&&r.fixedrange==!0)).length>0?" ":"";if(J.sameYaxis!==!0){const r=Object.keys(F.layout).filter(n=>n.startsWith("yaxis")).map(n=>F.layout[n]);T=`y${r.length+1}`,s=`yaxis${r.length+1}`,console.log(`yaxis: ${T} ${s}`),F.layout[s]={...z7,title:{text:D,font:{size:14},standoff:0},ticksuffix:f,layer:"below traces"}}else T=w.yaxis.replace("yaxis","y");const l={type:ce,name:D,showlegend:!0,yaxis:T};let t={};if(["scatter","bar"].includes(ce)){const r=P.findIndex(n=>n[E.y]!=null&&n[E.y]!=0);t={...l,x:P.map(n=>n[E.x]),y:P.map(function(n){return J.percentChange&&ce==="scatter"?(n[E.y]-P[r][E.y])/P[r][E.y]:n[E.y]}),customdata:P.map(n=>n[E.y]),hovertemplate:"%{customdata:.2f}",connectgaps:!0,marker:{color:Pe}},ce==="bar"&&(t.orientation=E.orientation,t.marker.opacity=.7,delete t.connectgaps,delete t.hovertemplate,delete t.customdata)}else ce==="candlestick"&&(t={...l,x:P.map(r=>r[E.x]),open:P.map(r=>r[E.open]),high:P.map(r=>r[E.high]),low:P.map(r=>r[E.low]),close:P.map(r=>r[E.close]),increasing:{line:{color:e}},decreasing:{line:{color:_}}});return{...F,data:[...F.data,t]}}function B7({plotlyData:P,open:F,close:J,defaultTitle:ce,updateTitle:Pe,updateAxesTitles:D}){const[E,e]=Un.useState(ce),_=Object.keys(P.layout||{}).filter(y=>y.startsWith("yaxis")&&P.layout[y].range!=null),w=Object.keys(P.layout||{}).filter(y=>{var f;return y.startsWith("xaxis")&&P.layout[y].showticklabels!=null&&((f=P.layout[y])==null?void 0:f.anchor)}),[s,T]=Un.useState({});return br(h1,{title:"Chart Titles",description:"Change the titles on the chart.",open:F,close:J,children:ni("div",{id:"popup_title",className:"popup_content",children:[ni("div",{style:{display:"flex",flexDirection:"column",gap:0},children:[ni("div",{children:[br("label",{htmlFor:"title_text",children:br("b",{children:"Title:"})}),br("textarea",{id:"title_text",style:{...Rw,width:"100%",maxWidth:"100%",maxHeight:"200px",marginTop:"8px",marginLeft:"0px"},rows:2,cols:20,value:E,onChange:y=>e(y.target.value)})]}),br("div",{id:"xaxis_div",className:"csv_column_container",style:{marginTop:5,marginBottom:-5},children:w.map((y,f)=>{var l,t;return ni("div",{style:{marginTop:5,marginBottom:5},children:[br("label",{htmlFor:`title_${y}`,children:f===0?br("b",{children:"X axis:"}):ni("b",{children:["X axis ",f+1,":"]})}),br("input",{id:`title_${y}`,style:{marginLeft:"0px",padding:"5px 2px 2px 5px"},type:"text",defaultValue:((t=(l=P==null?void 0:P.layout[y])==null?void 0:l.title)==null?void 0:t.text)||"",onChange:i=>{T({...s,[y]:i.target.value})}})]},y)})}),br("div",{id:"yaxis_div",className:"csv_column_container",style:{marginTop:5,marginBottom:5},children:_.map((y,f)=>{var l,t;return ni("div",{style:{marginTop:10},children:[br("label",{htmlFor:`title_${y}`,children:f===0?br("b",{children:"Y axis:"}):ni("b",{children:["Y axis ",f+1,":"]})}),br("input",{id:`title_${y}`,style:{marginLeft:"0px",padding:"5px 2px 2px 5px"},type:"text",defaultValue:((t=(l=P==null?void 0:P.layout[y])==null?void 0:l.title)==null?void 0:t.text)||"",onChange:i=>{T({...s,[y]:i.target.value})}})]},y)})})]}),ni("div",{style:{float:"right",marginTop:20},children:[br("button",{className:"_btn-tertiary ph-capture",id:"title_cancel",onClick:J,children:"Cancel"}),br("button",{className:"_btn ph-capture",id:"title_submit",onClick:()=>{Pe(E),D(s),J()},children:"Submit"})]})]})})}const Bb={padding:"5px 2px 2px 5px",margin:"2px 0"};function N7({open:P,close:F,addAnnotation:J,deleteAnnotation:ce,popupData:Pe}){var l,t,i,r,n;const D={text:"",color:"#0088CC",size:18,bordercolor:"#822661",yanchor:"above"},[E,e]=Un.useState(D),[_,w]=Un.useState(D);Pe&&Pe!==E&&Pe.annotation&&(Pe.annotation=(Pe==null?void 0:Pe.annotation)||{},e(Pe),w(Pe));function s(){console.log("closing"),e(D),w(D),F()}function T(o){console.log(o.target.id.replace("addtext_",""),o.target.value);const a=o.target.id.replace("addtext_",""),u=o.target.value;w({..._,[a]:u})}function y(){console.log("submitting",_),_.text!==""?(E!=null&&E.annotation&&w({..._,annotation:E.annotation}),J(_),F()):(document.getElementById("popup_textarea_warning").style.display="block",document.getElementById("addtext_text").style.border="1px solid red")}function f(){ce(E),s()}return br(h1,{title:"Add Text to Chart",description:"Change the titles on the chart.",open:P,close:s,children:ni("div",{id:"popup_title",className:"popup_content",children:[ni("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[ni("div",{style:{marginBottom:20},children:[ni("label",{htmlFor:"popup_text",children:[br("b",{children:"Text:"}),br("div",{id:"popup_textarea_warning",className:"popup_warning",children:"Text is required"})]}),br("textarea",{id:"addtext_text",style:{...Bb,width:"100%",maxWidth:"100%",maxHeight:"200px",marginTop:"8px"},rows:4,cols:50,placeholder:"Enter text here",onChange:T,defaultValue:((l=E==null?void 0:E.annotation)==null?void 0:l.text)||(_==null?void 0:_.text)})]}),ni("div",{style:{display:"flex",gap:15,alignItems:"center",flexWrap:"wrap",columnCount:2,justifyContent:"space-between",marginBottom:20},children:[br("label",{htmlFor:"addtext_color",children:br("b",{children:"Font color"})}),br("input",{type:"color",id:"addtext_color",style:{margin:"2px 2px 2px 15px"},defaultValue:((t=E==null?void 0:E.annotation)==null?void 0:t.color)||(_==null?void 0:_.color),onChange:T}),br("label",{htmlFor:"addtext_bordercolor",style:{marginLeft:20},children:br("b",{children:"Border color"})}),br("input",{type:"color",id:"addtext_bordercolor",style:{margin:"2px 2px 10px 15px"},defaultValue:((i=E==null?void 0:E.annotation)==null?void 0:i.bordercolor)||(_==null?void 0:_.bordercolor),onChange:T}),br("label",{htmlFor:"addtext_size",children:br("b",{children:"Font size"})}),br("input",{style:{...Bb,width:"52px",margin:"0px 0px 0px 2px"},type:"number",id:"addtext_size",onChange:T,defaultValue:((r=E==null?void 0:E.annotation)==null?void 0:r.size)||(_==null?void 0:_.size)}),ni("div",{children:[br("label",{htmlFor:"addtext_yanchor",style:{marginRight:31},children:br("b",{children:"Position"})}),ni("select",{id:"addtext_yanchor",name:"yanchor",style:{width:"100px"},defaultValue:((n=E==null?void 0:E.annotation)==null?void 0:n.yanchor)||(_==null?void 0:_.yanchor),onChange:T,children:[br("option",{value:"above",children:"Above"}),br("option",{value:"below",children:"Below"})]})]})]})]}),ni("div",{style:{float:"right",marginTop:20},children:[br("button",{className:"_btn-tertiary ph-capture",id:"title_cancel",onClick:s,children:"Cancel"}),br("button",{className:"_btn ph-capture",id:"title_delete",onClick:f,children:"Delete"}),br("button",{className:"_btn ph-capture",id:"title_submit",onClick:y,children:"Submit"})]})]})})}function j7({plotData:P,popup_data:F,current_text:J}){var _;let ce=F.x,Pe=F.y,D=F.yref,E=((_=P==null?void 0:P.layout)==null?void 0:_.annotations)||[],e=-1;for(let w=0;wx!=null)),P.layout.dragmode="pan",J({...P,...a.update}),s.removeAllListeners("plotly_click")};F.text=F.text.replace(/\n/g,"
");let y,f=!1;if(F.annotation){console.log("data",F),y={x:F.annotation.x,y:F.annotation.y,yref:F.annotation.yref,yanchor:F.annotation.yi.x==F.annotation.x&&i.y==F.annotation.y&&i.yref==F.annotation.yref);console.log("ohlcAnnotationIndex",t),t==-1?_([...e,l.annotation]):(e[t]=l.annotation,_(e))}D([...w,l.annotation].filter(t=>t!=null)),P.layout.dragmode="pan",J({...P,...l.update}),Pe({});return}s.on("plotly_clickannotation",l=>{console.log("plotly_clickannotation",l);let t=l.annotation;if(t.text==null){console.log("annotation.text is undefined");return}console.log("annotation.text",t.text),t.text=t.text.replace(/
/g,` +`);let i={x:t.x,y:t.y,high:(t==null?void 0:t.high)??void 0,low:(t==null?void 0:t.low)??void 0,yanchor:t.y'),!0):F?P.some(function(J){return F.includes(J)})||P.includes("*"):!0}var X7=function(F,J,ce){ce===void 0&&(ce=!1);var Pe=J.alt,D=J.meta,E=J.mod,e=J.shift,_=J.ctrl,w=J.keys,s=F.key,T=F.code,y=F.ctrlKey,f=F.metaKey,l=F.shiftKey,t=F.altKey,i=sc(T),r=s.toLowerCase();if(!ce){if(Pe===!t&&r!=="alt"||e===!l&&r!=="shift")return!1;if(E){if(!f&&!y)return!1}else if(D===!f&&r!=="meta"&&r!=="os"||_===!y&&r!=="ctrl"&&r!=="control")return!1}return w&&w.length===1&&(w.includes(r)||w.includes(i))?!0:w?q7(w):!w},$7=Un.createContext(void 0),J7=function(){return Un.useContext($7)};function Nw(P,F){return P&&F&&typeof P=="object"&&typeof F=="object"?Object.keys(P).length===Object.keys(F).length&&Object.keys(P).reduce(function(J,ce){return J&&Nw(P[ce],F[ce])},!0):P===F}var K7=Un.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),Q7=function(){return Un.useContext(K7)};function e9(P){var F=Un.useRef(void 0);return Nw(F.current,P)||(F.current=P),F.current}var jb=function(F){F.stopPropagation(),F.preventDefault(),F.stopImmediatePropagation()},t9=typeof window<"u"?Un.useLayoutEffect:Un.useEffect;function Ku(P,F,J,ce){var Pe=Un.useRef(null),D=Un.useRef(!1),E=J instanceof Array?ce instanceof Array?void 0:ce:J,e=P instanceof Array?P.join(E==null?void 0:E.splitKey):P,_=J instanceof Array?J:ce instanceof Array?ce:void 0,w=Un.useCallback(F,_??[]),s=Un.useRef(w);_?s.current=w:s.current=F;var T=e9(E),y=Q7(),f=y.enabledScopes,l=J7();return t9(function(){if(!((T==null?void 0:T.enabled)===!1||!Y7(f,T==null?void 0:T.scopes))){var t=function(a,u){var p;if(u===void 0&&(u=!1),!(Z7(a)&&!Bw(a,T==null?void 0:T.enableOnFormTags))&&!(T!=null&&T.ignoreEventWhen!=null&&T.ignoreEventWhen(a))){if(Pe.current!==null&&document.activeElement!==Pe.current&&!Pe.current.contains(document.activeElement)){jb(a);return}(p=a.target)!=null&&p.isContentEditable&&!(T!=null&&T.enableOnContentEditable)||Bg(e,T==null?void 0:T.splitKey).forEach(function(c){var b,d=Ng(c,T==null?void 0:T.combinationKey);if(X7(a,d,T==null?void 0:T.ignoreModifiers)||(b=d.keys)!=null&&b.includes("*")){if(u&&D.current)return;if(G7(a,d,T==null?void 0:T.preventDefault),!W7(a,d,T==null?void 0:T.enabled)){jb(a);return}s.current(a,d),u||(D.current=!0)}})}},i=function(a){a.key!==void 0&&(Dw(sc(a.code)),((T==null?void 0:T.keydown)===void 0&&(T==null?void 0:T.keyup)!==!0||T!=null&&T.keydown)&&t(a))},r=function(a){a.key!==void 0&&(Fw(sc(a.code)),D.current=!1,T!=null&&T.keyup&&t(a,!0))},n=Pe.current||(E==null?void 0:E.document)||document;return n.addEventListener("keyup",r),n.addEventListener("keydown",i),l&&Bg(e,T==null?void 0:T.splitKey).forEach(function(o){return l.addHotkey(Ng(o,T==null?void 0:T.combinationKey,T==null?void 0:T.description))}),function(){n.removeEventListener("keyup",r),n.removeEventListener("keydown",i),l&&Bg(e,T==null?void 0:T.splitKey).forEach(function(o){return l.removeHotkey(Ng(o,T==null?void 0:T.combinationKey,T==null?void 0:T.description))})}}},[e,T,f]),Pe}var jw={exports:{}};(function(P){(function(F){var J=o(),ce=a(),Pe=u(),D=p(),E={imagePlaceholder:void 0,cacheBust:!1},e={toSvg:_,toPng:s,toJpeg:T,toBlob:y,toPixelData:w,impl:{fontFaces:Pe,images:D,util:J,inliner:ce,options:{}}};P.exports=e;function _(c,b){return b=b||{},f(b),Promise.resolve(c).then(function(v){return t(v,b.filter,!0)}).then(i).then(r).then(d).then(function(v){return n(v,b.width||J.width(c),b.height||J.height(c))});function d(v){return b.bgcolor&&(v.style.backgroundColor=b.bgcolor),b.width&&(v.style.width=b.width+"px"),b.height&&(v.style.height=b.height+"px"),b.style&&Object.keys(b.style).forEach(function(x){v.style[x]=b.style[x]}),v}}function w(c,b){return l(c,b||{}).then(function(d){return d.getContext("2d").getImageData(0,0,J.width(c),J.height(c)).data})}function s(c,b){return l(c,b||{}).then(function(d){return d.toDataURL()})}function T(c,b){return b=b||{},l(c,b).then(function(d){return d.toDataURL("image/jpeg",b.quality||1)})}function y(c,b){return l(c,b||{}).then(J.canvasToBlob)}function f(c){typeof c.imagePlaceholder>"u"?e.impl.options.imagePlaceholder=E.imagePlaceholder:e.impl.options.imagePlaceholder=c.imagePlaceholder,typeof c.cacheBust>"u"?e.impl.options.cacheBust=E.cacheBust:e.impl.options.cacheBust=c.cacheBust}function l(c,b){return _(c,b).then(J.makeImage).then(J.delay(100)).then(function(v){var x=d(c);return x.getContext("2d").drawImage(v,0,0),x});function d(v){var x=document.createElement("canvas");if(x.width=b.width||J.width(v),x.height=b.height||J.height(v),b.bgcolor){var g=x.getContext("2d");g.fillStyle=b.bgcolor,g.fillRect(0,0,x.width,x.height)}return x}}function t(c,b,d){if(!d&&b&&!b(c))return Promise.resolve();return Promise.resolve(c).then(v).then(function(m){return x(c,m,b)}).then(function(m){return g(c,m)});function v(m){return m instanceof HTMLCanvasElement?J.makeImage(m.toDataURL()):m.cloneNode(!1)}function x(m,k,h){var M=m.childNodes;if(M.length===0)return Promise.resolve(k);return A(k,J.asArray(M),h).then(function(){return k});function A(C,L,O){var I=Promise.resolve();return L.forEach(function(R){I=I.then(function(){return t(R,O)}).then(function(U){U&&C.appendChild(U)})}),I}}function g(m,k){if(!(k instanceof Element))return k;return Promise.resolve().then(h).then(M).then(A).then(C).then(function(){return k});function h(){L(window.getComputedStyle(m),k.style);function L(O,I){O.cssText?I.cssText=O.cssText:R(O,I);function R(U,B){J.asArray(U).forEach(function(G){B.setProperty(G,U.getPropertyValue(G),U.getPropertyPriority(G))})}}}function M(){[":before",":after"].forEach(function(O){L(O)});function L(O){var I=window.getComputedStyle(m,O),R=I.getPropertyValue("content");if(R===""||R==="none")return;var U=J.uid();k.className=k.className+" "+U;var B=document.createElement("style");B.appendChild(G(U,O,I)),k.appendChild(B);function G(N,j,V){var H="."+N+":"+j,ee=V.cssText?Q(V):X(V);return document.createTextNode(H+"{"+ee+"}");function Q(Y){var K=Y.getPropertyValue("content");return Y.cssText+" content: "+K+";"}function X(Y){return J.asArray(Y).map(K).join("; ")+";";function K(te){return te+": "+Y.getPropertyValue(te)+(Y.getPropertyPriority(te)?" !important":"")}}}}}function A(){m instanceof HTMLTextAreaElement&&(k.innerHTML=m.value),m instanceof HTMLInputElement&&k.setAttribute("value",m.value)}function C(){k instanceof SVGElement&&(k.setAttribute("xmlns","http://www.w3.org/2000/svg"),k instanceof SVGRectElement&&["width","height"].forEach(function(L){var O=k.getAttribute(L);O&&k.style.setProperty(L,O)}))}}}function i(c){return Pe.resolveAll().then(function(b){var d=document.createElement("style");return c.appendChild(d),d.appendChild(document.createTextNode(b)),c})}function r(c){return D.inlineAll(c).then(function(){return c})}function n(c,b,d){return Promise.resolve(c).then(function(v){return v.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),new XMLSerializer().serializeToString(v)}).then(J.escapeXhtml).then(function(v){return''+v+""}).then(function(v){return''+v+""}).then(function(v){return"data:image/svg+xml;charset=utf-8,"+v})}function o(){return{escape:C,parseExtension:b,mimeType:d,dataAsUrl:A,isDataUrl:v,canvasToBlob:g,resolveUrl:m,getAndEncode:M,uid:k(),delay:L,asArray:O,escapeXhtml:I,makeImage:h,width:R,height:U};function c(){var G="application/font-woff",N="image/jpeg";return{woff:G,woff2:G,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:N,jpeg:N,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"}}function b(G){var N=/\.([^\.\/]*?)$/g.exec(G);return N?N[1]:""}function d(G){var N=b(G).toLowerCase();return c()[N]||""}function v(G){return G.search(/^(data:)/)!==-1}function x(G){return new Promise(function(N){for(var j=window.atob(G.toDataURL().split(",")[1]),V=j.length,H=new Uint8Array(V),ee=0;ee{if(P)return i9({fileHandle:P,blob:F})},i9=async({fileHandle:P,blob:F})=>{const J=await P.createWritable();await J.write(F),await J.close()},a9=[{description:"PNG Image",accept:{"image/png":[".png"]}},{description:"JPEG Image",accept:{"image/jpeg":[".jpeg"]}},{description:"SVG Image",accept:{"image/svg+xml":[".svg"]}}],Vw=({filename:P,is_image:F})=>{if("showSaveFilePicker"in window){const J={suggestedName:P,types:F?a9:[{description:"CSV File",accept:{"image/csv":[".csv"]}}],excludeAcceptAllOption:!0};return showSaveFilePicker(J)}return new Promise(J=>{J(null)})},ty=(P,F,J)=>{try{if(J===null)throw new Error("Cannot access filesystem");return r9({fileHandle:J,blob:P})}catch(ce){console.error("oops, something went wrong!",ce);const Pe=URL.createObjectURL(P),D=document.createElement("a");D.setAttribute("href",Pe),D.setAttribute("download",F),D.style.visibility="hidden",document.body.appendChild(D),D.click(),document.body.removeChild(D)}return new Promise(ce=>{ce(!0)})};async function Ub(P,F){let J=P.data,ce=[],Pe=[],D="title"in P.layout.xaxis&&P.layout.xaxis.title.text!=null?P.layout.xaxis.title.text:"x",E="title"in P.layout.yaxis&&P.layout.yaxis.title.text!=null?P.layout.yaxis.title.text:"y";return J.forEach(function(e){e.type=="candlestick"&&(ce.length==0&&(ce=["Date","Open","High","Low","Close"]),e.x.forEach(function(_,w){Pe.push([_,e.open[w],e.high[w],e.low[w],e.close[w]])})),e.type=="scatter"&&(ce.length==0&&ce.push(D),ce.push(e.name!=null?e.name:E),e.x.forEach(function(_,w){Pe[w]==null&&(Pe[w]=[_]),Pe[w].push(e.y[w])}))}),await o9(ce,Pe,F)}async function o9(P,F,J){const ce=P,Pe=F.map(w=>w.map(s=>s==null?"":typeof s=="object"?JSON.stringify(s):s.toString().replace(/"/g,'""'))),E=[ce,...Pe].map(w=>w.join(",")).join(` +`),e=new Blob([E],{type:"text/csv;charset=utf-8;"}),_=`${window.title}.csv`;try{let w=await Vw({filename:_});await Bp("Saving CSV"),Np(async function(){ty(e,_,w).then(async function(){await new Promise(s=>setTimeout(s,1500)),w||J(!0),await Bp("",!0)})},2)()}catch(w){console.error(w)}}function Bp(P,F){const J=window.document.getElementById("loading"),ce=window.document.getElementById("loading_text");return new Promise(Pe=>{F?J.classList.remove("show"):(ce.innerHTML=P,J.classList.add("show"));let D=setInterval(function(){(F?!J.classList.contains("show"):J.classList.contains("show"))&&(clearInterval(D),Pe(!0))},.01)})}const Np=(P,F)=>{let J;return function(){const ce=this,Pe=arguments;clearTimeout(J),J=setTimeout(()=>P.apply(ce,Pe),F)}},s9={yref:"paper",xref:"paper",x:1,y:0,text:"OpenBB Terminal",font_size:17,font_color:"gray",opacity:.5,xanchor:"right",yanchor:"bottom",yshift:-80,xshift:40};async function Vb(P,F,J=!1){const ce=document.getElementById("plotlyChart");J&&(ce.layout.annotations.push(s9),ce.globals.cmd_idx!=null&&ce.globals.cmd_src!=null&&(ce.layout.annotations[ce.globals.cmd_idx].text=ce.globals.cmd_src),Gs.relayout(ce,{"title.text":ce.globals.title,margin:ce.globals.old_margin})),J||(ce.globals.cmd_idx!=null&&ce.globals.cmd_src!=null&&(ce.layout.annotations[ce.globals.cmd_idx].text=""),ce.layout.annotations.splice(F,1),Gs.relayout(ce,{"title.text":"",margin:P}))}async function Hw(P,F,J){const ce=document.getElementById(P);if(["svg","pdf"].includes(J)){const Pe=document.getElementById("plotlyChart"),D=Pe.layout.margin,E=Pe.layout.annotations.length;await Vb(D,E,!0),Gs.downloadImage(Pe,{format:"svg",height:Pe.clientHeight,width:Pe.clientWidth,filename:window.title}),await Vb(D,E,!1),await Bp("",!0);return}Np(async function(){Uw.toBlob(ce).then(function(Pe){ty(Pe,F,null)})},2)()}async function Hb(P,F,J,ce){const Pe=document.getElementById(P),D=`${window.title}.png`;try{J(!0);let E=await Vw({filename:D,is_image:!0}),e="png";if(E!==null&&(e=E.name.split(".").pop()),await Bp(`Saving ${e.toUpperCase()}`),["svg","pdf"].includes(e)){await Hw(P,D,e),F(!1),J(!1),E||ce(!0);return}Np(async function(){Uw.toBlob(Pe).then(function(_){ty(_,D,E).then(async function(){await Bp("",!0),F(!1),J(!1),E||ce(!0)})})},2)()}catch(E){console.error(E),F(!1),J(!1)}}function rc(P=!0){return new Promise(F=>{window.MODEBAR||(window.MODEBAR=window.document.getElementsByClassName("modebar-container")[0],window.MODEBAR.style.cssText=`${window.MODEBAR.style.cssText}; display:flex;`),window.MODEBAR&&(window.MODEBAR.style.cssText.includes("display: none")&&!P?window.MODEBAR.style.cssText=`${window.MODEBAR.style.cssText}; display:flex;`:window.MODEBAR.style.cssText=`${window.MODEBAR.style.cssText}; display:none;`,F(!0))})}function l9({setModal:P,changeTheme:F,autoScaling:J,Loading:ce,changeColor:Pe,downloadFinished:D}){return Ku("ctrl+shift+t",()=>{P({name:"titleDialog"})},{preventDefault:!0}),Ku("ctrl+t",()=>{P({name:"textDialog"})},{preventDefault:!0}),Ku("ctrl+o",()=>{P({name:"overlayChart"})},{preventDefault:!0}),Ku("ctrl+shift+h",()=>{rc()},{preventDefault:!0}),Ku("ctrl+e",()=>{Pe(!0)},{preventDefault:!0}),Ku("ctrl+shift+s",async()=>{P({name:"downloadCsv"}),await Ub(document.getElementById("plotlyChart"),D)},{preventDefault:!0}),Ku("ctrl+s",async()=>{rc(),Hb("MainChart",rc,ce,D)},{preventDefault:!0}),Ku("ctrl+w",()=>{window.close()},{preventDefault:!0}),{plotGlPixelRatio:1,scrollZoom:!0,responsive:!0,displaylogo:!1,displayModeBar:!0,modeBarButtonsToRemove:["lasso2d","select2d","downloadImage"],modeBarButtons:[[{name:"Download CSV (Ctrl+Shift+S)",icon:Pu.downloadCsv,click:async function(e){await Ub(e,D)}},{name:"Download Chart as Image (Ctrl+S)",icon:Pu.downloadImage,click:async function(){rc(),await Hb("MainChart",rc,ce,D)}}],[{name:"Edit Color (Ctrl+E)",icon:Pu.changeColor,click:function(){Pe(!0)}},"drawline","drawopenpath","drawcircle","drawrect","eraseshape"],[{name:"Overlay chart from CSV (Ctrl+O)",icon:Pu.plotCsv,click:function(){P({name:"overlayChart"})}},{name:"Add Text (Ctrl+T)",icon:Pu.addText,click:function(){P({name:"textDialog",data:{text:""}})}},{name:"Change Titles (Ctrl+Shift+T)",icon:Pu.changeTitle,click:function(){P({name:"titleDialog"})}},{name:"Change Theme",icon:Pu.sunIcon,click:function(){F(!0)}}],["hoverClosestCartesian","hoverCompareCartesian","toggleSpikelines"],[{name:"Auto Scale (Ctrl+Shift+A)",icon:Gs.Icons.autoscale,click:function(){J(!0)}},"zoomIn2d","zoomOut2d","autoScale2d","zoom2d","pan2d"]]}}async function u9(P,F){try{if(P["xaxis.range[0]"]!=null){const J=P["xaxis.range[0]"],ce=P["xaxis.range[1]"];let Pe={},D,E;const e=F.data.filter(s=>s.yaxis!=null),_=[...new Set(e.map(s=>s.yaxis||s.y!=null||s.type=="candlestick"))],w=s=>F.data.filter(T=>T.yaxis==s&&(T.y||T.type=="candlestick"));return _.forEach(s=>{if(typeof s!="string")return;let T="yaxis"+s.replace("y",""),y=[],f=[],l=F.layout[T].type=="log";w(s).forEach(r=>{let n=r.x;l=F.layout[T].type=="log";let o=r.y!=null?r.y:[],a=r.type=="candlestick"?r.low:[],u=r.type=="candlestick"?r.high:[];l&&(o=o.map(Math.log10),r.type=="candlestick"&&(a=r.low.map(Math.log10),u=r.high.map(Math.log10)));let p=n.map((c,b)=>{let d=null;return c>=J&&c<=ce&&(r.y!=null&&(d=o[b]),r.type=="candlestick"&&(y.push(a[b]),y.push(u[b]))),d});f=f.concat(p)}),f=f.filter(r=>r!=null&&r!=null),D=Math.min(...f),E=Math.max(...f),y.length>0&&(y=y.filter(r=>r!=null&&r!=null),D=Math.min(...y),E=Math.max(...y));let t=E,i=F.layout[T].fixedrange!=null&&F.layout[T].fixedrange==!0;if(D!=null&&E!=null){let r=E-D,n=.15;if(y.length>0&&(n=.3),D-=r*n,E+=r*n,i){if(F.layout[T].tickvals!=null){let a=t,u=-3,p=Math.round(a*.2,u),c=[2,5,6,7,8,9,10],b=[1,4,5,6,7,8,9];for(let x=0;xc[x]&&(u=-b[x],p=Math.round(a*.2,u));let d=[Math.floor(p),Math.floor(p*2),Math.floor(p*3),Math.floor(p*4)],v=[0,Math.floor(a*7)];Pe[T+".tickvals"]=d,Pe[T+".range"]=v,Pe[T+".tickformat"]=".2s";return}D=0,E=F.layout[T].range[1]}Pe[T+".range"]=[D,E]}}),Pe}}catch(J){console.log(`Error in AutoScaling: ${J}`)}return{}}async function c9({plotData:P,volumeBars:F,setMaximizePlot:J}){const ce=Object.keys(P.layout).filter(s=>s.startsWith("xaxis")).filter(s=>P.layout[s].showticklabels||P.layout[s].matches==null),Pe=P.data.filter(s=>{var T;return(T=s==null?void 0:s.name)==null?void 0:T.startsWith("Volume")});let D={},E=F||{old_nticks:{}};const e=window.innerWidth,_=window.innerHeight;let w=_>420&&e<920?8:_>420&&e<500?9:7;return e<750?(Pe.forEach(s=>{s.type=="bar"&&(s.opacity=1,s.marker.line.width=.09,F.yaxis==null&&(E.yaxis="yaxis"+s.yaxis.replace("y",""),D[E.yaxis+".tickfont.size"]=w,E.tickfont=P.layout[E.yaxis].tickfont||{},P.layout.margin.l-=40))}),ce.forEach(s=>{var T;((T=F.old_nticks)==null?void 0:T[s])==null&&(D[s+".nticks"]=6,E.old_nticks[s]=P.layout[s].nticks||10)}),J(!0),await rc()):window.MODEBAR.style.cssText.includes("display: none")&&(await rc(!1),J(!1),F.old_nticks!=null&&ce.forEach(s=>{F.old_nticks[s]!=null&&(D[s+".nticks"]=E.old_nticks[s],E.old_nticks[s]=void 0)}),F.yaxis!=null&&Pe.forEach(s=>{s.type=="bar"&&(s.opacity=.5,s.marker.line.width=.2,D[E.yaxis+".tickfont.size"]=E.tickfont.size+3,P.layout.margin.l+=40,E.yaxis=void 0)})),{volume_update:E,layout_update:D,plotData:P}}function f9({open:P,onColorChange:F}){const[J,ce]=Un.useState(!1);function Pe(D){F(D)}return P&&!J&&ce(!0),!P&&J&&ce(!1),Un.useEffect(()=>{if(J){let D=function(e){let _=0,w=0,s=0,T=0;document.getElementById(e.id+"_header")?document.getElementById(e.id+"_header").onmousedown=y:e.onmousedown=y;function y(t){t=t||window.event,t.preventDefault(),s=t.clientX,T=t.clientY,document.onmouseup=l,document.onmousemove=f}function f(t){t=t||window.event,t.preventDefault(),_=s-t.clientX,w=T-t.clientY,s=t.clientX,T=t.clientY,e.style.top=e.offsetTop-w+"px",e.style.left=e.offsetLeft-_+"px"}function l(){document.onmouseup=null,document.onmousemove=null}},E=document.getElementById("changecolor");E.style.display="block",E.style.width=null,D(E)}else document.getElementById("changecolor").style.display="none"},[J]),br("div",{id:"changecolor",children:br("div",{id:"changecolor_header",children:br("input",{type:"color",id:"picked_color",value:"#00ACFF",onChange:D=>{let E=D.target.value;Pe(E)}})})})}function qw(P){var F,J,ce="";if(typeof P=="string"||typeof P=="number")ce+=P;else if(typeof P=="object")if(Array.isArray(P))for(F=0;F{ce.preventDefault(),window.pywry.open_file(J)},children:J})]})})}),br("div",{style:{float:"right",marginTop:20},children:br("button",{className:"_btn",style:{padding:"8px 16px",width:"100%"},onClick:F,children:"Close"})})]})})}const d9=QT(ZT);function g9({json:P,date:F,cmd:J,title:ce,globals:Pe,info:D}){var se,fe;const E=GT();Un.useEffect(()=>{E&&E.capture("chart",D)},[]),delete P.layout.width,delete P.layout.height,(fe=(se=P.layout)==null?void 0:se.title)!=null&&fe.text&&(P.layout.title.text="");const[e,_]=Un.useState({}),[w,s]=Un.useState(!1),[T,y]=Un.useState(ce),[f,l]=Un.useState({}),[t,i]=Un.useState(!1),[r,n]=Un.useState({name:""}),[o,a]=Un.useState(!1),[u,p]=Un.useState(null),[c,b]=Un.useState({old_nticks:{}}),[d,v]=Un.useState(!1),[x,g]=Un.useState(!1),[m,k]=Un.useState(P),[h,M]=Un.useState([]),[A,C]=Un.useState(!1),[L,O]=Un.useState(!0),[I,R]=Un.useState(!1),[U,B]=Un.useState(!1),[G,N]=Un.useState(!1),[j,V]=Un.useState({}),[H,ee]=Un.useState([]),Q=()=>n({name:""});function X(ye){var de,he,xe,Re,we;console.log("onDeleteAnnotation",ye);const pe=(he=(de=m==null?void 0:m.layout)==null?void 0:de.annotations)==null?void 0:he.findIndex(Ae=>Ae.text===ye.text);console.log("index",pe),pe>-1&&((Re=(xe=m==null?void 0:m.layout)==null?void 0:xe.annotations)==null||Re.splice(pe,1),k({...m}),M((we=m==null?void 0:m.layout)==null?void 0:we.annotations))}function Y(ye){U7({plotData:m,popupData:ye,setPlotData:k,setModal:n,setOnAnnotationClick:V,setAnnotations:M,onAnnotationClick:j,ohlcAnnotation:H,setOhlcAnnotation:ee,annotations:h,plotDiv:u})}Un.useEffect(()=>{x&&(n({name:"downloadFinished"}),g(!1))},[x]),Un.useEffect(()=>{f&&Object.keys(f).length>0&&(Object.keys(f).forEach(ye=>{m.layout[ye].title={...m.layout[ye].title||{},text:f[ye]},m.layout[ye].showticklabels=!0}),l({}))},[f]);function K(ye){let pe=u.layout.shapes;if(!pe||pe.length==0)return;let de=pe[pe.length-1];de.line.color=ye,Gs.update(u,{},{shapes:pe})}function te(ye,pe=!1){let de=e[ye]||document.querySelector(`[data-title="${ye}"]`);pe?(de.style.border="transparent",de.style.boxShadow="none"):(de.style.border="1px solid rgba(0, 151, 222, 1.0)",de.style.borderRadius="5px",de.style.borderpadding="5px",de.style.boxShadow="0 0 5px rgba(0, 151, 222, 1.0)"),_({...e,[ye]:de})}function ae(){let ye="Auto Scale (Ctrl+Shift+A)",pe=e[ye]||document.querySelector(`[data-title="${ye}"]`),de=!0;pe.style.border=="transparent"?(de=!1,u.on("plotly_relayout",Np(async function(he){if(he["xaxis.range[0]"]==null)return;let xe=await u9(he,u);Gs.update(u,{},xe)},100))):u.removeAllListeners("plotly_relayout"),te(ye,de)}function oe(){let ye="Edit Color (Ctrl+E)",pe=e[ye]||document.querySelector(`[data-title="${ye}"]`),de=!0;pe.style.border=="transparent"&&(de=!1),N(!de),te(ye,de)}return Un.useEffect(()=>{I&&(console.log("activateAutoScale",!I),ae(),R(!1))},[I]),Un.useEffect(()=>{U&&(oe(),B(!1))},[U]),Un.useEffect(()=>{if(A)try{console.log("changeTheme",A);const ye=m==null?void 0:m.data.filter(xe=>{var Re;return(Re=xe==null?void 0:xe.name)==null?void 0:Re.startsWith("Volume")});let pe=!L;window.document.body.style.backgroundColor=pe?"#000":"#fff",m.layout.font={...m.layout.font||{},color:pe?"#fff":"#000"};const de=pe?Pu.sunIcon:Pu.moonIcon;document.querySelector('[data-title="Change Theme"]').getElementsByTagName("path")[0].setAttribute("d",de.path),document.querySelector('[data-title="Change Theme"]').getElementsByTagName("svg")[0].setAttribute("viewBox",de.viewBox);const he={"#e4003a":"#c80000","#00ACFF":"#009600","#009600":"#00ACFF","#c80000":"#e4003a"};ye.forEach(xe=>{xe.type=="bar"&&(xe.marker.color=xe.marker.color.map(Re=>he[Re]||Re))}),m.layout.template=pe?ek:tk,k({...m}),Gs.react(u,m.data,m.layout),O(pe),C(!1)}catch(ye){console.log("error",ye)}},[A]),Un.useEffect(()=>{if(t){O(!0),R(!1);const ye=["Download CSV","Download Chart as Image","Overlay chart from CSV","Add Text","Change Titles","Auto Scale (Ctrl+Shift+A)","Reset Axes"],pe=document.querySelector('[data-title="Autoscale"]');pe&&(pe.getElementsByTagName("path")[0].setAttribute("d",Gs.Icons.home.path),pe.setAttribute("data-title","Reset Axes")),window.MODEBAR=document.getElementsByClassName("modebar-container")[0];const de=window.MODEBAR.getElementsByClassName("modebar-btn");if(window.MODEBAR.style.cssText=`${window.MODEBAR.style.cssText}; display:flex;`,de){let he={};for(let xe=0;xe0&&(k(Re),b(we),Gs.relayout(u,xe))})}},[t]),ni("div",{className:"relative h-full",children:[o&&br("div",{className:"absolute inset-0 flex items-center justify-center z-[100]",children:ni("svg",{className:"animate-spin h-20 w-20 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[br("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),br("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v8z"})]})}),ni("div",{id:"loading",className:"saving",children:[br("div",{id:"loading_text",className:"loading_text"}),br("div",{id:"loader",className:"loader"})]}),br(D7,{addOverlay:ye=>{console.log(ye),m.layout.showlegend=!0,k(ye),i(!1)},plotlyData:m,setLoading:a,open:r.name==="overlayChart",close:Q}),br(B7,{updateTitle:ye=>y(ye),updateAxesTitles:ye=>l(ye),defaultTitle:T,plotlyData:m,open:r.name==="titleDialog",close:Q}),br(N7,{popupData:r.name==="textDialog"?r==null?void 0:r.data:null,open:r.name==="textDialog",close:Q,addAnnotation:ye=>Y(ye),deleteAnnotation:ye=>X(ye)}),br(f9,{open:G,onColorChange:K}),br(p9,{open:r.name==="downloadFinished",close:Q}),ni("div",{className:"relative h-full",id:"MainChart",children:[ni("div",{className:"_header relative gap-4 py-2 text-center text-xs flex items-center justify-between px-4 text-white",children:[br("div",{className:"w-1/3",children:br("svg",{xmlns:"http://www.w3.org/2000/svg",width:"64",height:"40",fill:"none",viewBox:"0 0 64 40",children:br("path",{fill:"#fff",d:"M61.283 3.965H33.608v27.757h25.699V19.826H37.561v-3.965H63.26V3.965h-1.977zM39.538 23.792h15.815v3.965H37.561v-3.965h1.977zM59.306 9.913v1.983H37.561V7.931h21.745v1.982zM33.606 0h-3.954v3.965H33.606V0zM25.7 3.966H0V15.86h25.7v3.965H3.953v11.896h25.7V3.966h-3.955zm0 21.808v1.983H7.907v-3.965h17.791v1.982zm0-15.86v1.982H3.953V7.931h21.745v1.982zM37.039 35.693v2.952l-.246-.246-.245-.245-.245-.247-.245-.246-.246-.246-.245-.245-.245-.247-.247-.246-.245-.246-.245-.246-.245-.246-.246-.246h-.49v3.936h.49v-3.198l.246.246.245.246.245.246.245.246.246.246.246.246.245.247.246.245.245.246.245.247.245.246.246.245.245.246h.245v-3.936h-.49zM44.938 37.17h-.491v-1.477h-2.944v3.937h3.93v-2.46h-.495zm-2.944-.246v-.739h1.962v.984h-1.962v-.245zm2.944.984v1.23h-2.944V37.66h2.944v.247zM52.835 37.17h-.49v-1.477h-2.946v3.937h3.925v-2.46h-.489zm-2.944-.246v-.739h1.963v.984h-1.965l.002-.245zm2.944.984v1.23H49.89V37.66h2.946v.247zM29.174 35.693H25.739v3.936H29.663v-.491H26.229v-.984h2.943v-.493H26.229v-1.476h3.434v-.492h-.489zM13.37 35.693H9.934v3.937h3.925v-3.937h-.49zm0 .738v2.709h-2.945v-2.955h2.943l.001.246zM21.276 35.693h-3.435v3.937h.491v-1.476h3.434v-2.461h-.49zm0 .738v1.23h-2.944v-1.476h2.944v.246z"})})}),br("p",{className:"font-bold w-1/3 flex flex-col gap-0.5 items-center",children:T}),ni("p",{className:"w-1/3 text-right text-xs",children:[new Intl.DateTimeFormat("en-GB",{dateStyle:"full",timeStyle:"long"}).format(F).replace(/:\d\d /," "),br("br",{}),br("span",{className:"text-grey-400",children:J})]})]}),br("div",{className:h9("w-full sm:pb-12",{"h-[calc(100%-10px)]":d,"h-[calc(100%-50px)]":!d}),children:br(d9,{onInitialized:()=>{if(!u){const ye=document.getElementById("plotlyChart");console.log("plot",ye),ye&&p(ye),ye.globals=Pe}t||i(!0)},className:"w-full h-full",divId:"plotlyChart",data:m.data,layout:m.layout,config:l9({setModal:n,changeTheme:C,autoScaling:R,Loading:a,changeColor:B,downloadFinished:g})})})]})]})}function v9(){const[P,F]=Un.useState(null),[J,ce]=Un.useState({});Un.useEffect(()=>{{const E=setInterval(()=>{if(window.json_data){const e=window.json_data;console.log(e),F(e),clearInterval(E)}},100);return()=>clearInterval(E)}},[]);const D=(E=>{var y,f,l,t;if(!E)return null;let e={added_traces:[],csv_yaxis_id:null,cmd_src_idx:null,cmd_idx:null,cmd_src:"",old_margin:null,title:""},_=(f=(y=E.layout)==null?void 0:y.title)==null?void 0:f.text.replace(/|<\/b>/g,"").replace(/ /g,"_"),w=new Date().toISOString().slice(0,10).replace(/-/g,""),s=new Date().toISOString().slice(11,19).replace(/:/g,"");window.title=`openbb_${_}_${w}_${s}`,E.layout.annotations!=null&&E.layout.annotations.forEach(function(i){if(i.text!=null&&i.text[0]=="/"){e.cmd_src=i.text,e.cmd_idx=E.layout.annotations.indexOf(i),i.text="";let r=E.layout.margin;e.old_margin={...r},r.t!=null&&r.t>40&&(r.t=40),E.cmd=="/stocks/candle"&&(r.r-=50)}}),E.data.forEach(function(i){if(i.name!=null){const r=i.name.length;i.name=i.name+" ",i.hoverlabel={namelength:r}}});let T=((t=(l=E.layout)==null?void 0:l.title)==null?void 0:t.text)||"Interactive Chart";return e.title=T,{data:E,date:new Date,globals:e,cmd:E.command_location,posthog:E.posthog,python_version:E.python_version,pywry_version:E.pywry_version,terminal_version:E.terminal_version,title:T}})(P);if(D){D.posthog.collect_logs&&!J&&ce({api_host:"https://app.posthog.com",autocapture:{css_selector_allowlist:[".ph-capture"]},capture_pageview:!1,loaded:function(w){const s=(D==null?void 0:D.log_id)||"";s!=""&&s!="REPLACE_ME"&&w.identify(s),w.onFeatureFlags(function(){w.isFeatureEnabled("record-pywry",{send_event:!1})||w.stopSessionRecording(),w.isFeatureEnabled("collect-logs-pywry",{send_event:!1})?w.has_opted_out_capturing()&&w.opt_in_capturing():w.opt_out_capturing()})}});const E={INFO:{command:D.cmd,title:D.title,date:D.date,python_version:D.python_version,pywry_version:D.pywry_version,terminal_version:D.terminal_version}},e=br(g9,{json:D.data,date:D.date,cmd:D.cmd,title:D.title,globals:D.globals,info:E});return D.posthog.collect_logs&&J?br(qT,{apiKey:"phc_vhssDAMod5qIplznQ75Kdgz4aB1qPFmeVmfEOZ4hkRw",options:J,children:e}):e}else return br("div",{className:"absolute inset-0 flex items-center justify-center z-[100]",children:ni("svg",{className:"animate-spin h-20 w-20 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[br("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),br("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v8z"})]})})}z8.render(br(s_.StrictMode,{children:br(v9,{})}),document.getElementById("root")); + + + + + +
+ diff --git a/openbb_terminal/core/plots/plotly_helper.py b/openbb_terminal/core/plots/plotly_helper.py index adb64b1954e5..a74589d5a7fe 100644 --- a/openbb_terminal/core/plots/plotly_helper.py +++ b/openbb_terminal/core/plots/plotly_helper.py @@ -78,6 +78,12 @@ class TerminalStyle: line_width: float = 1.5 + def __new__(cls, *args, **kwargs): # pylint: disable=W0613 + """Create a singleton.""" + if not hasattr(cls, "instance"): + cls.instance = super().__new__(cls) # pylint: disable=E1120 + return cls.instance + def __init__( self, plt_style: Optional[str] = "", @@ -247,8 +253,9 @@ def get_colors(self, reverse: bool = False) -> list: list List of colors e.g. ["#00ACFF", "#FF0000"] """ - self.apply_style() - colors = self.plotly_template.get("layout", {}).get("colorway", PLT_COLORWAY) + colors = ( + self.plotly_template.get("layout", {}).get("colorway", PLT_COLORWAY).copy() + ) if reverse: colors.reverse() return colors @@ -1550,9 +1557,9 @@ def _adjust_margins(self) -> None: return margin_add = ( - dict(l=80, r=60, b=90, t=40, pad=0) + dict(l=80, r=60, b=80, t=40, pad=0) if not self._has_secondary_y or not self.has_subplots - else dict(l=60, r=50, b=95, t=40, pad=0) + else dict(l=60, r=50, b=85, t=40, pad=0) ) # We adjust margins diff --git a/openbb_terminal/core/plots/plotly_ta/data_classes.py b/openbb_terminal/core/plots/plotly_ta/data_classes.py index b86a461cfc53..66c7093ef89e 100644 --- a/openbb_terminal/core/plots/plotly_ta/data_classes.py +++ b/openbb_terminal/core/plots/plotly_ta/data_classes.py @@ -317,7 +317,7 @@ def to_dataframe(self) -> pd.DataFrame: and not self.has_volume ): continue - if indicator.name in ["fib", "srlines", "clenow", "demark"]: + if indicator.name in ["fib", "srlines", "clenow", "demark", "ichimoku"]: continue try: indicator_data = self.get_indicator_data( diff --git a/openbb_terminal/core/plots/plotly_ta/plugins/momentum_plugin.py b/openbb_terminal/core/plots/plotly_ta/plugins/momentum_plugin.py index 1e10c1164b5b..7472d2caa260 100644 --- a/openbb_terminal/core/plots/plotly_ta/plugins/momentum_plugin.py +++ b/openbb_terminal/core/plots/plotly_ta/plugins/momentum_plugin.py @@ -12,7 +12,7 @@ class Momentum(PltTA): """Momentum technical indicators""" __subplots__ = ["rsi", "macd", "stoch", "cci", "fisher", "cg"] - __inchart__ = ["clenow", "demark"] + __inchart__ = ["clenow", "demark", "ichimoku"] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -165,9 +165,9 @@ def plot_clenow(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int yref="paper", text="CLenow", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color=self.inchart_colors[inchart_index], @@ -225,9 +225,9 @@ def plot_demark(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int yref="paper", text="Demark", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color=self.inchart_colors[inchart_index], @@ -510,3 +510,100 @@ def plot_stoch(self, fig: OpenBBFigure, df_ta: pd.DataFrame, subplot_row: int): fig["layout"][f"yaxis{subplot_row + 1}"].update(nticks=5, autorange=True) return fig, subplot_row + 1 + + @indicator() + def plot_ichimoku(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int): + # Calculate Ichimoku indicator + conversion_period = ( + self.params["ichimoku"].get_argument_values("conversion_period") or 9 + ) + base_period = self.params["ichimoku"].get_argument_values("base_period") or 26 + lagging_line_period = ( + self.params["ichimoku"].get_argument_values("lagging_line_period") or 52 + ) + displacement = self.params["ichimoku"].get_argument_values("displacement") or 26 + + # Tenkan-sen (Conversion Line) + conversion_line = ( + df_ta["High"].rolling(window=conversion_period).max() + + df_ta["Low"].rolling(window=conversion_period).min() + ) / 2 + + # Kijun-sen (Base Line) + base_line = ( + df_ta["High"].rolling(window=base_period).max() + + df_ta["Low"].rolling(window=base_period).min() + ) / 2 + + # Senkou Span A (Leading Span A) + leading_span_a = ((conversion_line + base_line) / 2).shift(displacement) + + # Senkou Span B (Leading Span B) + lagging_line = df_ta[self.close_column].shift(-lagging_line_period) # type: ignore + leading_span_b = ( + ( + lagging_line.rolling(window=base_period).max() + + lagging_line.rolling(window=base_period).min() + ) + / 2 + ).shift(displacement) + + # Plot Tenkan-sen and Kijun-sen + fig.add_scatter( + x=df_ta.index, + y=conversion_line, + line=dict(color="orange", width=1), + name="Tenkan-sen", + secondary_y=self.show_volume, + showlegend=True, + opacity=1, + ) + fig.add_scatter( + x=df_ta.index, + y=base_line, + line=dict(color="blue", width=1), + name="Kijun-sen", + secondary_y=self.show_volume, + showlegend=True, + opacity=1, + ) + + # Plot Senkou Span A and Senkou Span B as a filled area + fig.add_scatter( + x=df_ta.index, + y=leading_span_a, + line=dict(color="#009600", width=1), + fill="tonexty", + fillcolor="rgba(0, 150, 0, 0.1)", + name="Senkou Span A", + secondary_y=self.show_volume, + showlegend=False, + opacity=0.2, + ) + fig.add_scatter( + x=df_ta.index, + y=leading_span_b, + line=dict(color="#c80000", width=1), + fill="tonexty", + fillcolor="rgba(200, 0, 0, 0.1)", + name="Senkou Span B", + showlegend=False, + secondary_y=self.show_volume, + opacity=0.2, + ) + + fig.add_annotation( + xref="paper", + yref="paper", + text="Ichi" + "moku", + x=0, + xanchor="right", + xshift=-6, + yshift=-inchart_index * 18, + y=0.98, + font_size=14, + opacity=1, + ) + + return fig, inchart_index + 1 diff --git a/openbb_terminal/core/plots/plotly_ta/plugins/overlap_plugin.py b/openbb_terminal/core/plots/plotly_ta/plugins/overlap_plugin.py index 1ef202fbe703..2256a937cb03 100644 --- a/openbb_terminal/core/plots/plotly_ta/plugins/overlap_plugin.py +++ b/openbb_terminal/core/plots/plotly_ta/plugins/overlap_plugin.py @@ -49,9 +49,9 @@ def plot_ma(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int): yref="paper", text=f"{column.replace('_', '').replace('RMA', 'MA')}", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color=self.inchart_colors[inchart_index], @@ -83,9 +83,9 @@ def plot_vwap(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int): yref="paper", text="VWAP", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color=self.inchart_colors[inchart_index], diff --git a/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py b/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py index f2d37e9c98f0..253db26802ab 100644 --- a/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py +++ b/openbb_terminal/core/plots/plotly_ta/plugins/volatility_plugin.py @@ -93,9 +93,9 @@ def plot_bbands(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int yref="paper", text=f"{bbands_text}", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color=theme.get_colors()[1], @@ -152,9 +152,9 @@ def plot_donchian(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: i yref="paper", text=f"{donchian_text}", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color="#B47DA0", @@ -210,9 +210,9 @@ def plot_kc(self, fig: OpenBBFigure, df_ta: pd.DataFrame, inchart_index: int): yref="paper", text=f"{kctext}", x=0, - xanchor="left", + xanchor="right", + xshift=-6, yshift=-inchart_index * 18, - xshift=-60, y=0.98, font_size=14, font_color="#B47DA0", diff --git a/openbb_terminal/core/plots/plotly_ta/ta_class.py b/openbb_terminal/core/plots/plotly_ta/ta_class.py index 293c9e031d66..eec80c986ac5 100644 --- a/openbb_terminal/core/plots/plotly_ta/ta_class.py +++ b/openbb_terminal/core/plots/plotly_ta/ta_class.py @@ -452,12 +452,12 @@ def plot_fig( if indicator in self.ma_mode: if ma_done: continue - indicator, ma_done = "ma", True + indicator, ma_done = "ma", True # noqa figure, inchart_index = getattr(self, f"plot_{indicator}")( figure, self.df_ta, inchart_index ) - elif indicator in ["fib", "srlines", "demark", "clenow"]: + elif indicator in ["fib", "srlines", "demark", "clenow", "ichimoku"]: figure = getattr(self, f"plot_{indicator}")(figure, self.df_ta) else: raise ValueError(f"Unknown indicator: {indicator}") diff --git a/openbb_terminal/core/sdk/models/econometrics_sdk_model.py b/openbb_terminal/core/sdk/models/econometrics_sdk_model.py index 2bd9a60a11df..690dd7ca2d39 100644 --- a/openbb_terminal/core/sdk/models/econometrics_sdk_model.py +++ b/openbb_terminal/core/sdk/models/econometrics_sdk_model.py @@ -22,8 +22,8 @@ class EconometricsRoot(Category): `dwat_chart`: Show Durbin-Watson autocorrelation tests\n `fdols`: First differencing is an alternative to using fixed effects when there might be correlation.\n `fe`: When effects are correlated with the regressors the RE and BE estimators are not consistent.\n - `garch`: Calculates annualized volatility forecasts based on GARCH.\n - `garch_chart`: Plots the annualized volatility forecasts based on GARCH\n + `garch`: Calculates volatility forecasts based on GARCH.\n + `garch_chart`: Plots the volatility forecasts based on GARCH\n `get_regression_data`: This function creates a DataFrame with the required regression data as\n `granger`: Calculate granger tests\n `granger_chart`: Show granger tests\n diff --git a/openbb_terminal/core/sdk/sdk_helpers.py b/openbb_terminal/core/sdk/sdk_helpers.py index 85bcc78c7a67..54cb40e3d3a6 100644 --- a/openbb_terminal/core/sdk/sdk_helpers.py +++ b/openbb_terminal/core/sdk/sdk_helpers.py @@ -314,15 +314,15 @@ def __remove_key_and_log_state(func_module: str, function_args: dict) -> dict: if func_module == "openbb_terminal.keys_model": # pylint: disable=C0415 - from openbb_terminal.core.log.generation.settings_logger import ( - log_credentials, - ) + # from openbb_terminal.core.log.generation.settings_logger import ( + # log_credentials, + # ) # remove key if defined function_args.pop("key", None) - log_credentials() + # log_credentials() return function_args diff --git a/openbb_terminal/dashboards/dashboards_controller.py b/openbb_terminal/dashboards/dashboards_controller.py index e2253141b42b..d52b377623d0 100644 --- a/openbb_terminal/dashboards/dashboards_controller.py +++ b/openbb_terminal/dashboards/dashboards_controller.py @@ -133,7 +133,7 @@ def check_processes(self, name: Optional[str] = None) -> str: port = re.findall(r"--port=(\d+)", cmdline) port = port[0] if port else "" - if re.findall(r"-m\s+.*streamlit|streamlit", cmdline): + if re.findall(r"-m\s+.*streamlit_run|streamlit", cmdline): return f"http://localhost:{port}/{name}" return "" @@ -185,7 +185,7 @@ def create_call_streamlit( ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: - streamlit_run = Path(__file__).parent / "streamlit.py" + streamlit_run = Path(__file__).parent / "streamlit_run.py" python_path = streamlit_run.relative_to(self.parent_path).with_suffix("") cmd = ( [sys.executable, "-m", ".".join(python_path.parts)] diff --git a/openbb_terminal/dashboards/stream/pages/Indicators.py b/openbb_terminal/dashboards/stream/pages/Indicators.py index 6a63aeb8dc6d..74a8a5c3a0b9 100644 --- a/openbb_terminal/dashboards/stream/pages/Indicators.py +++ b/openbb_terminal/dashboards/stream/pages/Indicators.py @@ -428,6 +428,11 @@ def on_length_submit(self, indicators: list): "length": st.session_state[f"{indicator}_length"] } + async def on_update(self): + """Handle the update button""" + st.session_state["indicators_dfs"] = {} + await self.async_on_ticker_change() + async def run(self): """Run the app""" @@ -475,7 +480,8 @@ async def run(self): ) st.sidebar.markdown("""---""") - if st.sidebar.button("Plot Data"): + plot_data, reset_data = st.sidebar.columns([1, 1]) + if plot_data.button("Plot", use_container_width=True): if ticker: await self.handle_changes( start_date, @@ -486,6 +492,15 @@ async def run(self): else: with logger.container(): logger.error("Please enter a ticker", icon="❗") + if reset_data.button("Update", use_container_width=True): + await self.on_update() + if ticker: + await self.handle_changes( + start_date, + end_date, + ticker, + indicators, + ) if __name__ == "__main__": diff --git a/openbb_terminal/dashboards/streamlit.py b/openbb_terminal/dashboards/streamlit_run.py similarity index 96% rename from openbb_terminal/dashboards/streamlit.py rename to openbb_terminal/dashboards/streamlit_run.py index 975dc4f02170..bfdc61c174bd 100644 --- a/openbb_terminal/dashboards/streamlit.py +++ b/openbb_terminal/dashboards/streamlit_run.py @@ -24,8 +24,8 @@ def main(): "server.enableCORS": False, "server.enableXsrfProtection": False, "browser.serverAddress": "localhost", - "theme.font": "Fira Code, monospace", "theme.base": "dark", + "browser.gatherUsageStats": False, } streamlit.web.bootstrap.load_config_options(flag_options=flag_options) diff --git a/openbb_terminal/economy/oecd_model.py b/openbb_terminal/economy/oecd_model.py index bde12f5d7870..2c315dfaf077 100644 --- a/openbb_terminal/economy/oecd_model.py +++ b/openbb_terminal/economy/oecd_model.py @@ -550,7 +550,7 @@ def get_gdp( except KeyError: console.print(f"No data available for {country}.") - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) return result @@ -740,8 +740,9 @@ def get_gdp_forecast( result.index = ( pd.PeriodIndex(result.index, freq="Q").to_timestamp().strftime("%Y-%m") ) + result.index = pd.to_datetime(result.index, format="%Y-%m") else: - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) @@ -811,7 +812,7 @@ def get_debt( except KeyError: console.print(f"No data available for {country}.") - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) return result @@ -919,8 +920,9 @@ def get_cpi( if frequency in ["M", "Q"]: result.index = pd.to_datetime(result.index).strftime("%Y-%m") + result.index = pd.to_datetime(result.index, format="%Y-%m") else: - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) @@ -990,7 +992,7 @@ def get_balance( except KeyError: console.print(f"No data available for {country}.") - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) return result @@ -1073,7 +1075,7 @@ def get_revenue( except KeyError: console.print(f"No data available for {country}.") - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) return result @@ -1188,7 +1190,7 @@ def get_spending( except KeyError: console.print(f"No data available for {country}.") - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) return result @@ -1260,7 +1262,7 @@ def get_trust( except KeyError: console.print(f"No data available for {country}.") - result.index = pd.to_datetime(result.index).year + result.index = pd.to_datetime(result.index, format="%Y") result.sort_index(inplace=True) return result diff --git a/openbb_terminal/economy/oecd_view.py b/openbb_terminal/economy/oecd_view.py index f265db349912..a86bd16cc37b 100644 --- a/openbb_terminal/economy/oecd_view.py +++ b/openbb_terminal/economy/oecd_view.py @@ -291,9 +291,7 @@ def plot_gdp_forecast( fig = OpenBBFigure(yaxis_title="Growth rates Compared to Previous Year (%)") future_dates = df[ - df.index > str(datetime.now()) - if units == "Q" - else df.index >= datetime.now().year + df.index > str(datetime.now()) if units == "Q" else df.index >= datetime.now() ] for country in df.columns: fig.add_scatter( diff --git a/openbb_terminal/loggers.py b/openbb_terminal/loggers.py index 0f66070c20c3..3abf4b0f870e 100644 --- a/openbb_terminal/loggers.py +++ b/openbb_terminal/loggers.py @@ -2,7 +2,6 @@ __docformat__ = "numpy" # IMPORTATION STANDARD -import atexit import json import logging import re @@ -38,6 +37,7 @@ ) from openbb_terminal.core.log.generation.user_logger import ( NO_USER_PLACEHOLDER, + get_current_user, get_user_uuid, ) from openbb_terminal.core.session.current_system import ( @@ -104,7 +104,6 @@ def __init__(self, settings: Settings): self.settings = settings self.app_settings = settings.app_settings self.logged_in = False - atexit.register(openbb_posthog.shutdown) def emit(self, record: logging.LogRecord): try: @@ -114,7 +113,7 @@ def emit(self, record: logging.LogRecord): def log_to_dict(self, log_info: str) -> dict: """Log to dict""" - log_regex = r"(KEYS|PREFERENCES|SYSTEM|CMD|QUEUE): (.*)" + log_regex = r"(STARTUP|CMD): (.*)" log_dict: Dict[str, Any] = {} for log in re.findall(log_regex, log_info): @@ -140,15 +139,23 @@ def send(self, record: logging.LogRecord): if log_dict := self.log_to_dict(log_info=log_line): event_name = f"log_{list(log_dict.keys())[0].lower()}" + log_dict = log_dict.get("STARTUP", log_dict) log_extra = {**log_extra, **log_dict} log_extra.pop("message", None) - if re.match(r"^(START|END|INPUT:)", log_line): + if re.match(r"^(QUEUE|START|END|INPUT:)", log_line) and not log_dict: return - if not self.logged_in and get_user_uuid() != NO_USER_PLACEHOLDER: + if ( + not self.logged_in + and get_user_uuid() != NO_USER_PLACEHOLDER + and get_current_user().profile.remember + ): self.logged_in = True + openbb_posthog.identify( + get_user_uuid(), {"email": get_current_user().profile.email} + ) openbb_posthog.alias(get_user_uuid(), app_settings.identifier) openbb_posthog.capture( diff --git a/openbb_terminal/miscellaneous/styles/default/light.pltstyle.json b/openbb_terminal/miscellaneous/styles/default/light.pltstyle.json index dc4b2f3e17c9..5e6a433e4bfe 100644 --- a/openbb_terminal/miscellaneous/styles/default/light.pltstyle.json +++ b/openbb_terminal/miscellaneous/styles/default/light.pltstyle.json @@ -3,7 +3,9 @@ "up_color": "#009600", "down_color": "#c80000", "color": "#0d0887", - "width": 1.5 + "width": 1.5, + "down_color_transparent": "rgba(200, 0, 0, 0.4)", + "up_color_transparent": "rgba(0, 150, 0, 0.4)" }, "data": { "barpolar": [ diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index 52d4c2e7b0e9..d41133a5b389 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -123,8 +123,8 @@ def econometrics(self): `dwat_chart`: Show Durbin-Watson autocorrelation tests\n `fdols`: First differencing is an alternative to using fixed effects when there might be correlation.\n `fe`: When effects are correlated with the regressors the RE and BE estimators are not consistent.\n - `garch`: Calculates annualized volatility forecasts based on GARCH.\n - `garch_chart`: Plots the annualized volatility forecasts based on GARCH\n + `garch`: Calculates volatility forecasts based on GARCH.\n + `garch_chart`: Plots the volatility forecasts based on GARCH\n `get_regression_data`: This function creates a DataFrame with the required regression data as\n `granger`: Calculate granger tests\n `granger_chart`: Show granger tests\n diff --git a/openbb_terminal/stocks/dark_pool_shorts/quandl_view.py b/openbb_terminal/stocks/dark_pool_shorts/quandl_view.py index 6c17ea6caf3b..84763a58e4b8 100644 --- a/openbb_terminal/stocks/dark_pool_shorts/quandl_view.py +++ b/openbb_terminal/stocks/dark_pool_shorts/quandl_view.py @@ -8,6 +8,7 @@ import pandas as pd from openbb_terminal import OpenBBFigure, theme +from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.decorators import check_api_key, log_start_end from openbb_terminal.helper_funcs import ( export_data, @@ -130,13 +131,14 @@ def short_interest( fig = plot_short_interest(symbol, df_short_interest, nyse, True) if raw: - df_short_interest["% of Volume Shorted"] = df_short_interest[ - "% of Volume Shorted" - ].apply(lambda x: f"{x/100:.2%}") - - df_short_interest = df_short_interest.applymap( - lambda x: lambda_long_number_format(x) - ).sort_index(ascending=False) + if not get_current_user().preferences.USE_INTERACTIVE_DF: + df_short_interest["% of Volume Shorted"] = df_short_interest[ + "% of Volume Shorted" + ].apply(lambda x: f"{x/100:.2%}") + + df_short_interest = df_short_interest.applymap( + lambda x: lambda_long_number_format(x) + ).sort_index(ascending=False) print_rich_table( df_short_interest, diff --git a/openbb_terminal/stocks/dark_pool_shorts/stocksera_view.py b/openbb_terminal/stocks/dark_pool_shorts/stocksera_view.py index 4dd838c81dda..5a14ac5dcdfb 100644 --- a/openbb_terminal/stocks/dark_pool_shorts/stocksera_view.py +++ b/openbb_terminal/stocks/dark_pool_shorts/stocksera_view.py @@ -8,6 +8,7 @@ import pandas as pd from openbb_terminal import OpenBBFigure, theme +from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.decorators import check_api_key, log_start_end from openbb_terminal.helper_funcs import ( export_data, @@ -105,9 +106,10 @@ def cost_to_borrow( fig = plot_cost_to_borrow(symbol, df_cost_to_borrow, True) if raw: - df_cost_to_borrow["Available"] = df_cost_to_borrow["Available"].apply( - lambda x: lambda_long_number_format(x) - ) + if not get_current_user().preferences.USE_INTERACTIVE_DF: + df_cost_to_borrow["Available"] = df_cost_to_borrow["Available"].apply( + lambda x: lambda_long_number_format(x) + ) print_rich_table( df_cost_to_borrow, headers=list(df_cost_to_borrow.columns), diff --git a/openbb_terminal/stocks/fundamental_analysis/av_model.py b/openbb_terminal/stocks/fundamental_analysis/av_model.py index cb9c33e4cee5..23bb7bed93af 100644 --- a/openbb_terminal/stocks/fundamental_analysis/av_model.py +++ b/openbb_terminal/stocks/fundamental_analysis/av_model.py @@ -112,7 +112,9 @@ def get_key_metrics(symbol: str) -> pd.DataFrame: df_fa = pd.json_normalize(result_json) df_fa = df_fa[list(result_json.keys())].T - df_fa = df_fa.applymap(lambda x: lambda_long_number_format(x)) + + if not get_current_user().preferences.USE_INTERACTIVE_DF: + df_fa = df_fa.applymap(lambda x: lambda_long_number_format(x)) clean_df_index(df_fa) df_fa = df_fa.rename( index={ diff --git a/openbb_terminal/stocks/fundamental_analysis/fmp_model.py b/openbb_terminal/stocks/fundamental_analysis/fmp_model.py index 95a12fd9edf9..6406c072b320 100644 --- a/openbb_terminal/stocks/fundamental_analysis/fmp_model.py +++ b/openbb_terminal/stocks/fundamental_analysis/fmp_model.py @@ -661,8 +661,9 @@ def clean_metrics_df(data: pd.DataFrame, num: int, mask: bool = False) -> pd.Dat for row, dt_type in date_rows.items(): if row in data.index: data.loc[row] = pd.to_datetime(data.loc[row], format=dt_type) - - data = data.applymap(lambda x: lambda_long_number_format(x)) + # we dont want to format this going to pywry window + if not get_current_user().preferences.USE_INTERACTIVE_DF: + data = data.applymap(lambda x: lambda_long_number_format(x)) clean_df_index(data) data.columns.name = "Fiscal Date Ending" data = data.rename( diff --git a/openbb_terminal/stocks/screener/finviz_view.py b/openbb_terminal/stocks/screener/finviz_view.py index b21f337e388b..30da375525f3 100644 --- a/openbb_terminal/stocks/screener/finviz_view.py +++ b/openbb_terminal/stocks/screener/finviz_view.py @@ -8,6 +8,7 @@ import pandas as pd +from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.decorators import log_start_end from openbb_terminal.helper_funcs import ( export_data, @@ -196,7 +197,7 @@ def screener( console.print( f"Wrong sort column provided! Provide one of these: {', '.join(d_cols_to_sort[data_type])}" ) - + df_original = df_screen.copy() df_screen = df_screen.fillna("") if data_type == "ownership": @@ -235,9 +236,12 @@ def screener( lambda x: lambda_long_number_format(x, 1) ) + if not get_current_user().preferences.USE_INTERACTIVE_DF: + df_original = df_screen + print_rich_table( - df_screen, - headers=list(df_screen.columns), + df_original, + headers=list(df_original.columns), show_index=False, title="Finviz Screener", export=bool(export), @@ -248,7 +252,7 @@ def screener( export, os.path.dirname(os.path.abspath(__file__)), data_type, - df_screen, + df_original, sheet_name, ) diff --git a/openbb_terminal/stocks/stocks_model.py b/openbb_terminal/stocks/stocks_model.py index cbf33ee8fbc5..2ea2a7dd96fc 100644 --- a/openbb_terminal/stocks/stocks_model.py +++ b/openbb_terminal/stocks/stocks_model.py @@ -329,13 +329,16 @@ def get_quote(symbols: list[str]) -> pd.DataFrame: if not df_fa.empty: clean_df_index(df_fa) for c in df_fa.columns: - df_fa.loc["Market cap"][c] = lambda_long_number_format( - df_fa.loc["Market cap"][c] - ) - df_fa.loc["Shares outstanding"][c] = lambda_long_number_format( - df_fa.loc["Shares outstanding"][c] - ) - df_fa.loc["Volume"][c] = lambda_long_number_format(df_fa.loc["Volume"][c]) + if not get_current_user().preferences.USE_INTERACTIVE_DF: + df_fa.loc["Market cap"][c] = lambda_long_number_format( + df_fa.loc["Market cap"][c] + ) + df_fa.loc["Shares outstanding"][c] = lambda_long_number_format( + df_fa.loc["Shares outstanding"][c] + ) + df_fa.loc["Volume"][c] = lambda_long_number_format( + df_fa.loc["Volume"][c] + ) # Check if there is a valid earnings announcement if df_fa.loc["Earnings announcement"][c]: earning_announcement = datetime.strptime( diff --git a/openbb_terminal/stocks/technical_analysis/ta_controller.py b/openbb_terminal/stocks/technical_analysis/ta_controller.py index 7e24ce6a1819..75682cf15215 100644 --- a/openbb_terminal/stocks/technical_analysis/ta_controller.py +++ b/openbb_terminal/stocks/technical_analysis/ta_controller.py @@ -67,6 +67,7 @@ class TechnicalAnalysisController(StockBaseController): "zlma", "cci", "macd", + "ichimoku", "rsi", "rsp", "stoch", @@ -153,6 +154,7 @@ def print_help(self): mt.add_cmd("demark", not self.stock.empty) mt.add_cmd("macd", not self.stock.empty) mt.add_cmd("fisher", not self.stock.empty) + mt.add_cmd("ichimoku", not self.stock.empty) mt.add_cmd("rsi", not self.stock.empty) mt.add_cmd("rsp", not self.stock.empty) mt.add_cmd("stoch", not self.stock.empty) @@ -1764,3 +1766,80 @@ def call_cones(self, other_args: List[str]): if ns_parser.sheet_name else None, ) + + @log_start_end(log=logger) + def call_ichimoku(self, other_args: List[str]): + """Process ichimoku command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="ichimoku", + description=""" + The Ichimoku Cloud, also known as Ichimoku Kinko Hyo, is a versatile indicator that + defines support and resistance, identifies trend direction, gauges momentum and provides + trading signals. Ichimoku Kinko Hyo translates into "one look equilibrium chart". With + one look, chartists can identify the trend and look for potential signals within that trend. + """, + ) + + parser.add_argument( + "-c", + "--conversion", + action="store", + dest="n_conversion", + type=check_positive, + default=9, + help="conversion line period", + ) + parser.add_argument( + "-b", + "--base", + action="store", + dest="n_base", + type=check_positive, + default=26, + help="base line period", + ) + parser.add_argument( + "-l", + "--lagging", + action="store", + dest="n_lagging", + type=check_positive, + default=52, + help="lagging span period", + ) + parser.add_argument( + "-f", + "--forward", + action="store", + dest="n_forward", + type=check_positive, + default=26, + help="forward span period", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-c") + + ns_parser = self.parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) + + if ns_parser: + if not self.ticker: + no_ticker_message() + return + + momentum_view.display_ichimoku( + data=self.stock, + symbol=self.ticker, + conversion_period=ns_parser.n_conversion, + base_period=ns_parser.n_base, + lagging_line_period=ns_parser.n_lagging, + displacement=ns_parser.n_forward, + export=ns_parser.export, + sheet_name=" ".join(ns_parser.sheet_name) + if ns_parser.sheet_name + else None, + ) diff --git a/openbb_terminal/terminal_helper.py b/openbb_terminal/terminal_helper.py index ff6c7960192a..ef92aaa2fbbf 100644 --- a/openbb_terminal/terminal_helper.py +++ b/openbb_terminal/terminal_helper.py @@ -366,7 +366,7 @@ def reset(queue: Optional[List[str]] = None): console.print("resetting...") logger.info("resetting") plt.close("all") - plots_backend().close(reset=True) + plots_backend().close() debug = get_current_system().DEBUG_MODE load_env_files() diff --git a/poetry.lock b/poetry.lock index 9d917f94b3f0..7595f7e2c12e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "absl-py" @@ -2160,13 +2160,13 @@ requests = ">=2.22.0" [[package]] name = "finviz" -version = "1.4.4" +version = "1.4.6" description = "Unofficial API for FinViz.com" category = "main" optional = false python-versions = "*" files = [ - {file = "finviz-1.4.4.tar.gz", hash = "sha256:9772060a070d59e8d1045ffbe826553d15f189fab43074b50bf7a510b5360172"}, + {file = "finviz-1.4.6.tar.gz", hash = "sha256:2ce364e6fa8b5f7cb588207a5409cda6c3555b1904de9fa650e2241a65bd490b"}, ] [package.dependencies] @@ -5032,17 +5032,18 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytes [[package]] name = "plotly" -version = "5.13.1" +version = "5.14.1" description = "An open-source, interactive data visualization library for Python" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "plotly-5.13.1-py2.py3-none-any.whl", hash = "sha256:f776a5c664908450c6c1727f61e8e2e22798d9c6c69d37a9057735365084a2fa"}, - {file = "plotly-5.13.1.tar.gz", hash = "sha256:90ee9a1fee0dda30e2830e129855081ea17bd1b06a553a62b62de15caff1a219"}, + {file = "plotly-5.14.1-py2.py3-none-any.whl", hash = "sha256:a63f3ad9e4cc2e02902a738e5e3e7f3d1307f2732ac71a6c28f1238ed3052826"}, + {file = "plotly-5.14.1.tar.gz", hash = "sha256:bcac86d7fcba3eff7260c1eddc36ca34dae2aded10a0709808446565e0e53b93"}, ] [package.dependencies] +packaging = "*" tenacity = ">=6.2.0" [[package]] @@ -6497,31 +6498,29 @@ files = [ [[package]] name = "pywry" -version = "0.5.0" +version = "0.5.5" description = "" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pywry-0.5.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:bba57144a054027084c9b8829fc92a98742b6eeaef895670d0301be103292a18"}, - {file = "pywry-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:dd5b1806075682dd6a7b9715dad044bf625ac09ea04447a95c2c3af356b68d05"}, - {file = "pywry-0.5.0-cp310-none-win_amd64.whl", hash = "sha256:7dba52d39c156214a04b9f4003b02805c9c3c5ae63cf121dd2174e0f35c4f5a2"}, - {file = "pywry-0.5.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:169c3732f1fa7066d250b9603d3d6dc4aa67d0b62433f254b596a0fe97afe52f"}, - {file = "pywry-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f04cd9d0cebadbaf8fbbec851f24c3d8b0468408514069b8421e4db497fbaffa"}, - {file = "pywry-0.5.0-cp311-none-win_amd64.whl", hash = "sha256:9920a1a4acc8058655075fb52c31f53b1f8438462c8b9947c4f7cd302ced1ae9"}, - {file = "pywry-0.5.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:dd40af058a2731037fb53f81d3fa12b014eb5b6110bbc2ab1792a005c5f9bd8c"}, - {file = "pywry-0.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4f39c990feb98be4e4f1d30d4fd750fe7c74f288698ebfff484d3ae0451ffe74"}, - {file = "pywry-0.5.0-cp38-none-win_amd64.whl", hash = "sha256:2959b2ff68b1548958ed4eec6fe0f2ffe4d20120385c8300a5da5e48aef71022"}, - {file = "pywry-0.5.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:93a375cb67e7c954460a5025de17bab0a22f3e396e87532ab68dec7a36a2200d"}, - {file = "pywry-0.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:0f89efec669a0445b758894bb6b26fdbad82140b0912da45b64d8e7aab0d4d68"}, - {file = "pywry-0.5.0-cp39-none-win_amd64.whl", hash = "sha256:0a54b8435f754c7f2e03e2a04c67bfc2c4da2931488fdd22cf5ae7b78c6f2c2b"}, - {file = "pywry-0.5.0.tar.gz", hash = "sha256:29b594ace5dde2047f0cb167df2cfa7ae76b8adc8c27947f03300cb64517c11e"}, + {file = "pywry-0.5.5-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f04d1d4aa997603f274682468b36c45684adb15a15d55acba2fcd257ab4c1099"}, + {file = "pywry-0.5.5-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:132f13717ee07be3e46dfa555771483f0b4680ae0e9223df65211edae67de98e"}, + {file = "pywry-0.5.5-cp310-none-win_amd64.whl", hash = "sha256:f616848417602ff7efe4195ee5f5a90e7a8815a318187c104f4e79b00a5554a5"}, + {file = "pywry-0.5.5-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:64bfc85c926a27cb694b5638b974d4ac3d9315ceb81ba48c90f4252a22c21869"}, + {file = "pywry-0.5.5-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cacf22c675a0c7e701a18c4f7d8323cc563696bbcb0dcc8154e80ba19541abbb"}, + {file = "pywry-0.5.5-cp311-none-win_amd64.whl", hash = "sha256:448472a0f2549c6c1a56862ff69c552d71e82af51d056dec58ab635da65f1140"}, + {file = "pywry-0.5.5-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:83da0b5c0c3f6af10ed3b21e5dc469ceae5844f61d40fb9ae8b32db5e8cb7a22"}, + {file = "pywry-0.5.5-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4c04d137dde93c58998d6ca0b9343be68fa4f89fb12ec89e0f090b9de8b11072"}, + {file = "pywry-0.5.5-cp38-none-win_amd64.whl", hash = "sha256:423d4d1e0d62e6d7019d5be517c2ea846b2d3f3ed47970436d8b7ea1c9fcec5d"}, + {file = "pywry-0.5.5-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:93ddd0a79a1988c588c2fa1bfd7926cdedd5b2d57f6e4ea89d0edb708dacd63c"}, + {file = "pywry-0.5.5-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:87d9e2f44d6e56d958e458234e41a4eeec496f8f98b3cc1d1c36535ceb71cf27"}, + {file = "pywry-0.5.5-cp39-none-win_amd64.whl", hash = "sha256:4513b5b9880932fabbf0a4d853d6d030948df3867b944892ebd55c6bb5537153"}, + {file = "pywry-0.5.5.tar.gz", hash = "sha256:d2ba7d2ca6587917a61b4fc4adb5b707e07e02cc240082e0d4a199e3282400d2"}, ] [package.dependencies] -psutil = ">=5.8.0,<5.9.4" setproctitle = "*" -websockets = "*" [package.extras] dev = ["auditwheel", "wheel"] @@ -7990,14 +7989,14 @@ requests = "*" [[package]] name = "streamlit" -version = "1.21.0" -description = "The fastest way to build data apps in Python" +version = "1.22.0" +description = "A faster way to build and share data apps" category = "main" optional = false python-versions = ">=3.7, !=3.9.7" files = [ - {file = "streamlit-1.21.0-py2.py3-none-any.whl", hash = "sha256:05862598952a9126e16652caa5bc88eeeea7b2773af252e2daccf1c84ceaaef4"}, - {file = "streamlit-1.21.0.tar.gz", hash = "sha256:c72d9639508679c5e411d1f886d213777759501d01975285c049dc30db463c1a"}, + {file = "streamlit-1.22.0-py2.py3-none-any.whl", hash = "sha256:520dd9b9e6efb559b5a9a22feadb48b1e6f0340ec83da3514810059fdecd4167"}, + {file = "streamlit-1.22.0.tar.gz", hash = "sha256:5bef9bf8deef32814d9565c9df48331e6357eb0b90dabc3ec4f53c44fb34fc73"}, ] [package.dependencies] @@ -8009,7 +8008,7 @@ gitpython = "!=3.1.19" importlib-metadata = ">=1.4" numpy = "*" packaging = ">=14.1" -pandas = ">=0.25,<2" +pandas = ">=0.25,<3" pillow = ">=6.2.0" protobuf = ">=3.12,<4" pyarrow = ">=4.0" @@ -8018,6 +8017,7 @@ pympler = ">=0.9" python-dateutil = "*" requests = ">=2.4" rich = ">=10.11.0" +tenacity = ">=8.0.0,<9" toml = "*" tornado = ">=6.0.3" typing-extensions = ">=3.10.0.0" @@ -8083,19 +8083,16 @@ dev = ["pip-tools", "pytest", "rpy2"] [[package]] name = "tenacity" -version = "7.0.0" +version = "8.2.2" description = "Retry code until it succeeds" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "tenacity-7.0.0-py2.py3-none-any.whl", hash = "sha256:a0ce48587271515db7d3a5e700df9ae69cce98c4b57c23a4886da15243603dd8"}, - {file = "tenacity-7.0.0.tar.gz", hash = "sha256:5bd16ef5d3b985647fe28dfa6f695d343aa26479a04e8792b9d3c8f49e361ae1"}, + {file = "tenacity-8.2.2-py3-none-any.whl", hash = "sha256:2f277afb21b851637e8f52e6a613ff08734c347dc19ade928e519d7d2d8569b0"}, + {file = "tenacity-8.2.2.tar.gz", hash = "sha256:43af037822bd0029025877f3b2d97cc4d7bb0c2991000a3d59d71517c5c969e0"}, ] -[package.dependencies] -six = ">=1.9.0" - [package.extras] doc = ["reno", "sphinx", "tornado (>=4.5)"] @@ -9692,4 +9689,4 @@ optimization = ["Riskfolio-Lib"] [metadata] lock-version = "2.0" python-versions = "^3.8,<3.11, !=3.9.7" -content-hash = "ac38f4768093fffb5de6132acb0137b32303ec6157f0de07eb00039e4adf3cb6" +content-hash = "841e7a9ecf473175234c5f05db6f7e7d61d3e3b7982a37e7c90158fa26dd8861" diff --git a/pyproject.toml b/pyproject.toml index ad7def0e97ef..790567b3720d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ iso8601 = "^0.1.14" FundamentalAnalysis = "^0.2.6" requests = "^2.25.1" alpha-vantage = "^2.3.1" -finviz = "^1.3.4, !=1.4.5" +finviz = "^1.4.6" bs4 = "^0.0.1" yfinance = "^0.2.12" pmaw = "^3.0.0" @@ -31,7 +31,7 @@ praw = "^7.1.4" Quandl = "^3.6.0" pytrends = "4.9.2" matplotlib = "^3.3.3" -plotly = "^5.0.0" +plotly = "^5.14.1" prompt-toolkit = "^3.0.16" jupyterlab = "^3.2.4" mplfinance = "^0.12.7-alpha.7" @@ -100,13 +100,12 @@ grpcio = "^1.51.1" jupyterlab-widgets = "^3.0.3" mstarpy = "^0.0.4" packaging = ">=22.0" -streamlit = "^1.21.0" -pywry = "^0.5.0" +streamlit = "^1.22.0" +pywry = "^0.5.5" svglib = "^1.5.0" sparqlwrapper = "^2.0.0" y-py = "!=0.5.5" # Untraceable third level dependency that requires cargo to be built psutil = "!=5.9.4" # Forecasting menu and IPyKernel dependency broken on MacOs -tenacity = "<8.0.0" # Finviz, papermill and plotly dep. Pinned to avoid pip resolution conflict due to finviz 1.4.5 release bug intrinio-sdk = "^6.22.2" yahooquery = "^2.3.0" openai-whisper = {version = "^20230124", optional = true} diff --git a/requirements-full.txt b/requirements-full.txt index 10da158b7a55..bb251fcd2e91 100644 --- a/requirements-full.txt +++ b/requirements-full.txt @@ -84,7 +84,7 @@ ffn==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and pyth filelock==3.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" financedatabase==2.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" finnhub-python==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -finviz==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +finviz==1.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" finvizfinance==0.14.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" flake8==5.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" fonttools==4.39.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -200,7 +200,7 @@ pickleshare==0.7.5 ; python_version >= "3.8" and python_full_version != "3.9.7" pillow==9.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" platformdirs==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +plotly==5.14.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pluggy==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pmaw==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pmdarima==2.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -267,7 +267,7 @@ pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and pywin32-ctypes==0.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32" pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt" -pywry==0.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +pywry==0.5.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyzmq==25.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" qdldl==0.1.5.post3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -319,11 +319,11 @@ statsforecast==1.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7 statsmodels==0.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" stevedore==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" stocksera==0.1.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -streamlit==1.21.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +streamlit==1.22.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" svglib==1.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" tabulate==0.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" tbats==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -tenacity==7.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +tenacity==8.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" tensorboard-data-server==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" tensorboard-plugin-wit==1.8.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" tensorboard==2.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/requirements.txt b/requirements.txt index ead630034e4e..1d7249928736 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,6 @@ altair==4.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and p ansiwrap==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" anyio==3.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" appdirs==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -arch==5.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" appnope==0.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin" argon2-cffi-bindings==21.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" argon2-cffi==21.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -58,7 +57,7 @@ feedparser==6.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" ffn==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" financedatabase==2.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" finnhub-python==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -finviz==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +finviz==1.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" finvizfinance==0.14.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" flake8==5.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" fonttools==4.39.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -142,7 +141,7 @@ pickleshare==0.7.5 ; python_version >= "3.8" and python_full_version != "3.9.7" pillow==9.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" platformdirs==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +plotly==5.14.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pmaw==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" posthog==3.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" @@ -185,7 +184,7 @@ pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_full_ver pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt" -pywry==0.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +pywry==0.5.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" pyzmq==25.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" quandl==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" @@ -217,10 +216,10 @@ squarify==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and stack-data==0.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" statsmodels==0.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" stocksera==0.1.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -streamlit==1.21.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +streamlit==1.22.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" svglib==1.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" tabulate==0.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" -tenacity==7.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" +tenacity==8.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" terminado==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" textwrap3==0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" thepassiveinvestor==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/terminal.py b/terminal.py index 590da6d806ab..e8cf7d63c09a 100644 --- a/terminal.py +++ b/terminal.py @@ -17,10 +17,10 @@ def main(): cfg.setup_config_terminal() if "--streamlit" in sent_args: - from openbb_terminal.dashboards import streamlit + from openbb_terminal.dashboards import streamlit_run hide_splashscreen() - sys.exit(streamlit.main()) + sys.exit(streamlit_run.main()) if "-t" in sent_args or "--test" in sent_args: from openbb_terminal.core.integration_tests import integration_controller diff --git a/tests/conftest.py b/tests/conftest.py index 8fce3662f059..55910c87e51a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -39,6 +39,7 @@ } set_system_variable("TEST_MODE", True) +set_system_variable("LOG_COLLECT", False) class Record: @@ -58,12 +59,16 @@ def extract_string(data: Any, **kwargs) -> str: else: raise AttributeError(f"Unsupported type : {type(data)}") - return string_value + return string_value.replace("\r\n", "\n") @staticmethod def load_string(path: str) -> Optional[str]: if os.path.exists(path): - with open(file=path, encoding="utf-8") as f: + with open( + file=path, + encoding="utf-8", + newline="\n", # Windows: newline="\r\n" Which is BAD + ) as f: return f.read() else: return None @@ -124,7 +129,12 @@ def persist(self): pathlib.Path(record_dir_name).mkdir(parents=True, exist_ok=True) # SAVE FILE - with open(file=record_path, mode="w", encoding="utf-8") as f: + with open( + file=record_path, + mode="w", + encoding="utf-8", + newline="\n", # Windows: newline="\r\n" Which is BAD + ) as f: f.write(captured) # RELOAD RECORDED CONTENT diff --git a/tests/helpers/tools.py b/tests/helpers/tools.py index 33304fddb801..60e26d972665 100644 --- a/tests/helpers/tools.py +++ b/tests/helpers/tools.py @@ -28,7 +28,7 @@ def wrapper(function): test_file_base_path = pathlib.Path(__file__).parent.absolute() data_file_full_path = pathlib.Path(test_file_base_path, parameter_file) - with open(data_file_full_path, encoding="utf-8") as file: + with open(data_file_full_path, encoding="utf-8", newline="\n") as file: parameter_data = yaml.full_load(file) idlist = [] diff --git a/tests/openbb_terminal/core/log/collection/test_s3_sender.py b/tests/openbb_terminal/core/log/collection/test_s3_sender.py index 368fe4a79b5b..e9a8cc00cf2e 100644 --- a/tests/openbb_terminal/core/log/collection/test_s3_sender.py +++ b/tests/openbb_terminal/core/log/collection/test_s3_sender.py @@ -80,7 +80,7 @@ def test_send_to_s3_using_presigned_url(mocker, tmp_path): file = tmp_path.joinpath("mock_log_file") object_key = "MOCK_S3/OBJECT_KEY" - with open(file, "w") as f: + with open(file, "w", encoding="utf-8", newline="\n") as f: f.write("Mocking a log file to send to s3.") s3_sender.send_to_s3_using_presigned_url( @@ -121,7 +121,7 @@ def test_send_to_s3(aws_settings, mocker, last, tmp_path): file = tmp_path.joinpath("mock_log_file") object_key = "MOCK_S3/OBJECT_KEY" - with open(file, "w") as f: + with open(file, "w", encoding="utf-8", newline="\n") as f: f.write("Mocking a log file to send to s3.") assert file.exists() diff --git a/tests/openbb_terminal/cryptocurrency/cassettes/test_cryptocurrency_helpers/test_load_none[btc-usd].yaml b/tests/openbb_terminal/cryptocurrency/cassettes/test_cryptocurrency_helpers/test_load_none[btc-usd].yaml index 379e54276ec9..295e653250d1 100644 --- a/tests/openbb_terminal/cryptocurrency/cassettes/test_cryptocurrency_helpers/test_load_none[btc-usd].yaml +++ b/tests/openbb_terminal/cryptocurrency/cassettes/test_cryptocurrency_helpers/test_load_none[btc-usd].yaml @@ -5744,4 +5744,276 @@ interactions: status: code: 200 message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/39.0.2171.95 Safari/537.36 + method: GET + uri: https://query2.finance.yahoo.com/v8/finance/chart/BTC-USD?period1=1652140800&period2=1683676800&interval=1d&includePrePost=False&events=div%2Csplits%2CcapitalGains + response: + body: + string: !!binary | + H4sIAAAAAAAAAO2dS9Mlx3Ge/8usP3fU/cKlIIe9scygoYWCgcWYGFGwAQw9GMiiGfzvfp/qzqo8 + o7DC2o9CAfaZc7q7KivzzUu9Wd9f3v3hn95/+vzuN3959+nDL7/+qKvf/+XdTx8+v+ef/vDrp08f + fv7Dn9/95t3f/7e/fff27pc///TfP/6oj3/z7Tf/4f6nD/+iJ/z8xw9/9/6nD/rim2++0T/+8PMv + nz/9+tOHnz9/++c/rX/+3T/89tv/+s3f/+53//HvvvkH/eIff/j0y+dvP73//sPfvv+sX8QSw4wp + hPCmkfzx1x/ff/ov7z/9zw+fv/2B58Y2cm+xDn39x58+f/zHf/zlg8aqT5/1/f/5+DMv+ftvv3ED + +vb54hnY/eXLo3/76Yc/6KukB8+rhfp2C+O3nz788w8ff/3lmx8//qKvcwwpXTO0t3d/4ob//MPP + enN6e6SzJvHDz3/87YdPP3z8Hqn96dMH/udfD+zn7++JtN4G8/zl8xK9/yc/t7/u4f7bj+stx/L/ + 9bg/ffzl87/7WfZPL8/Sw75///n9f/r0/mcG+MNndCR+j4SRvT7o8p/f//jD97/j8y9Sq/vryn/i + Tx/137z+29Z/45/1n8R/Kv+Jgf/++TM//un9v7z77q/3QmtYP/1Jz4qtJg2KOXKZUk/PZY65PZcl + 8H/35Wjluaw92W2tTrutl2q3jZzsthnHc1sOoQy7XHq6LmPvz2058Yb7Mtdgt5Xc7DaNzW5rYdpt + jav7so9kt4027LZZ63NbCSU+t5XIJO5LCeK5rWiUwy6HiaSUbiJZk3wuWzGR6HsTSRnRRFJmMJGU + OU0kNXQTSY3NRCKpmkg0exOJhmYi0Y9NJLVOE0ltw0RSezOR1FFNJHUWE0kLyUTSYjSRtBRMJG19 + f1/mbiLRLE0kTNRua9lE0vi353IEE0kb00TSZjeR9NBMJH0N4b5M2UQiQZpIeokmkl6miaTXYSLp + rZtIeq8mEknXRKLXmkjGmuV9KTQqdjlMJCN1E4mM30QySjGRDKmi3Sah2W09mEhGnyaS9dTncjYT + idTBRDJjNpHMlEwkM0cTyczTRDLLMJFMSc1uY/7P5Vqr+3JkE8mc8REJE39EosvxiKSF2B+RSDPa + I5IWchl2W8nVbhNY2G1LHZ7LWey2PoLdNlq322Z9RNKW9j6XMT0iaTHFRyS6nI9IWsyj2m1L4+7L + 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 + Bh7U8FWPAAA= + headers: + Age: + - '3' + Connection: + - keep-alive + Content-Length: + - '11978' + Expect-CT: + - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" + Referrer-Policy: + - no-referrer-when-downgrade + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-XSS-Protection: + - 1; mode=block + cache-control: + - public, max-age=10, stale-while-revalidate=20 + content-encoding: + - gzip + content-type: + - application/json;charset=utf-8 + date: + - Wed, 10 May 2023 23:34:39 GMT + server: + - ATS + vary: + - Origin,Accept-Encoding + x-envoy-decorator-operation: + - finance-chart-api--mtls-baseline-production-gq1.finance-k8s.svc.yahoo.local:4080/* + x-envoy-upstream-service-time: + - '7' + x-request-id: + - fd92b9ee-0004-43fc-8406-06315112eb8c + x-yahoo-request-id: + - ahnbsm1i5oagf + y-rid: + - ahnbsm1i5oagf + status: + code: 200 + message: OK version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/test_cryptocurrency_helpers.py b/tests/openbb_terminal/cryptocurrency/test_cryptocurrency_helpers.py index 989216a052ca..0f7d3c70ed55 100644 --- a/tests/openbb_terminal/cryptocurrency/test_cryptocurrency_helpers.py +++ b/tests/openbb_terminal/cryptocurrency/test_cryptocurrency_helpers.py @@ -74,6 +74,7 @@ def fixture_get_bitcoin(mocker): with open( "tests/openbb_terminal/cryptocurrency/json/test_cryptocurrency_helpers/btc_usd_test_data.json", encoding="utf8", + newline="\n", ) as f: sample_return = json.load(f) mock_load.return_value = sample_return diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_balance.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_balance.csv index af9e169334ca..4246776e5257 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_balance.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_balance.csv @@ -1,3 +1,3 @@ TIME,united_states,canada -2020,-14.8599779853008,-10.9103983787705 -2021,-12.0643385283542,-4.38138393970716 +2020-01-01,-14.8599779853008,-10.9103983787705 +2021-01-01,-12.0643385283542,-4.38138393970716 diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_cpi.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_cpi.csv index c0b6cdca7388..63e7b8c6ec58 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_cpi.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_cpi.csv @@ -1,9 +1,9 @@ TIME,united_states,canada -2020-01,2.118652,1.80917 -2020-04,0.3642956,0.02445586 -2020-07,1.222386,0.2682927 -2020-10,1.239488,0.7816316 -2021-01,1.898514,1.436222 -2021-04,4.848945,3.349633 -2021-07,5.335693,4.062272 -2021-10,6.689106,4.726127 +2020-01-01,2.118652,1.80917 +2020-04-01,0.3642956,0.02445586 +2020-07-01,1.222386,0.2682927 +2020-10-01,1.239488,0.7816316 +2021-01-01,1.898514,1.436222 +2021-04-01,4.848945,3.349633 +2021-07-01,5.335693,4.062272 +2021-10-01,6.689106,4.726127 diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_debt.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_debt.csv index d532693a9f6d..bc94b4965655 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_debt.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_debt.csv @@ -1,3 +1,3 @@ TIME,united_states,canada -2020,160.3383,146.0698 -2021,148.0194,134.0756 +2020-01-01,160.3383,146.0698 +2021-01-01,148.0194,134.0756 diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_fgdp.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_fgdp.csv index bad30730c630..b5a46bed2c93 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_fgdp.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_fgdp.csv @@ -1,9 +1,9 @@ TIME,united_states,canada -2020-01,-4.61840480160517,-8.35396749824822 -2020-04,-29.8574197741433,-37.3776227888085 -2020-07,35.3171391372906,41.0750818731529 -2020-10,3.90887822555523,9.06232614203013 -2021-01,6.31545495620863,4.44400949928597 -2021-04,7.00489594009191,-3.13075289989114 -2021-07,2.652766290028,5.33479715083745 -2021-10,6.95725734423304,6.56605086723929 +2020-01-01,-4.61840480160517,-8.35396749824822 +2020-04-01,-29.8574197741433,-37.3776227888085 +2020-07-01,35.3171391372906,41.0750818731529 +2020-10-01,3.90887822555523,9.06232614203013 +2021-01-01,6.31545495620863,4.44400949928597 +2021-04-01,7.00489594009191,-3.13075289989114 +2021-07-01,2.652766290028,5.33479715083745 +2021-10-01,6.95725734423304,6.56605086723929 diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_gdp.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_gdp.csv index c8de225e87d9..1cc65f4b2af1 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_gdp.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_gdp.csv @@ -1,3 +1,3 @@ TIME,united_states,canada -2020,63480.861222,47265.698235 -2021,70181.12175,53101.315002 +2020-01-01,63480.861222,47265.698235 +2021-01-01,70181.12175,53101.315002 diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_revenue.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_revenue.csv index c30642331981..8127e7db9e11 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_revenue.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_revenue.csv @@ -1,3 +1,3 @@ TIME,united_states,canada -2020,32.4460527336659,42.7124548747082 -2021,32.8732947571574,42.2933689509718 +2020-01-01,32.4460527336659,42.7124548747082 +2021-01-01,32.8732947571574,42.2933689509718 diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_spending.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_spending.csv index 6b270a9261cc..98cbe24823fd 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_spending.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_spending.csv @@ -1,3 +1,3 @@ TIME,united_states,canada -2020,47.3115551435357, -2021,44.9326415378956, +2020-01-01,47.3115551435357, +2021-01-01,44.9326415378956, diff --git a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_trust.csv b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_trust.csv index 3464cefa6fd0..960c39435b34 100644 --- a/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_trust.csv +++ b/tests/openbb_terminal/economy/csv/test_oecd_model/test_get_trust.csv @@ -1,3 +1,3 @@ TIME,united_states,canada -2020,46.4917090465757,60.0424110070179 -2021,40.4625220436663,61.0411167292314 +2020-01-01,46.4917090465757,60.0424110070179 +2021-01-01,40.4625220436663,61.0411167292314 diff --git a/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[ES].yaml b/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[ES].yaml index e9bb6b55ed8f..1e74fcb804ab 100644 --- a/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[ES].yaml +++ b/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[ES].yaml @@ -292,8 +292,6 @@ interactions: - no-referrer-when-downgrade Strict-Transport-Security: - max-age=31536000 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -602,8 +600,6 @@ interactions: - no-referrer-when-downgrade Strict-Transport-Security: - max-age=31536000 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -909,8 +905,6 @@ interactions: - no-referrer-when-downgrade Strict-Transport-Security: - max-age=31536000 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1193,8 +1187,6 @@ interactions: - no-referrer-when-downgrade Strict-Transport-Security: - max-age=31536000 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -1467,8 +1459,6 @@ interactions: - no-referrer-when-downgrade Strict-Transport-Security: - max-age=31536000 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2739,4 +2729,63 @@ interactions: status: code: 404 message: Not Found +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://query2.finance.yahoo.com/v8/finance/chart/ESJ26.CME?interval=1d&range=1d + response: + body: + string: '{"chart":{"result":null,"error":{"code":"Not Found","description":"No + data found, symbol may be delisted"}}}' + headers: + Age: + - '0' + Cache-Control: + - max-age=0, private + Connection: + - keep-alive + Expect-CT: + - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" + Expires: + - '-1' + Referrer-Policy: + - no-referrer-when-downgrade + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-XSS-Protection: + - 1; mode=block + content-length: + - '108' + content-type: + - application/json;charset=utf-8 + date: + - Wed, 10 May 2023 18:17:13 GMT + server: + - ATS + vary: + - Origin + x-envoy-decorator-operation: + - finance-chart-api--mtls-baseline-production-gq1.finance-k8s.svc.yahoo.local:4080/* + x-envoy-upstream-service-time: + - '2' + x-request-id: + - 5a6deee4-0fd0-4e04-b471-a87bf3270e24 + x-yahoo-request-id: + - 420fq8di5nnt9 + y-rid: + - 420fq8di5nnt9 + status: + code: 404 + message: Not Found version: 1 diff --git a/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[YI].yaml b/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[YI].yaml index ab6ad295f579..42c6a2f8ebe9 100644 --- a/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[YI].yaml +++ b/tests/openbb_terminal/futures/cassettes/test_yfinance_view/test_display_curve[YI].yaml @@ -432,8 +432,6 @@ interactions: - no-referrer-when-downgrade Strict-Transport-Security: - max-age=31536000 - Transfer-Encoding: - - chunked X-Content-Type-Options: - nosniff X-Frame-Options: @@ -2353,4 +2351,63 @@ interactions: status: code: 404 message: Not Found +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://query2.finance.yahoo.com/v8/finance/chart/YIJ26.NYB?interval=1d&range=1d + response: + body: + string: '{"chart":{"result":null,"error":{"code":"Not Found","description":"No + data found, symbol may be delisted"}}}' + headers: + Age: + - '1' + Cache-Control: + - max-age=0, private + Connection: + - keep-alive + Expect-CT: + - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" + Expires: + - '-1' + Referrer-Policy: + - no-referrer-when-downgrade + Strict-Transport-Security: + - max-age=31536000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-XSS-Protection: + - 1; mode=block + content-length: + - '108' + content-type: + - application/json;charset=utf-8 + date: + - Wed, 10 May 2023 18:17:17 GMT + server: + - ATS + vary: + - Origin + x-envoy-decorator-operation: + - finance-chart-api--mtls-production-gq1.finance-k8s.svc.yahoo.local:4080/* + x-envoy-upstream-service-time: + - '3' + x-request-id: + - 30de7648-36da-4c6b-aa04-e7023c1dd989 + x-yahoo-request-id: + - 23j2cl1i5nnte + y-rid: + - 23j2cl1i5nnte + status: + code: 404 + message: Not Found version: 1 diff --git a/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_balance_comparison.txt b/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_balance_comparison.txt index 67492a9a3a1b..b4374271c0ea 100644 --- a/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_balance_comparison.txt +++ b/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_balance_comparison.txt @@ -1,41 +1,41 @@ -Other available quarterly timeframes are: 30-Sep-2021, 31-Dec-2021, 31-Mar-2022, 30-Jun-2022, 30-Sep-2022 - - 31-Dec-2021 - TSLA GM -Item -Cash & Short Term Investments 18.05B 31.61B -Cash & Short Term Investments Growth 9.93% 18.03% -Cash Only 17.92B 23B -Short-Term Investments - - -Cash & ST Investments / Total Assets 29.05% 12.92% -Total Accounts Receivable 1.91B 34.04B -Total Accounts Receivable Growth -2.50% 2.59% -Accounts Receivables, Net 1.91B 34.04B -Accounts Receivables, Gross 1.91B 34.94B -Bad Debt/Doubtful Accounts - (895M) -Other Receivable - - -Accounts Receivable Turnover 9.26 0.99 -Inventories 5.76B 12.99B -Finished Goods 1.28B 4.75B -Work in Progress 1.09B - -Raw Materials 3.39B 8.24B -Progress Payments & Other - - -Other Current Assets 1.38B 3.46B -Miscellaneous Current Assets 1.38B 3.46B -Total Current Assets 27.1B 82.1B -Net Property, Plant & Equipment 31.18B 80.14B -Property, Plant & Equipment - Gross 39.87B 111.43B -Buildings - - -Land & Improvements - - -Computer Software and Equipment 1.41B - -Other Property, Plant & Equipment - - -Accumulated Depreciation 8.69B 31.29B -Total Investments and Advances 223M 10.22B -Other Long-Term Investments 223M 540M -Long-Term Note Receivables 299M 36.17B -Intangible Assets 1.72B 5.09B -Net Goodwill 200M 1.91B -Net Other Intangibles - - -Other Assets 1.62B 9.85B -Total Assets 62.13B 244.72B -Total Assets Growth 7.43% 2.58% +Other available quarterly timeframes are: 30-Sep-2021, 31-Dec-2021, 31-Mar-2022, 30-Jun-2022, 30-Sep-2022 + + 31-Dec-2021 + TSLA GM +Item +Cash & Short Term Investments 18.05B 31.61B +Cash & Short Term Investments Growth 9.93% 18.03% +Cash Only 17.92B 23B +Short-Term Investments - - +Cash & ST Investments / Total Assets 29.05% 12.92% +Total Accounts Receivable 1.91B 34.04B +Total Accounts Receivable Growth -2.50% 2.59% +Accounts Receivables, Net 1.91B 34.04B +Accounts Receivables, Gross 1.91B 34.94B +Bad Debt/Doubtful Accounts - (895M) +Other Receivable - - +Accounts Receivable Turnover 9.26 0.99 +Inventories 5.76B 12.99B +Finished Goods 1.28B 4.75B +Work in Progress 1.09B - +Raw Materials 3.39B 8.24B +Progress Payments & Other - - +Other Current Assets 1.38B 3.46B +Miscellaneous Current Assets 1.38B 3.46B +Total Current Assets 27.1B 82.1B +Net Property, Plant & Equipment 31.18B 80.14B +Property, Plant & Equipment - Gross 39.87B 111.43B +Buildings - - +Land & Improvements - - +Computer Software and Equipment 1.41B - +Other Property, Plant & Equipment - - +Accumulated Depreciation 8.69B 31.29B +Total Investments and Advances 223M 10.22B +Other Long-Term Investments 223M 540M +Long-Term Note Receivables 299M 36.17B +Intangible Assets 1.72B 5.09B +Net Goodwill 200M 1.91B +Net Other Intangibles - - +Other Assets 1.62B 9.85B +Total Assets 62.13B 244.72B +Total Assets Growth 7.43% 2.58% diff --git a/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_income_comparison.txt b/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_income_comparison.txt index 70c536e18e9b..9fbfe1a1c5a7 100644 --- a/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_income_comparison.txt +++ b/tests/openbb_terminal/stocks/comparison_analysis/txt/test_marketwatch_view/test_display_income_comparison.txt @@ -1,62 +1,62 @@ -Other available quarterly timeframes are: 30-Sep-2021, 31-Dec-2021, 31-Mar-2022, 30-Jun-2022, 30-Sep-2022 - - 31-Dec-2021 - TSLA GM -Item -Sales/Revenue 17.72B 33.58B -Sales Growth 28.80% 25.41% -Cost of Goods Sold (COGS) incl. D&A 12.87B 29.59B -COGS Growth 27.48% 28.71% -COGS excluding D&A 12.02B 26.65B -Depreciation & Amortization Expense 848M 2.94B -Depreciation 530M - -Amortization of Intangibles 318M - -Gross Income 4.85B 4B -Gross Income Growth 32.43% 5.40% -Gross Profit Margin - - -SG&A Expense 2.23B 2.48B -SGA Growth 39.19% 15.36% -Research & Development 740M - -Other SG&A - - -Other Operating Expense - - -Unusual Expense (1M) 17M -EBIT after Unusual Expense 1M (17M) -Non Operating Income/Expense 67M 631M -Non-Operating Interest Income 25M 44M -Equity in Affiliates (Pretax) - 286M -Interest Expense 71M 227M -Interest Expense Growth -43.65% -1.30% -Gross Interest Expense 72M 227M -Interest Capitalized 1M - -Pretax Income 2.64B 2.24B -Pretax Income Growth 40.01% -11.86% -Pretax Margin - - -Income Tax 292M 471M -Income Tax - Current Domestic - - -Income Tax - Current Foreign - - -Income Tax - Deferred Domestic - - -Income Tax - Deferred Foreign - - -Income Tax Credits - - -Equity in Affiliates - - -Other After Tax Income (Expense) - - -Consolidated Net Income 2.34B 1.77B -Minority Interest Expense 22M 25M -Net Income 2.32B 1.74B -Net Income Growth 43.45% -28.06% -Net Margin Growth - - -Extraordinaries & Discontinued Operations - - -Extra Items & Gain/Loss Sale Of Assets - - -Cumulative Effect - Accounting Chg - - -Discontinued Operations - - -Net Income After Extraordinaries 2.32B 1.74B -Preferred Dividends - 45M -Net Income Available to Common 2.32B 1.7B -EPS (Basic) 0.76 1.17 -EPS (Basic) Growth 41.04% -28.64% -Basic Shares Outstanding 3.04B 1.45B -EPS (Diluted) 0.68 1.15 -EPS (Diluted) Growth 41.91% -28.83% -Diluted Shares Outstanding 3.4B 1.47B -EBITDA 3.46B 4.46B -EBITDA Growth 22.90% -5.69% -EBITDA Margin - - +Other available quarterly timeframes are: 30-Sep-2021, 31-Dec-2021, 31-Mar-2022, 30-Jun-2022, 30-Sep-2022 + + 31-Dec-2021 + TSLA GM +Item +Sales/Revenue 17.72B 33.58B +Sales Growth 28.80% 25.41% +Cost of Goods Sold (COGS) incl. D&A 12.87B 29.59B +COGS Growth 27.48% 28.71% +COGS excluding D&A 12.02B 26.65B +Depreciation & Amortization Expense 848M 2.94B +Depreciation 530M - +Amortization of Intangibles 318M - +Gross Income 4.85B 4B +Gross Income Growth 32.43% 5.40% +Gross Profit Margin - - +SG&A Expense 2.23B 2.48B +SGA Growth 39.19% 15.36% +Research & Development 740M - +Other SG&A - - +Other Operating Expense - - +Unusual Expense (1M) 17M +EBIT after Unusual Expense 1M (17M) +Non Operating Income/Expense 67M 631M +Non-Operating Interest Income 25M 44M +Equity in Affiliates (Pretax) - 286M +Interest Expense 71M 227M +Interest Expense Growth -43.65% -1.30% +Gross Interest Expense 72M 227M +Interest Capitalized 1M - +Pretax Income 2.64B 2.24B +Pretax Income Growth 40.01% -11.86% +Pretax Margin - - +Income Tax 292M 471M +Income Tax - Current Domestic - - +Income Tax - Current Foreign - - +Income Tax - Deferred Domestic - - +Income Tax - Deferred Foreign - - +Income Tax Credits - - +Equity in Affiliates - - +Other After Tax Income (Expense) - - +Consolidated Net Income 2.34B 1.77B +Minority Interest Expense 22M 25M +Net Income 2.32B 1.74B +Net Income Growth 43.45% -28.06% +Net Margin Growth - - +Extraordinaries & Discontinued Operations - - +Extra Items & Gain/Loss Sale Of Assets - - +Cumulative Effect - Accounting Chg - - +Discontinued Operations - - +Net Income After Extraordinaries 2.32B 1.74B +Preferred Dividends - 45M +Net Income Available to Common 2.32B 1.7B +EPS (Basic) 0.76 1.17 +EPS (Basic) Growth 41.04% -28.64% +Basic Shares Outstanding 3.04B 1.45B +EPS (Diluted) 0.68 1.15 +EPS (Diluted) Growth 41.91% -28.83% +Diluted Shares Outstanding 3.4B 1.47B +EBITDA 3.46B 4.46B +EBITDA Growth 22.90% -5.69% +EBITDA Margin - - diff --git a/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[False-True].txt b/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[False-True].txt index ee9017288320..ac6aab504297 100644 --- a/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[False-True].txt +++ b/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[False-True].txt @@ -1,4 +1,4 @@ - Short Volume Short Exempt Volume Total Volume % of Volume Shorted -Date -2021-12-16 332.436 K 1.825 K 1.259 M 26.40% -2021-12-15 303.636 K 4.163 K 797.638 K 38.07% + Short Volume Short Exempt Volume Total Volume % of Volume Shorted +Date +2021-12-15 303636.0 4163.0 797638.0 38.07 +2021-12-16 332436.0 1825.0 1259072.0 26.40 diff --git a/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[True-True].txt b/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[True-True].txt index 98f039228bb5..c4716ebbd1a4 100644 --- a/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[True-True].txt +++ b/tests/openbb_terminal/stocks/dark_pool_shorts/txt/test_quandl_view/test_short_interest[True-True].txt @@ -1,4 +1,4 @@ - Short Volume Short Exempt Volume Total Volume % of Volume Shorted -Date -2021-12-16 46.078 K 61 105.595 K 43.64% -2021-12-15 34.365 K 0 69.756 K 49.26% + Short Volume Short Exempt Volume Total Volume % of Volume Shorted +Date +2021-12-15 34365.0 0.0 69756.0 49.26 +2021-12-16 46078.0 61.0 105595.0 43.64 diff --git a/tests/openbb_terminal/stocks/discovery/txt/test_fidelity_view/test_orders_view[True].txt b/tests/openbb_terminal/stocks/discovery/txt/test_fidelity_view/test_orders_view[True].txt index c4759892d9ea..c24c733f1ec5 100644 --- a/tests/openbb_terminal/stocks/discovery/txt/test_fidelity_view/test_orders_view[True].txt +++ b/tests/openbb_terminal/stocks/discovery/txt/test_fidelity_view/test_orders_view[True].txt @@ -1,2 +1,2 @@ - Symbol Buy / Sell Ratio Price Change Company # Buy Orders # Sell Orders -0 LCID 75% Buys, 25% Sells -8.20 (-18.3363%) LUCID GROUP INC 19,081 6,287 + Symbol Buy / Sell Ratio Price Change Company # Buy Orders # Sell Orders +0 LCID 75% Buys, 25% Sells -8.20 (-18.3363%) LUCID GROUP INC 19,081 6,287 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict6].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict6].yaml index 40d1570396d1..f89e6de718b4 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict6].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict6].yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba65f4d52c2c0-VIE + - 7c557dd31b524798-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:56 GMT + - Wed, 10 May 2023 22:06:49 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=9.0000003183377e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict7].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict7].yaml index 57d1a528c9ff..9f7e8ba98bb0 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict7].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_balance_sheet-kwargs_dict7].yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba6609bc99b82-FRA + - 7c557dd87b2baa55-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:56 GMT + - Wed, 10 May 2023 22:06:49 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=6.9999999823267e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict8].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict8].yaml index f9d42ee9f0d1..b01357447327 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict8].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict8].yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba661dbb2bbd9-FRA + - 7c557ddaef8ce756-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:56 GMT + - Wed, 10 May 2023 22:06:50 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=5.9999997574778e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict9].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict9].yaml index 8d7081b00be2..1a87fa77fe1c 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict9].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_cash_flow-kwargs_dict9].yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba66a8a4b2a33-CDG + - 7c557ddc0afc2e4f-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:58 GMT + - Wed, 10 May 2023 22:06:50 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=7.0000000960135e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict2].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict2].yaml index 1ee1c620c453..38fd05a4f26b 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict2].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict2].yaml @@ -13,38 +13,35 @@ interactions: response: body: string: !!binary | - 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 + /wMA5RPPcWY5AAA= headers: Allow: - GET, HEAD, OPTIONS CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba6579f348879-LHR + - 7c557dc84d122cbe-DFW Connection: - keep-alive Content-Encoding: @@ -54,13 +51,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:55 GMT + - Wed, 10 May 2023 22:06:47 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=6.9999998686399e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict3].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict3].yaml index 903978e84a4c..34dc7b72c86e 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict3].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_earnings-kwargs_dict3].yaml @@ -13,38 +13,35 @@ interactions: response: body: string: !!binary | - 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 headers: Allow: - GET, HEAD, OPTIONS CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba65989cb78b2-VIE + - 7c557dcd199c45ff-DFW Connection: - keep-alive Content-Encoding: @@ -54,13 +51,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:55 GMT + - Wed, 10 May 2023 22:06:48 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=6.0000002122251e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict4].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict4].yaml index d1f62d74370a..463159a7c820 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict4].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict4].yaml @@ -13,68 +13,67 @@ interactions: response: body: string: !!binary | - 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 - //8DAAoYlvRzeAAA + H4sIAAAAAAAAA6zazW7bRhAA4HufwvA5BHZm9jc3N06DAEVS1Mmp6EGW1jYBaemStJE06LsXomTZ + sTji7Eo+CcJwvVySn2Zm+eOXs7Ozs/Pu++q6WZ6/PTv/cvX7xfmbzbezlB5myz/jfdP23fnbs7+G + r9d/P3afhsCbupvPlpezPr5PizrdrgdChVgBVgTb4XbR7TBgXLx7aNuY5t/X0V+vLl+H3bZN1/3R + Njd1vxnPG1LD3+vIvunX03yM6SGuQz1oi+Oh86brP9+8iLXKqsDHNjcfmmbRXaTFVWwf63nsrprl + YnOgHj+suY/trK/T7cc0b1bDPwGyxo5Hd3G5rNPth5hiO1tepMXFYlWnuuvXYzwOR1PQzMFt7OKs + nd9dpMVlfIzL5n4V07BapJyZmN77b/cxdXF9Yc8dBDceXqfH2PXrYTen8ylurgYXn2L/MfWxjV3/ + fP4VBOCGfx2rJyK30x6WlRs1NWlkEp6Jbvq72H5q0uf9C1dp5pZbxPs2zutZXzdpWA+9veEORq4v + 76pp+/rf3YE6EHe+60n8Gm+aNn6ZfdveRt4fiv4y+/ZyeYDw8FoO9821bEnjdil/a5vVuyb1dXqo + 0+12zZo03EaAxjvuYVrdt/Eupq5+jLtb6fPN06khcBc+Xm8AAPIu8CGL2RCkyeHEGWxnunsid2H/ + vckEDk4JHNDaIhFwhjySEDitEFwJcOTkwFnDzUfgmzbcBHnf0HDPzbhvylOWbxzX47yRE/PGDTzC + GzvqOG/GZPMGZGS87VjI5s1aMW8WIUM3G0IubvyCSnAzVusi2wxyi/dEmzV+UjanuAv8E2zGQDja + NXVK16wlJWONwJAVsoY6KFvCGnJLPZa3haDL0zbQJpc10Nzv7yhr2pLNYo27EuOsOe2lrHEDj7DG + jjrOGnGneChtA0QhbMaVwUY8P/t5mwKSw4YhO2tjKyMRbJ4vlg7nbIATroGzMOUaglUC19wTouWs + QTgla1rZIGMNtXFeypoyZeUoTOZDLx4PbuYC1dDmF6NAOidZ00A+SzXud3lcNeuNuBbVYtXYUcdV + Cz4bNS3N1aiUNC0vRStnMKcSVbmk8espIa1yXPtjwrTqKTtgTausmyTNWYFo1bO75aT505KmUUga + aE72PdLAaSgizRscanmJaMQ1RiSkeSpI1LhfrXHSNJ8gjffXtCGSk2ZJDbXNNGnVwbiXD6ClDNAQ + wetNfyaDNHGWBoXlZ0b1WYWc6tP4bNC4ayQDDZRF47FANFDcie1IQ660fDatAq5u+hm14PbbasOn + v7ebCv88zNo+tsvv5fsKVCk6HXoGQIgeEQYpet6DL8rj0IrzOLS2vDwF5bITOedyqlPwOnNTASgn + kcMgzePAyxM5btRx9vJ7bhVX/r5Gz0l0HDEPEECsHjqnM0pTC7nsYTgijUNDoSiNQ6vDYfPQK5oy + j7yTtNzQ7O7b8pbbSfdKjXNOWpsSeLFpRkORaVpem1JQcIRp3I4Xb5oHlWWay+u47RpMwp0EEptm + nHwnISeVq7wqQE2YydnC2hQO9AT2UKNgc/ptzmZvJBzTbiOnyvZINdqJRI5CsFOoGUWSRI7sbif3 + GNRUqEidCDXy8urUaClqVjksQY17AWLMNHtEdRq439wDaRrltNvABp1Fms/aGzVi0abse1l+ZYHG + RR8CzQu7bbbwvY/A873vmQlO7hkpk+vZUdsHRARlSZpHN+GZNWrKM221JEmj522VozyzJ/NMI2mZ + Z2ADiT17WtPsbhvK6059RN1Z4Jm1Lscz5zJ7bVmeTe0JvCzPxZ6xOxhjnrFX6kCjTVhzshtVk+kZ + yNMz/vYZTc/yOTu4HzRZc6ItqznBc8XHruY0yk/WnMZL3l9DNOEUnJ2uj2bYjvgeZ94Z6WseQBiK + XvOAyfzsfwAAAP//zJtRasUwDARPVPDKkmzf/2L9aKGvvDretRPoBQIhYdiVRq/5rOzba2PolTND + qpwhjtG6tA6l1TXr/DZUMteqXjhnP9Ab0AJ78ewaUb/jWSo8qy7XzTzR1qr1ssWzavBFPGu23Bt4 + ZGPi2c8Y6p/ouD6dXr/xrDXQewHre3UTzmtrltjnGXxWBy8KpyszNJsG3xnQQrLWeKAFL61JQJv9 + ORdASzah1b2+2V0IaPmwr3bk4drUU1n1zcs159eLd18HtHAmoNVzYc1w5/ysJh3QaovGAq2UsXde + EDzPSjnomzrOEtKaM0NcCUgSLlY18mUlwEu406f+DTSdZx9kQPMRezwDr3agOwSeWZWvpiwPgIaM + zcYZq8aJQdhq3RgBF3lLQrtxgGa9swM0jGC3nKM03+IZ722gwvZ51qrKs2ip8CyaaTyDFM9o+xb8 + JWhT5Fv9DJRVb6dS5AJmLQsPMwthGQDI07N2It4Cc9V9cQBaYnX/eUW7b5YV7voTbnew7L7pmdns + Q72xrNTOts2OPZY1PpvFOFHQQlbQMiWWpeHBbDbGA9FsKALax3O7ADffglkE3zSjCCxL+eBznMhn + 0y3FqmaudNvpmffLGTuC4ZjX80hG3Hp+AgAA///MnUtuHDEMRPe5ywD8itIlcotskxPk7oHdjvOx + 1Cqye4LsjYHRPfNAFovFTEhHayjGwtCZZm9R89ImNDNfMQ8aaY50SSaSwZiNHMZSE00xuMPEJ5rL + D51jjAtOWjMQZFZdHkhYzjyhmPV0g6l+STFb/ip3m+u0QZmPfSKHmAIoe7ctXELZjXKZUEPjhpa2 + +I9pQ0ElkhnDIOtUX+7sK5/aSdBQrh4Tt+eBjJveDzJO7UE9uBVShlYK6geSkZZIlgkZWoaxTNvL + nh5mrp8nNM0smjPszBj7+/zljGRKSFH2yw53iWT36WQsDZxkNoLzNyxaaakzswqwsgcCJGt5l5nE + SJBsWM5klvJkcBAKMtyTsfzQRWNphdgNUCdTxL4xay1zOllC80/vNa2fJhaUVlT8Y+OYlbF1ZPSO + GDL4feR2iWL3KWQM22V9dIcp5qWNJksML3vdi9EkHYymYhmK+TPlMW7P0MeWn7rgWCE+yMHOchko + tpXIEqGPia30fNxju6KQtZrU/2i7pMe+HVrGgHT+yxGP92YGsQ5w1zy0o+qYj6EVhiUWzdXrPeUy + p++EYZbyx5LKMyGG12IZiOWKMdZCVyloNdZrXSVrgmKW6CpN/nE1tvxZbi3/my1z5S3JzCH3xft0 + 9ArKbpTHmFGUNSU0q9aZS+ZY58PljHljyyjzkc/h1lQ5lkwJ4pQxlvHgM8adsZwLPlPXIzoxQbIO + t5U1kAWu85+UtLO4jDTHLqWesdec/rKjmG9dsaZQPWZ6B8Xuk8aGwBBzQiFmUlLG1LoMMO6M2wVp + zJ7cVDL1nizItEmiIOMxDRqbGPwZrcYkwTChPv9/TwMyGGSY1vywHt2naXmzqLOlg2iq8Y98NbZ4 + Q1jUmfYhrZJ0prEB2UOAemx0et3PO885M+p3oOzG/UvUeWGnKT5/oExHeGmXnLopiLKlEwJAWZDl + e0t6Jsp6ZEjmYa7Y2YBXaCMo80y6trysG2dDG0Fnv6wa/+3JgPAIkGQtMvVY3ti/ekMYyVqLI50i + S7LYlWQPl32ytoaMLciC/rMUWjYDjRchgo4rPXpNJPPjXgBAMuO6E3ZpNToBmaeMF7ROS5yCLNR6 + oiSzEAxkEijIUp7+MON4bc9T80pU5+eq78KP/Saos0wEaktBIVu8IqyztJ9NTdrWr5veUrcV2aBB + yvvekm7g2J0KmQs4sGxdYLH/p0KU5NjDleWY/EIoq1+ri5WGdYay1L4lU64ma4MigbK3ghSI0j7/ + wzrLyKy/Lm5kqjLwUN3y+7N39R8zN8QMK5krdZFH2eIVgZmy1kILcRi0mVr6PlB2hLttSzJlvoNk + 96lkjcFLJ0aE3t1U7Xo80uz5pkbE6FmAJqzTby0CMqfwkQNZb3yu4f1phjVSkcRROmqWMcPO8+I/ + guzzt69fMCfs/BOnFLOXk5jTrvUs1ocGM9Jb+pstIluQdT9CIKATJ2QyFMXYW6xrygi7eJzYhROT + oFbpLTsP9tPe0iimr+H33nJ+m+Ov3nKyMn4cA/j0/QcAAAD//wMAvdXzg3p4AAA= headers: Allow: - GET, HEAD, OPTIONS CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba65b991bc320-VIE + - 7c557dd02bd7aa3a-DFW Connection: - keep-alive Content-Encoding: @@ -84,13 +83,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:55 GMT + - Wed, 10 May 2023 22:06:48 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=7.0000000960135e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict5].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict5].yaml index c208755f5b95..a96a0ecf4097 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict5].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_income_statements-kwargs_dict5].yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba65df836dd5c-LHR + - 7c557dd23b554799-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:56 GMT + - Wed, 10 May 2023 22:06:48 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=9.9999961093999e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].yaml index 944f2b6ad91a..3d095c3e4f6f 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].yaml @@ -13,33 +13,33 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA3RU227jNhB9368YBGi7CyiCJFuO3TfF1maNTWKvpWSRR1qaSGwoUiUpp2rRfy9I - 3bzJVi8C5pzh3M7MPx8AAC6StjoKdvE7XKTJbXThdNZIKdRpW6MB1qKqBIdEi+xlINyTymIpKkZg - y7MB2KDKJK01FXzEHUNwgSogHKIKJc0IB2SYaUkzOGFJM4ZAeA4ZQwNxlEULmahqwls4EoU5UA57 - wgRETAsH1oTRZyE5JS7YIL8pyBopkWuopcibTCugPGNNjlOojEjlwJFojbIdwigtJCkQnqWooBQV - ghZQSJpfqowwdEAJRiTUhCNTNsvOIIV4Bk0ZKgeIgldkzPyFLlGCREY05lMu1g/liWaoXNhyCLzA - c7rcoSQ56BKhpEWJSoMiDE361lizprik3L4wpj5UVBOlkBcoTW2gsKiQa+VARmrdSMoL8Be/gEn0 - 7KWKyBfU8PG1pFk5dEmNcNkeJc3VJxsxmI3uffDLMfjHupHIpmw+9S+7kJZSNEUJVCtQzVHRnBLZ - 9tXGtu+OfXOYcY4nZKLu+mSUAhX5Q0igXGnCGEqTRD+IUmhxEkwTmg0zLMyfGNWBapXGauzeA6dm - Dokm2jT+PAMbhykBguNQIyOyMBMomDgSBqqpa0ZRKoP/j276gA68Ul3CDG6+l+fskdY9ZYVsZu8O - K7PefjWr4s/85cILB2v8V1YSXtgtu4+STfRt5FuZZ61BHpLNaBYN17K3jpucYKaFNMa76P7hc7RO - Hw7b+5sB3vK8Ub3X3S7dHeAx/rJd38YJ/Ar7KEni+5v4AOvoANe7zTZOxguR5xKVMn6z0PNgExva - IY6/wmHjwD663UF0m+4cWEcOPIx+n6lZqickMua58d5ghtUR5UC4NXPS3xoiNdq8Ay8ILv3gcuYP - lDsrsjWpqSaM/k2GYxOuwisv9E0+3tjG6226iWx/r+azlef5Z+A+Phhng85X7mI52W9GwHeD5Rj5 - WoiXR8IaOxV/7vqz8e7RE82R53uUSUmkJXhvwSeKLP8BifeJbaF7tRpMBzwhb3B4KE3vbBcWrjcG - 20vxTPUdkQW1hXuuH84HcFfbTeBFh/f+nutP9R1QN5LvuD3zamL47xjxnw3V7ciYBeGbNHto6c8X - gecFZ829kUKpLtOhBm8Zzjz7TZ1hjcY83ic957wTvQhYGxPJKS/UjRSvunzaPXXZhIv31D6tN8zZ - VTAKlxPWKp2aPdd7SbNulivvbP6pJJRRXuzjd9L4LOQrkXmHBEt3GUxDoRmmIjGn26qnr2jhLsI3 - HCOjSWCBOx8fiR9T0ZfQ+c79c2hSc7ByF5MsURNrPNNIGHxHfPlCi9K2dTl3g9WP2K14tfE9350U - Hnob0t6JE+VFdEJzuCwn9NxRYIH3U04w89xwDGG1q3aNVprwnPLCZuEv5v6b+XebsSG6u3SC43QB - f4p++Pc/AAAA//8DAKb0SKG7CAAA + H4sIAAAAAAAAA3RU227jNhB9368YBGi7CyiCLrbi9E2xtVljk9hrKVnkkZYmEhuKVEnKqVr03wtS + tyS71YuAOWdmzlw4/3wAADhLu/oo2NnvcJalN/GZ01tjpVBnXYMGWIu6FhxSLfLnkXBHaotlqBiB + Lc9HYIMql7TRVPAJdwzBBaqAcIhrlDQnHJBhriXN4YQVzRkC4QXkDA3EUZYd5KJuCO/gSBQWQDns + CRMQMy0cWBNGn4TklLhgk/ymIG+lRK6hkaJoc62A8py1Bc6pciKVA0eiNcpuTKO0kKREeJKihkrU + CFpAKWlxrnLC0AElGJHQEI5MWZW9QQrxBJoyVA4QBS/ImPkLXaEEiYxoLGYt1g/lieaoXNhyCLzA + c3rtUJECdIVQ0bJCpUERhka+NTasLc8ptxEm6WNFDVEKeYnS1AYKyxq5Vg7kpNGtpLwEP/oFjNBX + kWoin1HDx5eK5tXYJTXBVXeUtFCfbMYgnNyH5OdT8o9NK5HNaj4NkV3IKinasgKqFaj2qGhBieyG + ahPbd8fGHGdc4AmZaPo+mU2BmvwhJFCuNGEMpRExDKISWpwE04Tm4wxL8ydm60B1SmM9de+eUzOH + VBNtGv9agc3DlADBcayREVmaCZRMHAkD1TYNoyiVwf9nb4aEDrxQXUEI19+r1+yJ1oeyi2xm745P + Zr39ap6KH/qryFuO1uSvvCK8tK/sLk438beJb9c87wxyn24ms2i5loN1eskp5lpIY7yN7+4/x+vs + /rC9ux7hLS9aNXjd7rLdAR6SL9v1TZLCr7CP0zS5u04OsI4PcLXbbJN0uhBFIVEp4xcuPQ82iaEd + kuQrHDYO7OObHcQ32c6BdezA/eT3mZpH9YhEJrww3hvMsT6iHAk3Zk76W0ukRqs78ILw3AvPQ3+k + 3NolW5OGasLo32Q8Nssw8gNvtVp6nje18WqbbWLb3yiKIs9+I7hPDsbZoItL92I5268nwHeD1ZT5 + SojnB8JaOxV/6frRdPfoiRbIiz3KtCLSErz34CNFVrxBkn1qW+guRssBT8hbHONk2a1twoUbzvKk + eKL6lsiS2ro91w8vRnDX2IfAyx4f/D3XX6zmFLqVfMftlVczw1u8ZyR/tlR3EyNYvVM5IKvICxeX + lxevWnsthVK90LEEb7UM3/Z/Q1mrsUj26cB51YdhA1iXEMkpL9W1FC+6etw9GuK55wZh8AN3kPWG + 6rnBYooac8I6pTPzyvVe0ryf5Mp3g2nImSSUUV7ukx8W47OQL0QWPRKs3FUwz4TmmInUHG67O0NF + kRst33HMEs3rFbiLKUjykImhhN534b+G5l0OLt1oXkrUxBpdzwtH4zL4jvj8hZaV7au/cKOLt9iN + eLECPN+dF3zpbUh3K06Ul/EJzd0a++NPsw+8n5IC78JdTPnt8qpdq5UmvKC87GVEl8t3G9C/jA3R + /aUTHOcL+FP0w7//AQAA//8DADfjiKm7CAAA headers: Allow: - GET, HEAD, OPTIONS CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba6566852dd74-LHR + - 7c588a8dcdc32e55-DFW Connection: - keep-alive Content-Encoding: @@ -49,13 +49,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:54 GMT + - Thu, 11 May 2023 06:59:47 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=6.9999950937927e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_overview-kwargs_dict0].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_overview-kwargs_dict0].yaml index a5afdac4f3aa..316aa7209e37 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_overview-kwargs_dict0].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_check_output[get_overview-kwargs_dict0].yaml @@ -13,33 +13,33 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA3RU227jNhB9368YBGi7CyiCJFuO3TfF1maNTWKvpWSRR1qaSGwoUiUpp2rRfy9I - 3bzJVi8C5pzh3M7MPx8AAC6StjoKdvE7XKTJbXThdNZIKdRpW6MB1qKqBIdEi+xlINyTymIpKkZg - y7MB2KDKJK01FXzEHUNwgSogHKIKJc0IB2SYaUkzOGFJM4ZAeA4ZQwNxlEULmahqwls4EoU5UA57 - wgRETAsH1oTRZyE5JS7YIL8pyBopkWuopcibTCugPGNNjlOojEjlwJFojbIdwigtJCkQnqWooBQV - ghZQSJpfqowwdEAJRiTUhCNTNsvOIIV4Bk0ZKgeIgldkzPyFLlGCREY05lMu1g/liWaoXNhyCLzA - c7rcoSQ56BKhpEWJSoMiDE361lizprik3L4wpj5UVBOlkBcoTW2gsKiQa+VARmrdSMoL8Be/gEn0 - 7KWKyBfU8PG1pFk5dEmNcNkeJc3VJxsxmI3uffDLMfjHupHIpmw+9S+7kJZSNEUJVCtQzVHRnBLZ - 9tXGtu+OfXOYcY4nZKLu+mSUAhX5Q0igXGnCGEqTRD+IUmhxEkwTmg0zLMyfGNWBapXGauzeA6dm - Dokm2jT+PAMbhykBguNQIyOyMBMomDgSBqqpa0ZRKoP/j276gA68Ul3CDG6+l+fskdY9ZYVsZu8O - K7PefjWr4s/85cILB2v8V1YSXtgtu4+STfRt5FuZZ61BHpLNaBYN17K3jpucYKaFNMa76P7hc7RO - Hw7b+5sB3vK8Ub3X3S7dHeAx/rJd38YJ/Ar7KEni+5v4AOvoANe7zTZOxguR5xKVMn6z0PNgExva - IY6/wmHjwD663UF0m+4cWEcOPIx+n6lZqickMua58d5ghtUR5UC4NXPS3xoiNdq8Ay8ILv3gcuYP - lDsrsjWpqSaM/k2GYxOuwisv9E0+3tjG6226iWx/r+azlef5Z+A+Phhng85X7mI52W9GwHeD5Rj5 - WoiXR8IaOxV/7vqz8e7RE82R53uUSUmkJXhvwSeKLP8BifeJbaF7tRpMBzwhb3B4KE3vbBcWrjcG - 20vxTPUdkQW1hXuuH84HcFfbTeBFh/f+nutP9R1QN5LvuD3zamL47xjxnw3V7ciYBeGbNHto6c8X - gecFZ829kUKpLtOhBm8Zzjz7TZ1hjcY83ic957wTvQhYGxPJKS/UjRSvunzaPXXZhIv31D6tN8zZ - VTAKlxPWKp2aPdd7SbNulivvbP6pJJRRXuzjd9L4LOQrkXmHBEt3GUxDoRmmIjGn26qnr2jhLsI3 - HCOjSWCBOx8fiR9T0ZfQ+c79c2hSc7ByF5MsURNrPNNIGHxHfPlCi9K2dTl3g9WP2K14tfE9350U - Hnob0t6JE+VFdEJzuCwn9NxRYIH3U04w89xwDGG1q3aNVprwnPLCZuEv5v6b+XebsSG6u3SC43QB - f4p++Pc/AAAA//8DAKb0SKG7CAAA + H4sIAAAAAAAAA3RU227jNhB9368YBGi7CyiCLrbi9E2xtVljk9hrKVnkkZYmEhuKVEnKqVr03wtS + tyS71YuAOWdmzlw4/3wAADhLu/oo2NnvcJalN/GZ01tjpVBnXYMGWIu6FhxSLfLnkXBHaotlqBiB + Lc9HYIMql7TRVPAJdwzBBaqAcIhrlDQnHJBhriXN4YQVzRkC4QXkDA3EUZYd5KJuCO/gSBQWQDns + CRMQMy0cWBNGn4TklLhgk/ymIG+lRK6hkaJoc62A8py1Bc6pciKVA0eiNcpuTKO0kKREeJKihkrU + CFpAKWlxrnLC0AElGJHQEI5MWZW9QQrxBJoyVA4QBS/ImPkLXaEEiYxoLGYt1g/lieaoXNhyCLzA + c3rtUJECdIVQ0bJCpUERhka+NTasLc8ptxEm6WNFDVEKeYnS1AYKyxq5Vg7kpNGtpLwEP/oFjNBX + kWoin1HDx5eK5tXYJTXBVXeUtFCfbMYgnNyH5OdT8o9NK5HNaj4NkV3IKinasgKqFaj2qGhBieyG + ahPbd8fGHGdc4AmZaPo+mU2BmvwhJFCuNGEMpRExDKISWpwE04Tm4wxL8ydm60B1SmM9de+eUzOH + VBNtGv9agc3DlADBcayREVmaCZRMHAkD1TYNoyiVwf9nb4aEDrxQXUEI19+r1+yJ1oeyi2xm745P + Zr39ap6KH/qryFuO1uSvvCK8tK/sLk438beJb9c87wxyn24ms2i5loN1eskp5lpIY7yN7+4/x+vs + /rC9ux7hLS9aNXjd7rLdAR6SL9v1TZLCr7CP0zS5u04OsI4PcLXbbJN0uhBFIVEp4xcuPQ82iaEd + kuQrHDYO7OObHcQ32c6BdezA/eT3mZpH9YhEJrww3hvMsT6iHAk3Zk76W0ukRqs78ILw3AvPQ3+k + 3NolW5OGasLo32Q8Nssw8gNvtVp6nje18WqbbWLb3yiKIs9+I7hPDsbZoItL92I5268nwHeD1ZT5 + SojnB8JaOxV/6frRdPfoiRbIiz3KtCLSErz34CNFVrxBkn1qW+guRssBT8hbHONk2a1twoUbzvKk + eKL6lsiS2ro91w8vRnDX2IfAyx4f/D3XX6zmFLqVfMftlVczw1u8ZyR/tlR3EyNYvVM5IKvICxeX + lxevWnsthVK90LEEb7UM3/Z/Q1mrsUj26cB51YdhA1iXEMkpL9W1FC+6etw9GuK55wZh8AN3kPWG + 6rnBYooac8I6pTPzyvVe0ryf5Mp3g2nImSSUUV7ukx8W47OQL0QWPRKs3FUwz4TmmInUHG67O0NF + kRst33HMEs3rFbiLKUjykImhhN534b+G5l0OLt1oXkrUxBpdzwtH4zL4jvj8hZaV7au/cKOLt9iN + eLECPN+dF3zpbUh3K06Ul/EJzd0a++NPsw+8n5IC78JdTPnt8qpdq5UmvKC87GVEl8t3G9C/jA3R + /aUTHOcL+FP0w7//AQAA//8DADfjiKm7CAAA headers: Allow: - GET, HEAD, OPTIONS CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba6550c0d2292-CDG + - 7c557dc57ee83590-DFW Connection: - keep-alive Content-Encoding: @@ -49,13 +49,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:54 GMT + - Wed, 10 May 2023 22:06:46 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=5.9999999848515e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_dupont.yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_dupont.yaml index 519ff7c051e9..964ecd587e19 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_dupont.yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_dupont.yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba66cee5cdc41-LHR + - 7c557de2fdc52d38-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:58 GMT + - Wed, 10 May 2023 22:06:51 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=4.9999998736894e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_fraud_ratios.yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_fraud_ratios.yaml index 4642de71e23e..4a8e39b9fefb 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_fraud_ratios.yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_av_model/test_get_fraud_ratios.yaml @@ -23,7 +23,7 @@ interactions: CF-Cache-Status: - DYNAMIC CF-RAY: - - 793ba66bb86f3a70-FRA + - 7c557de06fcaaa52-DFW Connection: - keep-alive Content-Encoding: @@ -33,13 +33,11 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 03 Feb 2023 13:52:58 GMT + - Wed, 10 May 2023 22:06:51 GMT Referrer-Policy: - same-origin Server: - cloudflare - Server-Timing: - - cf-q-config;dur=5.0000001010631e-06 Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fa_controller/test_call_func[call_sec-nasdaq_view.sec_filings-other_args37-called_with37].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fa_controller/test_call_func[call_sec-nasdaq_view.sec_filings-other_args37-called_with37].yaml new file mode 100644 index 000000000000..fe4d12f81909 --- /dev/null +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fa_controller/test_call_func[call_sec-nasdaq_view.sec_filings-other_args37-called_with37].yaml @@ -0,0 +1,481 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/39.0.2171.95 Safari/537.36 + method: GET + uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?period1=1588651200&period2=1683777600&interval=1d&includePrePost=False&events=div%2Csplits%2CcapitalGains + response: + body: + string: !!binary | + H4sIAAAAAAAAAI29W88tyZEd9l/O8/F23i98EzyGbcAajDXUg0A0jBb7DKetvtDdzZHoAf+7YkVm + fKdixRbGIHBYXV/tqrxExn1F/OunP/7zt7/89ul3//rply+//uUHufrDv3768ctv3+LWH//yyy9f + fvrjXz/97tN//Me/+/T5069//fE///yD/Ofv//H//Hfy31/+m/z8pz99+ftvf/wid//+3/+j3Pz+ + p19/++UvP3756bff//XPuP2//l//8f/4/X+Sv/zT97/8+tvvf/n2uy9/9+1v8pdc5lx5lZQ+y+f/ + 9Jcfvv3l33/7y3/58tvvv8f78lh1trVS+/zpTz/+9vM//dOvX2SA/1NuDb/4TR76/37+Sb/wd79/ + jOb39w93VP/uxy+/fP/Hb//nv//yX//v//TzL//lE33sH+Sv52uvLl/SBfmHX778y/c//+XX/+WH + n3+Vv/X0mm18/vRnPPq/f/+TjKJ8vsujE/r+pz/9g3zl5++wbH/+5Qv+L47vp+/upErXGfz6m669 + 3kp94FaY598+RvtvvBMLRe+8n3n3zj///Otv/8YLRy38wvuN+EJ543ff/vbt//bLtz9hqN//BprJ + 32GpsSPyH3L5L9/+8P13/wH//auQ2flzxz/5x5/l36r/Dv03/1X+Kfin45+c8O9ff8PDP3773z59 + 87ez/TK2H/8s78p9rbF0tricM697ubqSFy53a+Nc7pLqssud7gNbpmwPtFHTvext3/fulZY9IPft + gb3yeWCnNOa6l7m3ci+bPHIv+xp2d8wy7uXET/Uyp3zHu3NOd7xyKX+4l3Jk7tdyHXcWO49S7YGZ + tj0wd7cH1ir23j3uLHYpxcZbarbxFvm5PdDWvO8tfdb73rKqDb3I6+4DMoC7AXK57wbsmqdNqLZq + Q6+92NDryMkeGPtugMyg2XhbLjbeVvJd9d1qslVvddks2mg23jarjbetbBvQZN3tvXvbLHrpNt5e + q41XNtA2oPdsG9D7tln01W28OqBzOVKxDRg52wbIV21Cow0b+ujNhj5GtQ0QyrANGCvZhGYaNvSZ + uw19lmobMGuxDZgt24TmmDb0ObsNfa5mGzBlu+57V8o2oVWmDX3VYUNfrdlerF5tL4SmbUJy4Gzo + S+ZxHxC6t70QqrW9EPKzCe1uJ3bLmtgGyDRsA2QQZxby3+meWLnM98TKP+WeWLms98TKZatnFnI5 + 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 + headers: + Age: + - '0' + Connection: + - keep-alive + Expect-CT: + - max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" + Referrer-Policy: + - no-referrer-when-downgrade + Strict-Transport-Security: + - max-age=31536000 + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-XSS-Protection: + - 1; mode=block + cache-control: + - public, max-age=10, stale-while-revalidate=20 + content-encoding: + - gzip + content-type: + - application/json;charset=utf-8 + date: + - Wed, 10 May 2023 23:00:39 GMT + server: + - ATS + vary: + - Origin,Accept-Encoding + x-envoy-decorator-operation: + - finance-chart-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/* + x-envoy-upstream-service-time: + - '9' + x-request-id: + - e28123bd-e097-448d-89f1-1c32c9d55095 + x-yahoo-request-id: + - datf8opi5o8gn + y-rid: + - datf8opi5o8gn + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_rating.yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_rating.yaml index c291087b19e0..dbe81c209646 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_rating.yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_rating.yaml @@ -10,7 +10,327 @@ interactions: uri: https://financialmodelingprep.com/api/v3/historical-rating/TSLA?apikey=MOCK_API_KEY response: body: - string: "[\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-03\",\n + string: "[\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-09\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-08\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-05\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-04\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-03\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-02\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-05-01\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-28\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-27\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-26\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-25\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-24\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-21\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-20\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-19\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-18\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-17\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-14\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-13\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-12\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-04-10\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-31\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-30\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-29\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-28\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-27\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-24\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-23\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-22\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-21\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-20\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-17\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-16\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-15\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-14\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-13\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-10\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-09\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-08\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-07\",\n + \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": + \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": + \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": + \"Neutral\",\n \"ratingDetailsROAScore\": 3,\n \"ratingDetailsROARecommendation\": + \"Neutral\",\n \"ratingDetailsDEScore\": 4,\n \"ratingDetailsDERecommendation\": + \"Buy\",\n \"ratingDetailsPEScore\": 5,\n \"ratingDetailsPERecommendation\": + \"Strong Buy\",\n \"ratingDetailsPBScore\": 5,\n \"ratingDetailsPBRecommendation\": + \"Strong Buy\"\n },\n {\n \"symbol\": \"TSLA\",\n \"date\": \"2023-03-03\",\n \ \"rating\": \"A+\",\n \"ratingScore\": 5,\n \"ratingRecommendation\": \"Strong Buy\",\n \"ratingDetailsDCFScore\": 5,\n \"ratingDetailsDCFRecommendation\": \"Strong Buy\",\n \"ratingDetailsROEScore\": 3,\n \"ratingDetailsROERecommendation\": @@ -24850,15 +25170,15 @@ interactions: Connection: - close Content-Length: - - '1928182' + - '1953182' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:20 GMT + - Wed, 10 May 2023 22:06:30 GMT ETag: - - W/"1d6bf6-qWUM4wGw04tBDKHlo8Oq7Pd1lS0" + - W/"1dcd9e-O+kqZDaK43nz1/0WdhO0/GZ2aAI" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_score.yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_score.yaml index 627a220e2afa..932b6ca527b6 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_score.yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_get_score.yaml @@ -94,11 +94,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:07 GMT + - Wed, 10 May 2023 22:06:26 GMT ETag: - W/"5a89-t09q/Q4LcNGgYHs+24S5kn0LL1U" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Transfer-Encoding: - chunked Vary: @@ -189,11 +189,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:08 GMT + - Wed, 10 May 2023 22:06:26 GMT ETag: - W/"59a3-koKuQG5N21P+s6mV/ABm5TkApjE" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Transfer-Encoding: - chunked Vary: @@ -265,11 +265,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:08 GMT + - Wed, 10 May 2023 22:06:26 GMT ETag: - W/"3439-25zVhDJS7cHkLbkIftF824Hsqz4" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Transfer-Encoding: - chunked Vary: @@ -295,26 +295,25 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA41VS2/bOBC+91cMfOheLEVy/OyeHFvZZBs7QeyiyJGmKJs1RWr5sOsW/e8dSpYU - twG6QGCF882b3wy/vwPomFO+UaLzATpPi07XSwqtMi4Yir7jsRRw6o9xFIfDyaBbSTfMEm8WhaNo - 0osGnbP8oMT0sPVIfzweDyZRDeR7OyOFB+LBaNgfDaN4OOzXqCDGzvnBw4MwasSayK2P3Rn3wvEg - iONe2B/XIN151CAcROEg6k8mo0vkiWnKpCWVC1TqT/pxD2M3HlReEHlakrzUeNpxwQtYKK25gXtp - mZbEciWJwBMNazP2tQrgbZbsCC9K72FlFd1DUkO/qK52Sts6zvJlldQKXKbOWH3y8rXaEEpVDR3Z - xnBbWuysLcyHq6vj8RgWOQ8x8VorZYZqXvg0/08NoAqmiWUGCP6BrULCuRNwxFK43KIcUib4gWmv - ZXK1Z0GmGYPMWacZEJkCw7s+eOUCa8uU4AoypcHuGAgltwGGzr0jLqlwKQNkVuqoNaCcNRwFKiuV - 6xy8T8mpslwyMIxapUNYo8I5ub9M7eJVRGRnTjQXJ9SShhvvPgPKt0QzW5aJXl/lXyfRPafl898x - YgOpbLBxWnbhQNB9tzRUGtvW5NQUYHfEAgYAo0SKjgBT2LNXlfmyPkm8vBR54bt9UQhmmPnGcrR4 - IzVwMmVVH+9uHpLlfNWFJFnj753/wEyz8kZNLZjznGHtryQLosVGaVWfb58fF7CYPj/cPD4/dhv4 - wrIR3qH7leV0j8InFHKkrbQX4lWyXN9Pqx6tk+dkChsc1RQRZNWRCeG/voCP6/f/BAIXiDTYi1rp - lnNbGS84/xrCPXZTGIWXLkTVljd60dbUJtWFGyV9j7F/eJjtmEHWZZyJtAsP7xf4gzdThbqcjCoV - DC2BpCn3/eyWYZo7OkqDVNBcOdPyqSnBOLrzRc6/cFiRHFaqGgr8v1B+5mDqiXEvUyWZ4eTvEr1F - 3jpZaf5L6L5Q1mv5uFV6BfLsF7K0TXmLK2g9uq75F8Ifx/9IvA1VGjlOPD/RQTwZj8qU0ARnIf3P - EY2GFYj8zXGssZ8zJSVOJafONquQMuW3zgIndSpTnIgZEUTab6pQTihTq1XT7DXRiXE5XumcZZ56 - B9YuYyfPi/DTqhZmTog1kjTJC6FOrNz2ndFkHDXvSrHDBpfPyiQeDYfXvajF8GY1M6VN3Is8b/Yw - fRWR29PFDp95QZ2yn9sSTT7Dy+Pzxxr4xstXLBpOorjZ4oWan9Ux/jiIroO4fWWc1kzSc2XzxsZw - WYlG8Tge9eKofSypM1WUBmpz3pfRoyjux9fXvQbANbi9eCsyLomknIhc+VUut4VmhX85rkpVE2DZ - wZdie/W0CPHTvicZccLen91lOJisyTix2W+yKVLiwMRprYnfpohb7Vr4Fif4d5tU1zIU/Xj34yfb - gOgojQgAAA== + H4sIAAAAAAAAA41VS5PaOBC+51d0cchejMfmZZM9kYHZzG6YmRqYQ47ClkFrWfJKMoSk8t+328b2 + kEzVbhUF6OvX163u1vd3AAN7LnZaDj7A4Gk98Agpjc6E5Ah9x2MNiISO86kfeg20446RTeBHwSSK + p4MLftRycdyTZDKezMa9oMjdLStJEE6iWTgZheN5OGmlklm3FEcST/0gbmHD1J4CD+KRH0+HYTD3 + 47AVJgeSWhQPA386vUafuEm4cqwxJ4UoHiOdeTCfzuI4mnVedFEydX5gRa35dBBSlLDWxggL98px + o5gTWjGJp8RvzfjXJhDZPPATfNEmh43TSQ6rVvST6uagjWvjPHzZrFoFodLKOnMmfKt3LEl0Kzrx + nRWutjg4V9oPNzen08kvC+Ej8VYr5TYxoiSa/ycH0CU3zHELDD/gmpBwqQScMBWh9ohDyqU4ckNa + ttA5H2aGc8gqVxkOTKXA8b6PpFxibpmWQkOmDbgDB6nVfoihC3IkVCKrlAO2VlolzoKunBUI6KxW + bjmQTyUS7YTiYHnitPFhiwoXcr/Z1sWriNieBTNCnlFLWWHJfQaJ2DPDXZ0men3FvyXhXWgR/wNn + bqi0G+4qozw4MnTv1YbaYNk6Tl0C7sAcYACwWqboCJBCzl9lRmm9KLy8FPuCqn2VCDLMqLACLd6g + BpVKeVPHT6vVduM1P3BreH2TtgWWouCY8ytkzYzcaaPb893z4xrWi+fPHx+fH71OfGXZgZ/Q/caJ + JEfwCUGB7arcFUw12a6eVwvY4XimhFg4cSnplwj/tX3/x1DixlAWc2+V7oRwjfFaiK8+3GP1pNV4 + yVI2ZXgj9z6XnowHH7WimmK98HB74Ba7LBNcph58fr/GL7yJJtT1JDRUMLQClqaC6ujVYbo7OSmL + V2+ErmzfP10KtkoOlOTybwEbVsBGc4/+lJoGDBZNzB54oba4V6lW3Ar2ey29w66tVDM8f7IkL7Uj + LWLRkC2xy35qlb5Eb3UKWkdh230+/OfwnxjZJNpghzPqTnQQzuOopoQmOAnpPxUzaNgI2/Xmdf+6 + LZhwTQtnjUOKyfAc4FEm31jeypsJJpVb7LOqwGtd8oza7sj7BVypy/J72bRgVkm5xQZdFaXUZ15v + +UE0j4Og1SgPWFZC52EEs9kYRkEvxOs13NZG4Sig5slhceSq6qMKd369uzvGNKrNgm6hb6J5toIg + jIbT6XzU7e1SLy/aGDweBuNhGHUBKmO4Si55LTsbK1QDRWEcRiN80oLexDahOlHPNq8fW6QwCcfj + USfAxbe/eh0yoZhKBJOFpuWt9qXhJb0VN7Xq0NITdfO09ku175+PjFXS3V98ZTiXvKO7ctkv2CJx + eIHyvDWMlifKnal68R0O8K82qWkxhH68+/EvKH58Tn0IAAA= headers: Access-Control-Allow-Credentials: - 'true' @@ -334,11 +333,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:09 GMT + - Wed, 10 May 2023 22:06:27 GMT ETag: - - W/"88d-OpPVZoe8AWTEl+QVZgqKJgOFkEE" + - W/"87d-5rJGMTaV0GucwbctLIUSq/6Jpks" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Transfer-Encoding: - chunked Vary: @@ -364,26 +363,25 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA41VS2/bOBC+91cMfOheLEVy/OyeHFvZZBs7QeyiyJGmKJs1RWr5sOsW/e8dSpYU - twG6QGCF882b3wy/vwPomFO+UaLzATpPi07XSwqtMi4Yir7jsRRw6o9xFIfDyaBbSTfMEm8WhaNo - 0osGnbP8oMT0sPVIfzweDyZRDeR7OyOFB+LBaNgfDaN4OOzXqCDGzvnBw4MwasSayK2P3Rn3wvEg - iONe2B/XIN151CAcROEg6k8mo0vkiWnKpCWVC1TqT/pxD2M3HlReEHlakrzUeNpxwQtYKK25gXtp - mZbEciWJwBMNazP2tQrgbZbsCC9K72FlFd1DUkO/qK52Sts6zvJlldQKXKbOWH3y8rXaEEpVDR3Z - xnBbWuysLcyHq6vj8RgWOQ8x8VorZYZqXvg0/08NoAqmiWUGCP6BrULCuRNwxFK43KIcUib4gWmv - ZXK1Z0GmGYPMWacZEJkCw7s+eOUCa8uU4AoypcHuGAgltwGGzr0jLqlwKQNkVuqoNaCcNRwFKiuV - 6xy8T8mpslwyMIxapUNYo8I5ub9M7eJVRGRnTjQXJ9SShhvvPgPKt0QzW5aJXl/lXyfRPafl898x - YgOpbLBxWnbhQNB9tzRUGtvW5NQUYHfEAgYAo0SKjgBT2LNXlfmyPkm8vBR54bt9UQhmmPnGcrR4 - IzVwMmVVH+9uHpLlfNWFJFnj753/wEyz8kZNLZjznGHtryQLosVGaVWfb58fF7CYPj/cPD4/dhv4 - wrIR3qH7leV0j8InFHKkrbQX4lWyXN9Pqx6tk+dkChsc1RQRZNWRCeG/voCP6/f/BAIXiDTYi1rp - lnNbGS84/xrCPXZTGIWXLkTVljd60dbUJtWFGyV9j7F/eJjtmEHWZZyJtAsP7xf4gzdThbqcjCoV - DC2BpCn3/eyWYZo7OkqDVNBcOdPyqSnBOLrzRc6/cFiRHFaqGgr8v1B+5mDqiXEvUyWZ4eTvEr1F - 3jpZaf5L6L5Q1mv5uFV6BfLsF7K0TXmLK2g9uq75F8Ifx/9IvA1VGjlOPD/RQTwZj8qU0ARnIf3P - EY2GFYj8zXGssZ8zJSVOJafONquQMuW3zgIndSpTnIgZEUTab6pQTihTq1XT7DXRiXE5XumcZZ56 - B9YuYyfPi/DTqhZmTog1kjTJC6FOrNz2ndFkHDXvSrHDBpfPyiQeDYfXvajF8GY1M6VN3Is8b/Yw - fRWR29PFDp95QZ2yn9sSTT7Dy+Pzxxr4xstXLBpOorjZ4oWan9Ux/jiIroO4fWWc1kzSc2XzxsZw - WYlG8Tge9eKofSypM1WUBmpz3pfRoyjux9fXvQbANbi9eCsyLomknIhc+VUut4VmhX85rkpVE2DZ - wZdie/W0CPHTvicZccLen91lOJisyTix2W+yKVLiwMRprYnfpohb7Vr4Fif4d5tU1zIU/Xj34yfb - gOgojQgAAA== + H4sIAAAAAAAAA41VS5PaOBC+51d0cchejMfmZZM9kYHZzG6YmRqYQ47ClkFrWfJKMoSk8t+328b2 + kEzVbhUF6OvX163u1vd3AAN7LnZaDj7A4Gk98Agpjc6E5Ah9x2MNiISO86kfeg20446RTeBHwSSK + p4MLftRycdyTZDKezMa9oMjdLStJEE6iWTgZheN5OGmlklm3FEcST/0gbmHD1J4CD+KRH0+HYTD3 + 47AVJgeSWhQPA386vUafuEm4cqwxJ4UoHiOdeTCfzuI4mnVedFEydX5gRa35dBBSlLDWxggL98px + o5gTWjGJp8RvzfjXJhDZPPATfNEmh43TSQ6rVvST6uagjWvjPHzZrFoFodLKOnMmfKt3LEl0Kzrx + nRWutjg4V9oPNzen08kvC+Ej8VYr5TYxoiSa/ycH0CU3zHELDD/gmpBwqQScMBWh9ohDyqU4ckNa + ttA5H2aGc8gqVxkOTKXA8b6PpFxibpmWQkOmDbgDB6nVfoihC3IkVCKrlAO2VlolzoKunBUI6KxW + bjmQTyUS7YTiYHnitPFhiwoXcr/Z1sWriNieBTNCnlFLWWHJfQaJ2DPDXZ0men3FvyXhXWgR/wNn + bqi0G+4qozw4MnTv1YbaYNk6Tl0C7sAcYACwWqboCJBCzl9lRmm9KLy8FPuCqn2VCDLMqLACLd6g + BpVKeVPHT6vVduM1P3BreH2TtgWWouCY8ytkzYzcaaPb893z4xrWi+fPHx+fH71OfGXZgZ/Q/caJ + JEfwCUGB7arcFUw12a6eVwvY4XimhFg4cSnplwj/tX3/x1DixlAWc2+V7oRwjfFaiK8+3GP1pNV4 + yVI2ZXgj9z6XnowHH7WimmK98HB74Ba7LBNcph58fr/GL7yJJtT1JDRUMLQClqaC6ujVYbo7OSmL + V2+ErmzfP10KtkoOlOTybwEbVsBGc4/+lJoGDBZNzB54oba4V6lW3Ar2ey29w66tVDM8f7IkL7Uj + LWLRkC2xy35qlb5Eb3UKWkdh230+/OfwnxjZJNpghzPqTnQQzuOopoQmOAnpPxUzaNgI2/Xmdf+6 + LZhwTQtnjUOKyfAc4FEm31jeypsJJpVb7LOqwGtd8oza7sj7BVypy/J72bRgVkm5xQZdFaXUZ15v + +UE0j4Og1SgPWFZC52EEs9kYRkEvxOs13NZG4Sig5slhceSq6qMKd369uzvGNKrNgm6hb6J5toIg + jIbT6XzU7e1SLy/aGDweBuNhGHUBKmO4Si55LTsbK1QDRWEcRiN80oLexDahOlHPNq8fW6QwCcfj + USfAxbe/eh0yoZhKBJOFpuWt9qXhJb0VN7Xq0NITdfO09ku175+PjFXS3V98ZTiXvKO7ctkv2CJx + eIHyvDWMlifKnal68R0O8K82qWkxhH68+/EvKH58Tn0IAAA= headers: Access-Control-Allow-Credentials: - 'true' @@ -403,11 +401,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:09 GMT + - Wed, 10 May 2023 22:06:27 GMT ETag: - - W/"88d-OpPVZoe8AWTEl+QVZgqKJgOFkEE" + - W/"87d-5rJGMTaV0GucwbctLIUSq/6Jpks" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Transfer-Encoding: - chunked Vary: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_balance-kwargs_dict4].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_balance-kwargs_dict4].yaml index 942700cab31a..bdbc04abda7f 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_balance-kwargs_dict4].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_balance-kwargs_dict4].yaml @@ -15,7 +15,7 @@ interactions: \ \"acceptedDate\": \"2023-02-10 08:20:35\",\n \"calendarYear\": \"2022\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 3207000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 3207000000,\n \"netReceivables\": - 4756000000,\n \"inventory\": 9886000000,\n \"otherCurrentAssets\": 1770000000,\n + 4756000000,\n \"inventory\": 9886000000,\n \"otherCurrentAssets\": 16412000000,\n \ \"totalCurrentAssets\": 19619000000,\n \"propertyPlantEquipmentNet\": 6710000000,\n \"goodwill\": 19655000000,\n \"intangibleAssets\": 6732000000,\n \ \"goodwillAndIntangibleAssets\": 26387000000,\n \"longTermInvestments\": @@ -23,50 +23,25 @@ interactions: 3931000000,\n \"totalNonCurrentAssets\": 42062000000,\n \"otherAssets\": 0,\n \"totalAssets\": 61681000000,\n \"accountPayables\": 4076000000,\n \ \"shortTermDebt\": 8248000000,\n \"taxPayables\": 8480000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 19088000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 15012000000,\n \"totalCurrentLiabilities\": 27336000000,\n \"longTermDebt\": 34875000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1956000000,\n \"otherNonCurrentLiabilities\": - 3825000000,\n \"totalNonCurrentLiabilities\": 40656000000,\n \"otherLiabilities\": + 28332000000,\n \"totalNonCurrentLiabilities\": 40656000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 67992000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 34289000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9559000000,\n - \ \"othertotalStockholdersEquity\": 0,\n \"totalStockholdersEquity\": + \ \"othertotalStockholdersEquity\": -33687000000,\n \"totalStockholdersEquity\": -8957000000,\n \"totalEquity\": -8957000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 67992000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 67992000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 43123000000,\n + 61681000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 61681000000,\n \"totalInvestments\": 4431000000,\n \"totalDebt\": 43123000000,\n \ \"netDebt\": 39916000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n - \ },\n {\n \"date\": \"2022-09-30\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": - \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2022-10-27\",\n - \ \"acceptedDate\": \"2022-10-27 08:17:59\",\n \"calendarYear\": \"2022\",\n - \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 5368000000,\n \"shortTermInvestments\": - 0,\n \"cashAndShortTermInvestments\": 5368000000,\n \"netReceivables\": - 0,\n \"inventory\": 0,\n \"otherCurrentAssets\": 0,\n \"totalCurrentAssets\": - 5368000000,\n \"propertyPlantEquipmentNet\": 5610000000,\n \"goodwill\": - 6127000000,\n \"intangibleAssets\": 2224000000,\n \"goodwillAndIntangibleAssets\": - 8351000000,\n \"longTermInvestments\": 4087000000,\n \"taxAssets\": - 0,\n \"otherNonCurrentAssets\": 0,\n \"totalNonCurrentAssets\": 18048000000,\n - \ \"otherAssets\": 17301000000,\n \"totalAssets\": 40717000000,\n \"accountPayables\": - 0,\n \"shortTermDebt\": 2818000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 0,\n \"totalCurrentLiabilities\": - 2818000000,\n \"longTermDebt\": 21762000000,\n \"deferredRevenueNonCurrent\": - 0,\n \"deferredTaxLiabilitiesNonCurrent\": 923000000,\n \"otherNonCurrentLiabilities\": - 22617000000,\n \"totalNonCurrentLiabilities\": 45302000000,\n \"otherLiabilities\": - 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 48120000000,\n - \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": - 0,\n \"accumulatedOtherComprehensiveIncomeLoss\": 0,\n \"othertotalStockholdersEquity\": - 0,\n \"totalStockholdersEquity\": -9137000000,\n \"totalEquity\": -9137000000,\n - \ \"totalLiabilitiesAndStockholdersEquity\": 38983000000,\n \"minorityInterest\": - 0,\n \"totalLiabilitiesAndTotalEquity\": 38983000000,\n \"totalInvestments\": - 0,\n \"totalDebt\": 24580000000,\n \"netDebt\": 19212000000,\n \"link\": - \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/0001413329-22-000114-index.htm\",\n - \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000114/pm-20220930.htm\"\n \ },\n {\n \"date\": \"2021-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2022-02-11\",\n \ \"acceptedDate\": \"2022-02-11 08:29:22\",\n \"calendarYear\": \"2021\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 4496000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 4496000000,\n \"netReceivables\": - 3940000000,\n \"inventory\": 8720000000,\n \"otherCurrentAssets\": 561000000,\n + 3940000000,\n \"inventory\": 8720000000,\n \"otherCurrentAssets\": 13221000000,\n \ \"totalCurrentAssets\": 17717000000,\n \"propertyPlantEquipmentNet\": 6168000000,\n \"goodwill\": 6680000000,\n \"intangibleAssets\": 2818000000,\n \ \"goodwillAndIntangibleAssets\": 9498000000,\n \"longTermInvestments\": @@ -74,17 +49,17 @@ interactions: 2549000000,\n \"totalNonCurrentAssets\": 23573000000,\n \"otherAssets\": 0,\n \"totalAssets\": 41290000000,\n \"accountPayables\": 3331000000,\n \ \"shortTermDebt\": 3023000000,\n \"taxPayables\": 7349000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 16232000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 12901000000,\n \"totalCurrentLiabilities\": 19255000000,\n \"longTermDebt\": 24783000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 726000000,\n \"otherNonCurrentLiabilities\": - 4734000000,\n \"totalNonCurrentLiabilities\": 30243000000,\n \"otherLiabilities\": + 23889000000,\n \"totalNonCurrentLiabilities\": 30243000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 49498000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 33082000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9577000000,\n - \ \"othertotalStockholdersEquity\": 0,\n \"totalStockholdersEquity\": + \ \"othertotalStockholdersEquity\": -33611000000,\n \"totalStockholdersEquity\": -10106000000,\n \"totalEquity\": -10106000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 49498000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 49498000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27806000000,\n + 41290000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 41290000000,\n \"totalInvestments\": 4463000000,\n \"totalDebt\": 27806000000,\n \ \"netDebt\": 23310000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n \ },\n {\n \"date\": \"2020-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -92,7 +67,7 @@ interactions: \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 7280000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 7280000000,\n \"netReceivables\": - 3761000000,\n \"inventory\": 9591000000,\n \"otherCurrentAssets\": 860000000,\n + 3761000000,\n \"inventory\": 9591000000,\n \"otherCurrentAssets\": 14212000000,\n \ \"totalCurrentAssets\": 21492000000,\n \"propertyPlantEquipmentNet\": 6365000000,\n \"goodwill\": 5964000000,\n \"intangibleAssets\": 2019000000,\n \ \"goodwillAndIntangibleAssets\": 7983000000,\n \"longTermInvestments\": @@ -100,17 +75,17 @@ interactions: 2767000000,\n \"totalNonCurrentAssets\": 23323000000,\n \"otherAssets\": 0,\n \"totalAssets\": 44815000000,\n \"accountPayables\": 2780000000,\n \ \"shortTermDebt\": 3368000000,\n \"taxPayables\": 7494000000,\n \"deferredRevenue\": - 0,\n \"otherCurrentLiabilities\": 5973000000,\n \"totalCurrentLiabilities\": + 0,\n \"otherCurrentLiabilities\": 13467000000,\n \"totalCurrentLiabilities\": 19615000000,\n \"longTermDebt\": 28168000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 684000000,\n \"otherNonCurrentLiabilities\": - 6979000000,\n \"totalNonCurrentLiabilities\": 35831000000,\n \"otherLiabilities\": + 29683000000,\n \"totalNonCurrentLiabilities\": 35831000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 55446000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 31638000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -11181000000,\n \ \"othertotalStockholdersEquity\": -33024000000,\n \"totalStockholdersEquity\": -12567000000,\n \"totalEquity\": -12567000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 42879000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 42879000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31536000000,\n + 44815000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 44815000000,\n \"totalInvestments\": 4798000000,\n \"totalDebt\": 31536000000,\n \ \"netDebt\": 24256000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/pm-20201231.htm\"\n \ },\n {\n \"date\": \"2019-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -118,25 +93,25 @@ interactions: \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 6861000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 6861000000,\n \"netReceivables\": - 3717000000,\n \"inventory\": 9235000000,\n \"otherCurrentAssets\": 701000000,\n + 3717000000,\n \"inventory\": 9235000000,\n \"otherCurrentAssets\": 13653000000,\n \ \"totalCurrentAssets\": 20514000000,\n \"propertyPlantEquipmentNet\": 6631000000,\n \"goodwill\": 5858000000,\n \"intangibleAssets\": 2113000000,\n \ \"goodwillAndIntangibleAssets\": 7971000000,\n \"longTermInvestments\": 4635000000,\n \"taxAssets\": 1153000000,\n \"otherNonCurrentAssets\": 1971000000,\n \"totalNonCurrentAssets\": 22361000000,\n \"otherAssets\": 0,\n \"totalAssets\": 42875000000,\n \"accountPayables\": 2299000000,\n - \ \"shortTermDebt\": 4389000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 4389000000,\n \"taxPayables\": 6633000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 12145000000,\n \"totalCurrentLiabilities\": 18833000000,\n \"longTermDebt\": 26656000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 908000000,\n \"otherNonCurrentLiabilities\": - 6077000000,\n \"totalNonCurrentLiabilities\": 33641000000,\n \"otherLiabilities\": + 26953000000,\n \"totalNonCurrentLiabilities\": 33641000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 52474000000,\n \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 30987000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9363000000,\n \ \"othertotalStockholdersEquity\": -33201000000,\n \"totalStockholdersEquity\": -11577000000,\n \"totalEquity\": -11577000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 40897000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 40897000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31045000000,\n + 42875000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 42875000000,\n \"totalInvestments\": 4635000000,\n \"totalDebt\": 31045000000,\n \ \"netDebt\": 24184000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/pm123119form10kwrapinc.htm\"\n \ },\n {\n \"date\": \"2018-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -151,7 +126,7 @@ interactions: 1269000000,\n \"taxAssets\": 977000000,\n \"otherNonCurrentAssets\": 1445000000,\n \"totalNonCurrentAssets\": 20359000000,\n \"otherAssets\": 0,\n \"totalAssets\": 39801000000,\n \"accountPayables\": 2068000000,\n - \ \"shortTermDebt\": 4784000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 4784000000,\n \"taxPayables\": 5664000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10339000000,\n \"totalCurrentLiabilities\": 17191000000,\n \"longTermDebt\": 26975000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 898000000,\n \"otherNonCurrentLiabilities\": @@ -161,8 +136,8 @@ interactions: 31014000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -10111000000,\n \ \"othertotalStockholdersEquity\": -33362000000,\n \"totalStockholdersEquity\": -12459000000,\n \"totalEquity\": -12459000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 38081000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 38081000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31759000000,\n + 39801000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 39801000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 31759000000,\n \ \"netDebt\": 25166000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/0001413329-19-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2017-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -177,7 +152,7 @@ interactions: 1074000000,\n \"taxAssets\": 1007000000,\n \"otherNonCurrentAssets\": 1924000000,\n \"totalNonCurrentAssets\": 21374000000,\n \"otherAssets\": 0,\n \"totalAssets\": 42968000000,\n \"accountPayables\": 2242000000,\n - \ \"shortTermDebt\": 3005000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 3005000000,\n \"taxPayables\": 6136000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10715000000,\n \"totalCurrentLiabilities\": 15962000000,\n \"longTermDebt\": 31334000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 799000000,\n \"otherNonCurrentLiabilities\": @@ -187,8 +162,8 @@ interactions: 29859000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -8535000000,\n \ \"othertotalStockholdersEquity\": -33410000000,\n \"totalStockholdersEquity\": -12086000000,\n \"totalEquity\": -12086000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 41112000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 41112000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 34339000000,\n + 42968000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 42968000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 34339000000,\n \ \"netDebt\": 25892000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/0001413329-18-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/pm123117form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2016-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -203,7 +178,7 @@ interactions: 1011000000,\n \"taxAssets\": 859000000,\n \"otherNonCurrentAssets\": 1515000000,\n \"totalNonCurrentAssets\": 19243000000,\n \"otherAssets\": 0,\n \"totalAssets\": 36851000000,\n \"accountPayables\": 1666000000,\n - \ \"shortTermDebt\": 3216000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": + \ \"shortTermDebt\": 3216000000,\n \"taxPayables\": 7036000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 11585000000,\n \"totalCurrentLiabilities\": 16467000000,\n \"longTermDebt\": 25851000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1897000000,\n \"otherNonCurrentLiabilities\": @@ -213,8 +188,8 @@ interactions: 30397000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9559000000,\n \ \"othertotalStockholdersEquity\": -33526000000,\n \"totalStockholdersEquity\": -12688000000,\n \"totalEquity\": -12688000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 35063000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 35063000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29067000000,\n + 36851000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 36851000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29067000000,\n \ \"netDebt\": 24828000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/0001413329-17-000014-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/pm123116form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2015-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -229,17 +204,18 @@ interactions: 890000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1503000000,\n \ \"totalNonCurrentAssets\": 18152000000,\n \"otherAssets\": 0,\n \"totalAssets\": 33956000000,\n \"accountPayables\": 1289000000,\n \"shortTermDebt\": - 3230000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 10867000000,\n \"totalCurrentLiabilities\": 15386000000,\n \"longTermDebt\": - 25250000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1543000000,\n \"otherNonCurrentLiabilities\": 3253000000,\n \"totalNonCurrentLiabilities\": - 30046000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 45432000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 29842000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -9402000000,\n \"othertotalStockholdersEquity\": -33684000000,\n \"totalStockholdersEquity\": + 3230000000,\n \"taxPayables\": 6091000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 10867000000,\n \"totalCurrentLiabilities\": + 15386000000,\n \"longTermDebt\": 25250000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1543000000,\n \"otherNonCurrentLiabilities\": + 3253000000,\n \"totalNonCurrentLiabilities\": 30046000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 45432000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 29842000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -9402000000,\n + \ \"othertotalStockholdersEquity\": -33684000000,\n \"totalStockholdersEquity\": -13244000000,\n \"totalEquity\": -13244000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 32188000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 32188000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 28480000000,\n + 33956000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 33956000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 28480000000,\n \ \"netDebt\": 25063000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/0001413329-16-000076-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/pm123115form10kwrapinclfsm.htm\"\n \ },\n {\n \"date\": \"2014-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -254,17 +230,18 @@ interactions: 1083000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1176000000,\n \ \"totalNonCurrentAssets\": 19703000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35187000000,\n \"accountPayables\": 1242000000,\n \"shortTermDebt\": - 2526000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 11344000000,\n \"totalCurrentLiabilities\": 15112000000,\n \"longTermDebt\": - 26929000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1549000000,\n \"otherNonCurrentLiabilities\": 2800000000,\n \"totalNonCurrentLiabilities\": - 31278000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 46390000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 29249000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -6826000000,\n \"othertotalStockholdersEquity\": -35052000000,\n \"totalStockholdersEquity\": + 2526000000,\n \"taxPayables\": 6568000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 11344000000,\n \"totalCurrentLiabilities\": + 15112000000,\n \"longTermDebt\": 26929000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1549000000,\n \"otherNonCurrentLiabilities\": + 2800000000,\n \"totalNonCurrentLiabilities\": 31278000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 46390000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 29249000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -6826000000,\n + \ \"othertotalStockholdersEquity\": -35052000000,\n \"totalStockholdersEquity\": -12629000000,\n \"totalEquity\": -12629000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33761000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33761000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29455000000,\n + 35187000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35187000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 29455000000,\n \ \"netDebt\": 27773000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/0001413329-15-000016-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/pm12312014form10kwrapinclf.htm\"\n \ },\n {\n \"date\": \"2013-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -279,17 +256,18 @@ interactions: 1536000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 939000000,\n \ \"totalNonCurrentAssets\": 21316000000,\n \"otherAssets\": 0,\n \"totalAssets\": 38168000000,\n \"accountPayables\": 1274000000,\n \"shortTermDebt\": - 3655000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": - 12137000000,\n \"totalCurrentLiabilities\": 17066000000,\n \"longTermDebt\": - 24023000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1477000000,\n \"otherNonCurrentLiabilities\": 1876000000,\n \"totalNonCurrentLiabilities\": - 27376000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 44442000000,\n \"preferredStock\": 0,\n \"commonStock\": - 0,\n \"retainedEarnings\": 27843000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -4190000000,\n \"othertotalStockholdersEquity\": -31419000000,\n \"totalStockholdersEquity\": + 3655000000,\n \"taxPayables\": 7684000000,\n \"deferredRevenue\": 0,\n + \ \"otherCurrentLiabilities\": 12137000000,\n \"totalCurrentLiabilities\": + 17066000000,\n \"longTermDebt\": 24023000000,\n \"deferredRevenueNonCurrent\": + 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1477000000,\n \"otherNonCurrentLiabilities\": + 1876000000,\n \"totalNonCurrentLiabilities\": 27376000000,\n \"otherLiabilities\": + 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 44442000000,\n + \ \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": + 27843000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -4190000000,\n + \ \"othertotalStockholdersEquity\": -31419000000,\n \"totalStockholdersEquity\": -7766000000,\n \"totalEquity\": -7766000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 36676000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 36676000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27678000000,\n + 38168000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 38168000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 27678000000,\n \ \"netDebt\": 25524000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/0001413329-14-000012-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/pm1231201310-k.htm\"\n \ },\n {\n \"date\": \"2012-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -301,20 +279,20 @@ interactions: \ \"totalCurrentAssets\": 16590000000,\n \"propertyPlantEquipmentNet\": 6645000000,\n \"goodwill\": 9900000000,\n \"intangibleAssets\": 3619000000,\n \ \"goodwillAndIntangibleAssets\": 13519000000,\n \"longTermInvestments\": - 24000000,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 892000000,\n - \ \"totalNonCurrentAssets\": 21080000000,\n \"otherAssets\": 0,\n \"totalAssets\": - 37670000000,\n \"accountPayables\": 1103000000,\n \"shortTermDebt\": - 5200000000,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 916000000,\n \"totalNonCurrentAssets\": + 21080000000,\n \"otherAssets\": 0,\n \"totalAssets\": 37670000000,\n + \ \"accountPayables\": 1103000000,\n \"shortTermDebt\": 5200000000,\n + \ \"taxPayables\": 6806000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10713000000,\n \"totalCurrentLiabilities\": 17016000000,\n \"longTermDebt\": 17639000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 1875000000,\n \"otherNonCurrentLiabilities\": 4294000000,\n \"totalNonCurrentLiabilities\": - 23808000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": - 0,\n \"totalLiabilities\": 40824000000,\n \"preferredStock\": 0,\n \"commonStock\": + 1875000000,\n \"otherNonCurrentLiabilities\": 2993000000,\n \"totalNonCurrentLiabilities\": + 22507000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": + 0,\n \"totalLiabilities\": 39523000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 25076000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -3604000000,\n \"othertotalStockholdersEquity\": -24948000000,\n \"totalStockholdersEquity\": -3476000000,\n \"totalEquity\": -3476000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 37348000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 37348000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 22839000000,\n + 37670000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 37670000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 22839000000,\n \ \"netDebt\": 19856000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n \ },\n {\n \"date\": \"2011-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -329,7 +307,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 754000000,\n \"totalNonCurrentAssets\": 20629000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35488000000,\n \ \"accountPayables\": 1031000000,\n \"shortTermDebt\": 3717000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 6243000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 10046000000,\n \"totalCurrentLiabilities\": 14794000000,\n \"longTermDebt\": 14828000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1976000000,\n \"otherNonCurrentLiabilities\": 2127000000,\n \"totalNonCurrentLiabilities\": @@ -338,8 +316,8 @@ interactions: 0,\n \"retainedEarnings\": 21757000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -2863000000,\n \"othertotalStockholdersEquity\": -18665000000,\n \"totalStockholdersEquity\": 229000000,\n \"totalEquity\": 229000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33954000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33954000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 18545000000,\n + 35488000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35488000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 18545000000,\n \ \"netDebt\": 15995000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/0001193125-12-076983-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/d258717d10k.htm\"\n \ },\n {\n \"date\": \"2010-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -354,7 +332,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 761000000,\n \"totalNonCurrentAssets\": 21294000000,\n \"otherAssets\": 0,\n \"totalAssets\": 35050000000,\n \ \"accountPayables\": 835000000,\n \"shortTermDebt\": 3132000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 5485000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8837000000,\n \"totalCurrentLiabilities\": 12804000000,\n \"longTermDebt\": 13370000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 2027000000,\n \"otherNonCurrentLiabilities\": 1728000000,\n \"totalNonCurrentLiabilities\": @@ -363,8 +341,8 @@ interactions: 0,\n \"retainedEarnings\": 18133000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -1140000000,\n \"othertotalStockholdersEquity\": -13487000000,\n \"totalStockholdersEquity\": 3506000000,\n \"totalEquity\": 3506000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 33435000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 33435000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 16502000000,\n + 35050000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 35050000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 16502000000,\n \ \"netDebt\": 14799000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/0001193125-11-046772-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/d10k.htm\"\n \ },\n {\n \"date\": \"2009-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -379,7 +357,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 822000000,\n \"totalNonCurrentAssets\": 19870000000,\n \"otherAssets\": 0,\n \"totalAssets\": 34552000000,\n \ \"accountPayables\": 670000000,\n \"shortTermDebt\": 1744000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 5324000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8764000000,\n \"totalCurrentLiabilities\": 11178000000,\n \"longTermDebt\": 13672000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1688000000,\n \"otherNonCurrentLiabilities\": 1869000000,\n \"totalNonCurrentLiabilities\": @@ -388,8 +366,8 @@ interactions: 0,\n \"retainedEarnings\": 15358000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": -817000000,\n \"othertotalStockholdersEquity\": -8825000000,\n \"totalStockholdersEquity\": 5716000000,\n \"totalEquity\": 5716000000,\n \"totalLiabilitiesAndStockholdersEquity\": - 34123000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": - 34123000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 15416000000,\n + 34552000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": + 34552000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 15416000000,\n \ \"netDebt\": 13876000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/0001193125-10-041735-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/d10k.htm\"\n \ },\n {\n \"date\": \"2008-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -404,7 +382,7 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 586000000,\n \"totalNonCurrentAssets\": 18033000000,\n \"otherAssets\": 0,\n \"totalAssets\": 32972000000,\n \ \"accountPayables\": 1013000000,\n \"shortTermDebt\": 584000000,\n - \ \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + \ \"taxPayables\": 4990000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 8547000000,\n \"totalCurrentLiabilities\": 10144000000,\n \"longTermDebt\": 11377000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1401000000,\n \"otherNonCurrentLiabilities\": 2550000000,\n \"totalNonCurrentLiabilities\": @@ -419,7 +397,7 @@ interactions: \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1656000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1656000000,\n \"netReceivables\": 3497000000,\n \"inventory\": 9332000000,\n \"otherCurrentAssets\": 567000000,\n @@ -429,9 +407,9 @@ interactions: 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 725000000,\n \"totalNonCurrentAssets\": 16991000000,\n \"otherAssets\": 0,\n \"totalAssets\": 32043000000,\n \ \"accountPayables\": 852000000,\n \"shortTermDebt\": 729000000,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 6970000000,\n - \ \"totalCurrentLiabilities\": 8551000000,\n \"longTermDebt\": 5578000000,\n - \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": + 5001000000,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": + 6970000000,\n \"totalCurrentLiabilities\": 8551000000,\n \"longTermDebt\": + 5578000000,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1240000000,\n \"otherNonCurrentLiabilities\": 1273000000,\n \"totalNonCurrentLiabilities\": 8091000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 16642000000,\n \"preferredStock\": 0,\n \"commonStock\": @@ -440,10 +418,10 @@ interactions: 15401000000,\n \"totalEquity\": 15401000000,\n \"totalLiabilitiesAndStockholdersEquity\": 32043000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 32043000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 6307000000,\n - \ \"netDebt\": 4651000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 4651000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2006-12-31\",\n - \ \"acceptedDate\": \"2006-12-30 19:00:00\",\n \"calendarYear\": \"2006\",\n + \ \"acceptedDate\": \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1676000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1676000000,\n \"netReceivables\": 2160000000,\n \"inventory\": 7075000000,\n \"otherCurrentAssets\": 1014000000,\n @@ -452,22 +430,22 @@ interactions: \ \"goodwillAndIntangibleAssets\": 7824000000,\n \"longTermInvestments\": 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1133000000,\n \"totalNonCurrentAssets\": 14195000000,\n \"otherAssets\": 0,\n \"totalAssets\": 26120000000,\n - \ \"accountPayables\": 672000000,\n \"shortTermDebt\": 0,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 6317000000,\n + \ \"accountPayables\": 672000000,\n \"shortTermDebt\": 564000000,\n \"taxPayables\": + 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 5753000000,\n \ \"totalCurrentLiabilities\": 6989000000,\n \"longTermDebt\": 2222000000,\n \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1166000000,\n \"otherNonCurrentLiabilities\": 1476000000,\n \"totalNonCurrentLiabilities\": 4864000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 11853000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 13002000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -4224000000,\n \"othertotalStockholdersEquity\": 5489000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 1265000000,\n \"totalStockholdersEquity\": 14267000000,\n \"totalEquity\": 14267000000,\n \"totalLiabilitiesAndStockholdersEquity\": 26120000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 26120000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 2786000000,\n - \ \"netDebt\": 1110000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 1110000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2005-12-31\",\n - \ \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": \"2005\",\n + \ \"acceptedDate\": \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 1209000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 1209000000,\n \"netReceivables\": 1898000000,\n \"inventory\": 5420000000,\n \"otherCurrentAssets\": 1498000000,\n @@ -476,22 +454,22 @@ interactions: \ \"goodwillAndIntangibleAssets\": 6970000000,\n \"longTermInvestments\": 0,\n \"taxAssets\": 0,\n \"otherNonCurrentAssets\": 1537000000,\n \"totalNonCurrentAssets\": 13110000000,\n \"otherAssets\": 0,\n \"totalAssets\": 23135000000,\n - \ \"accountPayables\": 669000000,\n \"shortTermDebt\": 0,\n \"taxPayables\": - 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 5665000000,\n + \ \"accountPayables\": 669000000,\n \"shortTermDebt\": 768000000,\n \"taxPayables\": + 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 4897000000,\n \ \"totalCurrentLiabilities\": 6334000000,\n \"longTermDebt\": 4141000000,\n \ \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": 1024000000,\n \"otherNonCurrentLiabilities\": 1329000000,\n \"totalNonCurrentLiabilities\": 6494000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 12828000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 9042000000,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -3515000000,\n \"othertotalStockholdersEquity\": 4780000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 1265000000,\n \"totalStockholdersEquity\": 10307000000,\n \"totalEquity\": 10307000000,\n \"totalLiabilitiesAndStockholdersEquity\": 23135000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 23135000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 4909000000,\n - \ \"netDebt\": 3700000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n + \ \"netDebt\": 3700000000,\n \"link\": null,\n \"finalLink\": null\n \ },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2003-12-31\",\n - \ \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": \"2003\",\n + \ \"acceptedDate\": \"2003-12-31 00:00:00\",\n \"calendarYear\": \"2003\",\n \ \"period\": \"FY\",\n \"cashAndCashEquivalents\": 3161000000,\n \"shortTermInvestments\": 0,\n \"cashAndShortTermInvestments\": 3161000000,\n \"netReceivables\": 0,\n \"inventory\": 4274000000,\n \"otherCurrentAssets\": 3618000000,\n @@ -503,15 +481,15 @@ interactions: \ \"accountPayables\": 0,\n \"shortTermDebt\": 0,\n \"taxPayables\": 0,\n \"deferredRevenue\": 0,\n \"otherCurrentLiabilities\": 0,\n \"totalCurrentLiabilities\": 0,\n \"longTermDebt\": 0,\n \"deferredRevenueNonCurrent\": 0,\n \"deferredTaxLiabilitiesNonCurrent\": - 0,\n \"otherNonCurrentLiabilities\": 0,\n \"totalNonCurrentLiabilities\": - 0,\n \"otherLiabilities\": 7139000000,\n \"capitalLeaseObligations\": + 0,\n \"otherNonCurrentLiabilities\": 7139000000,\n \"totalNonCurrentLiabilities\": + 7139000000,\n \"otherLiabilities\": 0,\n \"capitalLeaseObligations\": 0,\n \"totalLiabilities\": 7139000000,\n \"preferredStock\": 0,\n \"commonStock\": 0,\n \"retainedEarnings\": 0,\n \"accumulatedOtherComprehensiveIncomeLoss\": - -2826000000,\n \"othertotalStockholdersEquity\": 13317000000,\n \"totalStockholdersEquity\": + 0,\n \"othertotalStockholdersEquity\": 10491000000,\n \"totalStockholdersEquity\": 10491000000,\n \"totalEquity\": 10491000000,\n \"totalLiabilitiesAndStockholdersEquity\": 17630000000,\n \"minorityInterest\": 0,\n \"totalLiabilitiesAndTotalEquity\": 17630000000,\n \"totalInvestments\": 0,\n \"totalDebt\": 0,\n \"netDebt\": - -3161000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n }\n]" + -3161000000,\n \"link\": null,\n \"finalLink\": null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -527,15 +505,15 @@ interactions: Connection: - close Content-Length: - - '40478' + - '38678' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:14 GMT + - Wed, 10 May 2023 22:06:28 GMT ETag: - - W/"9e1e-Epa6BAZgAYXgsPxNZuNLZ4YHwl8" + - W/"9716-per33erLxc2BudoLQ9daHeT9XWo" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_cash-kwargs_dict5].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_cash-kwargs_dict5].yaml index 34e3c871fe8c..4243e6df56c4 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_cash-kwargs_dict5].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_cash-kwargs_dict5].yaml @@ -17,16 +17,16 @@ interactions: 1189000000,\n \"deferredIncomeTax\": -234000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 162000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1287000000,\n \"accountsPayables\": 719000000,\n - \ \"otherWorkingCapital\": 1601000000,\n \"otherNonCashItems\": 252000000,\n + \ \"otherWorkingCapital\": 730000000,\n \"otherNonCashItems\": 159000000,\n \ \"netCashProvidedByOperatingActivities\": 10803000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -13996000000,\n \"purchasesOfInvestments\": + -1077000000,\n \"acquisitionsNet\": -13996000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -890000000,\n \"netCashUsedForInvestingActivites\": -15679000000,\n \"debtRepayment\": + -606000000,\n \"netCashUsedForInvestingActivites\": -15679000000,\n \"debtRepayment\": -7519000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -209000000,\n \"dividendsPaid\": -7812000000,\n \"otherFinancingActivites\": - -2349000000,\n \"netCashUsedProvidedByFinancingActivities\": 3806000000,\n + 19346000000,\n \"netCashUsedProvidedByFinancingActivities\": 3806000000,\n \ \"effectOfForexChangesOnCash\": -213000000,\n \"netChangeInCash\": - 3806000000,\n \"cashAtEndOfPeriod\": 3217000000,\n \"cashAtBeginningOfPeriod\": + -1283000000,\n \"cashAtEndOfPeriod\": 3217000000,\n \"cashAtBeginningOfPeriod\": 4500000000,\n \"operatingCashFlow\": 10803000000,\n \"capitalExpenditure\": -1077000000,\n \"freeCashFlow\": 9726000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n @@ -37,30 +37,30 @@ interactions: 998000000,\n \"deferredIncomeTax\": -17000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1367000000,\n \"accountsReceivables\": 0,\n \"inventory\": 549000000,\n \"accountsPayables\": 653000000,\n - \ \"otherWorkingCapital\": 363000000,\n \"otherNonCashItems\": -69000000,\n + \ \"otherWorkingCapital\": 165000000,\n \"otherNonCashItems\": -91000000,\n \ \"netCashProvidedByOperatingActivities\": 11967000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -2145000000,\n \"purchasesOfInvestments\": + -748000000,\n \"acquisitionsNet\": -2145000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 69000000,\n \"netCashUsedForInvestingActivites\": -2358000000,\n \"debtRepayment\": + 535000000,\n \"netCashUsedForInvestingActivites\": -2358000000,\n \"debtRepayment\": -3042000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -775000000,\n \"dividendsPaid\": -7580000000,\n \"otherFinancingActivites\": -580000000,\n \"netCashUsedProvidedByFinancingActivities\": -11977000000,\n \ \"effectOfForexChangesOnCash\": -417000000,\n \"netChangeInCash\": - -11977000000,\n \"cashAtEndOfPeriod\": 4500000000,\n \"cashAtBeginningOfPeriod\": + -2785000000,\n \"cashAtEndOfPeriod\": 4500000000,\n \"cashAtBeginningOfPeriod\": 7285000000,\n \"operatingCashFlow\": 11967000000,\n \"capitalExpenditure\": -748000000,\n \"freeCashFlow\": 11219000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/pm-20211231.htm\"\n \ },\n {\n \"date\": \"2020-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2021-02-09\",\n \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8056000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8592000000,\n \"depreciationAndAmortization\": 981000000,\n \"deferredIncomeTax\": -143000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 128000000,\n \"accountsReceivables\": 0,\n \"inventory\": -165000000,\n \"accountsPayables\": 406000000,\n - \ \"otherWorkingCapital\": -139000000,\n \"otherNonCashItems\": 790000000,\n + \ \"otherWorkingCapital\": -113000000,\n \"otherNonCashItems\": 254000000,\n \ \"netCashProvidedByOperatingActivities\": 9812000000,\n \"investmentsInPropertyPlantAndEquipment\": - 0,\n \"acquisitionsNet\": -47000000,\n \"purchasesOfInvestments\": 0,\n - \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -602000000,\n \"acquisitionsNet\": -47000000,\n \"purchasesOfInvestments\": + 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": -1107000000,\n \"netCashUsedForInvestingActivites\": -1154000000,\n \"debtRepayment\": -4114000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -7364000000,\n \"otherFinancingActivites\": @@ -73,15 +73,15 @@ interactions: \ },\n {\n \"date\": \"2019-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2020-02-07\",\n \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7185000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7728000000,\n \"depreciationAndAmortization\": 964000000,\n \"deferredIncomeTax\": -141000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 755000000,\n \"accountsReceivables\": -331000000,\n \"inventory\": -548000000,\n \"accountsPayables\": 451000000,\n - \ \"otherWorkingCapital\": 1183000000,\n \"otherNonCashItems\": 1327000000,\n + \ \"otherWorkingCapital\": 1183000000,\n \"otherNonCashItems\": 784000000,\n \ \"netCashProvidedByOperatingActivities\": 10090000000,\n \"investmentsInPropertyPlantAndEquipment\": - -852000000,\n \"acquisitionsNet\": -1346000000,\n \"purchasesOfInvestments\": + -852000000,\n \"acquisitionsNet\": -1377000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 387000000,\n \"netCashUsedForInvestingActivites\": -1811000000,\n \"debtRepayment\": + -434000000,\n \"netCashUsedForInvestingActivites\": -1811000000,\n \"debtRepayment\": -5351000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -7161000000,\n \"otherFinancingActivites\": 4451000000,\n \"netCashUsedProvidedByFinancingActivities\": -8061000000,\n @@ -93,15 +93,15 @@ interactions: \ },\n {\n \"date\": \"2018-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2019-02-07\",\n \ \"acceptedDate\": \"2019-02-07 15:09:20\",\n \"calendarYear\": \"2018\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7911000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8286000000,\n \"depreciationAndAmortization\": 989000000,\n \"deferredIncomeTax\": -100000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 164000000,\n \"accountsReceivables\": 53000000,\n \"inventory\": -613000000,\n \"accountsPayables\": -51000000,\n - \ \"otherWorkingCapital\": 775000000,\n \"otherNonCashItems\": 514000000,\n + \ \"otherWorkingCapital\": 775000000,\n \"otherNonCashItems\": 139000000,\n \ \"netCashProvidedByOperatingActivities\": 9478000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1436000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 438000000,\n \"netCashUsedForInvestingActivites\": -998000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -63000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -935000000,\n \"netCashUsedForInvestingActivites\": -998000000,\n \"debtRepayment\": -2484000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6885000000,\n \"otherFinancingActivites\": -282000000,\n \"netCashUsedProvidedByFinancingActivities\": -9651000000,\n @@ -113,15 +113,15 @@ interactions: \ },\n {\n \"date\": \"2017-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2018-02-13\",\n \ \"acceptedDate\": \"2018-02-13 08:07:16\",\n \"calendarYear\": \"2017\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6035000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 6341000000,\n \"depreciationAndAmortization\": 875000000,\n \"deferredIncomeTax\": -501000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1879000000,\n \"accountsReceivables\": -92000000,\n \"inventory\": 730000000,\n \"accountsPayables\": 425000000,\n - \ \"otherWorkingCapital\": 816000000,\n \"otherNonCashItems\": 624000000,\n + \ \"otherWorkingCapital\": 816000000,\n \"otherNonCashItems\": 318000000,\n \ \"netCashProvidedByOperatingActivities\": 8912000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1548000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -111000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -1466000000,\n \"netCashUsedForInvestingActivites\": -3014000000,\n \"debtRepayment\": + -2903000000,\n \"netCashUsedForInvestingActivites\": -3014000000,\n \"debtRepayment\": -4312000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6520000000,\n \"otherFinancingActivites\": 8063000000,\n \"netCashUsedProvidedByFinancingActivities\": -2769000000,\n @@ -133,15 +133,15 @@ interactions: \ },\n {\n \"date\": \"2016-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2017-02-14\",\n \ \"acceptedDate\": \"2017-02-14 08:22:52\",\n \"calendarYear\": \"2016\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6967000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7250000000,\n \"depreciationAndAmortization\": 743000000,\n \"deferredIncomeTax\": 182000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -63000000,\n \"accountsReceivables\": -1009000000,\n \"inventory\": -695000000,\n \"accountsPayables\": 373000000,\n - \ \"otherWorkingCapital\": 1268000000,\n \"otherNonCashItems\": 248000000,\n + \ \"otherWorkingCapital\": 1268000000,\n \"otherNonCashItems\": -35000000,\n \ \"netCashProvidedByOperatingActivities\": 8077000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1172000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 204000000,\n \"netCashUsedForInvestingActivites\": -968000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -41000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -927000000,\n \"netCashUsedForInvestingActivites\": -968000000,\n \"debtRepayment\": -2405000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6378000000,\n \"otherFinancingActivites\": 3370000000,\n \"netCashUsedProvidedByFinancingActivities\": -5413000000,\n @@ -153,15 +153,15 @@ interactions: \ },\n {\n \"date\": \"2015-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2016-02-17\",\n \ \"acceptedDate\": \"2016-02-17 10:25:14\",\n \"calendarYear\": \"2015\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6873000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7032000000,\n \"depreciationAndAmortization\": 754000000,\n \"deferredIncomeTax\": -18000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 66000000,\n \"accountsReceivables\": 647000000,\n \"inventory\": -841000000,\n \"accountsPayables\": 310000000,\n - \ \"otherWorkingCapital\": -50000000,\n \"otherNonCashItems\": 190000000,\n + \ \"otherWorkingCapital\": -50000000,\n \"otherNonCashItems\": 31000000,\n \ \"netCashProvidedByOperatingActivities\": 7865000000,\n \"investmentsInPropertyPlantAndEquipment\": - -960000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 252000000,\n \"netCashUsedForInvestingActivites\": -708000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -55000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -653000000,\n \"netCashUsedForInvestingActivites\": -708000000,\n \"debtRepayment\": -1495000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -48000000,\n \"dividendsPaid\": -6250000000,\n \"otherFinancingActivites\": 3057000000,\n \"netCashUsedProvidedByFinancingActivities\": -4736000000,\n @@ -173,15 +173,15 @@ interactions: \ },\n {\n \"date\": \"2014-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2015-02-20\",\n \ \"acceptedDate\": \"2015-02-20 08:39:54\",\n \"calendarYear\": \"2014\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7493000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7658000000,\n \"depreciationAndAmortization\": 889000000,\n \"deferredIncomeTax\": -62000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -918000000,\n \"accountsReceivables\": -463000000,\n \"inventory\": 105000000,\n \"accountsPayables\": 177000000,\n - \ \"otherWorkingCapital\": -737000000,\n \"otherNonCashItems\": 337000000,\n + \ \"otherWorkingCapital\": -737000000,\n \"otherNonCashItems\": 172000000,\n \ \"netCashProvidedByOperatingActivities\": 7739000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1153000000,\n \"acquisitionsNet\": -110000000,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -139000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 267000000,\n \"netCashUsedForInvestingActivites\": -996000000,\n \"debtRepayment\": + -857000000,\n \"netCashUsedForInvestingActivites\": -996000000,\n \"debtRepayment\": -3327000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -3833000000,\n \"dividendsPaid\": -6035000000,\n \"otherFinancingActivites\": 6356000000,\n \"netCashUsedProvidedByFinancingActivities\": -6839000000,\n @@ -193,15 +193,15 @@ interactions: \ },\n {\n \"date\": \"2013-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2014-02-21\",\n \ \"acceptedDate\": \"2014-02-21 08:40:56\",\n \"calendarYear\": \"2013\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8576000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8850000000,\n \"depreciationAndAmortization\": 882000000,\n \"deferredIncomeTax\": -28000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -210000000,\n \"accountsReceivables\": -449000000,\n \"inventory\": -1413000000,\n \"accountsPayables\": 103000000,\n - \ \"otherWorkingCapital\": 1549000000,\n \"otherNonCashItems\": 915000000,\n + \ \"otherWorkingCapital\": 1549000000,\n \"otherNonCashItems\": 641000000,\n \ \"netCashProvidedByOperatingActivities\": 10135000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1200000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -1418000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -1480000000,\n \"netCashUsedForInvestingActivites\": -2680000000,\n \"debtRepayment\": + -1262000000,\n \"netCashUsedForInvestingActivites\": -2680000000,\n \"debtRepayment\": -4686000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": -5963000000,\n \"dividendsPaid\": -5720000000,\n \"otherFinancingActivites\": 8154000000,\n \"netCashUsedProvidedByFinancingActivities\": -8215000000,\n @@ -213,35 +213,34 @@ interactions: \ },\n {\n \"date\": \"2012-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2013-02-22\",\n \ \"acceptedDate\": \"2013-02-22 12:13:08\",\n \"calendarYear\": \"2012\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8800000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 9154000000,\n \"depreciationAndAmortization\": 898000000,\n \"deferredIncomeTax\": -248000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -661000000,\n \"accountsReceivables\": -398000000,\n \"inventory\": -728000000,\n \"accountsPayables\": 10000000,\n - \ \"otherWorkingCapital\": 455000000,\n \"otherNonCashItems\": 632000000,\n + \ \"otherWorkingCapital\": 455000000,\n \"otherNonCashItems\": 278000000,\n \ \"netCashProvidedByOperatingActivities\": 9421000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1056000000,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 64000000,\n \"netCashUsedForInvestingActivites\": -992000000,\n \"debtRepayment\": - -3457000000,\n \"commonStockIssued\": 1000000,\n \"commonStockRepurchased\": - -6525000000,\n \"dividendsPaid\": -5404000000,\n \"otherFinancingActivites\": - 7285000000,\n \"netCashUsedProvidedByFinancingActivities\": -8100000000,\n - \ \"effectOfForexChangesOnCash\": 104000000,\n \"netChangeInCash\": 433000000,\n - \ \"cashAtEndOfPeriod\": 2983000000,\n \"cashAtBeginningOfPeriod\": 2550000000,\n - \ \"operatingCashFlow\": 9421000000,\n \"capitalExpenditure\": -1056000000,\n - \ \"freeCashFlow\": 8365000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n + 0,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -992000000,\n \"netCashUsedForInvestingActivites\": + -992000000,\n \"debtRepayment\": -3457000000,\n \"commonStockIssued\": + 1000000,\n \"commonStockRepurchased\": -6525000000,\n \"dividendsPaid\": + -5404000000,\n \"otherFinancingActivites\": 7285000000,\n \"netCashUsedProvidedByFinancingActivities\": + -8100000000,\n \"effectOfForexChangesOnCash\": 104000000,\n \"netChangeInCash\": + 433000000,\n \"cashAtEndOfPeriod\": 2983000000,\n \"cashAtBeginningOfPeriod\": + 2550000000,\n \"operatingCashFlow\": 9421000000,\n \"capitalExpenditure\": + -1056000000,\n \"freeCashFlow\": 8365000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n \ },\n {\n \"date\": \"2011-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2012-02-24\",\n \ \"acceptedDate\": \"2012-02-24 09:29:03\",\n \"calendarYear\": \"2011\",\n - \ \"period\": \"FY\",\n \"netIncome\": 8591000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 8879000000,\n \"depreciationAndAmortization\": 993000000,\n \"deferredIncomeTax\": 15000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 834000000,\n \"accountsReceivables\": 0,\n \"inventory\": -36000000,\n \"accountsPayables\": 199000000,\n - \ \"otherWorkingCapital\": 65000000,\n \"otherNonCashItems\": 96000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -192000000,\n \ \"netCashProvidedByOperatingActivities\": 10529000000,\n \"investmentsInPropertyPlantAndEquipment\": - -897000000,\n \"acquisitionsNet\": -80000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -55000000,\n \"netCashUsedForInvestingActivites\": -1032000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -80000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -952000000,\n \"netCashUsedForInvestingActivites\": -1032000000,\n \"debtRepayment\": -2630000000,\n \"commonStockIssued\": 75000000,\n \"commonStockRepurchased\": -5372000000,\n \"dividendsPaid\": -4788000000,\n \"otherFinancingActivites\": 4377000000,\n \"netCashUsedProvidedByFinancingActivities\": -8338000000,\n @@ -253,15 +252,15 @@ interactions: \ },\n {\n \"date\": \"2010-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2011-02-25\",\n \ \"acceptedDate\": \"2011-02-25 12:11:25\",\n \"calendarYear\": \"2010\",\n - \ \"period\": \"FY\",\n \"netIncome\": 7259000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 7498000000,\n \"depreciationAndAmortization\": 932000000,\n \"deferredIncomeTax\": 101000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 1255000000,\n \"accountsReceivables\": 0,\n \"inventory\": 1071000000,\n \"accountsPayables\": -72000000,\n - \ \"otherWorkingCapital\": 952000000,\n \"otherNonCashItems\": -110000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -349000000,\n \ \"netCashProvidedByOperatingActivities\": 9437000000,\n \"investmentsInPropertyPlantAndEquipment\": - -713000000,\n \"acquisitionsNet\": -83000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 86000000,\n \"netCashUsedForInvestingActivites\": -710000000,\n \"debtRepayment\": + 0,\n \"acquisitionsNet\": -83000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -627000000,\n \"netCashUsedForInvestingActivites\": -710000000,\n \"debtRepayment\": -183000000,\n \"commonStockIssued\": 229000000,\n \"commonStockRepurchased\": -5030000000,\n \"dividendsPaid\": -4423000000,\n \"otherFinancingActivites\": 829000000,\n \"netCashUsedProvidedByFinancingActivities\": -8578000000,\n @@ -273,15 +272,15 @@ interactions: \ },\n {\n \"date\": \"2009-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2010-02-26\",\n \ \"acceptedDate\": \"2010-02-26 08:23:45\",\n \"calendarYear\": \"2009\",\n - \ \"period\": \"FY\",\n \"netIncome\": 6342000000,\n \"depreciationAndAmortization\": + \ \"period\": \"FY\",\n \"netIncome\": 6552000000,\n \"depreciationAndAmortization\": 853000000,\n \"deferredIncomeTax\": 129000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 552000000,\n \"accountsReceivables\": 0,\n \"inventory\": 660000000,\n \"accountsPayables\": -116000000,\n - \ \"otherWorkingCapital\": 3504000000,\n \"otherNonCashItems\": 8000000,\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": -202000000,\n \ \"netCashProvidedByOperatingActivities\": 7884000000,\n \"investmentsInPropertyPlantAndEquipment\": - -715000000,\n \"acquisitionsNet\": -429000000,\n \"purchasesOfInvestments\": + 0,\n \"acquisitionsNet\": -429000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - 46000000,\n \"netCashUsedForInvestingActivites\": -1098000000,\n \"debtRepayment\": + -669000000,\n \"netCashUsedForInvestingActivites\": -1098000000,\n \"debtRepayment\": -101000000,\n \"commonStockIssued\": 177000000,\n \"commonStockRepurchased\": -5625000000,\n \"dividendsPaid\": -4327000000,\n \"otherFinancingActivites\": 2965000000,\n \"netCashUsedProvidedByFinancingActivities\": -6911000000,\n @@ -297,82 +296,80 @@ interactions: 842000000,\n \"deferredIncomeTax\": 5000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -133000000,\n \"accountsReceivables\": 0,\n \"inventory\": -914000000,\n \"accountsPayables\": -90000000,\n - \ \"otherWorkingCapital\": 4795000000,\n \"otherNonCashItems\": 331000000,\n - \ \"netCashProvidedByOperatingActivities\": 7935000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1099000000,\n \"acquisitionsNet\": -1663000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -399000000,\n \"netCashUsedForInvestingActivites\": -3161000000,\n \"debtRepayment\": - -5736000000,\n \"commonStockIssued\": 118000000,\n \"commonStockRepurchased\": - -5256000000,\n \"dividendsPaid\": -5079000000,\n \"otherFinancingActivites\": - 11775000000,\n \"netCashUsedProvidedByFinancingActivities\": -4178000000,\n - \ \"effectOfForexChangesOnCash\": -566000000,\n \"netChangeInCash\": + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": 331000000,\n \"netCashProvidedByOperatingActivities\": + 7935000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": + -1663000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -1498000000,\n \"netCashUsedForInvestingActivites\": + -3161000000,\n \"debtRepayment\": -5736000000,\n \"commonStockIssued\": + 118000000,\n \"commonStockRepurchased\": -5256000000,\n \"dividendsPaid\": + -5079000000,\n \"otherFinancingActivites\": 11775000000,\n \"netCashUsedProvidedByFinancingActivities\": + -4178000000,\n \"effectOfForexChangesOnCash\": -566000000,\n \"netChangeInCash\": 30000000,\n \"cashAtEndOfPeriod\": 1531000000,\n \"cashAtBeginningOfPeriod\": 1501000000,\n \"operatingCashFlow\": 7935000000,\n \"capitalExpenditure\": -1099000000,\n \"freeCashFlow\": 6836000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/0001193125-09-038765-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"netIncome\": 6026000000,\n \"depreciationAndAmortization\": 748000000,\n \"deferredIncomeTax\": -21000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -1547000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1264000000,\n \"accountsPayables\": 38000000,\n - \ \"otherWorkingCapital\": 6501000000,\n \"otherNonCashItems\": 383000000,\n - \ \"netCashProvidedByOperatingActivities\": 5589000000,\n \"investmentsInPropertyPlantAndEquipment\": - -1072000000,\n \"acquisitionsNet\": -1432000000,\n \"purchasesOfInvestments\": - 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": - -82000000,\n \"netCashUsedForInvestingActivites\": -2586000000,\n \"debtRepayment\": - -3381000000,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -6560000000,\n \"otherFinancingActivites\": - 6572000000,\n \"netCashUsedProvidedByFinancingActivities\": -3369000000,\n - \ \"effectOfForexChangesOnCash\": 346000000,\n \"netChangeInCash\": -20000000,\n - \ \"cashAtEndOfPeriod\": 1656000000,\n \"cashAtBeginningOfPeriod\": 1676000000,\n - \ \"operatingCashFlow\": 5589000000,\n \"capitalExpenditure\": -1072000000,\n - \ \"freeCashFlow\": 4517000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n + \ \"otherWorkingCapital\": 0,\n \"otherNonCashItems\": 383000000,\n \"netCashProvidedByOperatingActivities\": + 5589000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": + -1432000000,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": + 0,\n \"otherInvestingActivites\": -1154000000,\n \"netCashUsedForInvestingActivites\": + -2586000000,\n \"debtRepayment\": -3381000000,\n \"commonStockIssued\": + 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": -6560000000,\n + \ \"otherFinancingActivites\": 6572000000,\n \"netCashUsedProvidedByFinancingActivities\": + -3369000000,\n \"effectOfForexChangesOnCash\": 346000000,\n \"netChangeInCash\": + -20000000,\n \"cashAtEndOfPeriod\": 1656000000,\n \"cashAtBeginningOfPeriod\": + 1676000000,\n \"operatingCashFlow\": 5589000000,\n \"capitalExpenditure\": + -1072000000,\n \"freeCashFlow\": 4517000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2006-12-31\",\n \"acceptedDate\": \"2006-12-30 19:00:00\",\n \"calendarYear\": + \"2006-12-31\",\n \"acceptedDate\": \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": \"FY\",\n \"netIncome\": 6146000000,\n \"depreciationAndAmortization\": 658000000,\n \"deferredIncomeTax\": 226000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -730000000,\n \"accountsReceivables\": 0,\n \"inventory\": -1077000000,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 4936000000,\n \"otherNonCashItems\": -64000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": -64000000,\n \"netCashProvidedByOperatingActivities\": 6236000000,\n \"investmentsInPropertyPlantAndEquipment\": -886000000,\n - \ \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": - 0,\n \"otherInvestingActivites\": 447000000,\n \"netCashUsedForInvestingActivites\": - -439000000,\n \"debtRepayment\": 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -2780000000,\n \"otherFinancingActivites\": - -2637000000,\n \"netCashUsedProvidedByFinancingActivities\": -5417000000,\n - \ \"effectOfForexChangesOnCash\": 87000000,\n \"netChangeInCash\": 467000000,\n - \ \"cashAtEndOfPeriod\": 1676000000,\n \"cashAtBeginningOfPeriod\": 1209000000,\n - \ \"operatingCashFlow\": 6236000000,\n \"capitalExpenditure\": -886000000,\n - \ \"freeCashFlow\": 5350000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n + \ \"acquisitionsNet\": 516000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + -69000000,\n \"netCashUsedForInvestingActivites\": -439000000,\n \"debtRepayment\": + 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": + -2780000000,\n \"otherFinancingActivites\": -2637000000,\n \"netCashUsedProvidedByFinancingActivities\": + -5417000000,\n \"effectOfForexChangesOnCash\": 87000000,\n \"netChangeInCash\": + 467000000,\n \"cashAtEndOfPeriod\": 1676000000,\n \"cashAtBeginningOfPeriod\": + 1209000000,\n \"operatingCashFlow\": 6236000000,\n \"capitalExpenditure\": + -886000000,\n \"freeCashFlow\": 5350000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2005-12-31\",\n \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": + \"2005-12-31\",\n \"acceptedDate\": \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \"period\": \"FY\",\n \"netIncome\": 5620000000,\n \"depreciationAndAmortization\": 527000000,\n \"deferredIncomeTax\": -746000000,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": -370000000,\n \"accountsReceivables\": 0,\n \"inventory\": -441000000,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 3691000000,\n \"otherNonCashItems\": 127000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": 127000000,\n \"netCashProvidedByOperatingActivities\": 5158000000,\n \"investmentsInPropertyPlantAndEquipment\": -736000000,\n - \ \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": - 0,\n \"otherInvestingActivites\": -4886000000,\n \"netCashUsedForInvestingActivites\": - -5622000000,\n \"debtRepayment\": 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": - 0,\n \"dividendsPaid\": -7682000000,\n \"otherFinancingActivites\": - 4718000000,\n \"netCashUsedProvidedByFinancingActivities\": -2964000000,\n - \ \"effectOfForexChangesOnCash\": -359000000,\n \"netChangeInCash\": + \ \"acquisitionsNet\": -4932000000,\n \"purchasesOfInvestments\": 0,\n + \ \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": + 46000000,\n \"netCashUsedForInvestingActivites\": -5622000000,\n \"debtRepayment\": + 0,\n \"commonStockIssued\": 0,\n \"commonStockRepurchased\": 0,\n \"dividendsPaid\": + -7682000000,\n \"otherFinancingActivites\": 4718000000,\n \"netCashUsedProvidedByFinancingActivities\": + -2964000000,\n \"effectOfForexChangesOnCash\": -359000000,\n \"netChangeInCash\": -3787000000,\n \"cashAtEndOfPeriod\": 1209000000,\n \"cashAtBeginningOfPeriod\": 4996000000,\n \"operatingCashFlow\": 5158000000,\n \"capitalExpenditure\": - -736000000,\n \"freeCashFlow\": 4422000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n + -736000000,\n \"freeCashFlow\": 4422000000,\n \"link\": null,\n \"finalLink\": + null\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2003-12-31\",\n \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": - \"2003\",\n \"period\": \"FY\",\n \"netIncome\": 3975000000,\n \"depreciationAndAmortization\": + \"2003-12-31\",\n \"acceptedDate\": \"2003-12-31 00:00:00\",\n \"calendarYear\": + \"2003\",\n \"period\": \"FY\",\n \"netIncome\": 0,\n \"depreciationAndAmortization\": 370000000,\n \"deferredIncomeTax\": 0,\n \"stockBasedCompensation\": 0,\n \"changeInWorkingCapital\": 0,\n \"accountsReceivables\": 0,\n \ \"inventory\": 0,\n \"accountsPayables\": 0,\n \"otherWorkingCapital\": - 11053000000,\n \"otherNonCashItems\": 285000000,\n \"netCashProvidedByOperatingActivities\": + 0,\n \"otherNonCashItems\": 4260000000,\n \"netCashProvidedByOperatingActivities\": 4630000000,\n \"investmentsInPropertyPlantAndEquipment\": 0,\n \"acquisitionsNet\": 0,\n \"purchasesOfInvestments\": 0,\n \"salesMaturitiesOfInvestments\": 0,\n \"otherInvestingActivites\": -1509000000,\n \"netCashUsedForInvestingActivites\": @@ -381,8 +378,8 @@ interactions: \ \"netCashUsedProvidedByFinancingActivities\": -2601000000,\n \"effectOfForexChangesOnCash\": 0,\n \"netChangeInCash\": 0,\n \"cashAtEndOfPeriod\": 0,\n \"cashAtBeginningOfPeriod\": 0,\n \"operatingCashFlow\": 4630000000,\n \"capitalExpenditure\": -586000000,\n - \ \"freeCashFlow\": 4044000000,\n \"link\": \"\",\n \"finalLink\": - \"\"\n }\n]" + \ \"freeCashFlow\": 4044000000,\n \"link\": null,\n \"finalLink\": + null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -398,15 +395,15 @@ interactions: Connection: - close Content-Length: - - '30135' + - '30061' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:14 GMT + - Wed, 10 May 2023 22:06:29 GMT ETag: - - W/"75b7-WgWMx6yP1zFZWeWdPEMX/vvnLmI" + - W/"756d-dhjqSDXBCNtUSFj9R/X8+y+xVAU" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_dcf-kwargs_dict2].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_dcf-kwargs_dict2].yaml index 4d73f24aeeaf..328382af5680 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_dcf-kwargs_dict2].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_dcf-kwargs_dict2].yaml @@ -10,8 +10,8 @@ interactions: uri: https://financialmodelingprep.com/api/v3/discounted-cash-flow/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2023-03-07\",\n \"dcf\": - 100.5397302504817,\n \"Stock Price\": 98.48\n }\n]" + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2023-05-10\",\n \"dcf\": + 97.1597302504817,\n \"Stock Price\": 95.1\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -27,15 +27,15 @@ interactions: Connection: - close Content-Length: - - '112' + - '110' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:12 GMT + - Wed, 10 May 2023 22:06:28 GMT ETag: - - W/"70-AdC1e08v/5THyj7Z8yxevuIbrI4" + - W/"6e-90RTckHVfPZV3kUZ+5XD0G6XI3I" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) X-Frame-Options: - SAMEORIGIN X-Powered-By: @@ -96,11 +96,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:13 GMT + - Wed, 10 May 2023 22:06:28 GMT ETag: - W/"684-KUHB5l+xWU/bXUHG5KRXSaS5M+4" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_enterprise-kwargs_dict1].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_enterprise-kwargs_dict1].yaml index 71377144d56e..5463599e659a 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_enterprise-kwargs_dict1].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_enterprise-kwargs_dict1].yaml @@ -11,64 +11,72 @@ interactions: response: body: string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"stockPrice\": - 103.83,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": - 161663310000,\n \"minusCashAndCashEquivalents\": 3207000000,\n \"addTotalDebt\": - 43123000000,\n \"enterpriseValue\": 201579310000\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2022-09-30\",\n \"stockPrice\": 92.5299988,\n - \ \"numberOfShares\": 0,\n \"marketCapitalization\": 0,\n \"minusCashAndCashEquivalents\": - 5368000000,\n \"addTotalDebt\": 24580000000,\n \"enterpriseValue\": - 19212000000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n - \ \"stockPrice\": 103.5199966,\n \"numberOfShares\": 1558000000,\n \"marketCapitalization\": - 161284154702.8,\n \"minusCashAndCashEquivalents\": 4496000000,\n \"addTotalDebt\": - 27806000000,\n \"enterpriseValue\": 184594154702.8\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2020-12-31\",\n \"stockPrice\": 79.6500015,\n - \ \"numberOfShares\": 1557000000,\n \"marketCapitalization\": 124015052335.5,\n - \ \"minusCashAndCashEquivalents\": 7280000000,\n \"addTotalDebt\": 31536000000,\n - \ \"enterpriseValue\": 148271052335.5\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2019-12-31\",\n \"stockPrice\": 84.3300018,\n \"numberOfShares\": - 1555000000,\n \"marketCapitalization\": 131133152799.00002,\n \"minusCashAndCashEquivalents\": + 101.21,\n \"numberOfShares\": 1550000000,\n \"marketCapitalization\": + 156875500000,\n \"minusCashAndCashEquivalents\": 3207000000,\n \"addTotalDebt\": + 43123000000,\n \"enterpriseValue\": 196791500000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2021-12-31\",\n \"stockPrice\": 95,\n \"numberOfShares\": + 1558000000,\n \"marketCapitalization\": 148010000000,\n \"minusCashAndCashEquivalents\": + 4496000000,\n \"addTotalDebt\": 27806000000,\n \"enterpriseValue\": + 171320000000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n + \ \"stockPrice\": 82.79,\n \"numberOfShares\": 1557000000,\n \"marketCapitalization\": + 128904030000.00002,\n \"minusCashAndCashEquivalents\": 7280000000,\n \"addTotalDebt\": + 31536000000,\n \"enterpriseValue\": 153160030000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2019-12-31\",\n \"stockPrice\": 85.09,\n \"numberOfShares\": + 1555000000,\n \"marketCapitalization\": 132314950000,\n \"minusCashAndCashEquivalents\": 6861000000,\n \"addTotalDebt\": 31045000000,\n \"enterpriseValue\": - 155317152799\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n - \ \"stockPrice\": 74.4800034,\n \"numberOfShares\": 1555000000,\n \"marketCapitalization\": - 115816405287,\n \"minusCashAndCashEquivalents\": 6593000000,\n \"addTotalDebt\": - 31759000000,\n \"enterpriseValue\": 140982405287\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2017-12-31\",\n \"stockPrice\": 107.9400024,\n - \ \"numberOfShares\": 1552000000,\n \"marketCapitalization\": 167522883724.8,\n - \ \"minusCashAndCashEquivalents\": 8447000000,\n \"addTotalDebt\": 34339000000,\n - \ \"enterpriseValue\": 193414883724.8\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2016-12-31\",\n \"stockPrice\": 95.9599991,\n \"numberOfShares\": - 1551000000,\n \"marketCapitalization\": 148833958604.1,\n \"minusCashAndCashEquivalents\": - 4239000000,\n \"addTotalDebt\": 29067000000,\n \"enterpriseValue\": - 173661958604.1\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n - \ \"stockPrice\": 90.0100021,\n \"numberOfShares\": 1549000000,\n \"marketCapitalization\": - 139425493252.9,\n \"minusCashAndCashEquivalents\": 3417000000,\n \"addTotalDebt\": - 28480000000,\n \"enterpriseValue\": 164488493252.9\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2014-12-31\",\n \"stockPrice\": 80.2399979,\n - \ \"numberOfShares\": 1566000000,\n \"marketCapitalization\": 125655836711.40001,\n - \ \"minusCashAndCashEquivalents\": 1682000000,\n \"addTotalDebt\": 29455000000,\n - \ \"enterpriseValue\": 153428836711.40002\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2013-12-31\",\n \"stockPrice\": 79.0899963,\n \"numberOfShares\": - 1622000000,\n \"marketCapitalization\": 128283973998.59999,\n \"minusCashAndCashEquivalents\": + 156498950000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n + \ \"stockPrice\": 66.76,\n \"numberOfShares\": 1555000000,\n \"marketCapitalization\": + 103811800000.00002,\n \"minusCashAndCashEquivalents\": 6593000000,\n \"addTotalDebt\": + 31759000000,\n \"enterpriseValue\": 128977800000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2017-12-31\",\n \"stockPrice\": 105.65,\n \"numberOfShares\": + 1552000000,\n \"marketCapitalization\": 163968800000,\n \"minusCashAndCashEquivalents\": + 8447000000,\n \"addTotalDebt\": 34339000000,\n \"enterpriseValue\": + 189860800000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n + \ \"stockPrice\": 91.49,\n \"numberOfShares\": 1551000000,\n \"marketCapitalization\": + 141900990000,\n \"minusCashAndCashEquivalents\": 4239000000,\n \"addTotalDebt\": + 29067000000,\n \"enterpriseValue\": 166728990000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2015-12-31\",\n \"stockPrice\": 87.91,\n \"numberOfShares\": + 1549000000,\n \"marketCapitalization\": 136172590000,\n \"minusCashAndCashEquivalents\": + 3417000000,\n \"addTotalDebt\": 28480000000,\n \"enterpriseValue\": + 161235590000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n + \ \"stockPrice\": 81.45,\n \"numberOfShares\": 1566000000,\n \"marketCapitalization\": + 127550700000,\n \"minusCashAndCashEquivalents\": 1682000000,\n \"addTotalDebt\": + 29455000000,\n \"enterpriseValue\": 155323700000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2013-12-31\",\n \"stockPrice\": 87.13,\n \"numberOfShares\": + 1622000000,\n \"marketCapitalization\": 141324860000,\n \"minusCashAndCashEquivalents\": 2154000000,\n \"addTotalDebt\": 27678000000,\n \"enterpriseValue\": - 153807973998.59998\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n - \ \"stockPrice\": 87.6500015,\n \"numberOfShares\": 1692000000,\n \"marketCapitalization\": - 148303802538,\n \"minusCashAndCashEquivalents\": 2983000000,\n \"addTotalDebt\": - 22839000000,\n \"enterpriseValue\": 168159802538\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2011-12-31\",\n \"stockPrice\": 74.9000015,\n - \ \"numberOfShares\": 1725908666,\n \"marketCapitalization\": 129270561672.263,\n - \ \"minusCashAndCashEquivalents\": 2550000000,\n \"addTotalDebt\": 18545000000,\n - \ \"enterpriseValue\": 145265561672.263\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2010-12-31\",\n \"stockPrice\": 56.5999985,\n \"numberOfShares\": - 1839000000,\n \"marketCapitalization\": 104087397241.5,\n \"minusCashAndCashEquivalents\": - 1703000000,\n \"addTotalDebt\": 16502000000,\n \"enterpriseValue\": - 118886397241.5\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n - \ \"stockPrice\": 45.5099983,\n \"numberOfShares\": 1943000000,\n \"marketCapitalization\": - 88425926696.9,\n \"minusCashAndCashEquivalents\": 1540000000,\n \"addTotalDebt\": - 15416000000,\n \"enterpriseValue\": 102301926696.9\n },\n {\n \"symbol\": - \"PM\",\n \"date\": \"2008-12-31\",\n \"stockPrice\": 37.1500015,\n - \ \"numberOfShares\": 2068000000,\n \"marketCapitalization\": 76826203102,\n - \ \"minusCashAndCashEquivalents\": 1531000000,\n \"addTotalDebt\": 11961000000,\n - \ \"enterpriseValue\": 87256203102\n }\n]" + 166848860000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n + \ \"stockPrice\": 83.64,\n \"numberOfShares\": 1692000000,\n \"marketCapitalization\": + 141518880000,\n \"minusCashAndCashEquivalents\": 2983000000,\n \"addTotalDebt\": + 22839000000,\n \"enterpriseValue\": 161374880000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2011-12-31\",\n \"stockPrice\": 78.48,\n \"numberOfShares\": + 1725908666,\n \"marketCapitalization\": 135449312107.68001,\n \"minusCashAndCashEquivalents\": + 2550000000,\n \"addTotalDebt\": 18545000000,\n \"enterpriseValue\": + 151444312107\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n + \ \"stockPrice\": 58.53,\n \"numberOfShares\": 1839000000,\n \"marketCapitalization\": + 107636670000,\n \"minusCashAndCashEquivalents\": 1703000000,\n \"addTotalDebt\": + 16502000000,\n \"enterpriseValue\": 122435670000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2009-12-31\",\n \"stockPrice\": 48.19,\n \"numberOfShares\": + 1943000000,\n \"marketCapitalization\": 93633170000,\n \"minusCashAndCashEquivalents\": + 1540000000,\n \"addTotalDebt\": 15416000000,\n \"enterpriseValue\": + 107509170000\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n + \ \"stockPrice\": 43.51,\n \"numberOfShares\": 2068000000,\n \"marketCapitalization\": + 89978680000,\n \"minusCashAndCashEquivalents\": 1531000000,\n \"addTotalDebt\": + 11961000000,\n \"enterpriseValue\": 100408680000\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2007-12-31\",\n \"stockPrice\": 49.389999,\n \"numberOfShares\": + 2101000000,\n \"marketCapitalization\": 103768387899,\n \"minusCashAndCashEquivalents\": + 1656000000,\n \"addTotalDebt\": 6307000000,\n \"enterpriseValue\": 108419387899\n + \ },\n {\n \"symbol\": \"PM\",\n \"date\": \"2006-12-31\",\n \"stockPrice\": + 49.389999,\n \"numberOfShares\": 2109313033,\n \"marketCapitalization\": + 104178968590.55698,\n \"minusCashAndCashEquivalents\": 1676000000,\n \"addTotalDebt\": + 2786000000,\n \"enterpriseValue\": 105288968590\n },\n {\n \"symbol\": + \"PM\",\n \"date\": \"2005-12-31\",\n \"stockPrice\": 49.389999,\n \"numberOfShares\": + 2109313033,\n \"marketCapitalization\": 104178968590.55698,\n \"minusCashAndCashEquivalents\": + 1209000000,\n \"addTotalDebt\": 4909000000,\n \"enterpriseValue\": 107878968590\n + \ },\n {\n \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n \"stockPrice\": + 49.389999,\n \"numberOfShares\": 2028000000,\n \"marketCapitalization\": + 100162917972,\n \"minusCashAndCashEquivalents\": 3161000000,\n \"addTotalDebt\": + 0,\n \"enterpriseValue\": 97001917972\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -84,15 +92,15 @@ interactions: Connection: - close Content-Length: - - '4474' + - '5199' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:11 GMT + - Wed, 10 May 2023 22:06:27 GMT ETag: - - W/"117a-pnWpP1iblLh3xBbpIxvyqkWL/xQ" + - W/"144f-v5fRcRX+eXp1N7TB+4ahxQKD8Is" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_financial_growth-kwargs_dict8].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_financial_growth-kwargs_dict8].yaml index c0dc56fb3f2e..89dfe168219c 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_financial_growth-kwargs_dict8].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_financial_growth-kwargs_dict8].yaml @@ -12,29 +12,29 @@ interactions: body: string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.011367616621557077,\n \"grossProfitGrowth\": - -0.04748538011695906,\n \"ebitgrowth\": -0.049611197511664075,\n \"operatingIncomeGrowth\": - -0.049611197511664075,\n \"netIncomeGrowth\": -0.0066966736194972,\n \"epsgrowth\": - -0.003430531732418604,\n \"epsdilutedGrowth\": -0.003430531732418604,\n - \ \"weightedAverageSharesGrowth\": -0.0006418485237483953,\n \"weightedAverageSharesDilutedGrowth\": - -0.0012828736369467607,\n \"dividendsperShareGrowth\": 0.03126877850138039,\n + -0.04748538011695906,\n \"ebitgrowth\": -0.056184971098265896,\n \"operatingIncomeGrowth\": + -0.056184971098265896,\n \"netIncomeGrowth\": -0.0066966736194972,\n \"epsgrowth\": + -0.0017152658662092258,\n \"epsdilutedGrowth\": -0.003430531732418604,\n + \ \"weightedAverageSharesGrowth\": -0.005134788189987163,\n \"weightedAverageSharesDilutedGrowth\": + -0.004490057729313663,\n \"dividendsperShareGrowth\": 0.035926121372031716,\n \ \"operatingCashFlowGrowth\": -0.09726748558535973,\n \"freeCashFlowGrowth\": - -0.13307781442196273,\n \"tenYRevenueGrowthPerShare\": 0.10003922095286838,\n - \ \"fiveYRevenueGrowthPerShare\": 0.10129409242531759,\n \"threeYRevenueGrowthPerShare\": - 0.06429126078232547,\n \"tenYOperatingCFGrowthPerShare\": 0.24611785379238255,\n - \ \"fiveYOperatingCFGrowthPerShare\": 0.20829311996900549,\n \"threeYOperatingCFGrowthPerShare\": - 0.06928873281124993,\n \"tenYNetIncomeGrowthPerShare\": 0.1173305307409352,\n - \ \"fiveYNetIncomeGrowthPerShare\": 0.4944397884530347,\n \"threeYNetIncomeGrowthPerShare\": - 0.2576726025505395,\n \"tenYShareholdersEquityGrowthPerShare\": -1.856509043016689,\n - \ \"fiveYShareholdersEquityGrowthPerShare\": 0.246429065259241,\n \"threeYShareholdersEquityGrowthPerShare\": - 0.21177651145281812,\n \"tenYDividendperShareGrowthPerShare\": 0.5709365359849053,\n - \ \"fiveYDividendperShareGrowthPerShare\": 0.19431185503032025,\n \"threeYDividendperShareGrowthPerShare\": - 0.0895077947101069,\n \"receivablesGrowth\": -1,\n \"inventoryGrowth\": - -1,\n \"assetGrowth\": -0.01387745216759506,\n \"bookValueperShareGrowth\": - 0.0953029550223,\n \"debtGrowth\": -0.11601812558440625,\n \"rdexpenseGrowth\": + -0.13307781442196273,\n \"tenYRevenueGrowthPerShare\": 0.10500714001523621,\n + \ \"fiveYRevenueGrowthPerShare\": 0.10626767864917389,\n \"threeYRevenueGrowthPerShare\": + 0.06909773744392311,\n \"tenYOperatingCFGrowthPerShare\": 0.25174548280950937,\n + \ \"fiveYOperatingCFGrowthPerShare\": 0.21374992760757514,\n \"threeYOperatingCFGrowthPerShare\": + 0.07411777870136521,\n \"tenYNetIncomeGrowthPerShare\": 0.1223765395894428,\n + \ \"fiveYNetIncomeGrowthPerShare\": 0.5011888713686293,\n \"threeYNetIncomeGrowthPerShare\": + 0.2633524143039937,\n \"tenYShareholdersEquityGrowthPerShare\": -1.8128816956828389,\n + \ \"fiveYShareholdersEquityGrowthPerShare\": 0.2579383237336722,\n \"threeYShareholdersEquityGrowthPerShare\": + 0.2238150169830616,\n \"tenYDividendperShareGrowthPerShare\": 0.5780310880829015,\n + \ \"fiveYDividendperShareGrowthPerShare\": 0.1997055214723926,\n \"threeYDividendperShareGrowthPerShare\": + 0.0944281524926686,\n \"receivablesGrowth\": 0.20710659898477157,\n \"inventoryGrowth\": + 0.13371559633027522,\n \"assetGrowth\": 0.4938483894405425,\n \"bookValueperShareGrowth\": + 0.10912035647938315,\n \"debtGrowth\": 0.5508523340286269,\n \"rdexpenseGrowth\": 0,\n \"sgaexpensesGrowth\": -0.033376885615868865\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.0944796821635185,\n \"grossProfitGrowth\": 0.11764705882352941,\n \"ebitgrowth\": - 0.10215975317106617,\n \"operatingIncomeGrowth\": 0.10215975317106617,\n + 0.11201576962632842,\n \"operatingIncomeGrowth\": 0.11201576962632842,\n \ \"netIncomeGrowth\": 0.1307100297914598,\n \"epsgrowth\": 0.12984496124031006,\n \ \"epsdilutedGrowth\": 0.12984496124031006,\n \"weightedAverageSharesGrowth\": 0.0006422607578676942,\n \"weightedAverageSharesDilutedGrowth\": 0.0006418485237483953,\n @@ -79,7 +79,7 @@ interactions: 0.0060759493670886075,\n \"grossProfitGrowth\": 0.022526103779085174,\n \ \"ebitgrowth\": -0.07436055199085875,\n \"operatingIncomeGrowth\": -0.07436055199085875,\n \"netIncomeGrowth\": -0.09177095183921123,\n \"epsgrowth\": - -0.09251968503937003,\n \"epsdilutedGrowth\": -0.09251968503937003,\n \"weightedAverageSharesGrowth\": + -0.09430255402750483,\n \"epsdilutedGrowth\": -0.09430255402750483,\n \"weightedAverageSharesGrowth\": 0,\n \"weightedAverageSharesDilutedGrowth\": 0.0006430868167202572,\n \"dividendsperShareGrowth\": 0.04008714596949895,\n \"operatingCashFlowGrowth\": 0.06457058451150031,\n \ \"freeCashFlowGrowth\": 0.14871922407361352,\n \"tenYRevenueGrowthPerShare\": @@ -100,7 +100,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": 0.030506470015305414,\n \"grossProfitGrowth\": 0.03008298755186722,\n \"ebitgrowth\": -0.010953664261497001,\n \"operatingIncomeGrowth\": -0.010953664261497001,\n \"netIncomeGrowth\": 0.3108533554266777,\n \"epsgrowth\": - 0.309278350515464,\n \"epsdilutedGrowth\": 0.309278350515464,\n \"weightedAverageSharesGrowth\": + 0.3084832904884318,\n \"epsdilutedGrowth\": 0.3084832904884318,\n \"weightedAverageSharesGrowth\": 0.0019329896907216496,\n \"weightedAverageSharesDilutedGrowth\": 0.00128783000643915,\n \ \"dividendsperShareGrowth\": 0.05394433156451575,\n \"operatingCashFlowGrowth\": 0.06350987432675045,\n \"freeCashFlowGrowth\": 0.09206952743074416,\n \"tenYRevenueGrowthPerShare\": @@ -121,8 +121,8 @@ interactions: \"PM\",\n \"date\": \"2017-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.07730934982199737,\n \"grossProfitGrowth\": 0.05909564010639528,\n \"ebitgrowth\": 0.06361534905224225,\n \"operatingIncomeGrowth\": 0.06361534905224225,\n - \ \"netIncomeGrowth\": -0.13377350366011195,\n \"epsgrowth\": -0.13392857142857154,\n - \ \"epsdilutedGrowth\": -0.13392857142857154,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": -0.13377350366011195,\n \"epsgrowth\": -0.133630289532294,\n + \ \"epsdilutedGrowth\": -0.133630289532294,\n \"weightedAverageSharesGrowth\": 0.0006447453255963894,\n \"weightedAverageSharesDilutedGrowth\": 0.0012894906511927789,\n \ \"dividendsperShareGrowth\": 0.021605357333359332,\n \"operatingCashFlowGrowth\": 0.10337996780983039,\n \"freeCashFlowGrowth\": 0.0664735698769008,\n \"tenYRevenueGrowthPerShare\": @@ -143,7 +143,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.004068074942151228,\n \"grossProfitGrowth\": -0.007745711171036777,\n \"ebitgrowth\": 0.018073990398192602,\n \"operatingIncomeGrowth\": 0.018073990398192602,\n \"netIncomeGrowth\": 0.013676705950822057,\n \"epsgrowth\": - 0.013574660633484276,\n \"epsdilutedGrowth\": 0.013574660633484276,\n \"weightedAverageSharesGrowth\": + 0.01126126126126122,\n \"epsdilutedGrowth\": 0.01126126126126122,\n \"weightedAverageSharesGrowth\": 0.0012911555842479018,\n \"weightedAverageSharesDilutedGrowth\": 0.0012911555842479018,\n \ \"dividendsperShareGrowth\": 0.019164100580270755,\n \"operatingCashFlowGrowth\": 0.02695486331849968,\n \"freeCashFlowGrowth\": 0,\n \"tenYRevenueGrowthPerShare\": @@ -164,7 +164,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.09987570127994087,\n \"grossProfitGrowth\": -0.0983911851430345,\n \"ebitgrowth\": -0.09220646043411383,\n \"operatingIncomeGrowth\": -0.09220646043411383,\n \"netIncomeGrowth\": -0.08274389430134793,\n \"epsgrowth\": - -0.0714285714285714,\n \"epsdilutedGrowth\": -0.0714285714285714,\n \"weightedAverageSharesGrowth\": + -0.07112970711297067,\n \"epsdilutedGrowth\": -0.07112970711297067,\n \"weightedAverageSharesGrowth\": -0.010855683269476373,\n \"weightedAverageSharesDilutedGrowth\": -0.010855683269476373,\n \ \"dividendsperShareGrowth\": 0.04699132401212418,\n \"operatingCashFlowGrowth\": 0.01628117327820132,\n \"freeCashFlowGrowth\": 0.04843607652596417,\n \"tenYRevenueGrowthPerShare\": @@ -185,7 +185,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.04644905019700804,\n \"grossProfitGrowth\": -0.07093766520882396,\n \"ebitgrowth\": -0.13414724380318166,\n \"operatingIncomeGrowth\": -0.13414724380318166,\n \"netIncomeGrowth\": -0.12628264925373134,\n \"epsgrowth\": - -0.09505703422053233,\n \"epsdilutedGrowth\": -0.09505703422053233,\n \"weightedAverageSharesGrowth\": + -0.09640831758034023,\n \"epsdilutedGrowth\": -0.09640831758034023,\n \"weightedAverageSharesGrowth\": -0.0345252774352651,\n \"weightedAverageSharesDilutedGrowth\": -0.0345252774352651,\n \ \"dividendsperShareGrowth\": 0.09279912297153681,\n \"operatingCashFlowGrowth\": -0.2364084854464726,\n \"freeCashFlowGrowth\": -0.26289871292669276,\n @@ -207,7 +207,7 @@ interactions: -0.005099276540140868,\n \"grossProfitGrowth\": -0.009379165873167016,\n \ \"ebitgrowth\": -0.02390582117579084,\n \"operatingIncomeGrowth\": -0.02390582117579084,\n \"netIncomeGrowth\": -0.025454545454545455,\n \"epsgrowth\": - 0.017408123791102487,\n \"epsdilutedGrowth\": 0.017408123791102487,\n \"weightedAverageSharesGrowth\": + 0.01730769230769228,\n \"epsdilutedGrowth\": 0.01730769230769228,\n \"weightedAverageSharesGrowth\": -0.041371158392434985,\n \"weightedAverageSharesDilutedGrowth\": -0.041371158392434985,\n \ \"dividendsperShareGrowth\": 0.10415539112919045,\n \"operatingCashFlowGrowth\": 0.07578813289459718,\n \"freeCashFlowGrowth\": 0.06814106395696354,\n \"tenYRevenueGrowthPerShare\": @@ -227,8 +227,8 @@ interactions: \"PM\",\n \"date\": \"2012-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.009004083995240698,\n \"grossProfitGrowth\": 0.02864978696312258,\n \"ebitgrowth\": 0.03855385538553855,\n \"operatingIncomeGrowth\": 0.03855385538553855,\n - \ \"netIncomeGrowth\": 0.024327784891165175,\n \"epsgrowth\": 0.0386389771274419,\n - \ \"epsdilutedGrowth\": 0.0386389771274419,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.024327784891165175,\n \"epsgrowth\": 0.04417670682730918,\n + \ \"epsdilutedGrowth\": 0.04417670682730918,\n \"weightedAverageSharesGrowth\": -0.019646848450322343,\n \"weightedAverageSharesDilutedGrowth\": -0.019646848450322343,\n \ \"dividendsperShareGrowth\": 0.15127387408928147,\n \"operatingCashFlowGrowth\": -0.10523316554278658,\n \"freeCashFlowGrowth\": -0.13154069767441862,\n @@ -249,8 +249,8 @@ interactions: \"PM\",\n \"date\": \"2011-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.1429359012055278,\n \"grossProfitGrowth\": 0.1671334667047728,\n \"ebitgrowth\": 0.19035714285714286,\n \"operatingIncomeGrowth\": 0.19035714285714286,\n - \ \"netIncomeGrowth\": 0.1834963493594159,\n \"epsgrowth\": 0.26658218829516545,\n - \ \"epsdilutedGrowth\": 0.2698132653061226,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.1834963493594159,\n \"epsgrowth\": 0.26075949367088613,\n + \ \"epsdilutedGrowth\": 0.2639593908629443,\n \"weightedAverageSharesGrowth\": -0.06149610331702012,\n \"weightedAverageSharesDilutedGrowth\": -0.06302461129207383,\n \ \"dividendsperShareGrowth\": 0.15345623831942803,\n \"operatingCashFlowGrowth\": 0.11571473985376708,\n \"freeCashFlowGrowth\": 0.10408069692801467,\n \"tenYRevenueGrowthPerShare\": @@ -270,8 +270,8 @@ interactions: \"PM\",\n \"date\": \"2010-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.08679848212502496,\n \"grossProfitGrowth\": 0.09254980328483108,\n \"ebitgrowth\": 0.11553784860557768,\n \"operatingIncomeGrowth\": 0.11553784860557768,\n - \ \"netIncomeGrowth\": 0.1445916114790287,\n \"epsgrowth\": 0.20923076923076928,\n - \ \"epsdilutedGrowth\": 0.20987654320987645,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.1445916114790287,\n \"epsgrowth\": 0.21165644171779155,\n + \ \"epsdilutedGrowth\": 0.21230769230769228,\n \"weightedAverageSharesGrowth\": -0.05352547606793618,\n \"weightedAverageSharesDilutedGrowth\": -0.055384615384615386,\n \ \"dividendsperShareGrowth\": 0.07999343500282076,\n \"operatingCashFlowGrowth\": 0.19698122780314561,\n \"freeCashFlowGrowth\": 0.21690612358766914,\n \"tenYRevenueGrowthPerShare\": @@ -292,7 +292,7 @@ interactions: \ \"period\": \"FY\",\n \"revenueGrowth\": -0.026064967905076834,\n \"grossProfitGrowth\": -0.022226292971850765,\n \"ebitgrowth\": -0.02029664324746292,\n \"operatingIncomeGrowth\": -0.02029664324746292,\n \"netIncomeGrowth\": -0.0795355587808418,\n \"epsgrowth\": - -0.024024024024024045,\n \"epsdilutedGrowth\": -0.024096385542168565,\n + -0.021021021021021106,\n \"epsdilutedGrowth\": -0.021084337349397544,\n \ \"weightedAverageSharesGrowth\": -0.06044487427466151,\n \"weightedAverageSharesDilutedGrowth\": -0.061597690086621755,\n \"dividendsperShareGrowth\": -0.0932523969962195,\n \ \"operatingCashFlowGrowth\": -0.006427221172022685,\n \"freeCashFlowGrowth\": @@ -334,8 +334,8 @@ interactions: \"PM\",\n \"date\": \"2007-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": -0.5276004973062578,\n \"grossProfitGrowth\": 0.11367771537061941,\n \"ebitgrowth\": 0.06034894837476099,\n \"operatingIncomeGrowth\": 0.06034894837476099,\n - \ \"netIncomeGrowth\": -0.019524894240156198,\n \"epsgrowth\": -0.015013324776190065,\n - \ \"epsdilutedGrowth\": -0.021877343418864704,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": -0.019524894240156198,\n \"epsgrowth\": -0.013745704467353964,\n + \ \"epsdilutedGrowth\": -0.020618556701030945,\n \"weightedAverageSharesGrowth\": -0.003941109199982837,\n \"weightedAverageSharesDilutedGrowth\": 0.003170210820007767,\n \ \"dividendsperShareGrowth\": 1.3690489106728898,\n \"operatingCashFlowGrowth\": -0.10375240538806928,\n \"freeCashFlowGrowth\": -0.15570093457943926,\n @@ -356,8 +356,8 @@ interactions: \"PM\",\n \"date\": \"2006-12-31\",\n \"period\": \"FY\",\n \"revenueGrowth\": 0.06562444797738916,\n \"grossProfitGrowth\": 0.022073091849935316,\n \"ebitgrowth\": 0.08183581124757595,\n \"operatingIncomeGrowth\": 0.08183581124757595,\n - \ \"netIncomeGrowth\": 0.09359430604982207,\n \"epsgrowth\": 0.09359418250058639,\n - \ \"epsdilutedGrowth\": 0.09359418250058639,\n \"weightedAverageSharesGrowth\": + \ \"netIncomeGrowth\": 0.09359430604982207,\n \"epsgrowth\": 0.09398496240601503,\n + \ \"epsdilutedGrowth\": 0.09398496240601503,\n \"weightedAverageSharesGrowth\": 0,\n \"weightedAverageSharesDilutedGrowth\": 0,\n \"dividendsperShareGrowth\": -0.6381150741994273,\n \"operatingCashFlowGrowth\": 0.20899573478092284,\n \ \"freeCashFlowGrowth\": 0.20985979194934418,\n \"tenYRevenueGrowthPerShare\": @@ -423,15 +423,15 @@ interactions: Connection: - close Content-Length: - - '33828' + - '33860' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:18 GMT + - Wed, 10 May 2023 22:06:30 GMT ETag: - - W/"8424-C/vFWHx5CFs6M1QkgSRsuyviOjQ" + - W/"8444-m0t76ohtIY0uDNVWd+fyVIG4UHs" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_income-kwargs_dict3].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_income-kwargs_dict3].yaml index e1a634f9ccf1..a16947160c43 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_income-kwargs_dict3].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_income-kwargs_dict3].yaml @@ -15,18 +15,18 @@ interactions: \ \"acceptedDate\": \"2023-02-10 08:20:35\",\n \"calendarYear\": \"2022\",\n \ \"period\": \"FY\",\n \"revenue\": 31762000000,\n \"costOfRevenue\": 11402000000,\n \"grossProfit\": 20360000000,\n \"grossProfitRatio\": - 0.6410175681632139,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 0.6410175682,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 8138000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 8138000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 8138000000,\n \ \"costAndExpenses\": 19540000000,\n \"interestIncome\": 180000000,\n - \ \"interestExpense\": 768000000,\n \"depreciationAndAmortization\": - 1189000000,\n \"ebitda\": 13591000000,\n \"ebitdaratio\": 0.42790126566337133,\n - \ \"operatingIncome\": 12222000000,\n \"operatingIncomeRatio\": 0.3662867577608463,\n - \ \"totalOtherIncomeExpensesNet\": 0,\n \"incomeBeforeTax\": 11634000000,\n - \ \"incomeBeforeTaxRatio\": 0.3662867577608463,\n \"incomeTaxExpense\": - 2244000000,\n \"netIncome\": 9048000000,\n \"netIncomeRatio\": 0.2848687110383477,\n - \ \"eps\": 5.81,\n \"epsdiluted\": 5.81,\n \"weightedAverageShsOut\": - 1557000000,\n \"weightedAverageShsOutDil\": 1557000000,\n \"link\": + \ \"interestExpense\": 588000000,\n \"depreciationAndAmortization\": + -24000000,\n \"ebitda\": 12222000000,\n \"ebitdaratio\": 0.3847994459,\n + \ \"operatingIncome\": 12246000000,\n \"operatingIncomeRatio\": 0.3855550658,\n + \ \"totalOtherIncomeExpensesNet\": -612000000,\n \"incomeBeforeTax\": + 11634000000,\n \"incomeBeforeTaxRatio\": 0.3662867578,\n \"incomeTaxExpense\": + 2244000000,\n \"netIncome\": 9048000000,\n \"netIncomeRatio\": 0.284868711,\n + \ \"eps\": 5.82,\n \"epsdiluted\": 5.81,\n \"weightedAverageShsOut\": + 1550000000,\n \"weightedAverageShsOutDil\": 1552000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/0001413329-23-000025-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332923000025/pm-20221231.htm\"\n \ },\n {\n \"date\": \"2021-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": @@ -34,16 +34,16 @@ interactions: \ \"acceptedDate\": \"2022-02-11 08:29:22\",\n \"calendarYear\": \"2021\",\n \ \"period\": \"FY\",\n \"revenue\": 31405000000,\n \"costOfRevenue\": 10030000000,\n \"grossProfit\": 21375000000,\n \"grossProfitRatio\": - 0.6806241044419679,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 0.6806241044,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 8419000000,\n \"sellingAndMarketingExpenses\": 8304000000,\n \"sellingGeneralAndAdministrativeExpenses\": - 8419000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 8515000000,\n - \ \"costAndExpenses\": 18545000000,\n \"interestIncome\": 109000000,\n - \ \"interestExpense\": 737000000,\n \"depreciationAndAmortization\": - 998000000,\n \"ebitda\": 13967000000,\n \"ebitdaratio\": 0.44473809902881706,\n - \ \"operatingIncome\": 12860000000,\n \"operatingIncomeRatio\": 0.38949211908931697,\n - \ \"totalOtherIncomeExpensesNet\": 0,\n \"incomeBeforeTax\": 12232000000,\n - \ \"incomeBeforeTaxRatio\": 0.38949211908931697,\n \"incomeTaxExpense\": - 2671000000,\n \"netIncome\": 9109000000,\n \"netIncomeRatio\": 0.29004935519821684,\n + 8419000000,\n \"otherExpenses\": 96000000,\n \"operatingExpenses\": + 8515000000,\n \"costAndExpenses\": 18545000000,\n \"interestIncome\": + 109000000,\n \"interestExpense\": 628000000,\n \"depreciationAndAmortization\": + -19000000,\n \"ebitda\": 12956000000,\n \"ebitdaratio\": 0.412545773,\n + \ \"operatingIncome\": 12975000000,\n \"operatingIncomeRatio\": 0.4131507722,\n + \ \"totalOtherIncomeExpensesNet\": -743000000,\n \"incomeBeforeTax\": + 12232000000,\n \"incomeBeforeTaxRatio\": 0.3894921191,\n \"incomeTaxExpense\": + 2671000000,\n \"netIncome\": 9109000000,\n \"netIncomeRatio\": 0.2900493552,\n \ \"eps\": 5.83,\n \"epsdiluted\": 5.83,\n \"weightedAverageShsOut\": 1558000000,\n \"weightedAverageShsOutDil\": 1559000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332922000011/0001413329-22-000011-index.htm\",\n @@ -53,16 +53,16 @@ interactions: \ \"acceptedDate\": \"2021-02-09 16:20:37\",\n \"calendarYear\": \"2020\",\n \ \"period\": \"FY\",\n \"revenue\": 28694000000,\n \"costOfRevenue\": 9569000000,\n \"grossProfit\": 19125000000,\n \"grossProfitRatio\": - 0.666515647870635,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 97000000,\n \"sellingAndMarketingExpenses\": 7384000000,\n \"sellingGeneralAndAdministrativeExpenses\": + 0.6665156479,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 7481000000,\n \"sellingAndMarketingExpenses\": 7384000000,\n \"sellingGeneralAndAdministrativeExpenses\": 7481000000,\n \"otherExpenses\": 73000000,\n \"operatingExpenses\": 7554000000,\n \"costAndExpenses\": 17123000000,\n \"interestIncome\": - 110000000,\n \"interestExpense\": 728000000,\n \"depreciationAndAmortization\": - 981000000,\n \"ebitda\": 12142000000,\n \"ebitdaratio\": 0.42315466648079736,\n - \ \"operatingIncome\": 11668000000,\n \"operatingIncomeRatio\": 0.4066355335610232,\n + 110000000,\n \"interestExpense\": 618000000,\n \"depreciationAndAmortization\": + -24000000,\n \"ebitda\": 11644000000,\n \"ebitdaratio\": 0.4057991218,\n + \ \"operatingIncome\": 11668000000,\n \"operatingIncomeRatio\": 0.4066355336,\n \ \"totalOtherIncomeExpensesNet\": -715000000,\n \"incomeBeforeTax\": - 10953000000,\n \"incomeBeforeTaxRatio\": 0.38171743221579424,\n \"incomeTaxExpense\": - 2377000000,\n \"netIncome\": 8056000000,\n \"netIncomeRatio\": 0.28075555865337704,\n + 10953000000,\n \"incomeBeforeTaxRatio\": 0.3817174322,\n \"incomeTaxExpense\": + 2377000000,\n \"netIncome\": 8056000000,\n \"netIncomeRatio\": 0.2807555587,\n \ \"eps\": 5.16,\n \"epsdiluted\": 5.16,\n \"weightedAverageShsOut\": 1557000000,\n \"weightedAverageShsOutDil\": 1558000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332921000007/0001413329-21-000007-index.htm\",\n @@ -72,16 +72,16 @@ interactions: \ \"acceptedDate\": \"2020-02-07 06:47:13\",\n \"calendarYear\": \"2019\",\n \ \"period\": \"FY\",\n \"revenue\": 29805000000,\n \"costOfRevenue\": 10513000000,\n \"grossProfit\": 19292000000,\n \"grossProfitRatio\": - 0.6472739473242745,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 8784000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": + 0.6472739473,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 8784000000,\n \"sellingAndMarketingExpenses\": 8695000000,\n \"sellingGeneralAndAdministrativeExpenses\": 8784000000,\n \"otherExpenses\": 66000000,\n \"operatingExpenses\": 8850000000,\n \"costAndExpenses\": 19363000000,\n \"interestIncome\": - 226000000,\n \"interestExpense\": 796000000,\n \"depreciationAndAmortization\": - 964000000,\n \"ebitda\": 11238000000,\n \"ebitdaratio\": 0.3770508303975843,\n - \ \"operatingIncome\": 10531000000,\n \"operatingIncomeRatio\": 0.3533299781915786,\n + 226000000,\n \"interestExpense\": 570000000,\n \"depreciationAndAmortization\": + -23000000,\n \"ebitda\": 10508000000,\n \"ebitdaratio\": 0.3525582956,\n + \ \"operatingIncome\": 10531000000,\n \"operatingIncomeRatio\": 0.3533299782,\n \ \"totalOtherIncomeExpensesNet\": -659000000,\n \"incomeBeforeTax\": - 9872000000,\n \"incomeBeforeTaxRatio\": 0.3312195940278477,\n \"incomeTaxExpense\": - 2293000000,\n \"netIncome\": 7185000000,\n \"netIncomeRatio\": 0.24106693507800706,\n + 9872000000,\n \"incomeBeforeTaxRatio\": 0.331219594,\n \"incomeTaxExpense\": + 2293000000,\n \"netIncome\": 7185000000,\n \"netIncomeRatio\": 0.2410669351,\n \ \"eps\": 4.61,\n \"epsdiluted\": 4.61,\n \"weightedAverageShsOut\": 1555000000,\n \"weightedAverageShsOutDil\": 1556000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332920000007/0001413329-20-000007-index.htm\",\n @@ -92,16 +92,16 @@ interactions: \ \"period\": \"FY\",\n \"revenue\": 29625000000,\n \"costOfRevenue\": 10758000000,\n \"grossProfit\": 18867000000,\n \"grossProfitRatio\": 0.6368607594936709,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": - 7449000000,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": + 7449000000,\n \"sellingAndMarketingExpenses\": 7408000000,\n \"sellingGeneralAndAdministrativeExpenses\": 7449000000,\n \"otherExpenses\": 82000000,\n \"operatingExpenses\": 7531000000,\n \"costAndExpenses\": 18289000000,\n \"interestIncome\": 190000000,\n \"interestExpense\": 855000000,\n \"depreciationAndAmortization\": 989000000,\n \"ebitda\": 12200000000,\n \"ebitdaratio\": 0.4118143459915612,\n \ \"operatingIncome\": 11377000000,\n \"operatingIncomeRatio\": 0.3840337552742616,\n - \ \"totalOtherIncomeExpensesNet\": -706000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -41000000,\n \"incomeBeforeTax\": 10671000000,\n \"incomeBeforeTaxRatio\": 0.36020253164556965,\n \"incomeTaxExpense\": 2445000000,\n \"netIncome\": 7911000000,\n \"netIncomeRatio\": 0.2670379746835443,\n - \ \"eps\": 5.08,\n \"epsdiluted\": 5.08,\n \"weightedAverageShsOut\": + \ \"eps\": 5.09,\n \"epsdiluted\": 5.09,\n \"weightedAverageShsOut\": 1555000000,\n \"weightedAverageShsOutDil\": 1555000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/0001413329-19-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm\"\n @@ -120,7 +120,7 @@ interactions: \ \"totalOtherIncomeExpensesNet\": -914000000,\n \"incomeBeforeTax\": 10589000000,\n \"incomeBeforeTaxRatio\": 0.36833866703770696,\n \"incomeTaxExpense\": 4307000000,\n \"netIncome\": 6035000000,\n \"netIncomeRatio\": 0.20992764714067066,\n - \ \"eps\": 3.88,\n \"epsdiluted\": 3.88,\n \"weightedAverageShsOut\": + \ \"eps\": 3.89,\n \"epsdiluted\": 3.89,\n \"weightedAverageShsOut\": 1552000000,\n \"weightedAverageShsOutDil\": 1553000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/0001413329-18-000007-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332918000007/pm123117form10kwrapinclfsm.htm\"\n @@ -139,7 +139,7 @@ interactions: \ \"totalOtherIncomeExpensesNet\": -891000000,\n \"incomeBeforeTax\": 9924000000,\n \"incomeBeforeTaxRatio\": 0.37189432265317596,\n \"incomeTaxExpense\": 2768000000,\n \"netIncome\": 6967000000,\n \"netIncomeRatio\": 0.2610830054337643,\n - \ \"eps\": 4.48,\n \"epsdiluted\": 4.48,\n \"weightedAverageShsOut\": + \ \"eps\": 4.49,\n \"epsdiluted\": 4.49,\n \"weightedAverageShsOut\": 1551000000,\n \"weightedAverageShsOutDil\": 1551000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/0001413329-17-000014-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332917000014/pm123116form10kwrapinclfsm.htm\"\n @@ -155,10 +155,10 @@ interactions: 124000000,\n \"interestExpense\": 1132000000,\n \"depreciationAndAmortization\": 754000000,\n \"ebitda\": 11447000000,\n \"ebitdaratio\": 0.42722251250279913,\n \ \"operatingIncome\": 10623000000,\n \"operatingIncomeRatio\": 0.3964693588116743,\n - \ \"totalOtherIncomeExpensesNet\": -1008000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -68000000,\n \"incomeBeforeTax\": 9615000000,\n \"incomeBeforeTaxRatio\": 0.3588489960438904,\n \"incomeTaxExpense\": 2688000000,\n \"netIncome\": 6873000000,\n \"netIncomeRatio\": 0.256512652086288,\n - \ \"eps\": 4.42,\n \"epsdiluted\": 4.42,\n \"weightedAverageShsOut\": + \ \"eps\": 4.44,\n \"epsdiluted\": 4.44,\n \"weightedAverageShsOut\": 1549000000,\n \"weightedAverageShsOutDil\": 1549000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/0001413329-16-000076-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332916000076/pm123115form10kwrapinclfsm.htm\"\n @@ -174,10 +174,10 @@ interactions: 118000000,\n \"interestExpense\": 1170000000,\n \"depreciationAndAmortization\": 889000000,\n \"ebitda\": 12649000000,\n \"ebitdaratio\": 0.42493365135888733,\n \ \"operatingIncome\": 11702000000,\n \"operatingIncomeRatio\": 0.39311989787348406,\n - \ \"totalOtherIncomeExpensesNet\": -1052000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -535000000,\n \"incomeBeforeTax\": 10650000000,\n \"incomeBeforeTaxRatio\": 0.35777874827829476,\n \"incomeTaxExpense\": 3097000000,\n \"netIncome\": 7493000000,\n \"netIncomeRatio\": 0.25172170524406223,\n - \ \"eps\": 4.76,\n \"epsdiluted\": 4.76,\n \"weightedAverageShsOut\": + \ \"eps\": 4.78,\n \"epsdiluted\": 4.78,\n \"weightedAverageShsOut\": 1566000000,\n \"weightedAverageShsOutDil\": 1566000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/0001413329-15-000016-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332915000016/pm12312014form10kwrapinclf.htm\"\n @@ -193,10 +193,10 @@ interactions: 131000000,\n \"interestExpense\": 1104000000,\n \"depreciationAndAmortization\": 882000000,\n \"ebitda\": 14232000000,\n \"ebitdaratio\": 0.45590543614056445,\n \ \"operatingIncome\": 13515000000,\n \"operatingIncomeRatio\": 0.432937181663837,\n - \ \"totalOtherIncomeExpensesNet\": -973000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -309000000,\n \"incomeBeforeTax\": 12542000000,\n \"incomeBeforeTaxRatio\": 0.4017682672902585,\n \"incomeTaxExpense\": 3670000000,\n \"netIncome\": 8576000000,\n \"netIncomeRatio\": 0.274722106544511,\n - \ \"eps\": 5.26,\n \"epsdiluted\": 5.26,\n \"weightedAverageShsOut\": + \ \"eps\": 5.29,\n \"epsdiluted\": 5.29,\n \"weightedAverageShsOut\": 1622000000,\n \"weightedAverageShsOutDil\": 1622000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/0001413329-14-000012-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332914000012/pm1231201310-k.htm\"\n @@ -212,10 +212,10 @@ interactions: 148000000,\n \"interestExpense\": 1007000000,\n \"depreciationAndAmortization\": 898000000,\n \"ebitda\": 14538000000,\n \"ebitdaratio\": 0.4633330146285496,\n \ \"operatingIncome\": 13846000000,\n \"operatingIncomeRatio\": 0.44127864359244034,\n - \ \"totalOtherIncomeExpensesNet\": -859000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -83000000,\n \"incomeBeforeTax\": 12987000000,\n \"incomeBeforeTaxRatio\": 0.41390190266755905,\n \"incomeTaxExpense\": 3833000000,\n \"netIncome\": 8800000000,\n \"netIncomeRatio\": 0.2804602097077477,\n - \ \"eps\": 5.17,\n \"epsdiluted\": 5.17,\n \"weightedAverageShsOut\": + \ \"eps\": 5.2,\n \"epsdiluted\": 5.2,\n \"weightedAverageShsOut\": 1692000000,\n \"weightedAverageShsOutDil\": 1692000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/0001413329-13-000019-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000141332913000019/pm1231201210-k.htm\"\n @@ -231,10 +231,10 @@ interactions: 134000000,\n \"interestExpense\": 934000000,\n \"depreciationAndAmortization\": 993000000,\n \"ebitda\": 14171000000,\n \"ebitdaratio\": 0.4557031224876998,\n \ \"operatingIncome\": 13332000000,\n \"operatingIncomeRatio\": 0.4287230279448178,\n - \ \"totalOtherIncomeExpensesNet\": -800000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -109000000,\n \"incomeBeforeTax\": 12532000000,\n \"incomeBeforeTaxRatio\": 0.40299707367270154,\n \"incomeTaxExpense\": 3653000000,\n \"netIncome\": 8591000000,\n \"netIncomeRatio\": 0.27626459143968873,\n - \ \"eps\": 4.977668,\n \"epsdiluted\": 4.977668,\n \"weightedAverageShsOut\": + \ \"eps\": 4.98,\n \"epsdiluted\": 4.98,\n \"weightedAverageShsOut\": 1725908666,\n \"weightedAverageShsOutDil\": 1725908666,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/0001193125-12-076983-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312512076983/d258717d10k.htm\"\n @@ -250,10 +250,10 @@ interactions: 98000000,\n \"interestExpense\": 974000000,\n \"depreciationAndAmortization\": 932000000,\n \"ebitda\": 11991000000,\n \"ebitdaratio\": 0.4407159658923846,\n \ \"operatingIncome\": 11200000000,\n \"operatingIncomeRatio\": 0.4116436342252279,\n - \ \"totalOtherIncomeExpensesNet\": -876000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -47000000,\n \"incomeBeforeTax\": 10324000000,\n \"incomeBeforeTaxRatio\": 0.379447221405469,\n \"incomeTaxExpense\": 2826000000,\n \"netIncome\": 7259000000,\n \"netIncomeRatio\": 0.26679653043222584,\n - \ \"eps\": 3.93,\n \"epsdiluted\": 3.92,\n \"weightedAverageShsOut\": + \ \"eps\": 3.95,\n \"epsdiluted\": 3.94,\n \"weightedAverageShsOut\": 1839000000,\n \"weightedAverageShsOutDil\": 1842000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/0001193125-11-046772-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312511046772/d10k.htm\"\n @@ -269,10 +269,10 @@ interactions: 0,\n \"interestExpense\": 797000000,\n \"depreciationAndAmortization\": 853000000,\n \"ebitda\": 10683000000,\n \"ebitdaratio\": 0.4267225883762732,\n \ \"operatingIncome\": 10040000000,\n \"operatingIncomeRatio\": 0.4010385460355502,\n - \ \"totalOtherIncomeExpensesNet\": -797000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -29000000,\n \"incomeBeforeTax\": 9243000000,\n \"incomeBeforeTaxRatio\": 0.36920311563810665,\n \"incomeTaxExpense\": 2691000000,\n \"netIncome\": 6342000000,\n \"netIncomeRatio\": 0.25332534451767524,\n - \ \"eps\": 3.25,\n \"epsdiluted\": 3.24,\n \"weightedAverageShsOut\": + \ \"eps\": 3.26,\n \"epsdiluted\": 3.25,\n \"weightedAverageShsOut\": 1943000000,\n \"weightedAverageShsOutDil\": 1950000000,\n \"link\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/0001193125-10-041735-index.htm\",\n \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312510041735/d10k.htm\"\n @@ -288,7 +288,7 @@ interactions: 217000000,\n \"interestExpense\": 528000000,\n \"depreciationAndAmortization\": 842000000,\n \"ebitda\": 11047000000,\n \"ebitdaratio\": 0.4297607469363937,\n \ \"operatingIncome\": 10248000000,\n \"operatingIncomeRatio\": 0.39867730013616026,\n - \ \"totalOtherIncomeExpensesNet\": -311000000,\n \"incomeBeforeTax\": + \ \"totalOtherIncomeExpensesNet\": -84000000,\n \"incomeBeforeTax\": 9937000000,\n \"incomeBeforeTaxRatio\": 0.386578486675744,\n \"incomeTaxExpense\": 2787000000,\n \"netIncome\": 6890000000,\n \"netIncomeRatio\": 0.26804123711340205,\n \ \"eps\": 3.33,\n \"epsdiluted\": 3.32,\n \"weightedAverageShsOut\": @@ -297,7 +297,7 @@ interactions: \ \"finalLink\": \"https://www.sec.gov/Archives/edgar/data/1413329/000119312509038765/d10k.htm\"\n \ },\n {\n \"date\": \"2007-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": \"2007-12-31\",\n - \ \"acceptedDate\": \"2007-12-30 19:00:00\",\n \"calendarYear\": \"2007\",\n + \ \"acceptedDate\": \"2007-12-31 00:00:00\",\n \"calendarYear\": \"2007\",\n \ \"period\": \"FY\",\n \"revenue\": 22798000000,\n \"costOfRevenue\": 8720000000,\n \"grossProfit\": 14078000000,\n \"grossProfitRatio\": 0.6175103079217475,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": @@ -307,51 +307,51 @@ interactions: 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 748000000,\n \ \"ebitda\": 9338000000,\n \"ebitdaratio\": 0.40959733309939467,\n \"operatingIncome\": 8873000000,\n \"operatingIncomeRatio\": 0.3892008070883411,\n \"totalOtherIncomeExpensesNet\": - -10000000,\n \"incomeBeforeTax\": 8863000000,\n \"incomeBeforeTaxRatio\": + -156000000,\n \"incomeBeforeTax\": 8863000000,\n \"incomeBeforeTaxRatio\": 0.38876217212036146,\n \"incomeTaxExpense\": 2564000000,\n \"netIncome\": 6026000000,\n \"netIncomeRatio\": 0.2643214317045355,\n \"eps\": 2.87,\n \ \"epsdiluted\": 2.85,\n \"weightedAverageShsOut\": 2101000000,\n \"weightedAverageShsOutDil\": - 2116000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n },\n {\n \"date\": + 2116000000,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": \"2006-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2006-12-31\",\n \"acceptedDate\": - \"2006-12-30 19:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": + \"2006-12-31 00:00:00\",\n \"calendarYear\": \"2006\",\n \"period\": \"FY\",\n \"revenue\": 48260000000,\n \"costOfRevenue\": 35619000000,\n \ \"grossProfit\": 12641000000,\n \"grossProfitRatio\": 0.26193535018648983,\n \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": - 4574000000,\n \"otherExpenses\": -301000000,\n \"operatingExpenses\": - 4273000000,\n \"costAndExpenses\": 39892000000,\n \"interestIncome\": - 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 658000000,\n - \ \"ebitda\": 8633000000,\n \"ebitdaratio\": 0.17888520513883133,\n \"operatingIncome\": - 8368000000,\n \"operatingIncomeRatio\": 0.17339411520928305,\n \"totalOtherIncomeExpensesNet\": - -142000000,\n \"incomeBeforeTax\": 8226000000,\n \"incomeBeforeTaxRatio\": + 4574000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 4574000000,\n + \ \"costAndExpenses\": 39892000000,\n \"interestIncome\": 0,\n \"interestExpense\": + 0,\n \"depreciationAndAmortization\": 658000000,\n \"ebitda\": 8633000000,\n + \ \"ebitdaratio\": 0.17888520513883133,\n \"operatingIncome\": 8368000000,\n + \ \"operatingIncomeRatio\": 0.17339411520928305,\n \"totalOtherIncomeExpensesNet\": + 301000000,\n \"incomeBeforeTax\": 8226000000,\n \"incomeBeforeTaxRatio\": 0.17045171985080812,\n \"incomeTaxExpense\": 1829000000,\n \"netIncome\": - 6146000000,\n \"netIncomeRatio\": 0.12735184417737255,\n \"eps\": 2.913745,\n - \ \"epsdiluted\": 2.913745,\n \"weightedAverageShsOut\": 2109313033,\n - \ \"weightedAverageShsOutDil\": 2109313033,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2005-12-31\",\n \"symbol\": \"PM\",\n - \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2005-12-31\",\n \"acceptedDate\": \"2005-12-30 19:00:00\",\n \"calendarYear\": - \"2005\",\n \"period\": \"FY\",\n \"revenue\": 45288000000,\n \"costOfRevenue\": - 32920000000,\n \"grossProfit\": 12368000000,\n \"grossProfitRatio\": - 0.2730966260378025,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 6146000000,\n \"netIncomeRatio\": 0.12735184417737255,\n \"eps\": 2.91,\n + \ \"epsdiluted\": 2.91,\n \"weightedAverageShsOut\": 2109313033,\n \"weightedAverageShsOutDil\": + 2109313033,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": + \"2005-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n + \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2005-12-31\",\n \"acceptedDate\": + \"2005-12-31 00:00:00\",\n \"calendarYear\": \"2005\",\n \"period\": + \"FY\",\n \"revenue\": 45288000000,\n \"costOfRevenue\": 32920000000,\n + \ \"grossProfit\": 12368000000,\n \"grossProfitRatio\": 0.2730966260378025,\n + \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 4543000000,\n \"otherExpenses\": 90000000,\n \"operatingExpenses\": 4633000000,\n \"costAndExpenses\": 37553000000,\n \"interestIncome\": 0,\n \"interestExpense\": 0,\n \"depreciationAndAmortization\": 527000000,\n \ \"ebitda\": 7982000000,\n \"ebitdaratio\": 0.17624977919095566,\n \"operatingIncome\": 7735000000,\n \"operatingIncomeRatio\": 0.1707957957957958,\n \"totalOtherIncomeExpensesNet\": - -94000000,\n \"incomeBeforeTax\": 7641000000,\n \"incomeBeforeTaxRatio\": + -90000000,\n \"incomeBeforeTax\": 7641000000,\n \"incomeBeforeTaxRatio\": 0.16872019077901432,\n \"incomeTaxExpense\": 1835000000,\n \"netIncome\": - 5620000000,\n \"netIncomeRatio\": 0.12409468291821232,\n \"eps\": 2.664375,\n - \ \"epsdiluted\": 2.664375,\n \"weightedAverageShsOut\": 2109313033,\n - \ \"weightedAverageShsOutDil\": 2109313033,\n \"link\": \"\",\n \"finalLink\": - \"\"\n },\n {\n \"date\": \"2003-12-31\",\n \"symbol\": \"PM\",\n - \ \"reportedCurrency\": \"USD\",\n \"cik\": \"0001413329\",\n \"fillingDate\": - \"2003-12-31\",\n \"acceptedDate\": \"2003-12-30 19:00:00\",\n \"calendarYear\": - \"2003\",\n \"period\": \"FY\",\n \"revenue\": 33389000000,\n \"costOfRevenue\": - 23821000000,\n \"grossProfit\": 9568000000,\n \"grossProfitRatio\": - 0.2865614423912067,\n \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": + 5620000000,\n \"netIncomeRatio\": 0.12409468291821232,\n \"eps\": 2.66,\n + \ \"epsdiluted\": 2.66,\n \"weightedAverageShsOut\": 2109313033,\n \"weightedAverageShsOutDil\": + 2109313033,\n \"link\": null,\n \"finalLink\": null\n },\n {\n \"date\": + \"2003-12-31\",\n \"symbol\": \"PM\",\n \"reportedCurrency\": \"USD\",\n + \ \"cik\": \"0001413329\",\n \"fillingDate\": \"2003-12-31\",\n \"acceptedDate\": + \"2003-12-31 00:00:00\",\n \"calendarYear\": \"2003\",\n \"period\": + \"FY\",\n \"revenue\": 33389000000,\n \"costOfRevenue\": 23821000000,\n + \ \"grossProfit\": 9568000000,\n \"grossProfitRatio\": 0.2865614423912067,\n + \ \"researchAndDevelopmentExpenses\": 0,\n \"generalAndAdministrativeExpenses\": 0,\n \"sellingAndMarketingExpenses\": 0,\n \"sellingGeneralAndAdministrativeExpenses\": 3372000000,\n \"otherExpenses\": 0,\n \"operatingExpenses\": 3372000000,\n \ \"costAndExpenses\": 27193000000,\n \"interestIncome\": 0,\n \"interestExpense\": @@ -362,7 +362,7 @@ interactions: 0.1860792476564138,\n \"incomeTaxExpense\": 2090000000,\n \"netIncome\": 3975000000,\n \"netIncomeRatio\": 0.11905118452184851,\n \"eps\": 1.96,\n \ \"epsdiluted\": 1.95,\n \"weightedAverageShsOut\": 2028000000,\n \"weightedAverageShsOutDil\": - 2038000000,\n \"link\": \"\",\n \"finalLink\": \"\"\n }\n]" + 2038000000,\n \"link\": null,\n \"finalLink\": null\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -378,15 +378,15 @@ interactions: Connection: - close Content-Length: - - '27901' + - '27787' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:13 GMT + - Wed, 10 May 2023 22:06:28 GMT ETag: - - W/"6cfd-4PEYPFcfGFtjPUhmx+H6jpfUIm0" + - W/"6c8b-BqaDFjohTq+NUk7gJlxKuic/RRA" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_metrics-kwargs_dict6].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_metrics-kwargs_dict6].yaml index 7354f96bb3a1..4c47d4ca4f5e 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_metrics-kwargs_dict6].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_metrics-kwargs_dict6].yaml @@ -10,59 +10,60 @@ interactions: uri: https://financialmodelingprep.com/api/v3/key-metrics/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-09-30\",\n \"period\": - \"FY\",\n \"revenuePerShare\": 20.399486191393706,\n \"netIncomePerShare\": - 5.8111753371868975,\n \"operatingCashFlowPerShare\": 6.938342967244702,\n - \ \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": 3.447655748233783,\n - \ \"bookValuePerShare\": -5.868336544637122,\n \"tangibleBookValuePerShare\": - -10.118175979447656,\n \"shareholdersEquityPerShare\": -5.868336544637122,\n - \ \"interestDebtPerShare\": 16.280025690430314,\n \"marketCap\": 129246570000.00002,\n - \ \"enterpriseValue\": 148458570000,\n \"peRatio\": 14.284545755968171,\n - \ \"priceToSalesRatio\": 4.069220137270953,\n \"pocfratio\": 11.963951680088865,\n - \ \"pfcfRatio\": 13.28876927822332,\n \"pbRatio\": -14.145405494144688,\n - \ \"ptbRatio\": -14.145405494144688,\n \"evToSales\": 4.674093885775455,\n - \ \"enterpriseValueOverEBITDA\": 10.923299977926568,\n \"evToOperatingCashFlow\": - 13.742346570397112,\n \"evToFreeCashFlow\": 15.264093152375077,\n \"earningsYield\": - 0.07000572626414765,\n \"freeCashFlowYield\": 0.07525151344441867,\n \"debtToEquity\": - -5.26649885082631,\n \"debtToAssets\": 1.1818159491121645,\n \"netDebtToEBITDA\": - 1.41358251784269,\n \"currentRatio\": 1.9048970901348474,\n \"interestCoverage\": - 15.9140625,\n \"incomeQuality\": 1.1339351317308701,\n \"dividendYield\": - 0.06044260981161821,\n \"payoutRatio\": 0.863395225464191,\n \"salesGeneralAndAdministrativeToRevenue\": - 0.2562181222844909,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": - 0.20509860746125697,\n \"capexToOperatingCashFlow\": -0.09969452929741739,\n - \ \"capexToRevenue\": -0.03390844405264152,\n \"capexToDepreciation\": + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": + \"FY\",\n \"revenuePerShare\": 20.491612903225807,\n \"netIncomePerShare\": + 5.83741935483871,\n \"operatingCashFlowPerShare\": 6.969677419354839,\n + \ \"freeCashFlowPerShare\": 6.274838709677419,\n \"cashPerShare\": 2.069032258064516,\n + \ \"bookValuePerShare\": -5.7787096774193545,\n \"tangibleBookValuePerShare\": + -21.09548387096774,\n \"shareholdersEquityPerShare\": -5.7787096774193545,\n + \ \"interestDebtPerShare\": 28.20064516129032,\n \"marketCap\": 156875500000,\n + \ \"enterpriseValue\": 196791500000,\n \"peRatio\": 17.338141025641022,\n + \ \"priceToSalesRatio\": 4.939093885775455,\n \"pocfratio\": 14.521475516060352,\n + \ \"pfcfRatio\": 16.12949825210775,\n \"pbRatio\": -17.51429049905102,\n + \ \"ptbRatio\": -17.51429049905102,\n \"evToSales\": 6.195815754675398,\n + \ \"enterpriseValueOverEBITDA\": 16.10141548028146,\n \"evToOperatingCashFlow\": + 18.21637508099602,\n \"evToFreeCashFlow\": 20.233549249434507,\n \"earningsYield\": + 0.057676310195027274,\n \"freeCashFlowYield\": 0.061998208770649335,\n + \ \"debtToEquity\": -7.5909344646645085,\n \"debtToAssets\": 1.1023167588074123,\n + \ \"netDebtToEBITDA\": 3.26591392570774,\n \"currentRatio\": 0.7176982733391865,\n + \ \"interestCoverage\": 20.8265306122449,\n \"incomeQuality\": 1.1339351317308701,\n + \ \"dividendYield\": 0.049797450844778185,\n \"payoutRatio\": 0.863395225464191,\n + \ \"salesGeneralAndAdministrativeToRevenue\": 0.2562181222844909,\n \"researchAndDdevelopementToRevenue\": + 0,\n \"intangiblesToTotalAssets\": 0.42779786319936447,\n \"capexToOperatingCashFlow\": + -0.09969452929741739,\n \"capexToRevenue\": -0.03390844405264152,\n \"capexToDepreciation\": -0.9058031959629941,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 27.700062878383978,\n \"roic\": 0.32248872001899787,\n \"returnOnTangibleAssets\": - 0.27955261694370637,\n \"grahamNetNet\": -27.457931920359666,\n \"workingCapital\": - 2550000000,\n \"tangibleAssetValue\": -15754000000,\n \"netCurrentAssetValue\": - -42752000000,\n \"investedCapital\": -2.6901608843165152,\n \"averageReceivables\": - 1970000000,\n \"averagePayables\": 1665500000,\n \"averageInventory\": - 4360000000,\n \"daysSalesOutstanding\": 0,\n \"daysPayablesOutstanding\": - 0,\n \"daysOfInventoryOnHand\": 0,\n \"receivablesTurnover\": 0,\n \"payablesTurnover\": - 0,\n \"inventoryTurnover\": 0,\n \"roe\": -0.9902593849184634,\n \"capexPerShare\": - -0.6917148362235067\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n + 27.54971712434873,\n \"roic\": 0.19307994856988234,\n \"returnOnTangibleAssets\": + 0.2563608545361818,\n \"grahamNetNet\": -36.306451612903224,\n \"workingCapital\": + -7717000000,\n \"tangibleAssetValue\": -32698000000,\n \"netCurrentAssetValue\": + -48373000000,\n \"investedCapital\": -4.814446801384392,\n \"averageReceivables\": + 4348000000,\n \"averagePayables\": 3703500000,\n \"averageInventory\": + 9303000000,\n \"daysSalesOutstanding\": 54.65461872678043,\n \"daysPayablesOutstanding\": + 130.48061743553762,\n \"daysOfInventoryOnHand\": 316.4699175583231,\n \"receivablesTurnover\": + 6.678301093355761,\n \"payablesTurnover\": 2.797350343473994,\n \"inventoryTurnover\": + 1.1533481691280598,\n \"roe\": -1.0101596516690856,\n \"capexPerShare\": + -0.6948387096774193\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \ \"period\": \"FY\",\n \"revenuePerShare\": 20.157252888318357,\n \"netIncomePerShare\": 5.846598202824134,\n \"operatingCashFlowPerShare\": 7.681001283697047,\n \ \"freeCashFlowPerShare\": 7.200898587933247,\n \"cashPerShare\": 2.8857509627727858,\n \ \"bookValuePerShare\": -6.486521181001284,\n \"tangibleBookValuePerShare\": -11.364569961489089,\n \"shareholdersEquityPerShare\": -6.486521181001284,\n - \ \"interestDebtPerShare\": 18.320282413350448,\n \"marketCap\": 148010000000,\n + \ \"interestDebtPerShare\": 18.250320924261874,\n \"marketCap\": 148010000000,\n \ \"enterpriseValue\": 171320000000,\n \"peRatio\": 16.24876495773411,\n \ \"priceToSalesRatio\": 4.712943798758159,\n \"pocfratio\": 12.368179159354893,\n \ \"pfcfRatio\": 13.192797932079507,\n \"pbRatio\": -14.645754997031466,\n \ \"ptbRatio\": -14.645754997031466,\n \"evToSales\": 5.455182295812769,\n - \ \"enterpriseValueOverEBITDA\": 12.266055702727858,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 13.223217042297005,\n \"evToOperatingCashFlow\": 14.316035765020473,\n \"evToFreeCashFlow\": 15.270523219538283,\n \"earningsYield\": 0.061543138977096144,\n \"freeCashFlowYield\": 0.0757989325045605,\n \"debtToEquity\": -4.897882446071641,\n \"debtToAssets\": 1.198789053039477,\n \"netDebtToEBITDA\": - 1.6689339156583376,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": - 17.44911804613297,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": + 1.7991664093856128,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": + 20.660828025477706,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": 0.05121275589487197,\n \"payoutRatio\": 0.8321440333735866,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2680783314758796,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23003148462097361,\n \"capexToOperatingCashFlow\": -0.06250522269574664,\n \ \"capexToRevenue\": -0.023817863397548163,\n \"capexToDepreciation\": -0.749498997995992,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.211160012690573,\n \"roic\": 0.5836169729975039,\n \"returnOnTangibleAssets\": + 29.211160012690573,\n \"roic\": 0.35011417392195887,\n \"returnOnTangibleAssets\": 0.2865186210367388,\n \"grahamNetNet\": -24.189345314505776,\n \"workingCapital\": -1538000000,\n \"tangibleAssetValue\": -17706000000,\n \"netCurrentAssetValue\": -31781000000,\n \"investedCapital\": -2.7514347912131405,\n \"averageReceivables\": @@ -77,23 +78,23 @@ interactions: \ \"freeCashFlowPerShare\": 5.9152215799614645,\n \"cashPerShare\": 4.675658317276814,\n \ \"bookValuePerShare\": -8.071290944123314,\n \"tangibleBookValuePerShare\": -11.955041746949261,\n \"shareholdersEquityPerShare\": -8.071290944123314,\n - \ \"interestDebtPerShare\": 20.72190109184329,\n \"marketCap\": 128904030000.00002,\n + \ \"interestDebtPerShare\": 20.65125240847784,\n \"marketCap\": 128904030000.00002,\n \ \"enterpriseValue\": 153160030000,\n \"peRatio\": 16.000996772591858,\n \ \"priceToSalesRatio\": 4.49236878789991,\n \"pocfratio\": 13.137385854056259,\n \ \"pfcfRatio\": 13.996094462540718,\n \"pbRatio\": -10.25734304129864,\n \ \"ptbRatio\": -10.25734304129864,\n \"evToSales\": 5.33770230710253,\n - \ \"enterpriseValueOverEBITDA\": 12.614069346071487,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 13.15355805565098,\n \"evToOperatingCashFlow\": 15.60946086424786,\n \"evToFreeCashFlow\": 16.629753528773072,\n \"earningsYield\": 0.062496106599615235,\n \"freeCashFlowYield\": 0.0714485032004042,\n \"debtToEquity\": -4.412031511100501,\n \"debtToAssets\": 1.2372196809104095,\n \"netDebtToEBITDA\": - 1.9976939548674024,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": - 16.02747252747253,\n \"incomeQuality\": 1.217974180734856,\n \"dividendYield\": + 2.0831329440054964,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": + 18.880258899676374,\n \"incomeQuality\": 1.1419925512104283,\n \"dividendYield\": 0.05712777172288562,\n \"payoutRatio\": 0.9141012909632572,\n \"salesGeneralAndAdministrativeToRevenue\": - 0.0033804976650170767,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.26071652610301804,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.17813232176726543,\n \"capexToOperatingCashFlow\": -0.06135344476151651,\n \ \"capexToRevenue\": -0.020979995817941032,\n \"capexToDepreciation\": -0.6136595310907238,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 30.65336685433772,\n \"roic\": 0.463015873015873,\n \"returnOnTangibleAssets\": + 30.65336685433772,\n \"roic\": 0.3325143588533254,\n \"returnOnTangibleAssets\": 0.2187228496959166,\n \"grahamNetNet\": -26.043513166345537,\n \"workingCapital\": 1877000000,\n \"tangibleAssetValue\": -18614000000,\n \"netCurrentAssetValue\": -33954000000,\n \"investedCapital\": -2.5094294581045595,\n \"averageReceivables\": @@ -108,23 +109,23 @@ interactions: \ \"freeCashFlowPerShare\": 5.940836012861737,\n \"cashPerShare\": 4.412218649517685,\n \ \"bookValuePerShare\": -7.445016077170418,\n \"tangibleBookValuePerShare\": -11.29903536977492,\n \"shareholdersEquityPerShare\": -7.445016077170418,\n - \ \"interestDebtPerShare\": 20.47652733118971,\n \"marketCap\": 132314950000,\n + \ \"interestDebtPerShare\": 20.331189710610932,\n \"marketCap\": 132314950000,\n \ \"enterpriseValue\": 156498950000,\n \"peRatio\": 18.41544189283229,\n \ \"priceToSalesRatio\": 4.439354135212213,\n \"pocfratio\": 13.113473736372647,\n \ \"pfcfRatio\": 14.322899978350293,\n \"pbRatio\": -11.429122397857821,\n \ \"ptbRatio\": -11.429122397857821,\n \"evToSales\": 5.250761617178326,\n - \ \"enterpriseValueOverEBITDA\": 13.925872041288486,\n \"evToOperatingCashFlow\": + \ \"enterpriseValueOverEBITDA\": 14.893314617434335,\n \"evToOperatingCashFlow\": 15.510302279484637,\n \"evToFreeCashFlow\": 16.9407826369344,\n \"earningsYield\": 0.0543022538269485,\n \"freeCashFlowYield\": 0.06981826316678501,\n \"debtToEquity\": -4.5326077567590914,\n \"debtToAssets\": 1.2238833819241983,\n \"netDebtToEBITDA\": - 2.1519843388503292,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": - 13.229899497487438,\n \"incomeQuality\": 1.4043145441892833,\n \"dividendYield\": + 2.301484583174724,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": + 18.475438596491227,\n \"incomeQuality\": 1.3056418219461698,\n \"dividendYield\": 0.054120868427944085,\n \"payoutRatio\": 0.9966597077244259,\n \"salesGeneralAndAdministrativeToRevenue\": 0.29471565173628583,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.1859125364431487,\n \"capexToOperatingCashFlow\": -0.0844400396432111,\n \ \"capexToRevenue\": -0.028585807750377452,\n \"capexToDepreciation\": -0.8838174273858921,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 27.82097004066496,\n \"roic\": 0.4380251227019383,\n \"returnOnTangibleAssets\": + 27.82097004066496,\n \"roic\": 0.301069934832196,\n \"returnOnTangibleAssets\": 0.20585033234013295,\n \"grahamNetNet\": -24.57090032154341,\n \"workingCapital\": 1681000000,\n \"tangibleAssetValue\": -17570000000,\n \"netCurrentAssetValue\": -31960000000,\n \"investedCapital\": -2.6816100889695087,\n \"averageReceivables\": @@ -149,13 +150,13 @@ interactions: 0.076205209812372,\n \"freeCashFlowYield\": 0.07746710874871642,\n \"debtToEquity\": -4.056505337507023,\n \"debtToAssets\": 1.2698173412728324,\n \"netDebtToEBITDA\": 2.0627868852459015,\n \"currentRatio\": 1.130940608457914,\n \"interestCoverage\": - 13.306432748538011,\n \"incomeQuality\": 1.1980786246997852,\n \"dividendYield\": + 13.306432748538011,\n \"incomeQuality\": 1.1438571083755733,\n \"dividendYield\": 0.06632194028039201,\n \"payoutRatio\": 0.8703071672354948,\n \"salesGeneralAndAdministrativeToRevenue\": 0.25144303797468354,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23785834526770683,\n \"capexToOperatingCashFlow\": -0.15150875712175566,\n \ \"capexToRevenue\": -0.04847257383966245,\n \"capexToDepreciation\": -1.4519716885743175,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 30.284342617274454,\n \"roic\": 0.5031844316674038,\n \"returnOnTangibleAssets\": + 30.284342617274454,\n \"roic\": 0.3572834675767127,\n \"returnOnTangibleAssets\": 0.260796466011736,\n \"grahamNetNet\": -23.711897106109326,\n \"workingCapital\": 2251000000,\n \"tangibleAssetValue\": -20206000000,\n \"netCurrentAssetValue\": -31098000000,\n \"investedCapital\": -2.5490809856328758,\n \"averageReceivables\": @@ -180,13 +181,13 @@ interactions: 0.03680578256351208,\n \"freeCashFlowYield\": 0.044910983065070915,\n \"debtToEquity\": -4.401621711070661,\n \"debtToAssets\": 1.2380841556507167,\n \"netDebtToEBITDA\": 2.102818159668643,\n \"currentRatio\": 1.3528379902267886,\n \"interestCoverage\": - 10.495437956204379,\n \"incomeQuality\": 1.4767191383595692,\n \"dividendYield\": + 10.495437956204379,\n \"incomeQuality\": 1.405456552594228,\n \"dividendYield\": 0.03976366235527735,\n \"payoutRatio\": 1.0803645401822701,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2339293168220398,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.23501210202941725,\n \"capexToOperatingCashFlow\": -0.1736983842010772,\n \ \"capexToRevenue\": -0.05384722415472381,\n \"capexToDepreciation\": -1.7691428571428571,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 26.102341921297114,\n \"roic\": 0.4259423831741095,\n \"returnOnTangibleAssets\": + 26.102341921297114,\n \"roic\": 0.28634764343891045,\n \"returnOnTangibleAssets\": 0.18360206875570428,\n \"grahamNetNet\": -24.19104381443299,\n \"workingCapital\": 5632000000,\n \"tangibleAssetValue\": -20328000000,\n \"netCurrentAssetValue\": -31604000000,\n \"investedCapital\": -2.84122124772464,\n \"averageReceivables\": @@ -211,13 +212,13 @@ interactions: 0.04909761376576725,\n \"freeCashFlowYield\": 0.04866068940040517,\n \"debtToEquity\": -3.7634773013871374,\n \"debtToAssets\": 1.2957857317304822,\n \"netDebtToEBITDA\": 2.150168875032476,\n \"currentRatio\": 1.0692900953421995,\n \"interestCoverage\": - 10.116931711880262,\n \"incomeQuality\": 1.1593225204535669,\n \"dividendYield\": + 10.116931711880262,\n \"incomeQuality\": 1.1140689655172413,\n \"dividendYield\": 0.044946832294827536,\n \"payoutRatio\": 0.9154585904980623,\n \"salesGeneralAndAdministrativeToRevenue\": 0.24002248454187747,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.26577297766682045,\n \"capexToOperatingCashFlow\": -0.14510337996780984,\n \ \"capexToRevenue\": -0.0439198051339704,\n \"capexToDepreciation\": -1.5773889636608345,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 28.754045226644966,\n \"roic\": 0.5305631868131868,\n \"returnOnTangibleAssets\": + 28.754045226644966,\n \"roic\": 0.2920014403245321,\n \"returnOnTangibleAssets\": 0.2574934397752892,\n \"grahamNetNet\": -23.45535138620245,\n \"workingCapital\": 1141000000,\n \"tangibleAssetValue\": -20694000000,\n \"netCurrentAssetValue\": -30143000000,\n \"investedCapital\": -2.290904791929382,\n \"averageReceivables\": @@ -242,13 +243,13 @@ interactions: 0.05047271260684695,\n \"freeCashFlowYield\": 0.05070770850433263,\n \"debtToEquity\": -3.4303835699184537,\n \"debtToAssets\": 1.3379667805395217,\n \"netDebtToEBITDA\": 2.1894819603389535,\n \"currentRatio\": 1.0271675549200572,\n \"interestCoverage\": - 9.384275618374557,\n \"incomeQuality\": 1.1443328968427178,\n \"dividendYield\": + 9.384275618374557,\n \"incomeQuality\": 1.1184584755403868,\n \"dividendYield\": 0.045897636227672546,\n \"payoutRatio\": 0.9093554488578496,\n \"salesGeneralAndAdministrativeToRevenue\": 0.24841382399044562,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.2956178584049947,\n \"capexToOperatingCashFlow\": -0.12205975842339478,\n \ \"capexToRevenue\": -0.035828916921698886,\n \"capexToDepreciation\": -1.273209549071618,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.216124012545766,\n \"roic\": 0.5720516962843296,\n \"returnOnTangibleAssets\": + 29.216124012545766,\n \"roic\": 0.29625673797129565,\n \"returnOnTangibleAssets\": 0.28735680240822814,\n \"grahamNetNet\": -23.043899289864427,\n \"workingCapital\": 418000000,\n \"tangibleAssetValue\": -21514000000,\n \"netCurrentAssetValue\": -29628000000,\n \"investedCapital\": -2.1504077318030808,\n \"averageReceivables\": @@ -273,13 +274,13 @@ interactions: 0.05874526756811213,\n \"freeCashFlowYield\": 0.0516343697055367,\n \"debtToEquity\": -3.6732916303745347,\n \"debtToAssets\": 1.3183846306874698,\n \"netDebtToEBITDA\": 2.195667641710807,\n \"currentRatio\": 1.024616199047115,\n \"interestCoverage\": - 10.001709401709402,\n \"incomeQuality\": 1.0328306419324702,\n \"dividendYield\": + 10.001709401709402,\n \"incomeQuality\": 1.0105771741969183,\n \"dividendYield\": 0.04731451885407136,\n \"payoutRatio\": 0.805418390497798,\n \"salesGeneralAndAdministrativeToRevenue\": 0.23519333490106495,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3232159604399352,\n \"capexToOperatingCashFlow\": -0.14898565706163586,\n \ \"capexToRevenue\": -0.03873416871031679,\n \"capexToDepreciation\": -1.296962879640045,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 29.465366628493165,\n \"roic\": 0.5829140722291407,\n \"returnOnTangibleAssets\": + 29.465366628493165,\n \"roic\": 0.27138028107605555,\n \"returnOnTangibleAssets\": 0.31464684639287815,\n \"grahamNetNet\": -23.8882503192848,\n \"workingCapital\": 372000000,\n \"tangibleAssetValue\": -22576000000,\n \"netCurrentAssetValue\": -30906000000,\n \"investedCapital\": -2.332330350779951,\n \"averageReceivables\": @@ -304,13 +305,13 @@ interactions: 0.06068288339362232,\n \"freeCashFlowYield\": 0.06322313002822008,\n \"debtToEquity\": -5.72263713623487,\n \"debtToAssets\": 1.164378536994341,\n \"netDebtToEBITDA\": 1.7934232715008431,\n \"currentRatio\": 0.9874604476737373,\n \"interestCoverage\": - 12.241847826086957,\n \"incomeQuality\": 1.181786380597015,\n \"dividendYield\": + 12.241847826086957,\n \"incomeQuality\": 1.1451977401129942,\n \"dividendYield\": 0.040474124651529816,\n \"payoutRatio\": 0.6669776119402985,\n \"salesGeneralAndAdministrativeToRevenue\": 0.22071307300509338,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.31665269335569063,\n \"capexToOperatingCashFlow\": -0.11840157868771584,\n \ \"capexToRevenue\": -0.038440593266489416,\n \"capexToDepreciation\": -1.3605442176870748,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 23.86610178353917,\n \"roic\": 0.6404606198464601,\n \"returnOnTangibleAssets\": + 23.86610178353917,\n \"roic\": 0.29338623477188086,\n \"returnOnTangibleAssets\": 0.3288091404033433,\n \"grahamNetNet\": -21.254778051787916,\n \"workingCapital\": -214000000,\n \"tangibleAssetValue\": -18360000000,\n \"netCurrentAssetValue\": -27590000000,\n \"investedCapital\": -3.563996909605975,\n \"averageReceivables\": @@ -324,7 +325,7 @@ interactions: 5.200945626477542,\n \"operatingCashFlowPerShare\": 5.567966903073286,\n \ \"freeCashFlowPerShare\": 4.943853427895981,\n \"cashPerShare\": 1.7630023640661938,\n \ \"bookValuePerShare\": -2.054373522458629,\n \"tangibleBookValuePerShare\": - -9.85401891252955,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n + -9.085106382978724,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n \ \"interestDebtPerShare\": 14.09338061465721,\n \"marketCap\": 141518880000,\n \ \"enterpriseValue\": 161374880000,\n \"peRatio\": 16.08169090909091,\n \ \"priceToSalesRatio\": 4.510274404818817,\n \"pocfratio\": 15.021641014754273,\n @@ -333,18 +334,18 @@ interactions: \ \"enterpriseValueOverEBITDA\": 11.100211858577522,\n \"evToOperatingCashFlow\": 17.129272900965926,\n \"evToFreeCashFlow\": 19.29167722653915,\n \"earningsYield\": 0.06218251585936803,\n \"freeCashFlowYield\": 0.059108721041319714,\n \"debtToEquity\": - -11.744533947065593,\n \"debtToAssets\": 1.0837271037961242,\n \"netDebtToEBITDA\": + -11.370253164556962,\n \"debtToAssets\": 1.0491903371383065,\n \"netDebtToEBITDA\": 1.3657999724858991,\n \"currentRatio\": 0.9749647390691114,\n \"interestCoverage\": - 13.749751737835155,\n \"incomeQuality\": 1.0705681818181818,\n \"dividendYield\": + 13.749751737835155,\n \"incomeQuality\": 1.0291675770155124,\n \"dividendYield\": 0.03818571769363918,\n \"payoutRatio\": 0.6140909090909091,\n \"salesGeneralAndAdministrativeToRevenue\": 0.2223921981068936,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.35887974515529597,\n \"capexToOperatingCashFlow\": -0.11209001167604288,\n \ \"capexToRevenue\": -0.03365522516492973,\n \"capexToDepreciation\": -1.175946547884187,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 15.505012486373738,\n \"roic\": 0.6703786191536748,\n \"returnOnTangibleAssets\": - 0.3643741459980953,\n \"grahamNetNet\": -18.12928486997636,\n \"workingCapital\": - -426000000,\n \"tangibleAssetValue\": -16673000000,\n \"netCurrentAssetValue\": - -24234000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": + 15.505012486373738,\n \"roic\": 0.31892662421076523,\n \"returnOnTangibleAssets\": + 0.3643741459980953,\n \"grahamNetNet\": -17.36037234042553,\n \"workingCapital\": + -426000000,\n \"tangibleAssetValue\": -15372000000,\n \"netCurrentAssetValue\": + -22933000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": 3395000000,\n \"averagePayables\": 1067000000,\n \"averageInventory\": 8534500000,\n \"daysSalesOutstanding\": 41.74984861522771,\n \"daysPayablesOutstanding\": 38.811819145859445,\n \"daysOfInventoryOnHand\": 314.8929914200328,\n \"receivablesTurnover\": @@ -366,13 +367,13 @@ interactions: 0.06342594042242382,\n \"freeCashFlowYield\": 0.07111147225570785,\n \"debtToEquity\": 147.2707423580786,\n \"debtToAssets\": 0.9503212353471596,\n \"netDebtToEBITDA\": 1.1287135699668336,\n \"currentRatio\": 1.0043936731107206,\n \"interestCoverage\": - 14.274089935760172,\n \"incomeQuality\": 1.22558491444535,\n \"dividendYield\": + 14.274089935760172,\n \"incomeQuality\": 1.1858317378083116,\n \"dividendYield\": 0.03534901673176175,\n \"payoutRatio\": 0.5573274356885113,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3839325969341749,\n \"capexToOperatingCashFlow\": -0.08519327571469275,\n \ \"capexToRevenue\": -0.02884522622761038,\n \"capexToDepreciation\": -0.9033232628398792,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 3.854899412847063,\n \"roic\": 0.6442447086111917,\n \"returnOnTangibleAssets\": + 3.854899412847063,\n \"roic\": 0.3217564798601053,\n \"returnOnTangibleAssets\": 0.3929469880620226,\n \"grahamNetNet\": -14.319558437167034,\n \"workingCapital\": 65000000,\n \"tangibleAssetValue\": -11862000000,\n \"netCurrentAssetValue\": -18866000000,\n \"investedCapital\": 80.9825327510917,\n \"averageReceivables\": @@ -397,13 +398,13 @@ interactions: 0.0674398418308556,\n \"freeCashFlowYield\": 0.08105044498310846,\n \"debtToEquity\": 8.53650884198517,\n \"debtToAssets\": 0.8538944365192582,\n \"netDebtToEBITDA\": 1.2341756317237929,\n \"currentRatio\": 1.0743517650734145,\n \"interestCoverage\": - 11.498973305954825,\n \"incomeQuality\": 1.3000413280066125,\n \"dividendYield\": + 11.498973305954825,\n \"incomeQuality\": 1.258602293945052,\n \"dividendYield\": 0.04109194385147738,\n \"payoutRatio\": 0.6093125774900124,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.40039942938659057,\n \"capexToOperatingCashFlow\": -0.0755536717177069,\n \ \"capexToRevenue\": -0.02620552778594531,\n \"capexToDepreciation\": -0.7650214592274678,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 13.012294500971974,\n \"roic\": 0.5034612964128382,\n \"returnOnTangibleAssets\": + 13.012294500971974,\n \"roic\": 0.2640206285797149,\n \"returnOnTangibleAssets\": 0.34540350209364296,\n \"grahamNetNet\": -11.860114192495923,\n \"workingCapital\": 952000000,\n \"tangibleAssetValue\": -8913000000,\n \"netCurrentAssetValue\": -16173000000,\n \"investedCapital\": 4.706788362806617,\n \"averageReceivables\": @@ -428,13 +429,13 @@ interactions: 0.06773240722278227,\n \"freeCashFlowYield\": 0.07656474730055599,\n \"debtToEquity\": 4.969734079776067,\n \"debtToAssets\": 0.8221521185459597,\n \"netDebtToEBITDA\": 1.298886080688945,\n \"currentRatio\": 1.3134728931830382,\n \"interestCoverage\": - 12.59723964868256,\n \"incomeQuality\": 1.2431409649952696,\n \"dividendYield\": + 12.59723964868256,\n \"incomeQuality\": 1.2032967032967032,\n \"dividendYield\": 0.0462122557636359,\n \"payoutRatio\": 0.6822768842636392,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.36634637647603613,\n \"capexToOperatingCashFlow\": -0.09069000507356671,\n \ \"capexToRevenue\": -0.028560015977631317,\n \"capexToDepreciation\": -0.8382180539273154,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 14.69865807645513,\n \"roic\": 0.42953709249593564,\n \"returnOnTangibleAssets\": + 14.69865807645513,\n \"roic\": 0.23105519204325875,\n \"returnOnTangibleAssets\": 0.2896684023020005,\n \"grahamNetNet\": -10.262480699948533,\n \"workingCapital\": 3504000000,\n \"tangibleAssetValue\": -6513000000,\n \"netCurrentAssetValue\": -13725000000,\n \"investedCapital\": 2.696990902729181,\n \"averageReceivables\": @@ -465,7 +466,7 @@ interactions: 0.33661894941162196,\n \"capexToOperatingCashFlow\": -0.13850031505986138,\n \ \"capexToRevenue\": -0.04275432795176036,\n \"capexToDepreciation\": -1.3052256532066508,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 16.488493116541544,\n \"roic\": 0.4489223760294375,\n \"returnOnTangibleAssets\": + 16.488493116541544,\n \"roic\": 0.25517440499432686,\n \"returnOnTangibleAssets\": 0.31500022859232846,\n \"grahamNetNet\": -8.207446808510639,\n \"workingCapital\": 4795000000,\n \"tangibleAssetValue\": -3599000000,\n \"netCurrentAssetValue\": -10533000000,\n \"investedCapital\": 1.5948,\n \"averageReceivables\": @@ -480,23 +481,23 @@ interactions: \ \"freeCashFlowPerShare\": 2.1499286054259876,\n \"cashPerShare\": 0.7881960970966206,\n \ \"bookValuePerShare\": 7.330318895763922,\n \"tangibleBookValuePerShare\": 2.6511185149928607,\n \"shareholdersEquityPerShare\": 7.330318895763922,\n - \ \"interestDebtPerShare\": 3.0019038553069968,\n \"marketCap\": 51234608768.8116,\n - \ \"enterpriseValue\": 55885608768.8116,\n \"peRatio\": 8.502258341986659,\n - \ \"priceToSalesRatio\": 2.2473290976757436,\n \"pocfratio\": 9.167043973664628,\n - \ \"pfcfRatio\": 11.342618722340402,\n \"pbRatio\": 3.326706627414558,\n - \ \"ptbRatio\": 3.326706627414558,\n \"evToSales\": 2.4513382212830774,\n - \ \"enterpriseValueOverEBITDA\": 5.984751420947911,\n \"evToOperatingCashFlow\": - 9.999214308250421,\n \"evToFreeCashFlow\": 12.372284429668275,\n \"earningsYield\": - 0.11761580979746347,\n \"freeCashFlowYield\": 0.08816306220629648,\n \"debtToEquity\": + \ \"interestDebtPerShare\": 3.0019038553069968,\n \"marketCap\": 103768387899,\n + \ \"enterpriseValue\": 108419387899,\n \"peRatio\": 17.22011083620976,\n + \ \"priceToSalesRatio\": 4.551644350337749,\n \"pocfratio\": 18.56653925550188,\n + \ \"pfcfRatio\": 22.97285541266327,\n \"pbRatio\": 6.737769488929291,\n + \ \"ptbRatio\": 6.737769488929291,\n \"evToSales\": 4.755653473945083,\n + \ \"enterpriseValueOverEBITDA\": 11.610557710323409,\n \"evToOperatingCashFlow\": + 19.398709590087673,\n \"evToFreeCashFlow\": 24.002521119991144,\n \"earningsYield\": + 0.05807163551451946,\n \"freeCashFlowYield\": 0.04352963452025961,\n \"debtToEquity\": 1.080579183169924,\n \"debtToAssets\": 0.5193646038136255,\n \"netDebtToEBITDA\": 0.4980723923752409,\n \"currentRatio\": 1.76026195766577,\n \"interestCoverage\": - 0,\n \"incomeQuality\": 0.9274809160305344,\n \"dividendYield\": 0.1280384520861866,\n + 0,\n \"incomeQuality\": 0.9274809160305344,\n \"dividendYield\": 0.06321771141308458,\n \ \"payoutRatio\": 1.088615997344839,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.3068064787941204,\n \"capexToOperatingCashFlow\": -0.19180533190195026,\n \ \"capexToRevenue\": -0.04702166856741819,\n \"capexToDepreciation\": -1.4331550802139037,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 21.749748065768344,\n \"roic\": 0.3777030478460753,\n \"returnOnTangibleAssets\": + 21.749748065768344,\n \"roic\": 0.2261955979179331,\n \"returnOnTangibleAssets\": 0.27129479560597874,\n \"grahamNetNet\": -3.663612565445026,\n \"workingCapital\": 6501000000,\n \"tangibleAssetValue\": 5570000000,\n \"netCurrentAssetValue\": -1590000000,\n \"investedCapital\": 0.40951886241153174,\n \"averageReceivables\": @@ -511,26 +512,26 @@ interactions: \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n \ \"bookValuePerShare\": 6.763813515013729,\n \"tangibleBookValuePerShare\": 3.0545489925866303,\n \"shareholdersEquityPerShare\": 6.763813515013729,\n - \ \"interestDebtPerShare\": 1.0534235389612747,\n \"marketCap\": 51437328898.957825,\n - \ \"enterpriseValue\": 52547328898.957825,\n \"peRatio\": 8.369236722902349,\n - \ \"priceToSalesRatio\": 1.065837731018604,\n \"pocfratio\": 8.248449149929094,\n - \ \"pfcfRatio\": 9.614453999805201,\n \"pbRatio\": 3.6053360131042145,\n - \ \"ptbRatio\": 3.6053360131042145,\n \"evToSales\": 1.0888381454404854,\n - \ \"enterpriseValueOverEBITDA\": 6.086798204443163,\n \"evToOperatingCashFlow\": - 8.426447867055456,\n \"evToFreeCashFlow\": 9.82193063531922,\n \"earningsYield\": - 0.11948520911871308,\n \"freeCashFlowYield\": 0.10401006651238448,\n \"debtToEquity\": + \ \"interestDebtPerShare\": 1.3208091717129213,\n \"marketCap\": 104178968590.55698,\n + \ \"enterpriseValue\": 105288968590.55698,\n \"peRatio\": 16.950694531493163,\n + \ \"priceToSalesRatio\": 2.1587022086729584,\n \"pocfratio\": 16.706056541141272,\n + \ \"pfcfRatio\": 19.472704409449904,\n \"pbRatio\": 7.3020935438814725,\n + \ \"ptbRatio\": 7.3020935438814725,\n \"evToSales\": 2.1817026230948398,\n + \ \"enterpriseValueOverEBITDA\": 12.196104319536312,\n \"evToOperatingCashFlow\": + 16.884055258267637,\n \"evToFreeCashFlow\": 19.68018104496392,\n \"earningsYield\": + 0.05899463282416378,\n \"freeCashFlowYield\": 0.05135393517886043,\n \"debtToEquity\": 0.8307983458330412,\n \"debtToAssets\": 0.45379019908116386,\n \"netDebtToEBITDA\": 0.1285763929109232,\n \"currentRatio\": 1.706252682787237,\n \"interestCoverage\": - 0,\n \"incomeQuality\": 1.0146436706801172,\n \"dividendYield\": 0.05404635231858483,\n + 0,\n \"incomeQuality\": 1.0146436706801172,\n \"dividendYield\": 0.02668484856023028,\n \ \"payoutRatio\": 0.4523267165636186,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.2995405819295559,\n \"capexToOperatingCashFlow\": -0.14207825529185375,\n \ \"capexToRevenue\": -0.018358889349357647,\n \"capexToDepreciation\": -1.3465045592705167,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 21.05779199835815,\n \"roic\": 0.4374052584809994,\n \"returnOnTangibleAssets\": + 21.05779199835815,\n \"roic\": 0.2945070230858761,\n \"returnOnTangibleAssets\": 0.3359204197638828,\n \"grahamNetNet\": -2.379684722689522,\n \"workingCapital\": 4936000000,\n \"tangibleAssetValue\": 6443000000,\n \"netCurrentAssetValue\": - 72000000,\n \"investedCapital\": 0.15574402467232074,\n \"averageReceivables\": + 72000000,\n \"investedCapital\": 0.1952758113128198,\n \"averageReceivables\": 2029000000,\n \"averagePayables\": 670500000,\n \"averageInventory\": 6247500000,\n \"daysSalesOutstanding\": 16.336510567757976,\n \"daysPayablesOutstanding\": 6.886212414722479,\n \"daysOfInventoryOnHand\": 72.49992981274039,\n \"receivablesTurnover\": @@ -542,26 +543,26 @@ interactions: \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n \ \"bookValuePerShare\": 4.88642502973621,\n \"tangibleBookValuePerShare\": 1.5820316604472429,\n \"shareholdersEquityPerShare\": 4.88642502973621,\n - \ \"interestDebtPerShare\": 1.9631984135187392,\n \"marketCap\": 51437328898.957825,\n - \ \"enterpriseValue\": 55137328898.957825,\n \"peRatio\": 9.15254962614908,\n - \ \"priceToSalesRatio\": 1.1357827437501729,\n \"pocfratio\": 9.972339840821602,\n - \ \"pfcfRatio\": 11.63214131591086,\n \"pbRatio\": 4.990523808960689,\n - \ \"ptbRatio\": 4.990523808960689,\n \"evToSales\": 1.2174820901554015,\n - \ \"enterpriseValueOverEBITDA\": 6.9077084563966205,\n \"evToOperatingCashFlow\": - 10.689672140162433,\n \"evToFreeCashFlow\": 12.468866779501996,\n \"earningsYield\": - 0.10925917267282256,\n \"freeCashFlowYield\": 0.08596869422761948,\n \"debtToEquity\": + \ \"interestDebtPerShare\": 2.327297998542258,\n \"marketCap\": 104178968590.55698,\n + \ \"enterpriseValue\": 107878968590.55698,\n \"peRatio\": 18.537183023230778,\n + \ \"priceToSalesRatio\": 2.300365849464692,\n \"pocfratio\": 20.197551103248735,\n + \ \"pfcfRatio\": 23.559242105508137,\n \"pbRatio\": 10.107593731498687,\n + \ \"ptbRatio\": 10.107593731498687,\n \"evToSales\": 2.382065195869921,\n + \ \"enterpriseValueOverEBITDA\": 13.515280454843019,\n \"evToOperatingCashFlow\": + 20.914883402589567,\n \"evToFreeCashFlow\": 24.39596756909927,\n \"earningsYield\": + 0.05394562910377488,\n \"freeCashFlowYield\": 0.042446187170265576,\n \"debtToEquity\": 1.2445910546230716,\n \"debtToAssets\": 0.5544845472228226,\n \"netDebtToEBITDA\": 0.46354297168629416,\n \"currentRatio\": 1.582728133880644,\n \"interestCoverage\": - 0,\n \"incomeQuality\": 0.9177935943060498,\n \"dividendYield\": 0.14934679083142757,\n + 0,\n \"incomeQuality\": 0.9177935943060498,\n \"dividendYield\": 0.07373849159701044,\n \ \"payoutRatio\": 1.3669039145907473,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.30127512427058567,\n \"capexToOperatingCashFlow\": -0.1426909654905002,\n \ \"capexToRevenue\": -0.016251545663310368,\n \"capexToDepreciation\": -1.396584440227704,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 17.115300112514333,\n \"roic\": 0.46038926254389617,\n \"returnOnTangibleAssets\": + 17.115300112514333,\n \"roic\": 0.29316768403913324,\n \"returnOnTangibleAssets\": 0.34766470770182495,\n \"grahamNetNet\": -3.5487857339759774,\n \"workingCapital\": 3691000000,\n \"tangibleAssetValue\": 3337000000,\n \"netCurrentAssetValue\": - -2803000000,\n \"investedCapital\": 0.401765790239643,\n \"averageReceivables\": + -2803000000,\n \"investedCapital\": 0.4762782574949064,\n \"averageReceivables\": null,\n \"averagePayables\": null,\n \"averageInventory\": null,\n \"daysSalesOutstanding\": 15.296988164635223,\n \"daysPayablesOutstanding\": 7.417527339003645,\n \ \"daysOfInventoryOnHand\": 60.09416767922236,\n \"receivablesTurnover\": @@ -573,22 +574,22 @@ interactions: \ \"freeCashFlowPerShare\": 1.9940828402366864,\n \"cashPerShare\": 1.5586785009861932,\n \ \"bookValuePerShare\": 5.173076923076923,\n \"tangibleBookValuePerShare\": 4.178994082840236,\n \"shareholdersEquityPerShare\": 5.173076923076923,\n - \ \"interestDebtPerShare\": 0,\n \"marketCap\": 49454443875.8448,\n \"enterpriseValue\": - 46293443875.8448,\n \"peRatio\": 12.441369528514414,\n \"priceToSalesRatio\": - 1.481159779443673,\n \"pocfratio\": 10.681305372752657,\n \"pfcfRatio\": - 12.229090968309793,\n \"pbRatio\": 4.713987596591822,\n \"ptbRatio\": - 4.713987596591822,\n \"evToSales\": 1.3864878815132171,\n \"enterpriseValueOverEBITDA\": - 7.194008372314655,\n \"evToOperatingCashFlow\": 9.99858399046324,\n \"evToFreeCashFlow\": - 11.447439138438378,\n \"earningsYield\": 0.08037700332813817,\n \"freeCashFlowYield\": - 0.08177222678213604,\n \"debtToEquity\": 0.6804880373653608,\n \"debtToAssets\": + \ \"interestDebtPerShare\": 0,\n \"marketCap\": 100162917972,\n \"enterpriseValue\": + 97001917972,\n \"peRatio\": 25.19821835773585,\n \"priceToSalesRatio\": + 2.999877743328641,\n \"pocfratio\": 21.63345960518359,\n \"pfcfRatio\": + 24.768278430267063,\n \"pbRatio\": 9.547509100371748,\n \"ptbRatio\": + 9.547509100371748,\n \"evToSales\": 2.905205845398185,\n \"enterpriseValueOverEBITDA\": + 15.074113126961928,\n \"evToOperatingCashFlow\": 20.95073822289417,\n \"evToFreeCashFlow\": + 23.98662660039565,\n \"earningsYield\": 0.039685345440027914,\n \"freeCashFlowYield\": + 0.040374223134458584,\n \"debtToEquity\": 0.6804880373653608,\n \"debtToAssets\": 0.40493477027793534,\n \"netDebtToEBITDA\": -0.49121989121989124,\n \"currentRatio\": - 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 1.1647798742138364,\n - \ \"dividendYield\": 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 0,\n \"dividendYield\": + 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": 0.11435053885422575,\n \"capexToOperatingCashFlow\": -0.1265658747300216,\n \ \"capexToRevenue\": -0.01755069034712031,\n \"capexToDepreciation\": -1.5837837837837838,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": - 15.104290103817597,\n \"roic\": 0.3514463981849121,\n \"returnOnTangibleAssets\": + 15.104290103817597,\n \"roic\": 0.3636114834130041,\n \"returnOnTangibleAssets\": 0.2545792237735366,\n \"grahamNetNet\": -0.9077909270216963,\n \"workingCapital\": 11053000000,\n \"tangibleAssetValue\": 8475000000,\n \"netCurrentAssetValue\": 3914000000,\n \"investedCapital\": 0,\n \"averageReceivables\": null,\n @@ -612,15 +613,647 @@ interactions: Connection: - close Content-Length: - - '47462' + - '47542' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:15 GMT + - Wed, 10 May 2023 22:06:29 GMT ETag: - - W/"b966-DCLrmoHRm0eA8tVwl0Qnr8SL0Ss" + - W/"b9b6-hm7MaT+iOAssXTS7ULuPG4xXEOc" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) + Vary: + - Accept-Encoding + X-Frame-Options: + - SAMEORIGIN + X-Powered-By: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - financialmodelingprep.com + method: GET + uri: https://financialmodelingprep.com/api/v3/key-metrics/PM?apikey=MOCK_API_KEY&limit=0&period=annual + response: + body: + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": + \"FY\",\n \"revenuePerShare\": 20.491612903225807,\n \"netIncomePerShare\": + 5.83741935483871,\n \"operatingCashFlowPerShare\": 6.969677419354839,\n + \ \"freeCashFlowPerShare\": 6.274838709677419,\n \"cashPerShare\": 2.069032258064516,\n + \ \"bookValuePerShare\": -5.7787096774193545,\n \"tangibleBookValuePerShare\": + -21.09548387096774,\n \"shareholdersEquityPerShare\": -5.7787096774193545,\n + \ \"interestDebtPerShare\": 28.20064516129032,\n \"marketCap\": 156875500000,\n + \ \"enterpriseValue\": 196791500000,\n \"peRatio\": 17.338141025641022,\n + \ \"priceToSalesRatio\": 4.939093885775455,\n \"pocfratio\": 14.521475516060352,\n + \ \"pfcfRatio\": 16.12949825210775,\n \"pbRatio\": -17.51429049905102,\n + \ \"ptbRatio\": -17.51429049905102,\n \"evToSales\": 6.195815754675398,\n + \ \"enterpriseValueOverEBITDA\": 16.10141548028146,\n \"evToOperatingCashFlow\": + 18.21637508099602,\n \"evToFreeCashFlow\": 20.233549249434507,\n \"earningsYield\": + 0.057676310195027274,\n \"freeCashFlowYield\": 0.061998208770649335,\n + \ \"debtToEquity\": -7.5909344646645085,\n \"debtToAssets\": 1.1023167588074123,\n + \ \"netDebtToEBITDA\": 3.26591392570774,\n \"currentRatio\": 0.7176982733391865,\n + \ \"interestCoverage\": 20.8265306122449,\n \"incomeQuality\": 1.1339351317308701,\n + \ \"dividendYield\": 0.049797450844778185,\n \"payoutRatio\": 0.863395225464191,\n + \ \"salesGeneralAndAdministrativeToRevenue\": 0.2562181222844909,\n \"researchAndDdevelopementToRevenue\": + 0,\n \"intangiblesToTotalAssets\": 0.42779786319936447,\n \"capexToOperatingCashFlow\": + -0.09969452929741739,\n \"capexToRevenue\": -0.03390844405264152,\n \"capexToDepreciation\": + -0.9058031959629941,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 27.54971712434873,\n \"roic\": 0.19307994856988234,\n \"returnOnTangibleAssets\": + 0.2563608545361818,\n \"grahamNetNet\": -36.306451612903224,\n \"workingCapital\": + -7717000000,\n \"tangibleAssetValue\": -32698000000,\n \"netCurrentAssetValue\": + -48373000000,\n \"investedCapital\": -4.814446801384392,\n \"averageReceivables\": + 4348000000,\n \"averagePayables\": 3703500000,\n \"averageInventory\": + 9303000000,\n \"daysSalesOutstanding\": 54.65461872678043,\n \"daysPayablesOutstanding\": + 130.48061743553762,\n \"daysOfInventoryOnHand\": 316.4699175583231,\n \"receivablesTurnover\": + 6.678301093355761,\n \"payablesTurnover\": 2.797350343473994,\n \"inventoryTurnover\": + 1.1533481691280598,\n \"roe\": -1.0101596516690856,\n \"capexPerShare\": + -0.6948387096774193\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 20.157252888318357,\n \"netIncomePerShare\": + 5.846598202824134,\n \"operatingCashFlowPerShare\": 7.681001283697047,\n + \ \"freeCashFlowPerShare\": 7.200898587933247,\n \"cashPerShare\": 2.8857509627727858,\n + \ \"bookValuePerShare\": -6.486521181001284,\n \"tangibleBookValuePerShare\": + -11.364569961489089,\n \"shareholdersEquityPerShare\": -6.486521181001284,\n + \ \"interestDebtPerShare\": 18.250320924261874,\n \"marketCap\": 148010000000,\n + \ \"enterpriseValue\": 171320000000,\n \"peRatio\": 16.24876495773411,\n + \ \"priceToSalesRatio\": 4.712943798758159,\n \"pocfratio\": 12.368179159354893,\n + \ \"pfcfRatio\": 13.192797932079507,\n \"pbRatio\": -14.645754997031466,\n + \ \"ptbRatio\": -14.645754997031466,\n \"evToSales\": 5.455182295812769,\n + \ \"enterpriseValueOverEBITDA\": 13.223217042297005,\n \"evToOperatingCashFlow\": + 14.316035765020473,\n \"evToFreeCashFlow\": 15.270523219538283,\n \"earningsYield\": + 0.061543138977096144,\n \"freeCashFlowYield\": 0.0757989325045605,\n \"debtToEquity\": + -4.897882446071641,\n \"debtToAssets\": 1.198789053039477,\n \"netDebtToEBITDA\": + 1.7991664093856128,\n \"currentRatio\": 0.9201246429498832,\n \"interestCoverage\": + 20.660828025477706,\n \"incomeQuality\": 1.2324407826982493,\n \"dividendYield\": + 0.05121275589487197,\n \"payoutRatio\": 0.8321440333735866,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.2680783314758796,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.23003148462097361,\n \"capexToOperatingCashFlow\": -0.06250522269574664,\n + \ \"capexToRevenue\": -0.023817863397548163,\n \"capexToDepreciation\": + -0.749498997995992,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 29.211160012690573,\n \"roic\": 0.35011417392195887,\n \"returnOnTangibleAssets\": + 0.2865186210367388,\n \"grahamNetNet\": -24.189345314505776,\n \"workingCapital\": + -1538000000,\n \"tangibleAssetValue\": -17706000000,\n \"netCurrentAssetValue\": + -31781000000,\n \"investedCapital\": -2.7514347912131405,\n \"averageReceivables\": + 3850500000,\n \"averagePayables\": 3055500000,\n \"averageInventory\": + 9155500000,\n \"daysSalesOutstanding\": 45.79207132622194,\n \"daysPayablesOutstanding\": + 121.21784646061815,\n \"daysOfInventoryOnHand\": 317.3280159521436,\n \"receivablesTurnover\": + 7.970812182741117,\n \"payablesTurnover\": 3.01110777544281,\n \"inventoryTurnover\": + 1.150229357798165,\n \"roe\": -0.9013457352068078,\n \"capexPerShare\": + -0.48010269576379977\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 18.42903018625562,\n \"netIncomePerShare\": + 5.1740526653821455,\n \"operatingCashFlowPerShare\": 6.3018625561978165,\n + \ \"freeCashFlowPerShare\": 5.9152215799614645,\n \"cashPerShare\": 4.675658317276814,\n + \ \"bookValuePerShare\": -8.071290944123314,\n \"tangibleBookValuePerShare\": + -11.955041746949261,\n \"shareholdersEquityPerShare\": -8.071290944123314,\n + \ \"interestDebtPerShare\": 20.65125240847784,\n \"marketCap\": 128904030000.00002,\n + \ \"enterpriseValue\": 153160030000,\n \"peRatio\": 16.000996772591858,\n + \ \"priceToSalesRatio\": 4.49236878789991,\n \"pocfratio\": 13.137385854056259,\n + \ \"pfcfRatio\": 13.996094462540718,\n \"pbRatio\": -10.25734304129864,\n + \ \"ptbRatio\": -10.25734304129864,\n \"evToSales\": 5.33770230710253,\n + \ \"enterpriseValueOverEBITDA\": 13.15355805565098,\n \"evToOperatingCashFlow\": + 15.60946086424786,\n \"evToFreeCashFlow\": 16.629753528773072,\n \"earningsYield\": + 0.062496106599615235,\n \"freeCashFlowYield\": 0.0714485032004042,\n \"debtToEquity\": + -4.412031511100501,\n \"debtToAssets\": 1.2372196809104095,\n \"netDebtToEBITDA\": + 2.0831329440054964,\n \"currentRatio\": 1.0956920723935764,\n \"interestCoverage\": + 18.880258899676374,\n \"incomeQuality\": 1.1419925512104283,\n \"dividendYield\": + 0.05712777172288562,\n \"payoutRatio\": 0.9141012909632572,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.26071652610301804,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.17813232176726543,\n \"capexToOperatingCashFlow\": -0.06135344476151651,\n + \ \"capexToRevenue\": -0.020979995817941032,\n \"capexToDepreciation\": + -0.6136595310907238,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 30.65336685433772,\n \"roic\": 0.3325143588533254,\n \"returnOnTangibleAssets\": + 0.2187228496959166,\n \"grahamNetNet\": -26.043513166345537,\n \"workingCapital\": + 1877000000,\n \"tangibleAssetValue\": -18614000000,\n \"netCurrentAssetValue\": + -33954000000,\n \"investedCapital\": -2.5094294581045595,\n \"averageReceivables\": + 3739000000,\n \"averagePayables\": 2539500000,\n \"averageInventory\": + 9413000000,\n \"daysSalesOutstanding\": 47.841534815640905,\n \"daysPayablesOutstanding\": + 106.04033859337443,\n \"daysOfInventoryOnHand\": 365.8391681471418,\n \"receivablesTurnover\": + 7.6293538952406275,\n \"payablesTurnover\": 3.442086330935252,\n \"inventoryTurnover\": + 0.9977061828797831,\n \"roe\": -0.6410440041378213,\n \"capexPerShare\": + -0.38664097623635196\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2019-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 19.167202572347268,\n \"netIncomePerShare\": + 4.620578778135048,\n \"operatingCashFlowPerShare\": 6.488745980707395,\n + \ \"freeCashFlowPerShare\": 5.940836012861737,\n \"cashPerShare\": 4.412218649517685,\n + \ \"bookValuePerShare\": -7.445016077170418,\n \"tangibleBookValuePerShare\": + -11.29903536977492,\n \"shareholdersEquityPerShare\": -7.445016077170418,\n + \ \"interestDebtPerShare\": 20.331189710610932,\n \"marketCap\": 132314950000,\n + \ \"enterpriseValue\": 156498950000,\n \"peRatio\": 18.41544189283229,\n + \ \"priceToSalesRatio\": 4.439354135212213,\n \"pocfratio\": 13.113473736372647,\n + \ \"pfcfRatio\": 14.322899978350293,\n \"pbRatio\": -11.429122397857821,\n + \ \"ptbRatio\": -11.429122397857821,\n \"evToSales\": 5.250761617178326,\n + \ \"enterpriseValueOverEBITDA\": 14.893314617434335,\n \"evToOperatingCashFlow\": + 15.510302279484637,\n \"evToFreeCashFlow\": 16.9407826369344,\n \"earningsYield\": + 0.0543022538269485,\n \"freeCashFlowYield\": 0.06981826316678501,\n \"debtToEquity\": + -4.5326077567590914,\n \"debtToAssets\": 1.2238833819241983,\n \"netDebtToEBITDA\": + 2.301484583174724,\n \"currentRatio\": 1.0892582169595921,\n \"interestCoverage\": + 18.475438596491227,\n \"incomeQuality\": 1.3056418219461698,\n \"dividendYield\": + 0.054120868427944085,\n \"payoutRatio\": 0.9966597077244259,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.29471565173628583,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.1859125364431487,\n \"capexToOperatingCashFlow\": -0.0844400396432111,\n + \ \"capexToRevenue\": -0.028585807750377452,\n \"capexToDepreciation\": + -0.8838174273858921,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 27.82097004066496,\n \"roic\": 0.301069934832196,\n \"returnOnTangibleAssets\": + 0.20585033234013295,\n \"grahamNetNet\": -24.57090032154341,\n \"workingCapital\": + 1681000000,\n \"tangibleAssetValue\": -17570000000,\n \"netCurrentAssetValue\": + -31960000000,\n \"investedCapital\": -2.6816100889695087,\n \"averageReceivables\": + 3640500000,\n \"averagePayables\": 2183500000,\n \"averageInventory\": + 9019500000,\n \"daysSalesOutstanding\": 45.51937594363362,\n \"daysPayablesOutstanding\": + 79.81879577665748,\n \"daysOfInventoryOnHand\": 320.62922096452013,\n \"receivablesTurnover\": + 8.018563357546409,\n \"payablesTurnover\": 4.572857764245324,\n \"inventoryTurnover\": + 1.1383865728207905,\n \"roe\": -0.6206271054677378,\n \"capexPerShare\": + -0.5479099678456592\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 19.05144694533762,\n \"netIncomePerShare\": + 5.087459807073955,\n \"operatingCashFlowPerShare\": 6.095176848874598,\n + \ \"freeCashFlowPerShare\": 5.171704180064308,\n \"cashPerShare\": 4.239871382636656,\n + \ \"bookValuePerShare\": -8.012218649517685,\n \"tangibleBookValuePerShare\": + -12.994212218649517,\n \"shareholdersEquityPerShare\": -8.012218649517685,\n + \ \"interestDebtPerShare\": 20.97363344051447,\n \"marketCap\": 103811800000.00002,\n + \ \"enterpriseValue\": 128977800000.00002,\n \"peRatio\": 13.12246239413475,\n + \ \"priceToSalesRatio\": 3.504195780590718,\n \"pocfratio\": 10.952922557501584,\n + \ \"pfcfRatio\": 12.908704302412337,\n \"pbRatio\": -8.332273858255077,\n + \ \"ptbRatio\": -8.332273858255077,\n \"evToSales\": 4.353681012658228,\n + \ \"enterpriseValueOverEBITDA\": 10.571950819672132,\n \"evToOperatingCashFlow\": + 13.608124076809455,\n \"evToFreeCashFlow\": 16.038025366824176,\n \"earningsYield\": + 0.076205209812372,\n \"freeCashFlowYield\": 0.07746710874871642,\n \"debtToEquity\": + -4.056505337507023,\n \"debtToAssets\": 1.2698173412728324,\n \"netDebtToEBITDA\": + 2.0627868852459015,\n \"currentRatio\": 1.130940608457914,\n \"interestCoverage\": + 13.306432748538011,\n \"incomeQuality\": 1.1438571083755733,\n \"dividendYield\": + 0.06632194028039201,\n \"payoutRatio\": 0.8703071672354948,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.25144303797468354,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.23785834526770683,\n \"capexToOperatingCashFlow\": -0.15150875712175566,\n + \ \"capexToRevenue\": -0.04847257383966245,\n \"capexToDepreciation\": + -1.4519716885743175,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 30.284342617274454,\n \"roic\": 0.3572834675767127,\n \"returnOnTangibleAssets\": + 0.260796466011736,\n \"grahamNetNet\": -23.711897106109326,\n \"workingCapital\": + 2251000000,\n \"tangibleAssetValue\": -20206000000,\n \"netCurrentAssetValue\": + -31098000000,\n \"investedCapital\": -2.5490809856328758,\n \"averageReceivables\": + 3651000000,\n \"averagePayables\": 2155000000,\n \"averageInventory\": + 8805000000,\n \"daysSalesOutstanding\": 43.910886075949364,\n \"daysPayablesOutstanding\": + 70.16359918200409,\n \"daysOfInventoryOnHand\": 298.70422011526307,\n \"receivablesTurnover\": + 8.312289562289562,\n \"payablesTurnover\": 5.202127659574468,\n \"inventoryTurnover\": + 1.2219445706497047,\n \"roe\": -0.6349626775824705,\n \"capexPerShare\": + -0.9234726688102894\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2017-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 18.52319587628866,\n \"netIncomePerShare\": + 3.8885309278350517,\n \"operatingCashFlowPerShare\": 5.742268041237113,\n + \ \"freeCashFlowPerShare\": 4.744845360824742,\n \"cashPerShare\": 5.442654639175258,\n + \ \"bookValuePerShare\": -7.787371134020619,\n \"tangibleBookValuePerShare\": + -13.097938144329897,\n \"shareholdersEquityPerShare\": -7.787371134020619,\n + \ \"interestDebtPerShare\": 22.831829896907216,\n \"marketCap\": 163968800000,\n + \ \"enterpriseValue\": 189860800000,\n \"peRatio\": 27.169643744821872,\n + \ \"priceToSalesRatio\": 5.703659385000695,\n \"pocfratio\": 18.398653500897666,\n + \ \"pfcfRatio\": 22.266268332428027,\n \"pbRatio\": -13.566837663412212,\n + \ \"ptbRatio\": -13.566837663412212,\n \"evToSales\": 6.604313343536941,\n + \ \"enterpriseValueOverEBITDA\": 15.419540323235605,\n \"evToOperatingCashFlow\": + 21.30394973070018,\n \"evToFreeCashFlow\": 25.782292232482348,\n \"earningsYield\": + 0.03680578256351208,\n \"freeCashFlowYield\": 0.044910983065070915,\n \"debtToEquity\": + -4.401621711070661,\n \"debtToAssets\": 1.2380841556507167,\n \"netDebtToEBITDA\": + 2.102818159668643,\n \"currentRatio\": 1.3528379902267886,\n \"interestCoverage\": + 10.495437956204379,\n \"incomeQuality\": 1.405456552594228,\n \"dividendYield\": + 0.03976366235527735,\n \"payoutRatio\": 1.0803645401822701,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.2339293168220398,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.23501210202941725,\n \"capexToOperatingCashFlow\": -0.1736983842010772,\n + \ \"capexToRevenue\": -0.05384722415472381,\n \"capexToDepreciation\": + -1.7691428571428571,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 26.102341921297114,\n \"roic\": 0.28634764343891045,\n \"returnOnTangibleAssets\": + 0.18360206875570428,\n \"grahamNetNet\": -24.19104381443299,\n \"workingCapital\": + 5632000000,\n \"tangibleAssetValue\": -20328000000,\n \"netCurrentAssetValue\": + -31604000000,\n \"investedCapital\": -2.84122124772464,\n \"averageReceivables\": + 3618500000,\n \"averagePayables\": 1954000000,\n \"averageInventory\": + 8911500000,\n \"daysSalesOutstanding\": 47.45964936691248,\n \"daysPayablesOutstanding\": + 78.44421012269939,\n \"daysOfInventoryOnHand\": 308.10870398773005,\n \"receivablesTurnover\": + 7.690743713215623,\n \"payablesTurnover\": 4.652988403211419,\n \"inventoryTurnover\": + 1.1846468317056553,\n \"roe\": -0.49933807711401623,\n \"capexPerShare\": + -0.9974226804123711\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 17.20502901353965,\n \"netIncomePerShare\": + 4.4919406834300455,\n \"operatingCashFlowPerShare\": 5.2076079948420375,\n + \ \"freeCashFlowPerShare\": 4.451966473243069,\n \"cashPerShare\": 2.733075435203095,\n + \ \"bookValuePerShare\": -8.18052869116699,\n \"tangibleBookValuePerShare\": + -13.342359767891683,\n \"shareholdersEquityPerShare\": -8.18052869116699,\n + \ \"interestDebtPerShare\": 19.430045132172793,\n \"marketCap\": 141900990000,\n + \ \"enterpriseValue\": 166728990000,\n \"peRatio\": 20.367588632122864,\n + \ \"priceToSalesRatio\": 5.31763125351321,\n \"pocfratio\": 17.568526680698277,\n + \ \"pfcfRatio\": 20.55046922519913,\n \"pbRatio\": -11.183873738965952,\n + \ \"ptbRatio\": -11.183873738965952,\n \"evToSales\": 6.248041596402473,\n + \ \"enterpriseValueOverEBITDA\": 14.439160820992466,\n \"evToOperatingCashFlow\": + 20.64244026247369,\n \"evToFreeCashFlow\": 24.146124547429398,\n \"earningsYield\": + 0.04909761376576725,\n \"freeCashFlowYield\": 0.04866068940040517,\n \"debtToEquity\": + -3.7634773013871374,\n \"debtToAssets\": 1.2957857317304822,\n \"netDebtToEBITDA\": + 2.150168875032476,\n \"currentRatio\": 1.0692900953421995,\n \"interestCoverage\": + 10.116931711880262,\n \"incomeQuality\": 1.1140689655172413,\n \"dividendYield\": + 0.044946832294827536,\n \"payoutRatio\": 0.9154585904980623,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.24002248454187747,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.26577297766682045,\n \"capexToOperatingCashFlow\": -0.14510337996780984,\n + \ \"capexToRevenue\": -0.0439198051339704,\n \"capexToDepreciation\": + -1.5773889636608345,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 28.754045226644966,\n \"roic\": 0.2920014403245321,\n \"returnOnTangibleAssets\": + 0.2574934397752892,\n \"grahamNetNet\": -23.45535138620245,\n \"workingCapital\": + 1141000000,\n \"tangibleAssetValue\": -20694000000,\n \"netCurrentAssetValue\": + -30143000000,\n \"investedCapital\": -2.290904791929382,\n \"averageReceivables\": + 3138500000,\n \"averagePayables\": 1477500000,\n \"averageInventory\": + 8745000000,\n \"daysSalesOutstanding\": 47.85965898444819,\n \"daysPayablesOutstanding\": + 64.7524225322117,\n \"daysOfInventoryOnHand\": 350.4637418805239,\n \"receivablesTurnover\": + 7.6264647042012,\n \"payablesTurnover\": 5.636854741896759,\n \"inventoryTurnover\": + 1.041477209714983,\n \"roe\": -0.5491015132408575,\n \"capexPerShare\": + -0.7556415215989684\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 17.297611362169143,\n \"netIncomePerShare\": + 4.437056165267915,\n \"operatingCashFlowPerShare\": 5.077469335054874,\n + \ \"freeCashFlowPerShare\": 4.457714654615881,\n \"cashPerShare\": 2.2059393156875404,\n + \ \"bookValuePerShare\": -8.550032278889606,\n \"tangibleBookValuePerShare\": + -13.88896061975468,\n \"shareholdersEquityPerShare\": -8.550032278889606,\n + \ \"interestDebtPerShare\": 19.116849580374435,\n \"marketCap\": 136172590000,\n + \ \"enterpriseValue\": 161235590000,\n \"peRatio\": 19.812685872253745,\n + \ \"priceToSalesRatio\": 5.082204598044338,\n \"pocfratio\": 17.313743165924983,\n + \ \"pfcfRatio\": 19.72086748732802,\n \"pbRatio\": -10.281832527937178,\n + \ \"ptbRatio\": -10.281832527937178,\n \"evToSales\": 6.0176005822199,\n + \ \"enterpriseValueOverEBITDA\": 14.08540141521796,\n \"evToOperatingCashFlow\": + 20.500392879847425,\n \"evToFreeCashFlow\": 23.350556118754525,\n \"earningsYield\": + 0.05047271260684695,\n \"freeCashFlowYield\": 0.05070770850433263,\n \"debtToEquity\": + -3.4303835699184537,\n \"debtToAssets\": 1.3379667805395217,\n \"netDebtToEBITDA\": + 2.1894819603389535,\n \"currentRatio\": 1.0271675549200572,\n \"interestCoverage\": + 9.384275618374557,\n \"incomeQuality\": 1.1184584755403868,\n \"dividendYield\": + 0.045897636227672546,\n \"payoutRatio\": 0.9093554488578496,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.24841382399044562,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.2956178584049947,\n \"capexToOperatingCashFlow\": -0.12205975842339478,\n + \ \"capexToRevenue\": -0.035828916921698886,\n \"capexToDepreciation\": + -1.273209549071618,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 29.216124012545766,\n \"roic\": 0.29625673797129565,\n \"returnOnTangibleAssets\": + 0.28735680240822814,\n \"grahamNetNet\": -23.043899289864427,\n \"workingCapital\": + 418000000,\n \"tangibleAssetValue\": -21514000000,\n \"netCurrentAssetValue\": + -29628000000,\n \"investedCapital\": -2.1504077318030808,\n \"averageReceivables\": + 3391000000,\n \"averagePayables\": 1265500000,\n \"averageInventory\": + 8532500000,\n \"daysSalesOutstanding\": 37.84317384489064,\n \"daysPayablesOutstanding\": + 50.2386545648692,\n \"daysOfInventoryOnHand\": 330.23438334223175,\n \"receivablesTurnover\": + 9.645068394528439,\n \"payablesTurnover\": 7.265321955003879,\n \"inventoryTurnover\": + 1.105275581258114,\n \"roe\": -0.5189519782543038,\n \"capexPerShare\": + -0.6197546804389928\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 19.00830140485313,\n \"netIncomePerShare\": + 4.784802043422733,\n \"operatingCashFlowPerShare\": 4.941890166028097,\n + \ \"freeCashFlowPerShare\": 4.205619412515964,\n \"cashPerShare\": 1.0740740740740742,\n + \ \"bookValuePerShare\": -8.06449553001277,\n \"tangibleBookValuePerShare\": + -14.416347381864624,\n \"shareholdersEquityPerShare\": -8.06449553001277,\n + \ \"interestDebtPerShare\": 19.556194125159642,\n \"marketCap\": 127550700000,\n + \ \"enterpriseValue\": 155323700000,\n \"peRatio\": 17.022647804617645,\n + \ \"priceToSalesRatio\": 4.284969933147445,\n \"pocfratio\": 16.48154800361804,\n + \ \"pfcfRatio\": 19.366945034922562,\n \"pbRatio\": -10.099825797767046,\n + \ \"ptbRatio\": -10.099825797767046,\n \"evToSales\": 5.217983001310175,\n + \ \"enterpriseValueOverEBITDA\": 12.279524073049252,\n \"evToOperatingCashFlow\": + 20.07025455485205,\n \"evToFreeCashFlow\": 23.583920437291223,\n \"earningsYield\": + 0.05874526756811213,\n \"freeCashFlowYield\": 0.0516343697055367,\n \"debtToEquity\": + -3.6732916303745347,\n \"debtToAssets\": 1.3183846306874698,\n \"netDebtToEBITDA\": + 2.195667641710807,\n \"currentRatio\": 1.024616199047115,\n \"interestCoverage\": + 10.001709401709402,\n \"incomeQuality\": 1.0105771741969183,\n \"dividendYield\": + 0.04731451885407136,\n \"payoutRatio\": 0.805418390497798,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.23519333490106495,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.3232159604399352,\n \"capexToOperatingCashFlow\": -0.14898565706163586,\n + \ \"capexToRevenue\": -0.03873416871031679,\n \"capexToDepreciation\": + -1.296962879640045,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 29.465366628493165,\n \"roic\": 0.27138028107605555,\n \"returnOnTangibleAssets\": + 0.31464684639287815,\n \"grahamNetNet\": -23.8882503192848,\n \"workingCapital\": + 372000000,\n \"tangibleAssetValue\": -22576000000,\n \"netCurrentAssetValue\": + -30906000000,\n \"investedCapital\": -2.332330350779951,\n \"averageReceivables\": + 3928500000,\n \"averagePayables\": 1258000000,\n \"averageInventory\": + 9219000000,\n \"daysSalesOutstanding\": 49.09665065340814,\n \"daysPayablesOutstanding\": + 43.43905711000383,\n \"daysOfInventoryOnHand\": 300.5059409735531,\n \"receivablesTurnover\": + 7.434315684315684,\n \"payablesTurnover\": 8.402576489533011,\n \"inventoryTurnover\": + 1.2146182495344506,\n \"roe\": -0.5933169688811466,\n \"capexPerShare\": + -0.7362707535121328\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2013-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 19.245992601726265,\n \"netIncomePerShare\": + 5.287299630086313,\n \"operatingCashFlowPerShare\": 6.24845869297164,\n + \ \"freeCashFlowPerShare\": 5.508631319358816,\n \"cashPerShare\": 1.3279901356350186,\n + \ \"bookValuePerShare\": -4.787916152897657,\n \"tangibleBookValuePerShare\": + -11.319358816276202,\n \"shareholdersEquityPerShare\": -4.787916152897657,\n + \ \"interestDebtPerShare\": 17.744759556103578,\n \"marketCap\": 141324860000,\n + \ \"enterpriseValue\": 166848860000,\n \"peRatio\": 16.479111473880597,\n + \ \"priceToSalesRatio\": 4.527176218086299,\n \"pocfratio\": 13.944238776517018,\n + \ \"pfcfRatio\": 15.816996082820369,\n \"pbRatio\": -18.19789595673448,\n + \ \"ptbRatio\": -18.19789595673448,\n \"evToSales\": 5.3448076368645285,\n + \ \"enterpriseValueOverEBITDA\": 11.723500562113546,\n \"evToOperatingCashFlow\": + 16.462640355204737,\n \"evToFreeCashFlow\": 18.673627308337995,\n \"earningsYield\": + 0.06068288339362232,\n \"freeCashFlowYield\": 0.06322313002822008,\n \"debtToEquity\": + -5.72263713623487,\n \"debtToAssets\": 1.164378536994341,\n \"netDebtToEBITDA\": + 1.7934232715008431,\n \"currentRatio\": 0.9874604476737373,\n \"interestCoverage\": + 12.241847826086957,\n \"incomeQuality\": 1.1451977401129942,\n \"dividendYield\": + 0.040474124651529816,\n \"payoutRatio\": 0.6669776119402985,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.22071307300509338,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.31665269335569063,\n \"capexToOperatingCashFlow\": -0.11840157868771584,\n + \ \"capexToRevenue\": -0.038440593266489416,\n \"capexToDepreciation\": + -1.3605442176870748,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 23.86610178353917,\n \"roic\": 0.29338623477188086,\n \"returnOnTangibleAssets\": + 0.3288091404033433,\n \"grahamNetNet\": -21.254778051787916,\n \"workingCapital\": + -214000000,\n \"tangibleAssetValue\": -18360000000,\n \"netCurrentAssetValue\": + -27590000000,\n \"investedCapital\": -3.563996909605975,\n \"averageReceivables\": + 3721000000,\n \"averagePayables\": 1188500000,\n \"averageInventory\": + 9397500000,\n \"daysSalesOutstanding\": 45.05061344780088,\n \"daysPayablesOutstanding\": + 44.66954851104707,\n \"daysOfInventoryOnHand\": 345.2247838616715,\n \"receivablesTurnover\": + 8.101998442771865,\n \"payablesTurnover\": 8.171114599686028,\n \"inventoryTurnover\": + 1.0572821450335161,\n \"roe\": -1.1043007983517898,\n \"capexPerShare\": + -0.7398273736128237\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 18.54432624113475,\n \"netIncomePerShare\": + 5.200945626477542,\n \"operatingCashFlowPerShare\": 5.567966903073286,\n + \ \"freeCashFlowPerShare\": 4.943853427895981,\n \"cashPerShare\": 1.7630023640661938,\n + \ \"bookValuePerShare\": -2.054373522458629,\n \"tangibleBookValuePerShare\": + -9.085106382978724,\n \"shareholdersEquityPerShare\": -2.054373522458629,\n + \ \"interestDebtPerShare\": 14.09338061465721,\n \"marketCap\": 141518880000,\n + \ \"enterpriseValue\": 161374880000,\n \"peRatio\": 16.08169090909091,\n + \ \"priceToSalesRatio\": 4.510274404818817,\n \"pocfratio\": 15.021641014754273,\n + \ \"pfcfRatio\": 16.917977286312013,\n \"pbRatio\": -40.713141542002305,\n + \ \"ptbRatio\": -40.713141542002305,\n \"evToSales\": 5.143094623450298,\n + \ \"enterpriseValueOverEBITDA\": 11.100211858577522,\n \"evToOperatingCashFlow\": + 17.129272900965926,\n \"evToFreeCashFlow\": 19.29167722653915,\n \"earningsYield\": + 0.06218251585936803,\n \"freeCashFlowYield\": 0.059108721041319714,\n \"debtToEquity\": + -11.370253164556962,\n \"debtToAssets\": 1.0491903371383065,\n \"netDebtToEBITDA\": + 1.3657999724858991,\n \"currentRatio\": 0.9749647390691114,\n \"interestCoverage\": + 13.749751737835155,\n \"incomeQuality\": 1.0291675770155124,\n \"dividendYield\": + 0.03818571769363918,\n \"payoutRatio\": 0.6140909090909091,\n \"salesGeneralAndAdministrativeToRevenue\": + 0.2223921981068936,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.35887974515529597,\n \"capexToOperatingCashFlow\": -0.11209001167604288,\n + \ \"capexToRevenue\": -0.03365522516492973,\n \"capexToDepreciation\": + -1.175946547884187,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 15.505012486373738,\n \"roic\": 0.31892662421076523,\n \"returnOnTangibleAssets\": + 0.3643741459980953,\n \"grahamNetNet\": -17.36037234042553,\n \"workingCapital\": + -426000000,\n \"tangibleAssetValue\": -15372000000,\n \"netCurrentAssetValue\": + -22933000000,\n \"investedCapital\": -6.5704833141542,\n \"averageReceivables\": + 3395000000,\n \"averagePayables\": 1067000000,\n \"averageInventory\": + 8534500000,\n \"daysSalesOutstanding\": 41.74984861522771,\n \"daysPayablesOutstanding\": + 38.811819145859445,\n \"daysOfInventoryOnHand\": 314.8929914200328,\n \"receivablesTurnover\": + 8.742546670381723,\n \"payablesTurnover\": 9.404351767905712,\n \"inventoryTurnover\": + 1.1591239244608336,\n \"roe\": -2.5316455696202533,\n \"capexPerShare\": + -0.624113475177305\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2011-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 18.017755291808704,\n \"netIncomePerShare\": + 4.977667804351821,\n \"operatingCashFlowPerShare\": 6.100554570133898,\n + \ \"freeCashFlowPerShare\": 5.580828342627952,\n \"cashPerShare\": 1.4774825865553654,\n + \ \"bookValuePerShare\": 0.13268373032203085,\n \"tangibleBookValuePerShare\": + -6.872901349694017,\n \"shareholdersEquityPerShare\": 0.13268373032203085,\n + \ \"interestDebtPerShare\": 11.28622874647528,\n \"marketCap\": 135449312107.68001,\n + \ \"enterpriseValue\": 151444312107.68,\n \"peRatio\": 15.766419754124083,\n + \ \"priceToSalesRatio\": 4.355703511839727,\n \"pocfratio\": 12.864404227151677,\n + \ \"pfcfRatio\": 14.062428582607975,\n \"pbRatio\": 591.4817122606114,\n + \ \"ptbRatio\": 591.4817122606114,\n \"evToSales\": 4.870061810067852,\n + \ \"enterpriseValueOverEBITDA\": 10.686917797451132,\n \"evToOperatingCashFlow\": + 14.383541847058599,\n \"evToFreeCashFlow\": 15.723039047724251,\n \"earningsYield\": + 0.06342594042242382,\n \"freeCashFlowYield\": 0.07111147225570785,\n \"debtToEquity\": + 147.2707423580786,\n \"debtToAssets\": 0.9503212353471596,\n \"netDebtToEBITDA\": + 1.1287135699668336,\n \"currentRatio\": 1.0043936731107206,\n \"interestCoverage\": + 14.274089935760172,\n \"incomeQuality\": 1.1858317378083116,\n \"dividendYield\": + 0.03534901673176175,\n \"payoutRatio\": 0.5573274356885113,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.3839325969341749,\n \"capexToOperatingCashFlow\": -0.08519327571469275,\n + \ \"capexToRevenue\": -0.02884522622761038,\n \"capexToDepreciation\": + -0.9033232628398792,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 3.854899412847063,\n \"roic\": 0.3217564798601053,\n \"returnOnTangibleAssets\": + 0.3929469880620226,\n \"grahamNetNet\": -14.319558437167034,\n \"workingCapital\": + 65000000,\n \"tangibleAssetValue\": -11862000000,\n \"netCurrentAssetValue\": + -18866000000,\n \"investedCapital\": 80.9825327510917,\n \"averageReceivables\": + 3105000000,\n \"averagePayables\": 933000000,\n \"averageInventory\": + 8218500000,\n \"daysSalesOutstanding\": 37.571630703926424,\n \"daysPayablesOutstanding\": + 35.242086533058625,\n \"daysOfInventoryOnHand\": 277.5613410751077,\n \"receivablesTurnover\": + 9.714776632302405,\n \"payablesTurnover\": 10.35693501454898,\n \"inventoryTurnover\": + 1.315024630541872,\n \"roe\": 37.51528384279476,\n \"capexPerShare\": + -0.5197262275059461\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 14.79499728113105,\n \"netIncomePerShare\": + 3.9472539423599784,\n \"operatingCashFlowPerShare\": 5.131593257205003,\n + \ \"freeCashFlowPerShare\": 4.7438825448613375,\n \"cashPerShare\": 0.9260467645459489,\n + \ \"bookValuePerShare\": 1.9064709081022295,\n \"tangibleBookValuePerShare\": + -4.846655791190865,\n \"shareholdersEquityPerShare\": 1.9064709081022295,\n + \ \"interestDebtPerShare\": 9.502990755845568,\n \"marketCap\": 107636670000,\n + \ \"enterpriseValue\": 122435670000,\n \"peRatio\": 14.828030031684804,\n + \ \"priceToSalesRatio\": 3.9560669655983536,\n \"pocfratio\": 11.405814347780016,\n + \ \"pfcfRatio\": 12.337995185694636,\n \"pbRatio\": 30.700704506560182,\n + \ \"ptbRatio\": 30.700704506560182,\n \"evToSales\": 4.499987871214349,\n + \ \"enterpriseValueOverEBITDA\": 10.21063047285464,\n \"evToOperatingCashFlow\": + 12.974003390908127,\n \"evToFreeCashFlow\": 14.03435006877579,\n \"earningsYield\": + 0.0674398418308556,\n \"freeCashFlowYield\": 0.08105044498310846,\n \"debtToEquity\": + 8.53650884198517,\n \"debtToAssets\": 0.8538944365192582,\n \"netDebtToEBITDA\": + 1.2341756317237929,\n \"currentRatio\": 1.0743517650734145,\n \"interestCoverage\": + 11.498973305954825,\n \"incomeQuality\": 1.258602293945052,\n \"dividendYield\": + 0.04109194385147738,\n \"payoutRatio\": 0.6093125774900124,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.40039942938659057,\n \"capexToOperatingCashFlow\": -0.0755536717177069,\n + \ \"capexToRevenue\": -0.02620552778594531,\n \"capexToDepreciation\": + -0.7650214592274678,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 13.012294500971974,\n \"roic\": 0.2640206285797149,\n \"returnOnTangibleAssets\": + 0.34540350209364296,\n \"grahamNetNet\": -11.860114192495923,\n \"workingCapital\": + 952000000,\n \"tangibleAssetValue\": -8913000000,\n \"netCurrentAssetValue\": + -16173000000,\n \"investedCapital\": 4.706788362806617,\n \"averageReceivables\": + 3053500000,\n \"averagePayables\": 752500000,\n \"averageInventory\": + 8762000000,\n \"daysSalesOutstanding\": 40.366252572772716,\n \"daysPayablesOutstanding\": + 31.378050036034182,\n \"daysOfInventoryOnHand\": 312.5404097601153,\n \"receivablesTurnover\": + 9.042206713193751,\n \"payablesTurnover\": 11.632335329341318,\n \"inventoryTurnover\": + 1.167848984008657,\n \"roe\": 2.0704506560182545,\n \"capexPerShare\": + -0.38771071234366505\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 12.884714359238291,\n \"netIncomePerShare\": + 3.2640247040658776,\n \"operatingCashFlowPerShare\": 4.057642820380854,\n + \ \"freeCashFlowPerShare\": 3.689655172413793,\n \"cashPerShare\": 0.7925887802367473,\n + \ \"bookValuePerShare\": 2.941842511580031,\n \"tangibleBookValuePerShare\": + -3.3520329387545034,\n \"shareholdersEquityPerShare\": 2.941842511580031,\n + \ \"interestDebtPerShare\": 8.344312918167782,\n \"marketCap\": 93633170000,\n + \ \"enterpriseValue\": 107509170000,\n \"peRatio\": 14.763981393882055,\n + \ \"priceToSalesRatio\": 3.7400906730577193,\n \"pocfratio\": 11.876353373921866,\n + \ \"pfcfRatio\": 13.060841121495327,\n \"pbRatio\": 16.380890482855143,\n + \ \"ptbRatio\": 16.380890482855143,\n \"evToSales\": 4.294354703415219,\n + \ \"enterpriseValueOverEBITDA\": 10.063574838528503,\n \"evToOperatingCashFlow\": + 13.636373668188737,\n \"evToFreeCashFlow\": 14.99639698702748,\n \"earningsYield\": + 0.06773240722278227,\n \"freeCashFlowYield\": 0.07656474730055599,\n \"debtToEquity\": + 4.969734079776067,\n \"debtToAssets\": 0.8221521185459597,\n \"netDebtToEBITDA\": + 1.298886080688945,\n \"currentRatio\": 1.3134728931830382,\n \"interestCoverage\": + 12.59723964868256,\n \"incomeQuality\": 1.2032967032967032,\n \"dividendYield\": + 0.0462122557636359,\n \"payoutRatio\": 0.6822768842636392,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.36634637647603613,\n \"capexToOperatingCashFlow\": -0.09069000507356671,\n + \ \"capexToRevenue\": -0.028560015977631317,\n \"capexToDepreciation\": + -0.8382180539273154,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 14.69865807645513,\n \"roic\": 0.23105519204325875,\n \"returnOnTangibleAssets\": + 0.2896684023020005,\n \"grahamNetNet\": -10.262480699948533,\n \"workingCapital\": + 3504000000,\n \"tangibleAssetValue\": -6513000000,\n \"netCurrentAssetValue\": + -13725000000,\n \"investedCapital\": 2.696990902729181,\n \"averageReceivables\": + 2973000000,\n \"averagePayables\": 841500000,\n \"averageInventory\": + 9435500000,\n \"daysSalesOutstanding\": 45.167565408428196,\n \"daysPayablesOutstanding\": + 27.105963201064068,\n \"daysOfInventoryOnHand\": 372.4844823764132,\n \"receivablesTurnover\": + 8.081020012911555,\n \"payablesTurnover\": 13.465671641791046,\n \"inventoryTurnover\": + 0.9799065928098186,\n \"roe\": 1.109517144856543,\n \"capexPerShare\": + -0.36798764796706124\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 12.429883945841393,\n \"netIncomePerShare\": + 3.3317214700193425,\n \"operatingCashFlowPerShare\": 3.8370406189555126,\n + \ \"freeCashFlowPerShare\": 3.3056092843326885,\n \"cashPerShare\": 0.7403288201160542,\n + \ \"bookValuePerShare\": 3.6266924564796907,\n \"tangibleBookValuePerShare\": + -1.740328820116054,\n \"shareholdersEquityPerShare\": 3.6266924564796907,\n + \ \"interestDebtPerShare\": 6.0391682785299805,\n \"marketCap\": 89978680000,\n + \ \"enterpriseValue\": 100408680000,\n \"peRatio\": 13.05931494920174,\n + \ \"priceToSalesRatio\": 3.50043493483758,\n \"pocfratio\": 11.339468178954,\n + \ \"pfcfRatio\": 13.162475131655938,\n \"pbRatio\": 11.997157333333332,\n + \ \"ptbRatio\": 11.997157333333332,\n \"evToSales\": 3.9061925695390003,\n + \ \"enterpriseValueOverEBITDA\": 9.089226034217434,\n \"evToOperatingCashFlow\": + 12.653897920604916,\n \"evToFreeCashFlow\": 14.688221181977765,\n \"earningsYield\": + 0.07657369501308532,\n \"freeCashFlowYield\": 0.0759735528460742,\n \"debtToEquity\": + 3.3962666666666665,\n \"debtToAssets\": 0.7725342715030935,\n \"netDebtToEBITDA\": + 0.9441477324160406,\n \"currentRatio\": 1.4726932176656151,\n \"interestCoverage\": + 19.40909090909091,\n \"incomeQuality\": 1.1516690856313498,\n \"dividendYield\": + 0.05644670493054577,\n \"payoutRatio\": 0.7371552975326561,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.33661894941162196,\n \"capexToOperatingCashFlow\": -0.13850031505986138,\n + \ \"capexToRevenue\": -0.04275432795176036,\n \"capexToDepreciation\": + -1.3052256532066508,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 16.488493116541544,\n \"roic\": 0.25517440499432686,\n \"returnOnTangibleAssets\": + 0.31500022859232846,\n \"grahamNetNet\": -8.207446808510639,\n \"workingCapital\": + 4795000000,\n \"tangibleAssetValue\": -3599000000,\n \"netCurrentAssetValue\": + -10533000000,\n \"investedCapital\": 1.5948,\n \"averageReceivables\": + 3172500000,\n \"averagePayables\": 932500000,\n \"averageInventory\": + 9498000000,\n \"daysSalesOutstanding\": 40.440381248784284,\n \"daysPayablesOutstanding\": + 39.63818610634648,\n \"daysOfInventoryOnHand\": 378.147512864494,\n \"receivablesTurnover\": + 9.02563202247191,\n \"payablesTurnover\": 9.208292201382033,\n \"inventoryTurnover\": + 0.9652317880794702,\n \"roe\": 0.9186666666666666,\n \"capexPerShare\": + -0.531431334622824\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2007-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 10.85102332222751,\n \"netIncomePerShare\": + 2.8681580199904806,\n \"operatingCashFlowPerShare\": 2.6601618277010948,\n + \ \"freeCashFlowPerShare\": 2.1499286054259876,\n \"cashPerShare\": 0.7881960970966206,\n + \ \"bookValuePerShare\": 7.330318895763922,\n \"tangibleBookValuePerShare\": + 2.6511185149928607,\n \"shareholdersEquityPerShare\": 7.330318895763922,\n + \ \"interestDebtPerShare\": 3.0019038553069968,\n \"marketCap\": 103768387899,\n + \ \"enterpriseValue\": 108419387899,\n \"peRatio\": 17.22011083620976,\n + \ \"priceToSalesRatio\": 4.551644350337749,\n \"pocfratio\": 18.56653925550188,\n + \ \"pfcfRatio\": 22.97285541266327,\n \"pbRatio\": 6.737769488929291,\n + \ \"ptbRatio\": 6.737769488929291,\n \"evToSales\": 4.755653473945083,\n + \ \"enterpriseValueOverEBITDA\": 11.610557710323409,\n \"evToOperatingCashFlow\": + 19.398709590087673,\n \"evToFreeCashFlow\": 24.002521119991144,\n \"earningsYield\": + 0.05807163551451946,\n \"freeCashFlowYield\": 0.04352963452025961,\n \"debtToEquity\": + 1.080579183169924,\n \"debtToAssets\": 0.5193646038136255,\n \"netDebtToEBITDA\": + 0.4980723923752409,\n \"currentRatio\": 1.76026195766577,\n \"interestCoverage\": + 0,\n \"incomeQuality\": 0.9274809160305344,\n \"dividendYield\": 0.06321771141308458,\n + \ \"payoutRatio\": 1.088615997344839,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.3068064787941204,\n \"capexToOperatingCashFlow\": -0.19180533190195026,\n + \ \"capexToRevenue\": -0.04702166856741819,\n \"capexToDepreciation\": + -1.4331550802139037,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 21.749748065768344,\n \"roic\": 0.2261955979179331,\n \"returnOnTangibleAssets\": + 0.27129479560597874,\n \"grahamNetNet\": -3.663612565445026,\n \"workingCapital\": + 6501000000,\n \"tangibleAssetValue\": 5570000000,\n \"netCurrentAssetValue\": + -1590000000,\n \"investedCapital\": 0.40951886241153174,\n \"averageReceivables\": + 2828500000,\n \"averagePayables\": 762000000,\n \"averageInventory\": + 8203500000,\n \"daysSalesOutstanding\": 55.98758663040618,\n \"daysPayablesOutstanding\": + 35.662844036697244,\n \"daysOfInventoryOnHand\": 390.6169724770642,\n \"receivablesTurnover\": + 6.519302259079211,\n \"payablesTurnover\": 10.234741784037558,\n \"inventoryTurnover\": + 0.9344192027432491,\n \"roe\": 0.3912732939419518,\n \"capexPerShare\": + -0.5102332222751071\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2006-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 22.879486944316433,\n \"netIncomePerShare\": + 2.9137448561908164,\n \"operatingCashFlowPerShare\": 2.95641277631076,\n + \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n + \ \"bookValuePerShare\": 6.763813515013729,\n \"tangibleBookValuePerShare\": + 3.0545489925866303,\n \"shareholdersEquityPerShare\": 6.763813515013729,\n + \ \"interestDebtPerShare\": 1.3208091717129213,\n \"marketCap\": 104178968590.55698,\n + \ \"enterpriseValue\": 105288968590.55698,\n \"peRatio\": 16.950694531493163,\n + \ \"priceToSalesRatio\": 2.1587022086729584,\n \"pocfratio\": 16.706056541141272,\n + \ \"pfcfRatio\": 19.472704409449904,\n \"pbRatio\": 7.3020935438814725,\n + \ \"ptbRatio\": 7.3020935438814725,\n \"evToSales\": 2.1817026230948398,\n + \ \"enterpriseValueOverEBITDA\": 12.196104319536312,\n \"evToOperatingCashFlow\": + 16.884055258267637,\n \"evToFreeCashFlow\": 19.68018104496392,\n \"earningsYield\": + 0.05899463282416378,\n \"freeCashFlowYield\": 0.05135393517886043,\n \"debtToEquity\": + 0.8307983458330412,\n \"debtToAssets\": 0.45379019908116386,\n \"netDebtToEBITDA\": + 0.1285763929109232,\n \"currentRatio\": 1.706252682787237,\n \"interestCoverage\": + 0,\n \"incomeQuality\": 1.0146436706801172,\n \"dividendYield\": 0.02668484856023028,\n + \ \"payoutRatio\": 0.4523267165636186,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.2995405819295559,\n \"capexToOperatingCashFlow\": -0.14207825529185375,\n + \ \"capexToRevenue\": -0.018358889349357647,\n \"capexToDepreciation\": + -1.3465045592705167,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 21.05779199835815,\n \"roic\": 0.2945070230858761,\n \"returnOnTangibleAssets\": + 0.3359204197638828,\n \"grahamNetNet\": -2.379684722689522,\n \"workingCapital\": + 4936000000,\n \"tangibleAssetValue\": 6443000000,\n \"netCurrentAssetValue\": + 72000000,\n \"investedCapital\": 0.1952758113128198,\n \"averageReceivables\": + 2029000000,\n \"averagePayables\": 670500000,\n \"averageInventory\": + 6247500000,\n \"daysSalesOutstanding\": 16.336510567757976,\n \"daysPayablesOutstanding\": + 6.886212414722479,\n \"daysOfInventoryOnHand\": 72.49992981274039,\n \"receivablesTurnover\": + 22.34259259259259,\n \"payablesTurnover\": 53.004464285714285,\n \"inventoryTurnover\": + 5.034487632508834,\n \"roe\": 0.4307843274689844,\n \"capexPerShare\": + -0.4200419691807783\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2005-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 21.47049740435563,\n \"netIncomePerShare\": + 2.6643745674898125,\n \"operatingCashFlowPerShare\": 2.445345910874102,\n + \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n + \ \"bookValuePerShare\": 4.88642502973621,\n \"tangibleBookValuePerShare\": + 1.5820316604472429,\n \"shareholdersEquityPerShare\": 4.88642502973621,\n + \ \"interestDebtPerShare\": 2.327297998542258,\n \"marketCap\": 104178968590.55698,\n + \ \"enterpriseValue\": 107878968590.55698,\n \"peRatio\": 18.537183023230778,\n + \ \"priceToSalesRatio\": 2.300365849464692,\n \"pocfratio\": 20.197551103248735,\n + \ \"pfcfRatio\": 23.559242105508137,\n \"pbRatio\": 10.107593731498687,\n + \ \"ptbRatio\": 10.107593731498687,\n \"evToSales\": 2.382065195869921,\n + \ \"enterpriseValueOverEBITDA\": 13.515280454843019,\n \"evToOperatingCashFlow\": + 20.914883402589567,\n \"evToFreeCashFlow\": 24.39596756909927,\n \"earningsYield\": + 0.05394562910377488,\n \"freeCashFlowYield\": 0.042446187170265576,\n \"debtToEquity\": + 1.2445910546230716,\n \"debtToAssets\": 0.5544845472228226,\n \"netDebtToEBITDA\": + 0.46354297168629416,\n \"currentRatio\": 1.582728133880644,\n \"interestCoverage\": + 0,\n \"incomeQuality\": 0.9177935943060498,\n \"dividendYield\": 0.07373849159701044,\n + \ \"payoutRatio\": 1.3669039145907473,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.30127512427058567,\n \"capexToOperatingCashFlow\": -0.1426909654905002,\n + \ \"capexToRevenue\": -0.016251545663310368,\n \"capexToDepreciation\": + -1.396584440227704,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 17.115300112514333,\n \"roic\": 0.29316768403913324,\n \"returnOnTangibleAssets\": + 0.34766470770182495,\n \"grahamNetNet\": -3.5487857339759774,\n \"workingCapital\": + 3691000000,\n \"tangibleAssetValue\": 3337000000,\n \"netCurrentAssetValue\": + -2803000000,\n \"investedCapital\": 0.4762782574949064,\n \"averageReceivables\": + null,\n \"averagePayables\": null,\n \"averageInventory\": null,\n \"daysSalesOutstanding\": + 15.296988164635223,\n \"daysPayablesOutstanding\": 7.417527339003645,\n + \ \"daysOfInventoryOnHand\": 60.09416767922236,\n \"receivablesTurnover\": + 23.8609062170706,\n \"payablesTurnover\": 49.20777279521674,\n \"inventoryTurnover\": + 6.07380073800738,\n \"roe\": 0.5452605025710682,\n \"capexPerShare\": + -0.3489287689808723\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n + \ \"period\": \"FY\",\n \"revenuePerShare\": 16.464003944773175,\n \"netIncomePerShare\": + 1.9600591715976332,\n \"operatingCashFlowPerShare\": 2.2830374753451674,\n + \ \"freeCashFlowPerShare\": 1.9940828402366864,\n \"cashPerShare\": 1.5586785009861932,\n + \ \"bookValuePerShare\": 5.173076923076923,\n \"tangibleBookValuePerShare\": + 4.178994082840236,\n \"shareholdersEquityPerShare\": 5.173076923076923,\n + \ \"interestDebtPerShare\": 0,\n \"marketCap\": 100162917972,\n \"enterpriseValue\": + 97001917972,\n \"peRatio\": 25.19821835773585,\n \"priceToSalesRatio\": + 2.999877743328641,\n \"pocfratio\": 21.63345960518359,\n \"pfcfRatio\": + 24.768278430267063,\n \"pbRatio\": 9.547509100371748,\n \"ptbRatio\": + 9.547509100371748,\n \"evToSales\": 2.905205845398185,\n \"enterpriseValueOverEBITDA\": + 15.074113126961928,\n \"evToOperatingCashFlow\": 20.95073822289417,\n \"evToFreeCashFlow\": + 23.98662660039565,\n \"earningsYield\": 0.039685345440027914,\n \"freeCashFlowYield\": + 0.040374223134458584,\n \"debtToEquity\": 0.6804880373653608,\n \"debtToAssets\": + 0.40493477027793534,\n \"netDebtToEBITDA\": -0.49121989121989124,\n \"currentRatio\": + 0,\n \"interestCoverage\": 0,\n \"incomeQuality\": 0,\n \"dividendYield\": + 0,\n \"payoutRatio\": 0,\n \"salesGeneralAndAdministrativeToRevenue\": + 0,\n \"researchAndDdevelopementToRevenue\": 0,\n \"intangiblesToTotalAssets\": + 0.11435053885422575,\n \"capexToOperatingCashFlow\": -0.1265658747300216,\n + \ \"capexToRevenue\": -0.01755069034712031,\n \"capexToDepreciation\": + -1.5837837837837838,\n \"stockBasedCompensationToRevenue\": 0,\n \"grahamNumber\": + 15.104290103817597,\n \"roic\": 0.3636114834130041,\n \"returnOnTangibleAssets\": + 0.2545792237735366,\n \"grahamNetNet\": -0.9077909270216963,\n \"workingCapital\": + 11053000000,\n \"tangibleAssetValue\": 8475000000,\n \"netCurrentAssetValue\": + 3914000000,\n \"investedCapital\": 0,\n \"averageReceivables\": null,\n + \ \"averagePayables\": null,\n \"averageInventory\": null,\n \"daysSalesOutstanding\": + 0,\n \"daysPayablesOutstanding\": 0,\n \"daysOfInventoryOnHand\": 65.4888543721926,\n + \ \"receivablesTurnover\": 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": + 5.573467477772579,\n \"roe\": 0.3788961967400629,\n \"capexPerShare\": + -0.28895463510848124\n }\n]" + headers: + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Headers: + - X-Requested-With, content-type, auth-token, Authorization, stripe-signature, + APPS + Access-Control-Allow-Methods: + - GET, POST, OPTIONS + Access-Control-Allow-Origin: + - '*' + Access-Control-Max-Age: + - '3600' + Connection: + - close + Content-Length: + - '47542' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 11 May 2023 06:59:08 GMT + ETag: + - W/"b9b6-hm7MaT+iOAssXTS7ULuPG4xXEOc" + Server: + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_ratios-kwargs_dict7].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_ratios-kwargs_dict7].yaml index c9be47b12a0c..93f0cf7a0ef8 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_ratios-kwargs_dict7].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_key_ratios-kwargs_dict7].yaml @@ -10,51 +10,53 @@ interactions: uri: https://financialmodelingprep.com/api/v3/ratios/PM?apikey=MOCK_API_KEY&limit=0&period=annual response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-09-30\",\n \"period\": - \"FY\",\n \"currentRatio\": 1.9048970901348474,\n \"quickRatio\": 1.9048970901348474,\n - \ \"cashRatio\": 1.9048970901348474,\n \"daysOfSalesOutstanding\": 0,\n - \ \"daysOfInventoryOutstanding\": 0,\n \"operatingCycle\": 0,\n \"daysOfPayablesOutstanding\": - 0,\n \"cashConversionCycle\": 0,\n \"grossProfitMargin\": 0.6410175681632139,\n - \ \"operatingProfitMargin\": 0.384799445878723,\n \"pretaxProfitMargin\": - 0.3662867577608463,\n \"netProfitMargin\": 0.2848687110383477,\n \"effectiveTaxRate\": - 0.1928829293450232,\n \"returnOnAssets\": 0.222216764496402,\n \"returnOnEquity\": - -0.9902593849184634,\n \"returnOnCapitalEmployed\": 0.32248872001899787,\n - \ \"netIncomePerEBT\": 0.777720474471377,\n \"ebtPerEbit\": 0.9518900343642611,\n - \ \"ebitPerRevenue\": 0.384799445878723,\n \"debtRatio\": 1.1818159491121645,\n - \ \"debtEquityRatio\": -5.26649885082631,\n \"longTermDebtToCapitalization\": - 1.7237227722772277,\n \"totalDebtToCapitalization\": 1.5916596516220942,\n - \ \"interestCoverage\": 15.9140625,\n \"cashFlowToDebtRatio\": 0.43950366151342557,\n - \ \"companyEquityMultiplier\": -4.456276677246361,\n \"receivablesTurnover\": - 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": 0,\n \"fixedAssetTurnover\": - 5.6616755793226385,\n \"assetTurnover\": 0.7800672937593635,\n \"operatingCashFlowPerShare\": - 6.938342967244702,\n \"freeCashFlowPerShare\": 6.246628131021194,\n \"cashPerShare\": - 3.447655748233783,\n \"payoutRatio\": 0.863395225464191,\n \"operatingCashFlowSalesRatio\": + string: "[\n {\n \"symbol\": \"PM\",\n \"date\": \"2022-12-31\",\n \"period\": + \"FY\",\n \"currentRatio\": 0.7176982733391865,\n \"quickRatio\": 0.291300848697688,\n + \ \"cashRatio\": 0.11731782265144863,\n \"daysOfSalesOutstanding\": 54.65461872678043,\n + \ \"daysOfInventoryOutstanding\": 316.4699175583231,\n \"operatingCycle\": + 371.12453628510355,\n \"daysOfPayablesOutstanding\": 130.48061743553762,\n + \ \"cashConversionCycle\": 240.64391884956592,\n \"grossProfitMargin\": + 0.6410175681632139,\n \"operatingProfitMargin\": 0.38555506580190163,\n + \ \"pretaxProfitMargin\": 0.3662867577608463,\n \"netProfitMargin\": + 0.2848687110383477,\n \"effectiveTaxRate\": 0.1928829293450232,\n \"returnOnAssets\": + 0.14669022875764012,\n \"returnOnEquity\": -1.0101596516690856,\n \"returnOnCapitalEmployed\": + 0.3565584510117921,\n \"netIncomePerEBT\": 0.777720474471377,\n \"ebtPerEbit\": + 0.9500244977951985,\n \"ebitPerRevenue\": 0.38555506580190163,\n \"debtRatio\": + 1.1023167588074123,\n \"debtEquityRatio\": -4.814446801384392,\n \"longTermDebtToCapitalization\": + 1.3455899374951772,\n \"totalDebtToCapitalization\": 1.2621612129017152,\n + \ \"interestCoverage\": 20.8265306122449,\n \"cashFlowToDebtRatio\": + 0.25051596595784154,\n \"companyEquityMultiplier\": -6.886345874734844,\n + \ \"receivablesTurnover\": 6.678301093355761,\n \"payablesTurnover\": + 2.797350343473994,\n \"inventoryTurnover\": 1.1533481691280598,\n \"fixedAssetTurnover\": + 4.733532041728763,\n \"assetTurnover\": 0.5149397707559864,\n \"operatingCashFlowPerShare\": + 6.969677419354839,\n \"freeCashFlowPerShare\": 6.274838709677419,\n \"cashPerShare\": + 2.069032258064516,\n \"payoutRatio\": 0.863395225464191,\n \"operatingCashFlowSalesRatio\": 0.3401234179207858,\n \"freeCashFlowOperatingCashFlowRatio\": 0.9003054707025826,\n - \ \"cashFlowCoverageRatios\": 0.43950366151342557,\n \"shortTermCoverageRatios\": - 3.833569907735983,\n \"capitalExpenditureCoverageRatio\": -10.030640668523677,\n + \ \"cashFlowCoverageRatios\": 0.25051596595784154,\n \"shortTermCoverageRatios\": + 1.309772065955383,\n \"capitalExpenditureCoverageRatio\": -10.030640668523677,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.6040089086859688,\n \"dividendPayoutRatio\": - 0.8633952254641911,\n \"priceBookValueRatio\": -14.145405494144688,\n \"priceToBookRatio\": - -14.145405494144688,\n \"priceToSalesRatio\": 4.069220137270953,\n \"priceEarningsRatio\": - 14.284545755968171,\n \"priceToFreeCashFlowsRatio\": 13.28876927822332,\n - \ \"priceToOperatingCashFlowsRatio\": 11.963951680088865,\n \"priceCashFlowRatio\": - 11.963951680088865,\n \"priceEarningsToGrowthRatio\": -41.63945087864626,\n - \ \"priceSalesRatio\": 4.069220137270953,\n \"dividendYield\": 0.06044260981161821,\n - \ \"enterpriseValueMultiple\": 10.923299977926568,\n \"priceFairValue\": - -14.145405494144688\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n + 0.8633952254641909,\n \"priceBookValueRatio\": -17.51429049905102,\n \"priceToBookRatio\": + -17.51429049905102,\n \"priceToSalesRatio\": 4.939093885775455,\n \"priceEarningsRatio\": + 17.338141025641022,\n \"priceToFreeCashFlowsRatio\": 16.12949825210775,\n + \ \"priceToOperatingCashFlowsRatio\": 14.521475516060352,\n \"priceCashFlowRatio\": + 14.521475516060352,\n \"priceEarningsToGrowthRatio\": -101.08136217948932,\n + \ \"priceSalesRatio\": 4.939093885775455,\n \"dividendYield\": 0.049797450844778185,\n + \ \"enterpriseValueMultiple\": 16.10141548028146,\n \"priceFairValue\": + -17.51429049905102\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2021-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 0.9201246429498832,\n \"quickRatio\": 0.4381199688392625,\n \"cashRatio\": 0.2334977927810958,\n \"daysOfSalesOutstanding\": 45.79207132622194,\n \"daysOfInventoryOutstanding\": 317.3280159521436,\n \ \"operatingCycle\": 363.12008727836553,\n \"daysOfPayablesOutstanding\": 121.21784646061815,\n \"cashConversionCycle\": 241.90224081774738,\n \"grossProfitMargin\": - 0.6806241044419679,\n \"operatingProfitMargin\": 0.40948893488298044,\n + 0.6806241044419679,\n \"operatingProfitMargin\": 0.4131507721700366,\n \ \"pretaxProfitMargin\": 0.38949211908931697,\n \"netProfitMargin\": 0.29004935519821684,\n \"effectiveTaxRate\": 0.2183616742969261,\n \"returnOnAssets\": 0.22061031726810365,\n \"returnOnEquity\": -0.9013457352068078,\n \"returnOnCapitalEmployed\": - 0.5836169729975039,\n \"netIncomePerEBT\": 0.7446860693263571,\n \"ebtPerEbit\": - 0.9511664074650078,\n \"ebitPerRevenue\": 0.40948893488298044,\n \"debtRatio\": - 1.198789053039477,\n \"debtEquityRatio\": -4.897882446071641,\n \"longTermDebtToCapitalization\": + 0.5888359428182437,\n \"netIncomePerEBT\": 0.7446860693263571,\n \"ebtPerEbit\": + 0.9427360308285164,\n \"ebitPerRevenue\": 0.4131507721700366,\n \"debtRatio\": + 1.198789053039477,\n \"debtEquityRatio\": -2.7514347912131405,\n \"longTermDebtToCapitalization\": 1.6885603324930163,\n \"totalDebtToCapitalization\": 1.5709604519774012,\n - \ \"interestCoverage\": 17.44911804613297,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 20.660828025477706,\n \"cashFlowToDebtRatio\": 0.4303747392649069,\n \"companyEquityMultiplier\": -4.085691668315852,\n \ \"receivablesTurnover\": 7.970812182741117,\n \"payablesTurnover\": 3.01110777544281,\n \"inventoryTurnover\": 1.150229357798165,\n \"fixedAssetTurnover\": @@ -71,7 +73,7 @@ interactions: \ \"priceToOperatingCashFlowsRatio\": 12.368179159354893,\n \"priceCashFlowRatio\": 12.368179159354893,\n \"priceEarningsToGrowthRatio\": 1.2513974206254928,\n \ \"priceSalesRatio\": 4.712943798758159,\n \"dividendYield\": 0.05121275589487197,\n - \ \"enterpriseValueMultiple\": 12.266055702727858,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 13.223217042297005,\n \"priceFairValue\": -14.645754997031466\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2020-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.0956920723935764,\n \"quickRatio\": 0.562885546775427,\n \"cashRatio\": 0.3711445322457303,\n \"daysOfSalesOutstanding\": @@ -84,9 +86,9 @@ interactions: -0.6410440041378213,\n \"returnOnCapitalEmployed\": 0.463015873015873,\n \ \"netIncomePerEBT\": 0.7355062539943394,\n \"ebtPerEbit\": 0.9387212889955434,\n \ \"ebitPerRevenue\": 0.4066355335610232,\n \"debtRatio\": 1.2372196809104095,\n - \ \"debtEquityRatio\": -4.412031511100501,\n \"longTermDebtToCapitalization\": + \ \"debtEquityRatio\": -2.5094294581045595,\n \"longTermDebtToCapitalization\": 1.805525286840587,\n \"totalDebtToCapitalization\": 1.6625019769096947,\n - \ \"interestCoverage\": 16.02747252747253,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 18.880258899676374,\n \"cashFlowToDebtRatio\": 0.31113647894469815,\n \"companyEquityMultiplier\": -3.5660857802180312,\n \ \"receivablesTurnover\": 7.6293538952406275,\n \"payablesTurnover\": 3.442086330935252,\n \"inventoryTurnover\": 0.9977061828797831,\n \"fixedAssetTurnover\": @@ -103,7 +105,7 @@ interactions: \ \"priceToOperatingCashFlowsRatio\": 13.137385854056259,\n \"priceCashFlowRatio\": 13.137385854056259,\n \"priceEarningsToGrowthRatio\": 1.3411744567572454,\n \ \"priceSalesRatio\": 4.49236878789991,\n \"dividendYield\": 0.05712777172288562,\n - \ \"enterpriseValueMultiple\": 12.614069346071487,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 13.15355805565098,\n \"priceFairValue\": -10.25734304129864\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2019-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.0892582169595921,\n \"quickRatio\": 0.5616736579408486,\n \"cashRatio\": 0.3643073328731482,\n \"daysOfSalesOutstanding\": @@ -116,9 +118,9 @@ interactions: 0.1675801749271137,\n \"returnOnEquity\": -0.6206271054677378,\n \"returnOnCapitalEmployed\": 0.4380251227019383,\n \"netIncomePerEBT\": 0.7278160453808752,\n \"ebtPerEbit\": 0.9374228468331592,\n \"ebitPerRevenue\": 0.3533299781915786,\n \"debtRatio\": - 1.2238833819241983,\n \"debtEquityRatio\": -4.5326077567590914,\n \"longTermDebtToCapitalization\": + 1.2238833819241983,\n \"debtEquityRatio\": -2.6816100889695087,\n \"longTermDebtToCapitalization\": 1.7677564825253664,\n \"totalDebtToCapitalization\": 1.5946681734127799,\n - \ \"interestCoverage\": 13.229899497487438,\n \"cashFlowToDebtRatio\": + \ \"interestCoverage\": 18.475438596491227,\n \"cashFlowToDebtRatio\": 0.3250120792398132,\n \"companyEquityMultiplier\": -3.70346376436037,\n \ \"receivablesTurnover\": 8.018563357546409,\n \"payablesTurnover\": 4.572857764245324,\n \"inventoryTurnover\": 1.1383865728207905,\n \"fixedAssetTurnover\": @@ -133,9 +135,9 @@ interactions: -11.429122397857821,\n \"priceToSalesRatio\": 4.439354135212213,\n \"priceEarningsRatio\": 18.41544189283229,\n \"priceToFreeCashFlowsRatio\": 14.322899978350293,\n \ \"priceToOperatingCashFlowsRatio\": 13.113473736372647,\n \"priceCashFlowRatio\": - 13.113473736372647,\n \"priceEarningsToGrowthRatio\": -1.9904349960763426,\n + 13.113473736372647,\n \"priceEarningsToGrowthRatio\": -1.9528041507190927,\n \ \"priceSalesRatio\": 4.439354135212213,\n \"dividendYield\": 0.054120868427944085,\n - \ \"enterpriseValueMultiple\": 13.925872041288486,\n \"priceFairValue\": + \ \"enterpriseValueMultiple\": 14.893314617434335,\n \"priceFairValue\": -11.429122397857821\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2018-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.130940608457914,\n \"quickRatio\": 0.5908324123087663,\n \"cashRatio\": 0.383514629748124,\n \"daysOfSalesOutstanding\": @@ -148,7 +150,7 @@ interactions: 0.19876385015451872,\n \"returnOnEquity\": -0.6349626775824705,\n \"returnOnCapitalEmployed\": 0.5031844316674038,\n \"netIncomePerEBT\": 0.7413550745009839,\n \"ebtPerEbit\": 0.9379449767073921,\n \"ebitPerRevenue\": 0.3840337552742616,\n \"debtRatio\": - 1.2698173412728324,\n \"debtEquityRatio\": -4.056505337507023,\n \"longTermDebtToCapitalization\": + 1.2698173412728324,\n \"debtEquityRatio\": -2.5490809856328758,\n \"longTermDebtToCapitalization\": 1.8582942959492974,\n \"totalDebtToCapitalization\": 1.6455440414507772,\n \ \"interestCoverage\": 13.306432748538011,\n \"cashFlowToDebtRatio\": 0.29843508926603485,\n \"companyEquityMultiplier\": -3.1945581507344087,\n @@ -162,11 +164,11 @@ interactions: 1.9811872909698998,\n \"capitalExpenditureCoverageRatio\": -6.600278551532034,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.739401725087172,\n \"dividendPayoutRatio\": 0.8703071672354948,\n \"priceBookValueRatio\": -8.332273858255077,\n \"priceToBookRatio\": - -8.332273858255077,\n \"priceToSalesRatio\": 3.5041957805907176,\n \"priceEarningsRatio\": + -8.332273858255077,\n \"priceToSalesRatio\": 3.504195780590718,\n \"priceEarningsRatio\": 13.12246239413475,\n \"priceToFreeCashFlowsRatio\": 12.908704302412337,\n \ \"priceToOperatingCashFlowsRatio\": 10.952922557501584,\n \"priceCashFlowRatio\": - 10.952922557501584,\n \"priceEarningsToGrowthRatio\": 0.42429295074369017,\n - \ \"priceSalesRatio\": 3.5041957805907176,\n \"dividendYield\": 0.06632194028039201,\n + 10.952922557501584,\n \"priceEarningsToGrowthRatio\": 0.4253864892765349,\n + \ \"priceSalesRatio\": 3.504195780590718,\n \"dividendYield\": 0.06632194028039201,\n \ \"enterpriseValueMultiple\": 10.571950819672132,\n \"priceFairValue\": -8.332273858255077\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2017-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.3528379902267886,\n \"quickRatio\": @@ -180,7 +182,7 @@ interactions: 0.14045336064047664,\n \"returnOnEquity\": -0.49933807711401623,\n \"returnOnCapitalEmployed\": 0.4259423831741095,\n \"netIncomePerEBT\": 0.5699310605345169,\n \"ebtPerEbit\": 0.9205424671824741,\n \"ebitPerRevenue\": 0.40013218310839016,\n \"debtRatio\": - 1.2380841556507167,\n \"debtEquityRatio\": -4.401621711070661,\n \"longTermDebtToCapitalization\": + 1.2380841556507167,\n \"debtEquityRatio\": -2.84122124772464,\n \"longTermDebtToCapitalization\": 1.6279093931837074,\n \"totalDebtToCapitalization\": 1.5431177818721071,\n \ \"interestCoverage\": 10.495437956204379,\n \"cashFlowToDebtRatio\": 0.2595299804886572,\n \"companyEquityMultiplier\": -3.555187820618898,\n @@ -197,7 +199,7 @@ interactions: -13.566837663412212,\n \"priceToSalesRatio\": 5.703659385000695,\n \"priceEarningsRatio\": 27.169643744821872,\n \"priceToFreeCashFlowsRatio\": 22.266268332428027,\n \ \"priceToOperatingCashFlowsRatio\": 18.398653500897666,\n \"priceCashFlowRatio\": - 18.398653500897666,\n \"priceEarningsToGrowthRatio\": -2.0286667329466983,\n + 18.398653500897666,\n \"priceEarningsToGrowthRatio\": -2.03319500690417,\n \ \"priceSalesRatio\": 5.703659385000695,\n \"dividendYield\": 0.03976366235527735,\n \ \"enterpriseValueMultiple\": 15.419540323235605,\n \"priceFairValue\": -13.566837663412212\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2016-12-31\",\n @@ -212,7 +214,7 @@ interactions: 0.18905864155653848,\n \"returnOnEquity\": -0.5491015132408575,\n \"returnOnCapitalEmployed\": 0.5305631868131868,\n \"netIncomePerEBT\": 0.7020354695687223,\n \"ebtPerEbit\": 0.9176144244105409,\n \"ebitPerRevenue\": 0.4052838673412029,\n \"debtRatio\": - 1.2957857317304822,\n \"debtEquityRatio\": -3.7634773013871374,\n \"longTermDebtToCapitalization\": + 1.2957857317304822,\n \"debtEquityRatio\": -2.290904791929382,\n \"longTermDebtToCapitalization\": 1.9639140013674694,\n \"totalDebtToCapitalization\": 1.774650467061481,\n \ \"interestCoverage\": 10.116931711880262,\n \"cashFlowToDebtRatio\": 0.27787525372415456,\n \"companyEquityMultiplier\": -2.9043978562421184,\n @@ -229,7 +231,7 @@ interactions: -11.183873738965952,\n \"priceToSalesRatio\": 5.31763125351321,\n \"priceEarningsRatio\": 20.367588632122864,\n \"priceToFreeCashFlowsRatio\": 20.55046922519913,\n \ \"priceToOperatingCashFlowsRatio\": 17.568526680698277,\n \"priceCashFlowRatio\": - 17.568526680698277,\n \"priceEarningsToGrowthRatio\": 15.004123625663718,\n + 17.568526680698277,\n \"priceEarningsToGrowthRatio\": 18.086418705325165,\n \ \"priceSalesRatio\": 5.31763125351321,\n \"dividendYield\": 0.044946832294827536,\n \ \"enterpriseValueMultiple\": 14.439160820992466,\n \"priceFairValue\": -11.183873738965952\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2015-12-31\",\n @@ -244,7 +246,7 @@ interactions: 0.20240899988220049,\n \"returnOnEquity\": -0.5189519782543038,\n \"returnOnCapitalEmployed\": 0.5720516962843296,\n \"netIncomePerEBT\": 0.7148205928237129,\n \"ebtPerEbit\": 0.9051115504094889,\n \"ebitPerRevenue\": 0.3964693588116743,\n \"debtRatio\": - 1.3379667805395217,\n \"debtEquityRatio\": -3.4303835699184537,\n \"longTermDebtToCapitalization\": + 1.3379667805395217,\n \"debtEquityRatio\": -2.1504077318030808,\n \"longTermDebtToCapitalization\": 2.1031151091121107,\n \"totalDebtToCapitalization\": 1.8692570228406407,\n \ \"interestCoverage\": 9.384275618374557,\n \"cashFlowToDebtRatio\": 0.27615870786516855,\n \"companyEquityMultiplier\": -2.5638779824826337,\n @@ -258,11 +260,11 @@ interactions: 2.434984520123839,\n \"capitalExpenditureCoverageRatio\": -8.192708333333334,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.4867674858223063,\n \"dividendPayoutRatio\": 0.9093554488578495,\n \"priceBookValueRatio\": -10.281832527937178,\n \"priceToBookRatio\": - -10.281832527937178,\n \"priceToSalesRatio\": 5.0822045980443376,\n \"priceEarningsRatio\": + -10.281832527937178,\n \"priceToSalesRatio\": 5.082204598044338,\n \"priceEarningsRatio\": 19.812685872253745,\n \"priceToFreeCashFlowsRatio\": 19.72086748732802,\n \ \"priceToOperatingCashFlowsRatio\": 17.313743165924983,\n \"priceCashFlowRatio\": - 17.313743165924983,\n \"priceEarningsToGrowthRatio\": -2.7737760221155257,\n - \ \"priceSalesRatio\": 5.0822045980443376,\n \"dividendYield\": 0.045897636227672546,\n + 17.313743165924983,\n \"priceEarningsToGrowthRatio\": -2.7854305432168514,\n + \ \"priceSalesRatio\": 5.082204598044338,\n \"dividendYield\": 0.045897636227672546,\n \ \"enterpriseValueMultiple\": 14.08540141521796,\n \"priceFairValue\": -10.281832527937178\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2014-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.024616199047115,\n \"quickRatio\": @@ -276,7 +278,7 @@ interactions: 0.21294796373660727,\n \"returnOnEquity\": -0.5933169688811466,\n \"returnOnCapitalEmployed\": 0.5829140722291407,\n \"netIncomePerEBT\": 0.7035680751173709,\n \"ebtPerEbit\": 0.9101008374636814,\n \"ebitPerRevenue\": 0.39311989787348406,\n \"debtRatio\": - 1.3183846306874698,\n \"debtEquityRatio\": -3.6732916303745347,\n \"longTermDebtToCapitalization\": + 1.3183846306874698,\n \"debtEquityRatio\": -2.332330350779951,\n \"longTermDebtToCapitalization\": 1.8831468531468532,\n \"totalDebtToCapitalization\": 1.750564602401046,\n \ \"interestCoverage\": 10.001709401709402,\n \"cashFlowToDebtRatio\": 0.26273977253437447,\n \"companyEquityMultiplier\": -2.7862063504632197,\n @@ -290,11 +292,11 @@ interactions: 3.0637371338083925,\n \"capitalExpenditureCoverageRatio\": -6.712055507372073,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.5852109791069233,\n \"dividendPayoutRatio\": 0.805418390497798,\n \"priceBookValueRatio\": -10.099825797767046,\n \"priceToBookRatio\": - -10.099825797767046,\n \"priceToSalesRatio\": 4.284969933147446,\n \"priceEarningsRatio\": + -10.099825797767046,\n \"priceToSalesRatio\": 4.284969933147445,\n \"priceEarningsRatio\": 17.022647804617645,\n \"priceToFreeCashFlowsRatio\": 19.366945034922562,\n \ \"priceToOperatingCashFlowsRatio\": 16.48154800361804,\n \"priceCashFlowRatio\": - 16.48154800361804,\n \"priceEarningsToGrowthRatio\": -1.7907825490457763,\n - \ \"priceSalesRatio\": 4.284969933147446,\n \"dividendYield\": 0.04731451885407136,\n + 16.48154800361804,\n \"priceEarningsToGrowthRatio\": -1.7656824879691642,\n + \ \"priceSalesRatio\": 4.284969933147445,\n \"dividendYield\": 0.04731451885407136,\n \ \"enterpriseValueMultiple\": 12.279524073049252,\n \"priceFairValue\": -10.099825797767046\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2013-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 0.9874604476737373,\n \"quickRatio\": @@ -308,7 +310,7 @@ interactions: -1.1043007983517898,\n \"returnOnCapitalEmployed\": 0.6404606198464601,\n \ \"netIncomePerEBT\": 0.6837824908308084,\n \"ebtPerEbit\": 0.9280059193488717,\n \ \"ebitPerRevenue\": 0.432937181663837,\n \"debtRatio\": 1.164378536994341,\n - \ \"debtEquityRatio\": -5.72263713623487,\n \"longTermDebtToCapitalization\": + \ \"debtEquityRatio\": -3.563996909605975,\n \"longTermDebtToCapitalization\": 1.4777019130220828,\n \"totalDebtToCapitalization\": 1.3900160707111289,\n \ \"interestCoverage\": 12.241847826086957,\n \"cashFlowToDebtRatio\": 0.36617530168364765,\n \"companyEquityMultiplier\": -4.914756631470513,\n @@ -325,7 +327,7 @@ interactions: -18.19789595673448,\n \"priceToSalesRatio\": 4.527176218086299,\n \"priceEarningsRatio\": 16.479111473880597,\n \"priceToFreeCashFlowsRatio\": 15.816996082820369,\n \ \"priceToOperatingCashFlowsRatio\": 13.944238776517018,\n \"priceCashFlowRatio\": - 13.944238776517018,\n \"priceEarningsToGrowthRatio\": 9.466334035551425,\n + 13.944238776517018,\n \"priceEarningsToGrowthRatio\": 9.521264407131026,\n \ \"priceSalesRatio\": 4.527176218086299,\n \"dividendYield\": 0.040474124651529816,\n \ \"enterpriseValueMultiple\": 11.723500562113546,\n \"priceFairValue\": -18.19789595673448\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2012-12-31\",\n @@ -340,7 +342,7 @@ interactions: 0.23360764534112025,\n \"returnOnEquity\": -2.5316455696202533,\n \"returnOnCapitalEmployed\": 0.6703786191536748,\n \"netIncomePerEBT\": 0.6776006776006775,\n \"ebtPerEbit\": 0.9379604217824643,\n \"ebitPerRevenue\": 0.44127864359244034,\n \"debtRatio\": - 1.0837271037961242,\n \"debtEquityRatio\": -11.744533947065593,\n \"longTermDebtToCapitalization\": + 1.0491903371383065,\n \"debtEquityRatio\": -6.5704833141542,\n \"longTermDebtToCapitalization\": 1.245428228482666,\n \"totalDebtToCapitalization\": 1.1795176367298457,\n \ \"interestCoverage\": 13.749751737835155,\n \"cashFlowToDebtRatio\": 0.412496168834012,\n \"companyEquityMultiplier\": -10.83716915995397,\n @@ -357,7 +359,7 @@ interactions: -40.713141542002305,\n \"priceToSalesRatio\": 4.510274404818817,\n \"priceEarningsRatio\": 16.08169090909091,\n \"priceToFreeCashFlowsRatio\": 16.917977286312013,\n \ \"priceToOperatingCashFlowsRatio\": 15.021641014754273,\n \"priceCashFlowRatio\": - 15.021641014754273,\n \"priceEarningsToGrowthRatio\": 4.162038465989692,\n + 15.021641014754273,\n \"priceEarningsToGrowthRatio\": 3.640310033057856,\n \ \"priceSalesRatio\": 4.510274404818817,\n \"dividendYield\": 0.03818571769363918,\n \ \"enterpriseValueMultiple\": 11.100211858577522,\n \"priceFairValue\": -40.713141542002305\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2011-12-31\",\n @@ -372,7 +374,7 @@ interactions: 0.24208183047790802,\n \"returnOnEquity\": 37.51528384279476,\n \"returnOnCapitalEmployed\": 0.6442447086111917,\n \"netIncomePerEBT\": 0.6855250558570061,\n \"ebtPerEbit\": 0.93999399939994,\n \"ebitPerRevenue\": 0.4287230279448178,\n \"debtRatio\": - 0.9503212353471596,\n \"debtEquityRatio\": 147.2707423580786,\n \"longTermDebtToCapitalization\": + 0.9503212353471596,\n \"debtEquityRatio\": 80.9825327510917,\n \"longTermDebtToCapitalization\": 0.9847911270505413,\n \"totalDebtToCapitalization\": 0.9878022797485885,\n \ \"interestCoverage\": 14.274089935760172,\n \"cashFlowToDebtRatio\": 0.5677541116203828,\n \"companyEquityMultiplier\": 154.96943231441048,\n @@ -389,7 +391,7 @@ interactions: 591.4817122606114,\n \"priceToSalesRatio\": 4.355703511839727,\n \"priceEarningsRatio\": 15.766419754124083,\n \"priceToFreeCashFlowsRatio\": 14.062428582607975,\n \ \"priceToOperatingCashFlowsRatio\": 12.864404227151677,\n \"priceCashFlowRatio\": - 12.864404227151677,\n \"priceEarningsToGrowthRatio\": 0.5914281015904622,\n + 12.864404227151677,\n \"priceEarningsToGrowthRatio\": 0.6046345439688361,\n \ \"priceSalesRatio\": 4.355703511839727,\n \"dividendYield\": 0.03534901673176175,\n \ \"enterpriseValueMultiple\": 10.686917797451132,\n \"priceFairValue\": 591.4817122606114\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2010-12-31\",\n @@ -404,7 +406,7 @@ interactions: \ \"returnOnEquity\": 2.0704506560182545,\n \"returnOnCapitalEmployed\": 0.5034612964128382,\n \"netIncomePerEBT\": 0.7031189461449051,\n \"ebtPerEbit\": 0.9217857142857143,\n \"ebitPerRevenue\": 0.4116436342252279,\n \"debtRatio\": - 0.8538944365192582,\n \"debtEquityRatio\": 8.53650884198517,\n \"longTermDebtToCapitalization\": + 0.8538944365192582,\n \"debtEquityRatio\": 4.706788362806617,\n \"longTermDebtToCapitalization\": 0.7922493481867742,\n \"totalDebtToCapitalization\": 0.8247700919632147,\n \ \"interestCoverage\": 11.498973305954825,\n \"cashFlowToDebtRatio\": 0.5718700763543813,\n \"companyEquityMultiplier\": 9.997147746719909,\n @@ -421,7 +423,7 @@ interactions: 30.700704506560182,\n \"priceToSalesRatio\": 3.9560669655983536,\n \"priceEarningsRatio\": 14.828030031684804,\n \"priceToFreeCashFlowsRatio\": 12.337995185694636,\n \ \"priceToOperatingCashFlowsRatio\": 11.405814347780016,\n \"priceCashFlowRatio\": - 11.405814347780016,\n \"priceEarningsToGrowthRatio\": 0.7086926118084648,\n + 11.405814347780016,\n \"priceEarningsToGrowthRatio\": 0.7005706942506149,\n \ \"priceSalesRatio\": 3.9560669655983536,\n \"dividendYield\": 0.04109194385147738,\n \ \"enterpriseValueMultiple\": 10.21063047285464,\n \"priceFairValue\": 30.700704506560182\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2009-12-31\",\n @@ -436,7 +438,7 @@ interactions: 0.18354943273905996,\n \"returnOnEquity\": 1.109517144856543,\n \"returnOnCapitalEmployed\": 0.42953709249593564,\n \"netIncomePerEBT\": 0.6861408633560532,\n \"ebtPerEbit\": 0.9206175298804781,\n \"ebitPerRevenue\": 0.4010385460355502,\n \"debtRatio\": - 0.8221521185459597,\n \"debtEquityRatio\": 4.969734079776067,\n \"longTermDebtToCapitalization\": + 0.8221521185459597,\n \"debtEquityRatio\": 2.696990902729181,\n \"longTermDebtToCapitalization\": 0.7051784609036518,\n \"totalDebtToCapitalization\": 0.7295097482491009,\n \ \"interestCoverage\": 12.59723964868256,\n \"cashFlowToDebtRatio\": 0.51141670991178,\n \"companyEquityMultiplier\": 6.044786564030791,\n \"receivablesTurnover\": @@ -450,11 +452,11 @@ interactions: 4.520642201834862,\n \"capitalExpenditureCoverageRatio\": -11.026573426573426,\n \ \"dividendPaidAndCapexCoverageRatio\": 2.1827242524916945,\n \"dividendPayoutRatio\": 0.6822768842636392,\n \"priceBookValueRatio\": 16.380890482855143,\n \"priceToBookRatio\": - 16.380890482855143,\n \"priceToSalesRatio\": 3.740090673057719,\n \"priceEarningsRatio\": + 16.380890482855143,\n \"priceToSalesRatio\": 3.7400906730577193,\n \"priceEarningsRatio\": 14.763981393882055,\n \"priceToFreeCashFlowsRatio\": 13.060841121495327,\n \ \"priceToOperatingCashFlowsRatio\": 11.876353373921866,\n \"priceCashFlowRatio\": - 11.876353373921866,\n \"priceEarningsToGrowthRatio\": -6.1455072552034,\n - \ \"priceSalesRatio\": 3.740090673057719,\n \"dividendYield\": 0.0462122557636359,\n + 11.876353373921866,\n \"priceEarningsToGrowthRatio\": -7.023436863089578,\n + \ \"priceSalesRatio\": 3.7400906730577193,\n \"dividendYield\": 0.0462122557636359,\n \ \"enterpriseValueMultiple\": 10.063574838528503,\n \"priceFairValue\": 16.380890482855143\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2008-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.4726932176656151,\n \"quickRatio\": @@ -468,7 +470,7 @@ interactions: \ \"returnOnEquity\": 0.9186666666666666,\n \"returnOnCapitalEmployed\": 0.4489223760294375,\n \"netIncomePerEBT\": 0.6933682197846432,\n \"ebtPerEbit\": 0.9696526151444185,\n \"ebitPerRevenue\": 0.39867730013616026,\n \"debtRatio\": - 0.7725342715030935,\n \"debtEquityRatio\": 3.3962666666666665,\n \"longTermDebtToCapitalization\": + 0.7725342715030935,\n \"debtEquityRatio\": 1.5948,\n \"longTermDebtToCapitalization\": 0.6026911055782169,\n \"totalDebtToCapitalization\": 0.614613843070757,\n \ \"interestCoverage\": 19.40909090909091,\n \"cashFlowToDebtRatio\": 0.6634060697266115,\n \"companyEquityMultiplier\": 4.3962666666666665,\n @@ -500,7 +502,7 @@ interactions: 0.1880597946509378,\n \"returnOnEquity\": 0.3912732939419518,\n \"returnOnCapitalEmployed\": 0.3777030478460753,\n \"netIncomePerEBT\": 0.6799052239647975,\n \"ebtPerEbit\": 0.9988729854615125,\n \"ebitPerRevenue\": 0.3892008070883411,\n \"debtRatio\": - 0.5193646038136255,\n \"debtEquityRatio\": 1.080579183169924,\n \"longTermDebtToCapitalization\": + 0.5193646038136255,\n \"debtEquityRatio\": 0.40951886241153174,\n \"longTermDebtToCapitalization\": 0.26588493255159923,\n \"totalDebtToCapitalization\": 0.2905380504882992,\n \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 0.8861582368796576,\n \ \"companyEquityMultiplier\": 2.080579183169924,\n \"receivablesTurnover\": @@ -513,14 +515,14 @@ interactions: \ \"cashFlowCoverageRatios\": 0.8861582368796576,\n \"shortTermCoverageRatios\": 7.666666666666667,\n \"capitalExpenditureCoverageRatio\": -5.213619402985074,\n \ \"dividendPaidAndCapexCoverageRatio\": 1.0184037900874636,\n \"dividendPayoutRatio\": - 1.088615997344839,\n \"priceBookValueRatio\": 3.326706627414558,\n \"priceToBookRatio\": - 3.326706627414558,\n \"priceToSalesRatio\": 2.2473290976757436,\n \"priceEarningsRatio\": - 8.502258341986659,\n \"priceToFreeCashFlowsRatio\": 11.342618722340402,\n - \ \"priceToOperatingCashFlowsRatio\": 9.167043973664628,\n \"priceCashFlowRatio\": - 9.167043973664628,\n \"priceEarningsToGrowthRatio\": -5.663141555074171,\n - \ \"priceSalesRatio\": 2.2473290976757436,\n \"dividendYield\": 0.1280384520861866,\n - \ \"enterpriseValueMultiple\": 5.984751420947911,\n \"priceFairValue\": - 3.326706627414558\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2006-12-31\",\n + 1.088615997344839,\n \"priceBookValueRatio\": 6.737769488929291,\n \"priceToBookRatio\": + 6.737769488929291,\n \"priceToSalesRatio\": 4.551644350337749,\n \"priceEarningsRatio\": + 17.22011083620976,\n \"priceToFreeCashFlowsRatio\": 22.97285541266327,\n + \ \"priceToOperatingCashFlowsRatio\": 18.56653925550188,\n \"priceCashFlowRatio\": + 18.56653925550188,\n \"priceEarningsToGrowthRatio\": -12.52763063334259,\n + \ \"priceSalesRatio\": 4.551644350337749,\n \"dividendYield\": 0.06321771141308458,\n + \ \"enterpriseValueMultiple\": 11.610557710323409,\n \"priceFairValue\": + 6.737769488929291\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2006-12-31\",\n \ \"period\": \"FY\",\n \"currentRatio\": 1.706252682787237,\n \"quickRatio\": 0.5488624982114751,\n \"cashRatio\": 0.23980540849906998,\n \"daysOfSalesOutstanding\": 16.336510567757976,\n \"daysOfInventoryOutstanding\": 72.49992981274039,\n @@ -532,9 +534,9 @@ interactions: 0.23529862174578867,\n \"returnOnEquity\": 0.4307843274689844,\n \"returnOnCapitalEmployed\": 0.4374052584809994,\n \"netIncomePerEBT\": 0.7471432044736203,\n \"ebtPerEbit\": 0.9830305927342257,\n \"ebitPerRevenue\": 0.17339411520928305,\n \"debtRatio\": - 0.45379019908116386,\n \"debtEquityRatio\": 0.8307983458330412,\n \"longTermDebtToCapitalization\": - 0.13475650433622416,\n \"totalDebtToCapitalization\": 0.13475650433622416,\n - \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 2.8064806480648063,\n + 0.45379019908116386,\n \"debtEquityRatio\": 0.1952758113128198,\n \"longTermDebtToCapitalization\": + 0.13475650433622416,\n \"totalDebtToCapitalization\": 0.16337301354600364,\n + \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 2.2383345297918162,\n \ \"companyEquityMultiplier\": 1.8307983458330412,\n \"receivablesTurnover\": 22.34259259259259,\n \"payablesTurnover\": 53.004464285714285,\n \"inventoryTurnover\": 5.034487632508834,\n \"fixedAssetTurnover\": 9.21344024436808,\n \"assetTurnover\": @@ -542,31 +544,31 @@ interactions: \ \"freeCashFlowPerShare\": 2.5363708071299818,\n \"cashPerShare\": 0.7945714902336167,\n \ \"payoutRatio\": 0.4523267165636186,\n \"operatingCashFlowSalesRatio\": 0.12921674264401162,\n \"freeCashFlowOperatingCashFlowRatio\": 0.8579217447081462,\n - \ \"cashFlowCoverageRatios\": 2.8064806480648063,\n \"shortTermCoverageRatios\": - 0,\n \"capitalExpenditureCoverageRatio\": -7.038374717832957,\n \"dividendPaidAndCapexCoverageRatio\": - 3.2925026399155226,\n \"dividendPayoutRatio\": 0.4523267165636186,\n \"priceBookValueRatio\": - 3.6053360131042145,\n \"priceToBookRatio\": 3.6053360131042145,\n \"priceToSalesRatio\": - 1.065837731018604,\n \"priceEarningsRatio\": 8.369236722902349,\n \"priceToFreeCashFlowsRatio\": - 9.614453999805201,\n \"priceToOperatingCashFlowsRatio\": 8.248449149929094,\n - \ \"priceCashFlowRatio\": 8.248449149929094,\n \"priceEarningsToGrowthRatio\": - 0.8942047998389124,\n \"priceSalesRatio\": 1.065837731018604,\n \"dividendYield\": - 0.05404635231858483,\n \"enterpriseValueMultiple\": 6.086798204443163,\n - \ \"priceFairValue\": 3.6053360131042145\n },\n {\n \"symbol\": \"PM\",\n - \ \"date\": \"2005-12-31\",\n \"period\": \"FY\",\n \"currentRatio\": - 1.582728133880644,\n \"quickRatio\": 0.4905273129144301,\n \"cashRatio\": - 0.1908746447742343,\n \"daysOfSalesOutstanding\": 15.296988164635223,\n - \ \"daysOfInventoryOutstanding\": 60.09416767922236,\n \"operatingCycle\": - 75.39115584385758,\n \"daysOfPayablesOutstanding\": 7.417527339003645,\n - \ \"cashConversionCycle\": 67.97362850485393,\n \"grossProfitMargin\": + \ \"cashFlowCoverageRatios\": 2.2383345297918162,\n \"shortTermCoverageRatios\": + 11.056737588652481,\n \"capitalExpenditureCoverageRatio\": -7.038374717832957,\n + \ \"dividendPaidAndCapexCoverageRatio\": 3.2925026399155226,\n \"dividendPayoutRatio\": + 0.4523267165636186,\n \"priceBookValueRatio\": 7.3020935438814725,\n \"priceToBookRatio\": + 7.3020935438814725,\n \"priceToSalesRatio\": 2.1587022086729584,\n \"priceEarningsRatio\": + 16.950694531493163,\n \"priceToFreeCashFlowsRatio\": 19.472704409449904,\n + \ \"priceToOperatingCashFlowsRatio\": 16.706056541141272,\n \"priceCashFlowRatio\": + 16.706056541141272,\n \"priceEarningsToGrowthRatio\": 1.8035538981508727,\n + \ \"priceSalesRatio\": 2.1587022086729584,\n \"dividendYield\": 0.02668484856023028,\n + \ \"enterpriseValueMultiple\": 12.196104319536312,\n \"priceFairValue\": + 7.3020935438814725\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2005-12-31\",\n + \ \"period\": \"FY\",\n \"currentRatio\": 1.582728133880644,\n \"quickRatio\": + 0.4905273129144301,\n \"cashRatio\": 0.1908746447742343,\n \"daysOfSalesOutstanding\": + 15.296988164635223,\n \"daysOfInventoryOutstanding\": 60.09416767922236,\n + \ \"operatingCycle\": 75.39115584385758,\n \"daysOfPayablesOutstanding\": + 7.417527339003645,\n \"cashConversionCycle\": 67.97362850485393,\n \"grossProfitMargin\": 0.2730966260378025,\n \"operatingProfitMargin\": 0.1707957957957958,\n \ \"pretaxProfitMargin\": 0.16872019077901432,\n \"netProfitMargin\": 0.12409468291821232,\n \"effectiveTaxRate\": 0.24015181258997514,\n \"returnOnAssets\": 0.24292197968446078,\n \"returnOnEquity\": 0.5452605025710682,\n \"returnOnCapitalEmployed\": 0.46038926254389617,\n \"netIncomePerEBT\": 0.7355058238450465,\n \"ebtPerEbit\": 0.9878474466709761,\n \"ebitPerRevenue\": 0.1707957957957958,\n \"debtRatio\": - 0.5544845472228226,\n \"debtEquityRatio\": 1.2445910546230716,\n \"longTermDebtToCapitalization\": - 0.2866140642303433,\n \"totalDebtToCapitalization\": 0.2866140642303433,\n - \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 1.2455928519681236,\n + 0.5544845472228226,\n \"debtEquityRatio\": 0.4762782574949064,\n \"longTermDebtToCapitalization\": + 0.2866140642303433,\n \"totalDebtToCapitalization\": 0.3226209253417455,\n + \ \"interestCoverage\": 0,\n \"cashFlowToDebtRatio\": 1.0507231615400285,\n \ \"companyEquityMultiplier\": 2.2445910546230716,\n \"receivablesTurnover\": 23.8609062170706,\n \"payablesTurnover\": 49.20777279521674,\n \"inventoryTurnover\": 6.07380073800738,\n \"fixedAssetTurnover\": 9.838800782098632,\n \"assetTurnover\": @@ -574,19 +576,20 @@ interactions: \ \"freeCashFlowPerShare\": 2.09641714189323,\n \"cashPerShare\": 0.5731723936112426,\n \ \"payoutRatio\": 1.3669039145907473,\n \"operatingCashFlowSalesRatio\": 0.11389330506977566,\n \"freeCashFlowOperatingCashFlowRatio\": 0.8573090345094998,\n - \ \"cashFlowCoverageRatios\": 1.2455928519681236,\n \"shortTermCoverageRatios\": - 0,\n \"capitalExpenditureCoverageRatio\": -7.008152173913044,\n \"dividendPaidAndCapexCoverageRatio\": - 0.7425856608119781,\n \"dividendPayoutRatio\": 1.3669039145907473,\n \"priceBookValueRatio\": - 4.990523808960689,\n \"priceToBookRatio\": 4.990523808960689,\n \"priceToSalesRatio\": - 1.1357827437501729,\n \"priceEarningsRatio\": 9.15254962614908,\n \"priceToFreeCashFlowsRatio\": - 11.63214131591086,\n \"priceToOperatingCashFlowsRatio\": 9.972339840821602,\n - \ \"priceCashFlowRatio\": 9.972339840821602,\n \"priceEarningsToGrowthRatio\": - 0,\n \"priceSalesRatio\": 1.1357827437501729,\n \"dividendYield\": 0.14934679083142757,\n - \ \"enterpriseValueMultiple\": 6.9077084563966205,\n \"priceFairValue\": - 4.990523808960689\n },\n {\n \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n - \ \"period\": \"FY\",\n \"currentRatio\": 0,\n \"quickRatio\": 0,\n - \ \"cashRatio\": 0,\n \"daysOfSalesOutstanding\": 0,\n \"daysOfInventoryOutstanding\": - 65.4888543721926,\n \"operatingCycle\": 65.4888543721926,\n \"daysOfPayablesOutstanding\": + \ \"cashFlowCoverageRatios\": 1.0507231615400285,\n \"shortTermCoverageRatios\": + 6.716145833333333,\n \"capitalExpenditureCoverageRatio\": -7.008152173913044,\n + \ \"dividendPaidAndCapexCoverageRatio\": 0.7425856608119781,\n \"dividendPayoutRatio\": + 1.3669039145907473,\n \"priceBookValueRatio\": 10.107593731498687,\n \"priceToBookRatio\": + 10.107593731498687,\n \"priceToSalesRatio\": 2.300365849464692,\n \"priceEarningsRatio\": + 18.537183023230778,\n \"priceToFreeCashFlowsRatio\": 23.559242105508137,\n + \ \"priceToOperatingCashFlowsRatio\": 20.197551103248735,\n \"priceCashFlowRatio\": + 20.197551103248735,\n \"priceEarningsToGrowthRatio\": 0,\n \"priceSalesRatio\": + 2.300365849464692,\n \"dividendYield\": 0.07373849159701044,\n \"enterpriseValueMultiple\": + 13.515280454843019,\n \"priceFairValue\": 10.107593731498687\n },\n {\n + \ \"symbol\": \"PM\",\n \"date\": \"2003-12-31\",\n \"period\": \"FY\",\n + \ \"currentRatio\": 0,\n \"quickRatio\": 0,\n \"cashRatio\": 0,\n + \ \"daysOfSalesOutstanding\": 0,\n \"daysOfInventoryOutstanding\": 65.4888543721926,\n + \ \"operatingCycle\": 65.4888543721926,\n \"daysOfPayablesOutstanding\": 0,\n \"cashConversionCycle\": 65.4888543721926,\n \"grossProfitMargin\": 0.2865614423912067,\n \"operatingProfitMargin\": 0.18557009793644613,\n \ \"pretaxProfitMargin\": 0.1860792476564138,\n \"netProfitMargin\": @@ -594,7 +597,7 @@ interactions: 0.22546795235394215,\n \"returnOnEquity\": 0.3788961967400629,\n \"returnOnCapitalEmployed\": 0.3514463981849121,\n \"netIncomePerEBT\": 0.6397875422501207,\n \"ebtPerEbit\": 1.0027437056165267,\n \"ebitPerRevenue\": 0.18557009793644613,\n \"debtRatio\": - 0.40493477027793534,\n \"debtEquityRatio\": 0.6804880373653608,\n \"longTermDebtToCapitalization\": + 0.40493477027793534,\n \"debtEquityRatio\": 0,\n \"longTermDebtToCapitalization\": 0,\n \"totalDebtToCapitalization\": 0,\n \"interestCoverage\": 0,\n \ \"cashFlowToDebtRatio\": 0,\n \"companyEquityMultiplier\": 1.6804880373653608,\n \ \"receivablesTurnover\": 0,\n \"payablesTurnover\": 0,\n \"inventoryTurnover\": @@ -605,14 +608,14 @@ interactions: \ \"freeCashFlowOperatingCashFlowRatio\": 0.8734341252699784,\n \"cashFlowCoverageRatios\": 0,\n \"shortTermCoverageRatios\": 0,\n \"capitalExpenditureCoverageRatio\": -7.901023890784983,\n \"dividendPaidAndCapexCoverageRatio\": -7.901023890784983,\n - \ \"dividendPayoutRatio\": 0,\n \"priceBookValueRatio\": 4.713987596591822,\n - \ \"priceToBookRatio\": 4.713987596591822,\n \"priceToSalesRatio\": 1.481159779443673,\n - \ \"priceEarningsRatio\": 12.441369528514414,\n \"priceToFreeCashFlowsRatio\": - 12.229090968309793,\n \"priceToOperatingCashFlowsRatio\": 10.681305372752657,\n - \ \"priceCashFlowRatio\": 10.681305372752657,\n \"priceEarningsToGrowthRatio\": - 0,\n \"priceSalesRatio\": 1.481159779443673,\n \"dividendYield\": 0,\n - \ \"enterpriseValueMultiple\": 7.194008372314655,\n \"priceFairValue\": - 4.713987596591822\n }\n]" + \ \"dividendPayoutRatio\": 0,\n \"priceBookValueRatio\": 9.547509100371748,\n + \ \"priceToBookRatio\": 9.547509100371748,\n \"priceToSalesRatio\": 2.999877743328641,\n + \ \"priceEarningsRatio\": 25.19821835773585,\n \"priceToFreeCashFlowsRatio\": + 24.768278430267063,\n \"priceToOperatingCashFlowsRatio\": 21.63345960518359,\n + \ \"priceCashFlowRatio\": 21.63345960518359,\n \"priceEarningsToGrowthRatio\": + 0,\n \"priceSalesRatio\": 2.999877743328641,\n \"dividendYield\": 0,\n + \ \"enterpriseValueMultiple\": 15.074113126961928,\n \"priceFairValue\": + 9.547509100371748\n }\n]" headers: Access-Control-Allow-Credentials: - 'true' @@ -628,15 +631,15 @@ interactions: Connection: - close Content-Length: - - '48884' + - '49035' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:17 GMT + - Wed, 10 May 2023 22:06:29 GMT ETag: - - W/"bef4-tAZceiPJNFujsf6YEZSiMFtDngg" + - W/"bf8b-BC46BRHQWB+rK800O6JLxqUJ4Fk" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_profile-kwargs_dict0].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_profile-kwargs_dict0].yaml index 9aa056ee64b9..1badbe84b7da 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_profile-kwargs_dict0].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_fmp_model/test_valid_df[get_profile-kwargs_dict0].yaml @@ -10,9 +10,9 @@ interactions: uri: https://financialmodelingprep.com/api/v3/profile/PM?apikey=MOCK_API_KEY response: body: - string: "[\n {\n \"symbol\": \"PM\",\n \"price\": 98.48,\n \"beta\": - 0.709205,\n \"volAvg\": 4480064,\n \"mktCap\": 152666651976,\n \"lastDiv\": - 5.04,\n \"range\": \"82.85-109.81\",\n \"changes\": -1.62,\n \"companyName\": + string: "[\n {\n \"symbol\": \"PM\",\n \"price\": 95.1,\n \"beta\": + 0.704785,\n \"volAvg\": 4346385,\n \"mktCap\": 147614213914,\n \"lastDiv\": + 5.08,\n \"range\": \"82.85-109.81\",\n \"changes\": -0.55,\n \"companyName\": \"Philip Morris International Inc.\",\n \"currency\": \"USD\",\n \"cik\": \"0001413329\",\n \"isin\": \"US7181721090\",\n \"cusip\": \"718172109\",\n \ \"exchange\": \"New York Stock Exchange\",\n \"exchangeShortName\": @@ -32,11 +32,11 @@ interactions: U in Indonesia; and Fortune and Jackpot in the Philippines. The company sells its smoke-free products in 71 markets. Philip Morris International Inc. was incorporated in 1987 and is headquartered in New York, New York.\",\n \"ceo\": - \"Mr. Andre Calantzopoulos\",\n \"sector\": \"Consumer Defensive\",\n - \ \"country\": \"US\",\n \"fullTimeEmployees\": \"69600\",\n \"phone\": - \"917 663 2000\",\n \"address\": \"120 Park Avenue\",\n \"city\": \"New - York\",\n \"state\": \"NY\",\n \"zip\": \"10017-5592\",\n \"dcfDiff\": - 3.97239,\n \"dcf\": 99.7876,\n \"image\": \"https://financialmodelingprep.com/image-stock/PM.png\",\n + \"Mr. Jacek Olczak\",\n \"sector\": \"Consumer Defensive\",\n \"country\": + \"US\",\n \"fullTimeEmployees\": \"79800\",\n \"phone\": \"917 663 2000\",\n + \ \"address\": \"120 Park Avenue\",\n \"city\": \"New York\",\n \"state\": + \"NY\",\n \"zip\": \"10017-5592\",\n \"dcfDiff\": 3.97239,\n \"dcf\": + 99.7876,\n \"image\": \"https://financialmodelingprep.com/image-stock/PM.png\",\n \ \"ipoDate\": \"2008-03-17\",\n \"defaultImage\": false,\n \"isEtf\": false,\n \"isActivelyTrading\": true,\n \"isAdr\": false,\n \"isFund\": false\n }\n]" @@ -55,15 +55,15 @@ interactions: Connection: - close Content-Length: - - '2161' + - '2152' Content-Type: - application/json; charset=utf-8 Date: - - Tue, 07 Mar 2023 17:09:10 GMT + - Wed, 10 May 2023 22:06:27 GMT ETag: - - W/"871-gVoFmYYxb+LMa1KMUYdfDhcNC7w" + - W/"868-JyI9dzCk882rry4QeuS1Y5eAps8" Server: - - nginx/1.14.0 (Ubuntu) + - nginx/1.18.0 (Ubuntu) Vary: - Accept-Encoding X-Frame-Options: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict2].csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict2].csv index 8638b58e4610..c4ed2cea3f64 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict2].csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict2].csv @@ -1,52 +1,53 @@ ,Fiscal Date Ending,Reported Date,Reported EPS,Estimated EPS,Surprise,Surprise Percentage -0,2022-12-31,2023-01-25,1.19,1.13,0.06,5.3097 -1,2022-09-30,2022-10-19,1.05,0.99,0.06,6.0606 -2,2022-06-30,2022-07-20,0.76,0.61,0.15,24.5902 -3,2022-03-31,2022-04-20,1.07,0.75,0.32,42.6667 -4,2021-12-31,2022-01-26,0.85,0.79,0.06,7.5949 -5,2021-09-30,2021-10-20,0.62,0.53,0.09,16.9811 -6,2021-06-30,2021-07-26,0.48,0.33,0.15,45.4545 -7,2021-03-31,2021-04-26,0.31,0.26,0.05,19.2308 -8,2020-12-31,2021-01-27,0.27,0.34,-0.07,-20.5882 -9,2020-09-30,2020-10-21,0.25,0.19,0.06,31.5789 -10,2020-06-30,2020-07-22,0.44,-0.04,0.48,1200 -11,2020-03-31,2020-04-29,0.23,-0.06,0.29,483.3333 -12,2019-12-31,2020-01-29,0.41,0.35,0.06,17.1429 -13,2019-09-30,2019-10-23,0.37,-0.08,0.45,562.5 -14,2019-06-30,2019-07-24,-0.22,-0.07,-0.15,-214.2857 -15,2019-03-31,2019-04-24,-0.58,-0.14,-0.44,-314.2857 -16,2018-12-31,2019-01-30,0.39,0.44,-0.05,-11.3636 -17,2018-09-30,2018-10-24,0.58,-0.04,0.62,1550 -18,2018-06-30,2018-08-01,-3.06,-2.92,-0.14,-4.7945 -19,2018-03-31,2018-05-02,-3.35,-3.58,0.23,6.4246 -20,2017-12-31,2018-02-07,-3.04,-3.09,0.05,1.6181 -21,2017-09-30,2017-11-01,-2.92,-2.2,-0.72,-32.7273 -22,2017-06-30,2017-08-02,-1.33,-1.82,0.49,26.9231 -23,2017-03-31,2017-05-03,-1.33,-0.81,-0.52,-64.1975 -24,2016-12-31,2017-02-22,-0.69,-0.43,-0.26,-60.4651 -25,2016-09-30,2016-10-26,0.71,-0.54,1.25,231.4815 -26,2016-06-30,2016-08-03,-1.61,-0.51,-1.1,-215.6863 -27,2016-03-31,2016-05-04,-1.45,-0.58,-0.87,-150 -28,2015-12-31,2016-02-10,-0.87,0.1,-0.97,-970 -29,2015-09-30,2015-11-03,-0.58,-0.49,-0.09,-18.3673 -30,2015-06-30,2015-08-05,-0.48,-0.6,0.12,20 -31,2015-03-31,2015-05-06,-0.36,-0.5,0.14,28 -32,2014-12-31,2015-02-11,-0.13,0.31,-0.44,-141.9355 -33,2014-09-30,2014-11-05,0.02,-0.01,0.03,300 -34,2014-06-30,2014-07-31,0.11,0.04,0.07,175 -35,2014-03-31,2014-05-07,0.12,0.1,0.02,20 -36,2013-12-31,2014-02-19,0.33,0.21,0.12,57.1429 -37,2013-09-30,2013-11-05,0.12,0.11,0.01,9.0909 -38,2013-06-30,2013-08-07,0.2,-0.17,0.37,217.6471 -39,2013-03-31,2013-05-08,0.12,0.04,0.08,200 -40,2012-12-31,2013-02-20,-0.65,-0.53,-0.12,-22.6415 -41,2012-09-30,2012-11-05,-0.92,-0.9,-0.02,-2.2222 -42,2012-06-30,2012-07-25,-0.89,-0.92,0.03,3.2609 -43,2012-03-31,2012-05-09,-0.76,-0.69,-0.07,-10.1449 -44,2011-12-31,2012-02-15,-0.69,-0.63,-0.06,-9.5238 -45,2011-09-30,2011-11-02,-0.55,-0.59,0.04,6.7797 -46,2011-06-30,2011-08-03,-0.53,-0.51,-0.02,-3.9216 -47,2011-03-31,2011-05-04,-0.44,-0.51,0.07,13.7255 -48,2010-12-31,2011-02-15,-0.47,-0.5,0.03,6 -49,2010-09-30,2010-11-09,-0.37,-0.43,0.06,13.9535 -50,2010-06-30,2010-08-05,-0.0271,None,None,None +0,2023-03-31,2023-04-19,0.85,0.85,0,0 +1,2022-12-31,2023-01-25,1.19,1.13,0.06,5.3097 +2,2022-09-30,2022-10-19,1.05,0.99,0.06,6.0606 +3,2022-06-30,2022-07-20,0.76,0.6,0.16,26.6667 +4,2022-03-31,2022-04-20,1.07,0.75,0.32,42.6667 +5,2021-12-31,2022-01-26,0.85,0.79,0.06,7.5949 +6,2021-09-30,2021-10-20,0.62,0.53,0.09,16.9811 +7,2021-06-30,2021-07-26,0.48,0.33,0.15,45.4545 +8,2021-03-31,2021-04-26,0.31,0.26,0.05,19.2308 +9,2020-12-31,2021-01-27,0.27,0.34,-0.07,-20.5882 +10,2020-09-30,2020-10-21,0.25,0.19,0.06,31.5789 +11,2020-06-30,2020-07-22,0.15,-0.01,0.16,1600 +12,2020-03-31,2020-04-29,0.08,-0.02,0.1,500 +13,2019-12-31,2020-01-29,0.14,0.11,0.03,27.2727 +14,2019-09-30,2019-10-23,0.12,-0.03,0.15,500 +15,2019-06-30,2019-07-24,-0.07,-0.02,-0.05,-250 +16,2019-03-31,2019-04-24,-0.12,-0.05,-0.07,-140 +17,2018-12-31,2019-01-30,0.13,0.08,0.05,62.5 +18,2018-09-30,2018-10-24,0.19,0.03,0.16,533.3333 +19,2018-06-30,2018-08-01,-0.16,-0.2,0.04,20 +20,2018-03-31,2018-05-02,-0.22,-0.24,0.02,8.3333 +21,2017-12-31,2018-02-07,-0.2,-0.21,0.01,4.7619 +22,2017-09-30,2017-11-01,-0.19,-0.15,-0.04,-26.6667 +23,2017-06-30,2017-08-02,-0.09,-0.12,0.03,25 +24,2017-03-31,2017-05-03,-0.09,-0.09,0,0 +25,2016-12-31,2017-02-22,-0.14,-0.21,0.07,33.3333 +26,2016-09-30,2016-10-26,0.14,-0.08,0.22,275 +27,2016-06-30,2016-08-03,-0.07,-0.04,-0.03,-75 +28,2016-03-31,2016-05-04,-0.04,-0.05,0.01,20 +29,2015-12-31,2016-02-10,-0.87,0.1,-0.97,-970 +30,2015-09-30,2015-11-03,-0.04,-0.04,0,0 +31,2015-06-30,2015-08-05,-0.03,-0.6,0.57,95 +32,2015-03-31,2015-05-06,-0.36,-0.5,0.14,28 +33,2014-12-31,2015-02-11,-0.01,0.02,-0.03,-150 +34,2014-09-30,2014-11-05,0.02,-0.01,0.03,300 +35,2014-06-30,2014-07-31,0.01,0.04,-0.03,-75 +36,2014-03-31,2014-05-07,0.01,0.1,-0.09,-90 +37,2013-12-31,2014-02-19,0.02,0.01,0.01,100 +38,2013-09-30,2013-11-05,0.01,0.01,0,0 +39,2013-06-30,2013-08-07,0.01,-0.01,0.02,200 +40,2013-03-31,2013-05-08,0.01,0.04,-0.03,-75 +41,2012-12-31,2013-02-20,-0.04,-0.04,0,0 +42,2012-09-30,2012-11-05,-0.06,-0.06,0,0 +43,2012-06-30,2012-07-25,-0.06,-0.06,0,0 +44,2012-03-31,2012-05-09,-0.05,-0.05,0,0 +45,2011-12-31,2012-02-15,-0.05,-0.04,-0.01,-25 +46,2011-09-30,2011-11-02,-0.04,-0.04,0,0 +47,2011-06-30,2011-08-03,-0.04,-0.03,-0.01,-33.3333 +48,2011-03-31,2011-05-04,-0.03,-0.03,0,0 +49,2010-12-31,2011-02-15,-0.03,-0.03,0,0 +50,2010-09-30,2010-11-09,-0.02,-0.03,0.01,33.3333 +51,2010-06-30,2010-08-05,-0.0271,None,None,None diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict3].csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict3].csv index a7179eae3d77..24706fd35123 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict3].csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_earnings-kwargs_dict3].csv @@ -1,14 +1,15 @@ ,Fiscal Date Ending,Reported EPS -0,2022-12-31,4.07 -1,2021-12-31,2.26 -2,2020-12-31,1.19 -3,2019-12-31,-0.02 -4,2018-12-31,-5.44 -5,2017-12-31,-8.62 -6,2016-12-31,-3.04 -7,2015-12-31,-2.29 -8,2014-12-31,0.12 -9,2013-12-31,0.77 -10,2012-12-31,-3.22 -11,2011-12-31,-2.21 -12,2010-12-31,-0.8671 +0,2023-03-31,0.85 +1,2022-12-31,4.07 +2,2021-12-31,2.26 +3,2020-12-31,0.75 +4,2019-12-31,0.07 +5,2018-12-31,-0.06 +6,2017-12-31,-0.57 +7,2016-12-31,-0.11 +8,2015-12-31,-1.3 +9,2014-12-31,0.03 +10,2013-12-31,0.05 +11,2012-12-31,-0.21 +12,2011-12-31,-0.16 +13,2010-12-31,-0.0771 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_income_statements-kwargs_dict4].csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_income_statements-kwargs_dict4].csv index 9f64762c00ff..45d40dbec97e 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_income_statements-kwargs_dict4].csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_income_statements-kwargs_dict4].csv @@ -1,26 +1,26 @@ -,2021-12-31,2022-03-31,2022-06-30,2022-09-30,2022-12-31 +,2022-03-31,2022-06-30,2022-09-30,2022-12-31,2023-03-31 reportedCurrency,USD,USD,USD,USD,USD -grossProfit,4.847 B,5.460 B,4.234 B,5.382 B,5.777 B -totalRevenue,17.719 B,18.756 B,16.934 B,21.454 B,24.318 B -costOfRevenue,12.872 B,13.296 B,12.700 B,16.072 B,18.541 B -costofGoodsAndServicesSold,149 M,197 M,82 M,97 M,143 M -operatingIncome,2.613 B,3.603 B,2.464 B,3.688 B,3.901 B -sellingGeneralAndAdministrative,1.494 B,992 M,961 M,961 M,1.032 B -researchAndDevelopment,740 M,865 M,667 M,733 M,810 M -operatingExpenses,2.234 B,1.857 B,1.770 B,1.694 B,1.876 B -investmentIncomeNet,25 M,28 M,26 M,86 M,157 M -netInterestIncome,-71 M,-61 M,-44 M,-53 M,-33 M -interestIncome,25 M,28 M,26 M,33 M,124 M -interestExpense,71 M,61 M,44 M,53 M,33 M -nonInterestIncome,-47 M,-30 M,82 M,-53 M,-80 M -otherNonOperatingIncome,68 M,56 M,28 M,-85 M,-42 M -depreciation,530 M,551 M,578 M,620 M,670 M -depreciationAndAmortization,848 M,880 M,922 M,956 M,989 M -incomeBeforeTax,2.613 B,3.664 B,2.464 B,3.597 B,3.963 B -incomeTaxExpense,292 M,346 M,205 M,305 M,276 M -interestAndDebtExpense,71 M,61 M,44 M,53 M,33 M -netIncomeFromContinuingOperations,2.343 B,3.280 B,2.269 B,3.331 B,3.707 B -comprehensiveIncomeNetOfTax,2.255 B,3.214 B,1.832 B,2.827 B,4.268 B -ebit,2.684 B,3.725 B,2.508 B,3.650 B,3.996 B -ebitda,3.532 B,4.605 B,3.430 B,4.606 B,4.985 B -netIncome,2.321 B,3.318 B,2.259 B,3.292 B,3.687 B +grossProfit,5.460 B,4.234 B,5.382 B,5.777 B,4.511 B +totalRevenue,18.756 B,16.934 B,21.454 B,24.318 B,23.329 B +costOfRevenue,13.296 B,12.700 B,16.072 B,18.541 B,18.818 B +costofGoodsAndServicesSold,197 M,82 M,97 M,143 M,126 M +operatingIncome,3.603 B,2.464 B,3.688 B,3.901 B,2.664 B +sellingGeneralAndAdministrative,992 M,961 M,961 M,1.032 B,1.076 B +researchAndDevelopment,865 M,667 M,733 M,810 M,771 M +operatingExpenses,1.857 B,1.770 B,1.694 B,1.876 B,1.847 B +investmentIncomeNet,28 M,26 M,86 M,157 M,213 M +netInterestIncome,-61 M,-44 M,-53 M,-33 M,-29 M +interestIncome,28 M,26 M,33 M,157 M,184 M +interestExpense,61 M,44 M,53 M,33 M,29 M +nonInterestIncome,-30 M,82 M,-53 M,-80 M,25 M +otherNonOperatingIncome,56 M,28 M,-85 M,-42 M,-48 M +depreciation,551 M,578 M,620 M,670 M,722 M +depreciationAndAmortization,964 M,1.118 B,957 M,1.138 B,1.211 B +incomeBeforeTax,3.664 B,2.464 B,3.597 B,3.963 B,2.774 B +incomeTaxExpense,346 M,205 M,305 M,276 M,261 M +interestAndDebtExpense,61 M,44 M,53 M,33 M,29 M +netIncomeFromContinuingOperations,3.280 B,2.269 B,3.331 B,3.707 B,2.539 B +comprehensiveIncomeNetOfTax,3.214 B,1.832 B,2.827 B,4.268 B,2.649 B +ebit,3.725 B,2.508 B,3.650 B,3.996 B,2.803 B +ebitda,4.567 B,3.582 B,4.645 B,5.039 B,3.875 B +netIncome,3.318 B,2.259 B,3.292 B,3.687 B,2.513 B diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].csv index c8c4463ef9db..c4cb5245a2fc 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_key_metrics-kwargs_dict1].csv @@ -1,13 +1,13 @@ ,0 -Market capitalization,595.705 B -EBITDA,17.439 B -EPS,3.79 -PE ratio,49.68 +Market capitalization,536120885000 +EBITDA,16666000000 +EPS,3.4 +PE ratio,49.75 PEG ratio,1.281 Price to book ratio,12.42 -Return on equity TTM,0.325 +Return on equity TTM,0.28 Price to sales ratio TTM,6.65 Dividend yield,0 -50 day moving average,150.4 -Analyst target price,190.68 -Beta,2.03 +50 day moving average,181.18 +Analyst target price,181.21 +Beta,2.003 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_overview-kwargs_dict0].csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_overview-kwargs_dict0].csv index 6b0440ab3f66..2efadc035535 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_overview-kwargs_dict0].csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_av_model/test_check_output[get_overview-kwargs_dict0].csv @@ -11,37 +11,37 @@ Sector,MANUFACTURING Industry,MOTOR VEHICLES & PASSENGER CAR BODIES Address,"3500 DEER CREEK RD, PALO ALTO, CA, US" FiscalYearEnd,December -LatestQuarter,2022-12-31 -MarketCapitalization,595.705 B -EBITDA,17.439 B -PERatio,49.68 +LatestQuarter,2023-03-31 +MarketCapitalization,536.121 B +EBITDA,16.666 B +PERatio,49.75 PEGRatio,1.281 -BookValue,14.13 +BookValue,15.16 DividendPerShare,0 DividendYield,0 -EPS,3.79 -RevenuePerShareTTM,26.03 -ProfitMargin,0.154 -OperatingMarginTTM,0.168 -ReturnOnAssetsTTM,0.118 -ReturnOnEquityTTM,0.325 -RevenueTTM,81.462 B +EPS,3.4 +RevenuePerShareTTM,27.35 +ProfitMargin,0.137 +OperatingMarginTTM,0.148 +ReturnOnAssetsTTM,0.104 +ReturnOnEquityTTM,0.28 +RevenueTTM,86.035 B GrossProfitTTM,20.853 B -DilutedEPSTTM,3.79 -QuarterlyEarningsGrowthYOY,0.569 -QuarterlyRevenueGrowthYOY,0.372 -AnalystTargetPrice,190.68 -TrailingPE,49.68 +DilutedEPSTTM,3.4 +QuarterlyEarningsGrowthYOY,-0.232 +QuarterlyRevenueGrowthYOY,0.244 +AnalystTargetPrice,181.21 +TrailingPE,49.75 ForwardPE,28.82 PriceToSalesRatioTTM,6.65 PriceToBookRatio,12.42 EVToRevenue,6.41 EVToEBITDA,29.61 -Beta,2.03 -52WeekHigh,384.29 +Beta,2.003 +52WeekHigh,314.67 52WeekLow,101.81 -50DayMovingAverage,150.4 -200DayMovingAverage,230.59 -SharesOutstanding,3.164 B +50DayMovingAverage,181.18 +200DayMovingAverage,207.43 +SharesOutstanding,3.170 B DividendDate,None ExDividendDate,None diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_fmp_model/test_get_rating.csv b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_fmp_model/test_get_rating.csv index 21fddd98d644..c0ff694257ad 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_fmp_model/test_get_rating.csv +++ b/tests/openbb_terminal/stocks/fundamental_analysis/csv/test_fmp_model/test_get_rating.csv @@ -1,4 +1,44 @@ date,Rating,DCF,ROE,ROA,DE,PE,PB +2023-05-09,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-05-08,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-05-05,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-05-04,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-05-03,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-05-02,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-05-01,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-28,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-27,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-26,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-25,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-24,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-21,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-20,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-19,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-18,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-17,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-14,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-13,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-12,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-04-10,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-31,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-30,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-29,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-28,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-27,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-24,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-23,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-22,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-21,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-20,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-17,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-16,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-15,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-14,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-13,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-10,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-09,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-08,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy +2023-03-07,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy 2023-03-03,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy 2023-02-28,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy 2023-02-27,Strong Buy,Strong Buy,Neutral,Neutral,Buy,Strong Buy,Strong Buy diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_av_model/test_get_key_metrics.json b/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_av_model/test_get_key_metrics.json index bea5d4210cdc..c3e091207a2b 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_av_model/test_get_key_metrics.json +++ b/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_av_model/test_get_key_metrics.json @@ -1 +1 @@ -["9cc76631dc1618cde724bc703e0248cfc3613f04ed0d7e4c9552b1adfcd993cc"] \ No newline at end of file +["3cc942eeb6b435fa113751be7d8fa4c94936250ac447fa4ea345373848ecbfb5"] diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_fmp_model/test_get_enterprise[PM-2020-01-01-2020-12-31-False].json b/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_fmp_model/test_get_enterprise[PM-2020-01-01-2020-12-31-False].json index f405ee153513..a48d21fd0d01 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_fmp_model/test_get_enterprise[PM-2020-01-01-2020-12-31-False].json +++ b/tests/openbb_terminal/stocks/fundamental_analysis/record/object_hash/test_fmp_model/test_get_enterprise[PM-2020-01-01-2020-12-31-False].json @@ -1 +1 @@ -["704647391834741ad2d4fcbe544f1d46198196e8708c86843cb428d948ab4a54"] \ No newline at end of file +["38797076b6a61cc70bd3dec7c60855dd3448ff3b8a9443e376169a5859df91f5"] diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_av_view/test_check_output[True-display_key-kwargs_dict1].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_av_view/test_check_output[True-display_key-kwargs_dict1].txt index ff7f449b764f..f4cc2e7208c3 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_av_view/test_check_output[True-display_key-kwargs_dict1].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_av_view/test_check_output[True-display_key-kwargs_dict1].txt @@ -1,13 +1,13 @@ - 0 -Market capitalization 595.705 B -EBITDA 17.439 B -EPS 3.79 -PE ratio 49.68 -PEG ratio 1.281 -Price to book ratio 12.42 -Return on equity TTM 0.325 -Price to sales ratio TTM 6.65 -Dividend yield 0 -50 day moving average 150.4 -Analyst target price 190.68 -Beta 2.03 + 0 +Market capitalization 595705135000 +EBITDA 17439001000 +EPS 3.79 +PE ratio 49.68 +PEG ratio 1.281 +Price to book ratio 12.42 +Return on equity TTM 0.325 +Price to sales ratio TTM 6.65 +Dividend yield 0 +50 day moving average 150.4 +Analyst target price 190.68 +Beta 2.03 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt index 754bc70841ca..4d7de5b0187d 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_balance_sheet-kwargs_dict4].txt @@ -5,50 +5,50 @@ Filing Date 2019-02-07 00:00:00 2020-02-07 Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Cash And Cash Equivalents 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B +Cash And Cash Equivalents 6593000000 6861000000 7280000000 4496000000 3207000000 Short Term Investments 0 0 0 0 0 -Cash And Short Term Investments 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B -Net Receivables 3.564 B 3.717 B 3.761 B 3.940 B 4.756 B -Inventory 8.804 B 9.235 B 9.591 B 8.720 B 9.886 B -Other Current Assets 481 M 13.653 B 14.212 B 561 M 1.770 B -Total Current Assets 19.442 B 20.514 B 21.492 B 17.717 B 19.619 B -Property Plant Equipment 7.201 B 6.631 B 6.365 B 6.168 B 6.710 B -Goodwill 7.189 B 5.858 B 5.964 B 6.680 B 19.655 B -Intangible Assets Excluding Goodwill 2.278 B 2.113 B 2.019 B 2.818 B 6.732 B -Intangible Assets 9.467 B 7.971 B 7.983 B 9.498 B 26.387 B -Long Term Investments 1.269 B 4.635 B 4.798 B 4.463 B 4.431 B -Tax Assets 977 M 1.153 B 1.410 B 895 M 603 M -Other Non Currrent Assets 1.445 B 1.971 B 2.767 B 2.549 B 3.931 B -Total Non Current Assets 20.359 B 22.361 B 23.323 B 23.573 B 42.062 B +Cash And Short Term Investments 6593000000 6861000000 7280000000 4496000000 3207000000 +Net Receivables 3564000000 3717000000 3761000000 3940000000 4756000000 +Inventory 8804000000 9235000000 9591000000 8720000000 9886000000 +Other Current Assets 481000000 13653000000 14212000000 561000000 1770000000 +Total Current Assets 19442000000 20514000000 21492000000 17717000000 19619000000 +Property Plant Equipment 7201000000 6631000000 6365000000 6168000000 6710000000 +Goodwill 7189000000 5858000000 5964000000 6680000000 19655000000 +Intangible Assets Excluding Goodwill 2278000000 2113000000 2019000000 2818000000 6732000000 +Intangible Assets 9467000000 7971000000 7983000000 9498000000 26387000000 +Long Term Investments 1269000000 4635000000 4798000000 4463000000 4431000000 +Tax Assets 977000000 1153000000 1410000000 895000000 603000000 +Other Non Currrent Assets 1445000000 1971000000 2767000000 2549000000 3931000000 +Total Non Current Assets 20359000000 22361000000 23323000000 23573000000 42062000000 Other Assets 0 0 0 0 0 -Total Assets 39.801 B 42.875 B 44.815 B 41.290 B 61.681 B -Current Accounts Payable 2.068 B 2.299 B 2.780 B 3.331 B 4.076 B -Current Debt 4.784 B 4.389 B 3.368 B 3.023 B 8.248 B -Tax Payables 5.664 B 6.633 B 7.494 B 7.349 B 8.480 B +Total Assets 39801000000 42875000000 44815000000 41290000000 61681000000 +Current Accounts Payable 2068000000 2299000000 2780000000 3331000000 4076000000 +Current Debt 4784000000 4389000000 3368000000 3023000000 8248000000 +Tax Payables 5664000000 6633000000 7494000000 7349000000 8480000000 Deferred Revenue 0 0 0 0 0 -Other Non Current Liabilities 10.339 B 12.145 B 13.467 B 12.901 B 15.012 B -Total Current Liabilities 17.191 B 18.833 B 19.615 B 19.255 B 27.336 B -Long Term Debt Non Current 26.975 B 26.656 B 28.168 B 24.783 B 34.875 B +Other Non Current Liabilities 10339000000 12145000000 13467000000 12901000000 15012000000 +Total Current Liabilities 17191000000 18833000000 19615000000 19255000000 27336000000 +Long Term Debt Non Current 26975000000 26656000000 28168000000 24783000000 34875000000 Deferred Revenue Non Current 0 0 0 0 0 -Deferred Tax Liabilities 898 M 908 M 684 M 726 M 1.956 B -Other Non Current Liabilities 5.476 B 26.953 B 29.683 B 23.889 B 28.332 B -Total Non Current Liabilities 33.349 B 33.641 B 35.831 B 30.243 B 40.656 B +Deferred Tax Liabilities 898000000 908000000 684000000 726000000 1956000000 +Other Non Current Liabilities 5476000000 26953000000 29683000000 23889000000 28332000000 +Total Non Current Liabilities 33349000000 33641000000 35831000000 30243000000 40656000000 Other Liabilities 0 0 0 0 0 Capital Lease Obligations 0 0 0 0 0 -Total Liabilities 50.540 B 52.474 B 55.446 B 49.498 B 67.992 B +Total Liabilities 50540000000 52474000000 55446000000 49498000000 67992000000 Preferred Stock 0 0 0 0 0 Common Stock 0 0 0 0 0 -Retained Earnings 31.014 B 30.987 B 31.638 B 33.082 B 34.289 B -Accumulated Other Comprehensive Income -10.111 B -9.363 B -11.181 B -9.577 B -9.559 B -Other Total Stockholders Equity -33.362 B -33.201 B -33.024 B -33.611 B -33.687 B -Total Shareholder Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B -Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B -Total Liabilities And Stockholders Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B +Retained Earnings 31014000000 30987000000 31638000000 33082000000 34289000000 +Accumulated Other Comprehensive Income -10111000000 -9363000000 -11181000000 -9577000000 -9559000000 +Other Total Stockholders Equity -33362000000 -33201000000 -33024000000 -33611000000 -33687000000 +Total Shareholder Equity -12459000000 -11577000000 -12567000000 -10106000000 -8957000000 +Equity -12459000000 -11577000000 -12567000000 -10106000000 -8957000000 +Total Liabilities And Stockholders Equity 39801000000 42875000000 44815000000 41290000000 59035000000 Equity Attributable To Non Controlling Interest 0 0 0 0 0 -Liabilities And Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B -Total Investments 0 4.635 B 4.798 B 4.463 B 4.431 B -Total Debt 31.759 B 31.045 B 31.536 B 27.806 B 43.123 B -Net Debt 25.166 B 24.184 B 24.256 B 23.310 B 39.916 B +Liabilities And Equity 39801000000 42875000000 44815000000 41290000000 59035000000 +Total Investments 0 4635000000 4798000000 4463000000 4431000000 +Total Debt 31759000000 31045000000 31536000000 27806000000 43123000000 +Net Debt 25166000000 24184000000 24256000000 23310000000 39916000000 Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt index 6d5c5b908b81..2d3391e46d6f 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_cash_flow-kwargs_dict5].txt @@ -5,36 +5,36 @@ Filling Date 2019-02-07 00:00:00 2020-02-07 00: Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Net Income 8.286 B 7.728 B 8.592 B 9.710 B 9.527 B -Depreciation And Amortization 989 M 964 M 981 M 998 M 1.189 B -Deferred Income Taxes -100 M -141 M -143 M -17 M -234 M +Net Income 8286000000 7728000000 8592000000 9710000000 9527000000 +Depreciation And Amortization 989000000 964000000 981000000 998000000 1189000000 +Deferred Income Taxes -100000000 -141000000 -143000000 -17000000 -234000000 Stock Based Compensation 0 0 0 0 0 -Change In Working Capital 164 M 755 M 128 M 1.367 B 162 M -Change In Receivables 53 M -331 M 0 0 0 -Inventory -613 M -548 M -165 M 549 M -1.287 B -Accounts Payable -51 M 451 M 406 M 653 M 719 M -Other Working Capital 775 M 1.183 B -113 M 165 M 730 M -Other Non Cash Items 139 M 784 M 254 M -91 M 159 M -Net Cash Provided By Operating Activities 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B -Investments In Property Plant And Equipment 0 -852 M -602 M -748 M -1.077 B -Acquisitions Net -63 M -1.377 B -47 M -2.145 B -13.996 B +Change In Working Capital 164000000 755000000 128000000 1367000000 162000000 +Change In Receivables 53000000 -331000000 0 0 0 +Inventory -613000000 -548000000 -165000000 549000000 -1287000000 +Accounts Payable -51000000 451000000 406000000 653000000 719000000 +Other Working Capital 775000000 1183000000 -113000000 165000000 730000000 +Other Non Cash Items 139000000 784000000 254000000 -91000000 159000000 +Net Cash Provided By Operating Activities 9478000000 10090000000 9812000000 11967000000 10803000000 +Investments In Property Plant And Equipment 0 -852000000 -602000000 -748000000 -1077000000 +Acquisitions Net -63000000 -1377000000 -47000000 -2145000000 -13996000000 Purchases Of Investments 0 0 0 0 0 Sales Maturities Of Investments 0 0 0 0 0 -Other Investing Activities -935 M -434 M -1.107 B -213 M -1.683 B -Cash Flow From Investment -998 M -1.811 B -1.154 B -2.358 B -15.679 B -Debt Repayment -2.484 B -5.351 B -4.114 B -3.042 B -7.519 B +Other Investing Activities -935000000 -434000000 -1107000000 -213000000 -1683000000 +Cash Flow From Investment -998000000 -1811000000 -1154000000 -2358000000 -15679000000 +Debt Repayment -2484000000 -5351000000 -4114000000 -3042000000 -7519000000 Common Stock Issued 0 0 0 0 0 -Common Stock Repurchased 0 0 0 -775 M -209 M -Dividends Paid -6.885 B -7.161 B -7.364 B -7.580 B -7.812 B -Other Financing Activities -282 M 4.451 B 2.982 B -580 M 19.346 B -Cash Flow From Financing -9.651 B -8.061 B -8.496 B -11.977 B 3.806 B -Change In Exchange Rate -685 M 27 M 258 M -417 M -213 M -Net Change In Cash -1.856 B 245 M 420 M -2.785 B -1.283 B -Cash At End Of Period 6.620 B 6.865 B 7.285 B 4.500 B 3.217 B -Cash At Beginning Of Period 8.476 B 6.620 B 6.865 B 7.285 B 4.500 B -Operating Cash Flow 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B -Capital Expenditure -1.436 B -852 M -602 M -748 M -1.077 B -Free Cash Flow 8.042 B 9.238 B 9.210 B 11.219 B 9.726 B +Common Stock Repurchased 0 0 0 -775000000 -209000000 +Dividends Paid -6885000000 -7161000000 -7364000000 -7580000000 -7812000000 +Other Financing Activities -282000000 4451000000 2982000000 -580000000 19346000000 +Cash Flow From Financing -9651000000 -8061000000 -8496000000 -11977000000 3806000000 +Change In Exchange Rate -685000000 27000000 258000000 -417000000 -213000000 +Net Change In Cash -1856000000 245000000 420000000 -2785000000 -1283000000 +Cash At End Of Period 6620000000 6865000000 7285000000 4500000000 3217000000 +Cash At Beginning Of Period 8476000000 6620000000 6865000000 7285000000 4500000000 +Operating Cash Flow 9478000000 10090000000 9812000000 11967000000 10803000000 +Capital Expenditure -1436000000 -852000000 -602000000 -748000000 -1077000000 +Free Cash Flow 8042000000 9238000000 9210000000 11219000000 9726000000 Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt index 03b4943f7d91..500870791781 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_discounted_cash_flow-kwargs_dict2].txt @@ -1,3 +1,3 @@ - 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-05-02 -Stock price 74.480 84.330 79.650 103.520 96.980 -DCF 78.720 88.742 84.326 106.408 99.040 + 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-05-02 +Stock price 74.480003 84.330002 79.650002 103.519997 96.98 +DCF 78.719875 88.74222 84.32566 106.407601 99.03973 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt index 17b882f78de4..24b32f53b4e1 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_ratios-kwargs_dict7].txt @@ -1,56 +1,56 @@ -Fiscal Date Ending 2018 2019 2020 2021 2022 -Period FY FY FY FY FY -Current ratio 1.131 1.089 1.096 0.920 0.718 -Quick ratio 0.591 0.562 0.563 0.438 0.291 -Cash ratio 0.384 0.364 0.371 0.233 0.117 -Days of sales outstanding 43.911 45.519 47.842 45.792 54.655 -Days of inventory outstanding 298.704 320.629 365.839 317.328 316.470 -Operating cycle 342.615 366.149 413.681 363.120 371.125 -Days of payables outstanding 70.164 79.819 106.040 121.218 130.481 -Cash conversion cycle 272.452 286.330 307.640 241.902 240.644 -Gross profit margin 0.637 0.647 0.667 0.681 0.641 -Operating profit margin 0.384 0.353 0.407 0.413 0.386 -Pretax profit margin 0.360 0.331 0.382 0.389 0.366 -Net profit margin 0.267 0.241 0.281 0.290 0.285 -Effective tax rate 0.229 0.232 0.217 0.218 0.193 -Return on assets 0.199 0.168 0.180 0.221 0.147 -Return on equity -0.635 -0.621 -0.641 -0.901 -1.010 -Return on capital employed 0.503 0.438 0.463 0.589 0.357 -Net income per EBT 0.741 0.728 0.736 0.745 0.778 -Ebt per ebit 0.938 0.937 0.939 0.943 0.950 -Ebit per revenue 0.384 0.353 0.407 0.413 0.386 -Debt ratio 1.270 1.224 1.237 1.199 1.102 -Debt equity ratio -2.549 -2.682 -2.509 -2.751 -4.814 -Long term debt to capitalization 1.858 1.768 1.806 1.689 1.346 -Total debt to capitalization 1.646 1.595 1.663 1.571 1.262 -Interest coverage 13.306 18.475 18.880 17.605 15.945 -Cash flow to debt ratio 0.298 0.325 0.311 0.430 0.251 -Company equity multiplier -3.195 -3.703 -3.566 -4.086 -6.886 -Receivables turnover 8.312 8.019 7.629 7.971 6.678 -Payables turnover 5.202 4.573 3.442 3.011 2.797 -Inventory turnover 1.222 1.138 0.998 1.150 1.153 -Fixed asset turnover 4.114 4.495 4.508 5.092 4.734 -Asset turnover 0.744 0.695 0.640 0.761 0.515 -Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 -Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 2.060 -Payout ratio 0.870 0.997 0.914 0.832 0.863 -Operating cash flow sales ratio 0.320 0.339 0.342 0.381 0.340 -Free cash flow operating cash flow ratio 0.848 0.916 0.939 0.937 0.900 -Cash flow coverage ratios 0.298 0.325 0.311 0.430 0.251 -Short term coverage ratios 1.981 2.299 2.913 3.959 1.310 -Capital expenditure coverage ratio -6.600 -11.843 -16.299 -15.999 -10.031 -Dividend paid and capex coverage ratio 1.739 1.599 1.451 1.752 1.604 -Dividend payout ratio 0.870 0.997 0.914 0.832 0.863 -Price book value ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Price to book ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Price to sales ratio 3.504 4.439 4.492 4.713 4.961 -Price earnings ratio 13.122 18.415 16.001 16.249 17.416 -Price to free cash flows ratio 12.909 14.323 13.996 13.193 16.202 -Price to operating cash flows ratio 10.953 13.113 13.137 12.368 14.587 -Price cash flow ratio 10.953 13.113 13.137 12.368 14.587 -Price earnings to growth ratio 0.425 -1.953 1.341 1.215 -25.472 -Price sales ratio 3.504 4.439 4.492 4.713 4.961 -Dividend yield 0.066 0.054 0.057 0.051 0.050 -Enterprise value multiple 10.572 14.893 13.154 12.676 14.907 -Price fair value -8.332 -11.429 -10.257 -14.646 -17.593 +Fiscal Date Ending 2018 2019 2020 2021 2022 +Period FY FY FY FY FY +Current ratio 1.130941 1.089258 1.095692 0.920125 0.717698 +Quick ratio 0.590832 0.561674 0.562886 0.43812 0.291301 +Cash ratio 0.383515 0.364307 0.371145 0.233498 0.117318 +Days of sales outstanding 43.910886 45.519376 47.841535 45.792071 54.654619 +Days of inventory outstanding 298.70422 320.629221 365.839168 317.328016 316.469918 +Operating cycle 342.615106 366.148597 413.680703 363.120087 371.124536 +Days of payables outstanding 70.163599 79.818796 106.040339 121.217846 130.480617 +Cash conversion cycle 272.451507 286.329801 307.640364 241.902241 240.643919 +Gross profit margin 0.636861 0.647274 0.666516 0.680624 0.641018 +Operating profit margin 0.384034 0.35333 0.406636 0.413151 0.385555 +Pretax profit margin 0.360203 0.33122 0.381717 0.389492 0.366287 +Net profit margin 0.267038 0.241067 0.280756 0.290049 0.284869 +Effective tax rate 0.229126 0.232273 0.217018 0.218362 0.192883 +Return on assets 0.198764 0.16758 0.179761 0.22061 0.14669 +Return on equity -0.634963 -0.620627 -0.641044 -0.901346 -1.01016 +Return on capital employed 0.503184 0.438025 0.463016 0.588836 0.356558 +Net income per EBT 0.741355 0.727816 0.735506 0.744686 0.77772 +Ebt per ebit 0.937945 0.937423 0.938721 0.942736 0.950024 +Ebit per revenue 0.384034 0.35333 0.406636 0.413151 0.385555 +Debt ratio 1.269817 1.223883 1.23722 1.198789 1.102317 +Debt equity ratio -2.549081 -2.68161 -2.509429 -2.751435 -4.814447 +Long term debt to capitalization 1.858294 1.767756 1.805525 1.68856 1.34559 +Total debt to capitalization 1.645544 1.594668 1.662502 1.57096 1.262161 +Interest coverage 13.306433 18.475439 18.880259 17.605156 15.945312 +Cash flow to debt ratio 0.298435 0.325012 0.311136 0.430375 0.250516 +Company equity multiplier -3.194558 -3.703464 -3.566086 -4.085692 -6.886346 +Receivables turnover 8.31229 8.018563 7.629354 7.970812 6.678301 +Payables turnover 5.202128 4.572858 3.442086 3.011108 2.79735 +Inventory turnover 1.221945 1.138387 0.997706 1.150229 1.153348 +Fixed asset turnover 4.114012 4.494797 4.508091 5.091602 4.733532 +Asset turnover 0.744328 0.69516 0.640277 0.760596 0.51494 +Operating cash flow per share 6.095177 6.488746 6.301863 7.681001 6.938343 +Free cash flow per share 5.171704 5.940836 5.915222 7.200899 6.246628 +Cash per share 4.239871 4.412219 4.675658 2.885751 2.05973 +Payout ratio 0.870307 0.99666 0.914101 0.832144 0.863395 +Operating cash flow sales ratio 0.319932 0.338534 0.341953 0.381054 0.340123 +Free cash flow operating cash flow ratio 0.848491 0.91556 0.938647 0.937495 0.900305 +Cash flow coverage ratios 0.298435 0.325012 0.311136 0.430375 0.250516 +Short term coverage ratios 1.981187 2.298929 2.913302 3.95865 1.309772 +Capital expenditure coverage ratio -6.600279 -11.842723 -16.299003 -15.998663 -10.030641 +Dividend paid and capex coverage ratio 1.739402 1.599303 1.45105 1.75161 1.604009 +Dividend payout ratio 0.870307 0.99666 0.914101 0.832144 0.863395 +Price book value ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Price to book ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Price to sales ratio 3.504196 4.439354 4.492369 4.712944 4.961399 +Price earnings ratio 13.122462 18.415442 16.000997 16.248765 17.416442 +Price to free cash flows ratio 12.908704 14.3229 13.996094 13.192798 16.202341 +Price to operating cash flows ratio 10.952923 13.113474 13.137386 12.368179 14.587056 +Price cash flow ratio 10.952923 13.113474 13.137386 12.368179 14.587056 +Price earnings to growth ratio 0.425386 -1.952804 1.341174 1.215125 -25.471547 +Price sales ratio 3.504196 4.439354 4.492369 4.712944 4.961399 +Dividend yield 0.066322 0.054121 0.057128 0.051213 0.049574 +Enterprise value multiple 10.571951 14.893315 13.153558 12.676286 14.906783 +Price fair value -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt index 2402852db046..29e2d104670c 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_financial_statement_growth-kwargs_dict8].txt @@ -1,36 +1,36 @@ -Fiscal Date Ending 2018 2019 2020 2021 2022 -Period FY FY FY FY FY -Revenue growth 0.031 0.006 -0.037 0.094 0.011 -Gross profit growth 0.030 0.023 -0.009 0.118 -0.047 -Ebitgrowth -0.011 -0.074 0.108 0.112 -0.056 -Operating income growth -0.011 -0.074 0.108 0.112 -0.056 -Net income growth 0.311 -0.092 0.121 0.131 -0.007 -Epsgrowth 0.308 -0.094 0.119 0.134 -0.007 -Epsdiluted growth 0.308 -0.094 0.119 0.132 -0.005 -Weighted average shares growth 0.002 0 0.001 0.001 -0.001 -Weighted average shares diluted growth 0.001 0.001 0.001 0.001 -0.001 -Dividendsper share growth 0.054 0.040 0.027 0.029 0.031 -Operating cash flow growth 0.064 0.065 -0.028 0.220 -0.097 -Free cash flow growth 0.092 0.149 -0.003 0.218 -0.133 -Ten y revenue growth per share 0.533 0.488 0.246 0.119 0.100 -Five y revenue growth per share -0.010 0.008 0.065 0.172 0.101 -Three y revenue growth per share 0.101 0.114 -0.005 0.058 0.064 -Ten y operating c f growth per share 0.589 0.599 0.228 0.259 0.246 -Five y operating c f growth per share -0.025 0.313 0.241 0.475 0.208 -Three y operating c f growth per share 0.200 0.246 0.097 0.260 0.069 -Ten y net income growth per share 0.527 0.416 0.311 0.175 0.117 -Five y net income growth per share -0.038 -0.034 0.166 0.302 0.494 -Three y net income growth per share 0.147 0.029 0.331 0.149 0.258 -Ten y shareholders equity growth per share -3.209 -3.531 -5.234 -49.887 -1.800 -Five y shareholders equity growth per share -0.673 0.077 0.056 0.207 0.261 -Three y shareholders equity growth per share 0.063 0.090 -0.036 0.190 0.227 -Ten y dividendper share growth per share 0.803 1.068 0.966 0.754 0.571 -Five y dividendper share growth per share 0.256 0.195 0.172 0.183 0.194 -Three y dividendper share growth per share 0.097 0.120 0.126 0.099 0.090 -Receivables growth -0.047 0.043 0.012 0.048 0.207 -Inventory growth -0.000 0.049 0.039 -0.091 0.134 -Asset growth -0.074 0.077 0.045 -0.079 0.494 -Book valueper share growth -0.029 0.071 -0.084 0.196 0.113 -Debt growth -0.075 -0.022 0.016 -0.118 0.551 -Rdexpense growth 0 0 0 0 0 -Sgaexpenses growth 0.108 0.179 -0.148 0.125 -0.033 +Fiscal Date Ending 2018 2019 2020 2021 2022 +Period FY FY FY FY FY +Revenue growth 0.030506 0.006076 -0.037276 0.09448 0.011368 +Gross profit growth 0.030083 0.022526 -0.008656 0.117647 -0.047485 +Ebitgrowth -0.010954 -0.074361 0.107967 0.112016 -0.056185 +Operating income growth -0.010954 -0.074361 0.107967 0.112016 -0.056185 +Net income growth 0.310853 -0.091771 0.121225 0.13071 -0.006697 +Epsgrowth 0.308483 -0.094303 0.119306 0.133721 -0.006838 +Epsdiluted growth 0.308483 -0.094303 0.119306 0.131783 -0.005137 +Weighted average shares growth 0.001933 0 0.001286 0.000642 -0.000642 +Weighted average shares diluted growth 0.001288 0.000643 0.001285 0.000642 -0.001283 +Dividendsper share growth 0.053944 0.040087 0.027027 0.028671 0.031269 +Operating cash flow growth 0.06351 0.064571 -0.027552 0.219629 -0.097267 +Free cash flow growth 0.09207 0.148719 -0.003031 0.218132 -0.133078 +Ten y revenue growth per share 0.532713 0.487592 0.245626 0.118744 0.100039 +Five y revenue growth per share -0.010108 0.00836 0.065409 0.171591 0.101294 +Three y revenue growth per share 0.101392 0.114047 -0.005084 0.058043 0.064291 +Ten y operating c f growth per share 0.58851 0.599142 0.228052 0.259066 0.246118 +Five y operating c f growth per share -0.024531 0.313009 0.241142 0.474958 0.208293 +Three y operating c f growth per share 0.200436 0.246013 0.097452 0.260177 0.069289 +Ten y net income growth per share 0.526976 0.415608 0.310798 0.174566 0.117331 +Five y net income growth per share -0.037796 -0.034322 0.1661 0.301575 0.49444 +Three y net income growth per share 0.146584 0.028638 0.330593 0.149218 0.257673 +Ten y shareholders equity growth per share -3.209236 -3.530732 -5.233629 -49.887088 -1.800235 +Five y shareholders equity growth per share -0.673425 0.076816 0.055993 0.207078 0.261275 +Three y shareholders equity growth per share 0.062902 0.08991 -0.036459 0.190421 0.227305 +Ten y dividendper share growth per share 0.802793 1.067898 0.966482 0.753741 0.570937 +Five y dividendper share growth per share 0.255534 0.194972 0.172186 0.183121 0.194312 +Three y dividendper share growth per share 0.097349 0.119878 0.125821 0.098824 0.089508 +Receivables growth -0.046549 0.042929 0.011838 0.047594 0.207107 +Inventory growth -0.000227 0.048955 0.038549 -0.090814 0.133716 +Asset growth -0.073706 0.077234 0.045248 -0.078657 0.493848 +Book valueper share growth -0.028873 0.070792 -0.08412 0.196347 0.113126 +Debt growth -0.075133 -0.022482 0.015816 -0.118278 0.550852 +Rdexpense growth 0 0 0 0 0 +Sgaexpenses growth 0.107658 0.179219 -0.148338 0.125384 -0.033377 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt index f1bffd71384e..7171041bf454 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_income_statement-kwargs_dict3].txt @@ -5,34 +5,34 @@ Filling Date 2019-02-07 00:00:00 2020-02-07 00:00:00 2 Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Revenue 29.625 B 29.805 B 28.694 B 31.405 B 31.762 B -Cost Of Revenue 10.758 B 10.513 B 9.569 B 10.030 B 11.402 B -Gross Profit 18.867 B 19.292 B 19.125 B 21.375 B 20.360 B -Gross Profit Ratio 0.637 0.647 0.667 0.681 0.641 +Revenue 29625000000 29805000000 28694000000 31405000000 31762000000 +Cost Of Revenue 10758000000 10513000000 9569000000 10030000000 11402000000 +Gross Profit 18867000000 19292000000 19125000000 21375000000 20360000000 +Gross Profit Ratio 0.636861 0.647274 0.666516 0.680624 0.641018 Research And Development Expenses 0 0 0 0 0 -General And Administrative Expenses 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B -Selling And Marketing Expenses 7.408 B 8.695 B 7.384 B 8.304 B 0 -Selling General And Administrative 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B -Other Expenses 82 M 66 M 73 M 96 M 0 -Operating Expenses 7.531 B 8.850 B 7.554 B 8.515 B 8.138 B -Costs And Expenses 18.289 B 19.363 B 17.123 B 18.545 B 19.540 B -Interest Income 190 M 226 M 110 M 109 M 180 M -Interest Expense 855 M 570 M 618 M 737 M 768 M -Depreciation And Amortization 989 M -23 M -24 M 540 M 1.003 B -Ebitda 12.200 B 10.508 B 11.644 B 13.515 B 13.249 B -Ebitda Ratio 0.412 0.353 0.406 0.430 0.417 -Operating Income 11.377 B 10.531 B 11.668 B 12.975 B 12.246 B -Operating Income Ratio 0.384 0.353 0.407 0.413 0.386 -Non Operating Income Loss -41 M -659 M -715 M -743 M -612 M -Income Before Tax 10.671 B 9.872 B 10.953 B 12.232 B 11.634 B -Income Before Tax Ratio 0.360 0.331 0.382 0.389 0.366 -Income Tax Expense 2.445 B 2.293 B 2.377 B 2.671 B 2.244 B -Net Income 7.911 B 7.185 B 8.056 B 9.109 B 9.048 B -Net Income Ratio 0.267 0.241 0.281 0.290 0.285 -Basic Earnings Per Share 5.090 4.610 5.160 5.850 5.810 -Diluted Earnings Per Share 5.090 4.610 5.160 5.840 5.810 -Basic Average Shares 1.555 B 1.555 B 1.557 B 1.558 B 1.557 B -Diluted Average Shares 1.555 B 1.556 B 1.558 B 1.559 B 1.557 B +General And Administrative Expenses 7449000000 8784000000 7481000000 8419000000 8138000000 +Selling And Marketing Expenses 7408000000 8695000000 7384000000 8304000000 0 +Selling General And Administrative 7449000000 8784000000 7481000000 8419000000 8138000000 +Other Expenses 82000000 66000000 73000000 96000000 0 +Operating Expenses 7531000000 8850000000 7554000000 8515000000 8138000000 +Costs And Expenses 18289000000 19363000000 17123000000 18545000000 19540000000 +Interest Income 190000000 226000000 110000000 109000000 180000000 +Interest Expense 855000000 570000000 618000000 737000000 768000000 +Depreciation And Amortization 989000000 -23000000 -24000000 540000000 1003000000 +Ebitda 12200000000 10508000000 11644000000 13515000000 13249000000 +Ebitda Ratio 0.411814 0.352558 0.405799 0.430345 0.417134 +Operating Income 11377000000 10531000000 11668000000 12975000000 12246000000 +Operating Income Ratio 0.384034 0.35333 0.406636 0.413151 0.385555 +Non Operating Income Loss -41000000 -659000000 -715000000 -743000000 -612000000 +Income Before Tax 10671000000 9872000000 10953000000 12232000000 11634000000 +Income Before Tax Ratio 0.360203 0.33122 0.381717 0.389492 0.366287 +Income Tax Expense 2445000000 2293000000 2377000000 2671000000 2244000000 +Net Income 7911000000 7185000000 8056000000 9109000000 9048000000 +Net Income Ratio 0.267038 0.241067 0.280756 0.290049 0.284869 +Basic Earnings Per Share 5.09 4.61 5.16 5.85 5.81 +Diluted Earnings Per Share 5.09 4.61 5.16 5.84 5.81 +Basic Average Shares 1555000000 1555000000 1557000000 1558000000 1557000000 +Diluted Average Shares 1555000000 1556000000 1558000000 1559000000 1557000000 Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt index d03ee1a302d6..a847f0249376 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[False-display_key_metrics-kwargs_dict6].txt @@ -1,59 +1,59 @@ -Fiscal Date Ending 2018 2019 2020 2021 2022 -Period FY FY FY FY FY -Revenue per share 19.051 19.167 18.429 20.157 20.399 -Net income per share 5.087 4.621 5.174 5.847 5.811 -Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 -Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 2.060 -Book value per share -8.012 -7.445 -8.071 -6.487 -5.753 -Tangible book value per share -12.994 -11.299 -11.955 -11.365 -21.001 -Shareholders equity per share -8.012 -7.445 -8.071 -6.487 -5.753 -Interest debt per share 20.974 20.331 20.651 18.320 28.189 -Market cap 103.812 B 132.315 B 128.904 B 148.010 B 157.584 B -Enterprise value 128.978 B 156.499 B 153.160 B 171.320 B 197.500 B -Pe ratio 13.122 18.415 16.001 16.249 17.416 -Price to sales ratio 3.504 4.439 4.492 4.713 4.961 -Pocfratio 10.953 13.113 13.137 12.368 14.587 -Pfcf ratio 12.909 14.323 13.996 13.193 16.202 -Pb ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Ptb ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Ev to sales 4.354 5.251 5.338 5.455 6.218 -Enterprise value over EBITDA 10.572 14.893 13.154 12.676 14.907 -Ev to operating cash flow 13.608 15.510 15.609 14.316 18.282 -Ev to free cash flow 16.038 16.941 16.630 15.271 20.306 -Earnings yield 0.076 0.054 0.062 0.062 0.057 -Free cash flow yield 0.077 0.070 0.071 0.076 0.062 -Debt to equity -4.057 -4.533 -4.412 -4.898 -7.591 -Debt to assets 1.270 1.224 1.237 1.199 1.102 -Net debt to EBITDA 2.063 2.301 2.083 1.725 3.013 -Current ratio 1.131 1.089 1.096 0.920 0.718 -Interest coverage 13.306 18.475 18.880 17.605 15.945 -Income quality 1.144 1.306 1.142 1.232 1.134 -Dividend yield 0.066 0.054 0.057 0.051 0.050 -Payout ratio 0.870 0.997 0.914 0.832 0.863 -Sales general and administrative to revenue 0.251 0.295 0.261 0.268 0.256 -Research and ddevelopement to revenue 0 0 0 0 0 -Intangibles to total assets 0.238 0.186 0.178 0.230 0.428 -Capex to operating cash flow -0.152 -0.084 -0.061 -0.063 -0.100 -Capex to revenue -0.048 -0.029 -0.021 -0.024 -0.034 -Capex to depreciation -1.452 -0.884 -0.614 -0.749 -0.906 -Stock based compensation to revenue 0 0 0 0 0 -Graham number 30.284 27.821 30.653 29.211 27.426 -Roic 0.357 0.301 0.333 0.350 0.193 -Return on tangible assets 0.261 0.206 0.219 0.287 0.256 -Graham net net -23.712 -24.571 -26.044 -24.189 -36.143 -Working capital 2.251 B 1.681 B 1.877 B -1.538 B -7.717 B -Tangible asset value -20.206 B -17.570 B -18.614 B -17.706 B -32.698 B -Net current asset value -31.098 B -31.960 B -33.954 B -31.781 B -48.373 B -Invested capital -2.549 -2.682 -2.509 -2.751 -4.814 -Average receivables 3.651 B 3.640 B 3.739 B 3.850 B 4.348 B -Average payables 2.155 B 2.183 B 2.539 B 3.055 B 3.704 B -Average inventory 8.805 B 9.020 B 9.413 B 9.155 B 9.303 B -Days sales outstanding 43.911 45.519 47.842 45.792 54.655 -Days payables outstanding 70.164 79.819 106.040 121.218 130.481 -Days of inventory on hand 298.704 320.629 365.839 317.328 316.470 -Receivables turnover 8.312 8.019 7.629 7.971 6.678 -Payables turnover 5.202 4.573 3.442 3.011 2.797 -Inventory turnover 1.222 1.138 0.998 1.150 1.153 -Roe -0.635 -0.621 -0.641 -0.901 -1.010 -Capex per share -0.923 -0.548 -0.387 -0.480 -0.692 +Fiscal Date Ending 2018 2019 2020 2021 2022 +Period FY FY FY FY FY +Revenue per share 19.051447 19.167203 18.42903 20.157253 20.399486 +Net income per share 5.08746 4.620579 5.174053 5.846598 5.811175 +Operating cash flow per share 6.095177 6.488746 6.301863 7.681001 6.938343 +Free cash flow per share 5.171704 5.940836 5.915222 7.200899 6.246628 +Cash per share 4.239871 4.412219 4.675658 2.885751 2.05973 +Book value per share -8.012219 -7.445016 -8.071291 -6.486521 -5.75273 +Tangible book value per share -12.994212 -11.299035 -11.955042 -11.36457 -21.000642 +Shareholders equity per share -8.012219 -7.445016 -8.071291 -6.486521 -5.75273 +Interest debt per share 20.973633 20.33119 20.651252 18.320282 28.189467 +Market cap 103811800000.000015 132314950000 128904030000.000015 148010000000 157583970000 +Enterprise value 128977800000.000015 156498950000 153160030000 171320000000 197499970000 +Pe ratio 13.122462 18.415442 16.000997 16.248765 17.416442 +Price to sales ratio 3.504196 4.439354 4.492369 4.712944 4.961399 +Pocfratio 10.952923 13.113474 13.137386 12.368179 14.587056 +Pfcf ratio 12.908704 14.3229 13.996094 13.192798 16.202341 +Pb ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Ptb ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Ev to sales 4.353681 5.250762 5.337702 5.455182 6.218121 +Enterprise value over EBITDA 10.571951 14.893315 13.153558 12.676286 14.906783 +Ev to operating cash flow 13.608124 15.510302 15.609461 14.316036 18.281956 +Ev to free cash flow 16.038025 16.940783 16.629754 15.270523 20.306392 +Earnings yield 0.076205 0.054302 0.062496 0.061543 0.057417 +Free cash flow yield 0.077467 0.069818 0.071449 0.075799 0.061719 +Debt to equity -4.056505 -4.532608 -4.412032 -4.897882 -7.590934 +Debt to assets 1.269817 1.223883 1.23722 1.198789 1.102317 +Net debt to EBITDA 2.062787 2.301485 2.083133 1.72475 3.012756 +Current ratio 1.130941 1.089258 1.095692 0.920125 0.717698 +Interest coverage 13.306433 18.475439 18.880259 17.605156 15.945312 +Income quality 1.143857 1.305642 1.141993 1.232441 1.133935 +Dividend yield 0.066322 0.054121 0.057128 0.051213 0.049574 +Payout ratio 0.870307 0.99666 0.914101 0.832144 0.863395 +Sales general and administrative to revenue 0.251443 0.294716 0.260717 0.268078 0.256218 +Research and ddevelopement to revenue 0 0 0 0 0 +Intangibles to total assets 0.237858 0.185913 0.178132 0.230031 0.427798 +Capex to operating cash flow -0.151509 -0.08444 -0.061353 -0.062505 -0.099695 +Capex to revenue -0.048473 -0.028586 -0.02098 -0.023818 -0.033908 +Capex to depreciation -1.451972 -0.883817 -0.61366 -0.749499 -0.905803 +Stock based compensation to revenue 0 0 0 0 0 +Graham number 30.284343 27.82097 30.653367 29.21116 27.425858 +Roic 0.357283 0.30107 0.332514 0.350114 0.19308 +Return on tangible assets 0.260796 0.20585 0.218723 0.286519 0.256361 +Graham net net -23.711897 -24.5709 -26.043513 -24.189345 -36.143224 +Working capital 2251000000 1681000000 1877000000 -1538000000 -7717000000 +Tangible asset value -20206000000 -17570000000 -18614000000 -17706000000 -32698000000 +Net current asset value -31098000000 -31960000000 -33954000000 -31781000000 -48373000000 +Invested capital -2.549081 -2.68161 -2.509429 -2.751435 -4.814447 +Average receivables 3651000000 3640500000 3739000000 3850500000 4348000000 +Average payables 2155000000 2183500000 2539500000 3055500000 3703500000 +Average inventory 8805000000 9019500000 9413000000 9155500000 9303000000 +Days sales outstanding 43.910886 45.519376 47.841535 45.792071 54.654619 +Days payables outstanding 70.163599 79.818796 106.040339 121.217846 130.480617 +Days of inventory on hand 298.70422 320.629221 365.839168 317.328016 316.469918 +Receivables turnover 8.31229 8.018563 7.629354 7.970812 6.678301 +Payables turnover 5.202128 4.572858 3.442086 3.011108 2.79735 +Inventory turnover 1.221945 1.138387 0.997706 1.150229 1.153348 +Roe -0.634963 -0.620627 -0.641044 -0.901346 -1.01016 +Capex per share -0.923473 -0.54791 -0.386641 -0.480103 -0.691715 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt index 754bc70841ca..4d7de5b0187d 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_balance_sheet-kwargs_dict4].txt @@ -5,50 +5,50 @@ Filing Date 2019-02-07 00:00:00 2020-02-07 Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Cash And Cash Equivalents 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B +Cash And Cash Equivalents 6593000000 6861000000 7280000000 4496000000 3207000000 Short Term Investments 0 0 0 0 0 -Cash And Short Term Investments 6.593 B 6.861 B 7.280 B 4.496 B 3.207 B -Net Receivables 3.564 B 3.717 B 3.761 B 3.940 B 4.756 B -Inventory 8.804 B 9.235 B 9.591 B 8.720 B 9.886 B -Other Current Assets 481 M 13.653 B 14.212 B 561 M 1.770 B -Total Current Assets 19.442 B 20.514 B 21.492 B 17.717 B 19.619 B -Property Plant Equipment 7.201 B 6.631 B 6.365 B 6.168 B 6.710 B -Goodwill 7.189 B 5.858 B 5.964 B 6.680 B 19.655 B -Intangible Assets Excluding Goodwill 2.278 B 2.113 B 2.019 B 2.818 B 6.732 B -Intangible Assets 9.467 B 7.971 B 7.983 B 9.498 B 26.387 B -Long Term Investments 1.269 B 4.635 B 4.798 B 4.463 B 4.431 B -Tax Assets 977 M 1.153 B 1.410 B 895 M 603 M -Other Non Currrent Assets 1.445 B 1.971 B 2.767 B 2.549 B 3.931 B -Total Non Current Assets 20.359 B 22.361 B 23.323 B 23.573 B 42.062 B +Cash And Short Term Investments 6593000000 6861000000 7280000000 4496000000 3207000000 +Net Receivables 3564000000 3717000000 3761000000 3940000000 4756000000 +Inventory 8804000000 9235000000 9591000000 8720000000 9886000000 +Other Current Assets 481000000 13653000000 14212000000 561000000 1770000000 +Total Current Assets 19442000000 20514000000 21492000000 17717000000 19619000000 +Property Plant Equipment 7201000000 6631000000 6365000000 6168000000 6710000000 +Goodwill 7189000000 5858000000 5964000000 6680000000 19655000000 +Intangible Assets Excluding Goodwill 2278000000 2113000000 2019000000 2818000000 6732000000 +Intangible Assets 9467000000 7971000000 7983000000 9498000000 26387000000 +Long Term Investments 1269000000 4635000000 4798000000 4463000000 4431000000 +Tax Assets 977000000 1153000000 1410000000 895000000 603000000 +Other Non Currrent Assets 1445000000 1971000000 2767000000 2549000000 3931000000 +Total Non Current Assets 20359000000 22361000000 23323000000 23573000000 42062000000 Other Assets 0 0 0 0 0 -Total Assets 39.801 B 42.875 B 44.815 B 41.290 B 61.681 B -Current Accounts Payable 2.068 B 2.299 B 2.780 B 3.331 B 4.076 B -Current Debt 4.784 B 4.389 B 3.368 B 3.023 B 8.248 B -Tax Payables 5.664 B 6.633 B 7.494 B 7.349 B 8.480 B +Total Assets 39801000000 42875000000 44815000000 41290000000 61681000000 +Current Accounts Payable 2068000000 2299000000 2780000000 3331000000 4076000000 +Current Debt 4784000000 4389000000 3368000000 3023000000 8248000000 +Tax Payables 5664000000 6633000000 7494000000 7349000000 8480000000 Deferred Revenue 0 0 0 0 0 -Other Non Current Liabilities 10.339 B 12.145 B 13.467 B 12.901 B 15.012 B -Total Current Liabilities 17.191 B 18.833 B 19.615 B 19.255 B 27.336 B -Long Term Debt Non Current 26.975 B 26.656 B 28.168 B 24.783 B 34.875 B +Other Non Current Liabilities 10339000000 12145000000 13467000000 12901000000 15012000000 +Total Current Liabilities 17191000000 18833000000 19615000000 19255000000 27336000000 +Long Term Debt Non Current 26975000000 26656000000 28168000000 24783000000 34875000000 Deferred Revenue Non Current 0 0 0 0 0 -Deferred Tax Liabilities 898 M 908 M 684 M 726 M 1.956 B -Other Non Current Liabilities 5.476 B 26.953 B 29.683 B 23.889 B 28.332 B -Total Non Current Liabilities 33.349 B 33.641 B 35.831 B 30.243 B 40.656 B +Deferred Tax Liabilities 898000000 908000000 684000000 726000000 1956000000 +Other Non Current Liabilities 5476000000 26953000000 29683000000 23889000000 28332000000 +Total Non Current Liabilities 33349000000 33641000000 35831000000 30243000000 40656000000 Other Liabilities 0 0 0 0 0 Capital Lease Obligations 0 0 0 0 0 -Total Liabilities 50.540 B 52.474 B 55.446 B 49.498 B 67.992 B +Total Liabilities 50540000000 52474000000 55446000000 49498000000 67992000000 Preferred Stock 0 0 0 0 0 Common Stock 0 0 0 0 0 -Retained Earnings 31.014 B 30.987 B 31.638 B 33.082 B 34.289 B -Accumulated Other Comprehensive Income -10.111 B -9.363 B -11.181 B -9.577 B -9.559 B -Other Total Stockholders Equity -33.362 B -33.201 B -33.024 B -33.611 B -33.687 B -Total Shareholder Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B -Equity -12.459 B -11.577 B -12.567 B -10.106 B -8.957 B -Total Liabilities And Stockholders Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B +Retained Earnings 31014000000 30987000000 31638000000 33082000000 34289000000 +Accumulated Other Comprehensive Income -10111000000 -9363000000 -11181000000 -9577000000 -9559000000 +Other Total Stockholders Equity -33362000000 -33201000000 -33024000000 -33611000000 -33687000000 +Total Shareholder Equity -12459000000 -11577000000 -12567000000 -10106000000 -8957000000 +Equity -12459000000 -11577000000 -12567000000 -10106000000 -8957000000 +Total Liabilities And Stockholders Equity 39801000000 42875000000 44815000000 41290000000 59035000000 Equity Attributable To Non Controlling Interest 0 0 0 0 0 -Liabilities And Equity 39.801 B 42.875 B 44.815 B 41.290 B 59.035 B -Total Investments 0 4.635 B 4.798 B 4.463 B 4.431 B -Total Debt 31.759 B 31.045 B 31.536 B 27.806 B 43.123 B -Net Debt 25.166 B 24.184 B 24.256 B 23.310 B 39.916 B +Liabilities And Equity 39801000000 42875000000 44815000000 41290000000 59035000000 +Total Investments 0 4635000000 4798000000 4463000000 4431000000 +Total Debt 31759000000 31045000000 31536000000 27806000000 43123000000 +Net Debt 25166000000 24184000000 24256000000 23310000000 39916000000 Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt index 6d5c5b908b81..2d3391e46d6f 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_cash_flow-kwargs_dict5].txt @@ -5,36 +5,36 @@ Filling Date 2019-02-07 00:00:00 2020-02-07 00: Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Net Income 8.286 B 7.728 B 8.592 B 9.710 B 9.527 B -Depreciation And Amortization 989 M 964 M 981 M 998 M 1.189 B -Deferred Income Taxes -100 M -141 M -143 M -17 M -234 M +Net Income 8286000000 7728000000 8592000000 9710000000 9527000000 +Depreciation And Amortization 989000000 964000000 981000000 998000000 1189000000 +Deferred Income Taxes -100000000 -141000000 -143000000 -17000000 -234000000 Stock Based Compensation 0 0 0 0 0 -Change In Working Capital 164 M 755 M 128 M 1.367 B 162 M -Change In Receivables 53 M -331 M 0 0 0 -Inventory -613 M -548 M -165 M 549 M -1.287 B -Accounts Payable -51 M 451 M 406 M 653 M 719 M -Other Working Capital 775 M 1.183 B -113 M 165 M 730 M -Other Non Cash Items 139 M 784 M 254 M -91 M 159 M -Net Cash Provided By Operating Activities 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B -Investments In Property Plant And Equipment 0 -852 M -602 M -748 M -1.077 B -Acquisitions Net -63 M -1.377 B -47 M -2.145 B -13.996 B +Change In Working Capital 164000000 755000000 128000000 1367000000 162000000 +Change In Receivables 53000000 -331000000 0 0 0 +Inventory -613000000 -548000000 -165000000 549000000 -1287000000 +Accounts Payable -51000000 451000000 406000000 653000000 719000000 +Other Working Capital 775000000 1183000000 -113000000 165000000 730000000 +Other Non Cash Items 139000000 784000000 254000000 -91000000 159000000 +Net Cash Provided By Operating Activities 9478000000 10090000000 9812000000 11967000000 10803000000 +Investments In Property Plant And Equipment 0 -852000000 -602000000 -748000000 -1077000000 +Acquisitions Net -63000000 -1377000000 -47000000 -2145000000 -13996000000 Purchases Of Investments 0 0 0 0 0 Sales Maturities Of Investments 0 0 0 0 0 -Other Investing Activities -935 M -434 M -1.107 B -213 M -1.683 B -Cash Flow From Investment -998 M -1.811 B -1.154 B -2.358 B -15.679 B -Debt Repayment -2.484 B -5.351 B -4.114 B -3.042 B -7.519 B +Other Investing Activities -935000000 -434000000 -1107000000 -213000000 -1683000000 +Cash Flow From Investment -998000000 -1811000000 -1154000000 -2358000000 -15679000000 +Debt Repayment -2484000000 -5351000000 -4114000000 -3042000000 -7519000000 Common Stock Issued 0 0 0 0 0 -Common Stock Repurchased 0 0 0 -775 M -209 M -Dividends Paid -6.885 B -7.161 B -7.364 B -7.580 B -7.812 B -Other Financing Activities -282 M 4.451 B 2.982 B -580 M 19.346 B -Cash Flow From Financing -9.651 B -8.061 B -8.496 B -11.977 B 3.806 B -Change In Exchange Rate -685 M 27 M 258 M -417 M -213 M -Net Change In Cash -1.856 B 245 M 420 M -2.785 B -1.283 B -Cash At End Of Period 6.620 B 6.865 B 7.285 B 4.500 B 3.217 B -Cash At Beginning Of Period 8.476 B 6.620 B 6.865 B 7.285 B 4.500 B -Operating Cash Flow 9.478 B 10.090 B 9.812 B 11.967 B 10.803 B -Capital Expenditure -1.436 B -852 M -602 M -748 M -1.077 B -Free Cash Flow 8.042 B 9.238 B 9.210 B 11.219 B 9.726 B +Common Stock Repurchased 0 0 0 -775000000 -209000000 +Dividends Paid -6885000000 -7161000000 -7364000000 -7580000000 -7812000000 +Other Financing Activities -282000000 4451000000 2982000000 -580000000 19346000000 +Cash Flow From Financing -9651000000 -8061000000 -8496000000 -11977000000 3806000000 +Change In Exchange Rate -685000000 27000000 258000000 -417000000 -213000000 +Net Change In Cash -1856000000 245000000 420000000 -2785000000 -1283000000 +Cash At End Of Period 6620000000 6865000000 7285000000 4500000000 3217000000 +Cash At Beginning Of Period 8476000000 6620000000 6865000000 7285000000 4500000000 +Operating Cash Flow 9478000000 10090000000 9812000000 11967000000 10803000000 +Capital Expenditure -1436000000 -852000000 -602000000 -748000000 -1077000000 +Free Cash Flow 8042000000 9238000000 9210000000 11219000000 9726000000 Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt index 03b4943f7d91..500870791781 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_discounted_cash_flow-kwargs_dict2].txt @@ -1,3 +1,3 @@ - 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-05-02 -Stock price 74.480 84.330 79.650 103.520 96.980 -DCF 78.720 88.742 84.326 106.408 99.040 + 2018-12-31 2019-12-31 2020-12-31 2021-12-31 2023-05-02 +Stock price 74.480003 84.330002 79.650002 103.519997 96.98 +DCF 78.719875 88.74222 84.32566 106.407601 99.03973 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt index 17b882f78de4..24b32f53b4e1 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_ratios-kwargs_dict7].txt @@ -1,56 +1,56 @@ -Fiscal Date Ending 2018 2019 2020 2021 2022 -Period FY FY FY FY FY -Current ratio 1.131 1.089 1.096 0.920 0.718 -Quick ratio 0.591 0.562 0.563 0.438 0.291 -Cash ratio 0.384 0.364 0.371 0.233 0.117 -Days of sales outstanding 43.911 45.519 47.842 45.792 54.655 -Days of inventory outstanding 298.704 320.629 365.839 317.328 316.470 -Operating cycle 342.615 366.149 413.681 363.120 371.125 -Days of payables outstanding 70.164 79.819 106.040 121.218 130.481 -Cash conversion cycle 272.452 286.330 307.640 241.902 240.644 -Gross profit margin 0.637 0.647 0.667 0.681 0.641 -Operating profit margin 0.384 0.353 0.407 0.413 0.386 -Pretax profit margin 0.360 0.331 0.382 0.389 0.366 -Net profit margin 0.267 0.241 0.281 0.290 0.285 -Effective tax rate 0.229 0.232 0.217 0.218 0.193 -Return on assets 0.199 0.168 0.180 0.221 0.147 -Return on equity -0.635 -0.621 -0.641 -0.901 -1.010 -Return on capital employed 0.503 0.438 0.463 0.589 0.357 -Net income per EBT 0.741 0.728 0.736 0.745 0.778 -Ebt per ebit 0.938 0.937 0.939 0.943 0.950 -Ebit per revenue 0.384 0.353 0.407 0.413 0.386 -Debt ratio 1.270 1.224 1.237 1.199 1.102 -Debt equity ratio -2.549 -2.682 -2.509 -2.751 -4.814 -Long term debt to capitalization 1.858 1.768 1.806 1.689 1.346 -Total debt to capitalization 1.646 1.595 1.663 1.571 1.262 -Interest coverage 13.306 18.475 18.880 17.605 15.945 -Cash flow to debt ratio 0.298 0.325 0.311 0.430 0.251 -Company equity multiplier -3.195 -3.703 -3.566 -4.086 -6.886 -Receivables turnover 8.312 8.019 7.629 7.971 6.678 -Payables turnover 5.202 4.573 3.442 3.011 2.797 -Inventory turnover 1.222 1.138 0.998 1.150 1.153 -Fixed asset turnover 4.114 4.495 4.508 5.092 4.734 -Asset turnover 0.744 0.695 0.640 0.761 0.515 -Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 -Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 2.060 -Payout ratio 0.870 0.997 0.914 0.832 0.863 -Operating cash flow sales ratio 0.320 0.339 0.342 0.381 0.340 -Free cash flow operating cash flow ratio 0.848 0.916 0.939 0.937 0.900 -Cash flow coverage ratios 0.298 0.325 0.311 0.430 0.251 -Short term coverage ratios 1.981 2.299 2.913 3.959 1.310 -Capital expenditure coverage ratio -6.600 -11.843 -16.299 -15.999 -10.031 -Dividend paid and capex coverage ratio 1.739 1.599 1.451 1.752 1.604 -Dividend payout ratio 0.870 0.997 0.914 0.832 0.863 -Price book value ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Price to book ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Price to sales ratio 3.504 4.439 4.492 4.713 4.961 -Price earnings ratio 13.122 18.415 16.001 16.249 17.416 -Price to free cash flows ratio 12.909 14.323 13.996 13.193 16.202 -Price to operating cash flows ratio 10.953 13.113 13.137 12.368 14.587 -Price cash flow ratio 10.953 13.113 13.137 12.368 14.587 -Price earnings to growth ratio 0.425 -1.953 1.341 1.215 -25.472 -Price sales ratio 3.504 4.439 4.492 4.713 4.961 -Dividend yield 0.066 0.054 0.057 0.051 0.050 -Enterprise value multiple 10.572 14.893 13.154 12.676 14.907 -Price fair value -8.332 -11.429 -10.257 -14.646 -17.593 +Fiscal Date Ending 2018 2019 2020 2021 2022 +Period FY FY FY FY FY +Current ratio 1.130941 1.089258 1.095692 0.920125 0.717698 +Quick ratio 0.590832 0.561674 0.562886 0.43812 0.291301 +Cash ratio 0.383515 0.364307 0.371145 0.233498 0.117318 +Days of sales outstanding 43.910886 45.519376 47.841535 45.792071 54.654619 +Days of inventory outstanding 298.70422 320.629221 365.839168 317.328016 316.469918 +Operating cycle 342.615106 366.148597 413.680703 363.120087 371.124536 +Days of payables outstanding 70.163599 79.818796 106.040339 121.217846 130.480617 +Cash conversion cycle 272.451507 286.329801 307.640364 241.902241 240.643919 +Gross profit margin 0.636861 0.647274 0.666516 0.680624 0.641018 +Operating profit margin 0.384034 0.35333 0.406636 0.413151 0.385555 +Pretax profit margin 0.360203 0.33122 0.381717 0.389492 0.366287 +Net profit margin 0.267038 0.241067 0.280756 0.290049 0.284869 +Effective tax rate 0.229126 0.232273 0.217018 0.218362 0.192883 +Return on assets 0.198764 0.16758 0.179761 0.22061 0.14669 +Return on equity -0.634963 -0.620627 -0.641044 -0.901346 -1.01016 +Return on capital employed 0.503184 0.438025 0.463016 0.588836 0.356558 +Net income per EBT 0.741355 0.727816 0.735506 0.744686 0.77772 +Ebt per ebit 0.937945 0.937423 0.938721 0.942736 0.950024 +Ebit per revenue 0.384034 0.35333 0.406636 0.413151 0.385555 +Debt ratio 1.269817 1.223883 1.23722 1.198789 1.102317 +Debt equity ratio -2.549081 -2.68161 -2.509429 -2.751435 -4.814447 +Long term debt to capitalization 1.858294 1.767756 1.805525 1.68856 1.34559 +Total debt to capitalization 1.645544 1.594668 1.662502 1.57096 1.262161 +Interest coverage 13.306433 18.475439 18.880259 17.605156 15.945312 +Cash flow to debt ratio 0.298435 0.325012 0.311136 0.430375 0.250516 +Company equity multiplier -3.194558 -3.703464 -3.566086 -4.085692 -6.886346 +Receivables turnover 8.31229 8.018563 7.629354 7.970812 6.678301 +Payables turnover 5.202128 4.572858 3.442086 3.011108 2.79735 +Inventory turnover 1.221945 1.138387 0.997706 1.150229 1.153348 +Fixed asset turnover 4.114012 4.494797 4.508091 5.091602 4.733532 +Asset turnover 0.744328 0.69516 0.640277 0.760596 0.51494 +Operating cash flow per share 6.095177 6.488746 6.301863 7.681001 6.938343 +Free cash flow per share 5.171704 5.940836 5.915222 7.200899 6.246628 +Cash per share 4.239871 4.412219 4.675658 2.885751 2.05973 +Payout ratio 0.870307 0.99666 0.914101 0.832144 0.863395 +Operating cash flow sales ratio 0.319932 0.338534 0.341953 0.381054 0.340123 +Free cash flow operating cash flow ratio 0.848491 0.91556 0.938647 0.937495 0.900305 +Cash flow coverage ratios 0.298435 0.325012 0.311136 0.430375 0.250516 +Short term coverage ratios 1.981187 2.298929 2.913302 3.95865 1.309772 +Capital expenditure coverage ratio -6.600279 -11.842723 -16.299003 -15.998663 -10.030641 +Dividend paid and capex coverage ratio 1.739402 1.599303 1.45105 1.75161 1.604009 +Dividend payout ratio 0.870307 0.99666 0.914101 0.832144 0.863395 +Price book value ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Price to book ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Price to sales ratio 3.504196 4.439354 4.492369 4.712944 4.961399 +Price earnings ratio 13.122462 18.415442 16.000997 16.248765 17.416442 +Price to free cash flows ratio 12.908704 14.3229 13.996094 13.192798 16.202341 +Price to operating cash flows ratio 10.952923 13.113474 13.137386 12.368179 14.587056 +Price cash flow ratio 10.952923 13.113474 13.137386 12.368179 14.587056 +Price earnings to growth ratio 0.425386 -1.952804 1.341174 1.215125 -25.471547 +Price sales ratio 3.504196 4.439354 4.492369 4.712944 4.961399 +Dividend yield 0.066322 0.054121 0.057128 0.051213 0.049574 +Enterprise value multiple 10.571951 14.893315 13.153558 12.676286 14.906783 +Price fair value -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt index 2402852db046..29e2d104670c 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_financial_statement_growth-kwargs_dict8].txt @@ -1,36 +1,36 @@ -Fiscal Date Ending 2018 2019 2020 2021 2022 -Period FY FY FY FY FY -Revenue growth 0.031 0.006 -0.037 0.094 0.011 -Gross profit growth 0.030 0.023 -0.009 0.118 -0.047 -Ebitgrowth -0.011 -0.074 0.108 0.112 -0.056 -Operating income growth -0.011 -0.074 0.108 0.112 -0.056 -Net income growth 0.311 -0.092 0.121 0.131 -0.007 -Epsgrowth 0.308 -0.094 0.119 0.134 -0.007 -Epsdiluted growth 0.308 -0.094 0.119 0.132 -0.005 -Weighted average shares growth 0.002 0 0.001 0.001 -0.001 -Weighted average shares diluted growth 0.001 0.001 0.001 0.001 -0.001 -Dividendsper share growth 0.054 0.040 0.027 0.029 0.031 -Operating cash flow growth 0.064 0.065 -0.028 0.220 -0.097 -Free cash flow growth 0.092 0.149 -0.003 0.218 -0.133 -Ten y revenue growth per share 0.533 0.488 0.246 0.119 0.100 -Five y revenue growth per share -0.010 0.008 0.065 0.172 0.101 -Three y revenue growth per share 0.101 0.114 -0.005 0.058 0.064 -Ten y operating c f growth per share 0.589 0.599 0.228 0.259 0.246 -Five y operating c f growth per share -0.025 0.313 0.241 0.475 0.208 -Three y operating c f growth per share 0.200 0.246 0.097 0.260 0.069 -Ten y net income growth per share 0.527 0.416 0.311 0.175 0.117 -Five y net income growth per share -0.038 -0.034 0.166 0.302 0.494 -Three y net income growth per share 0.147 0.029 0.331 0.149 0.258 -Ten y shareholders equity growth per share -3.209 -3.531 -5.234 -49.887 -1.800 -Five y shareholders equity growth per share -0.673 0.077 0.056 0.207 0.261 -Three y shareholders equity growth per share 0.063 0.090 -0.036 0.190 0.227 -Ten y dividendper share growth per share 0.803 1.068 0.966 0.754 0.571 -Five y dividendper share growth per share 0.256 0.195 0.172 0.183 0.194 -Three y dividendper share growth per share 0.097 0.120 0.126 0.099 0.090 -Receivables growth -0.047 0.043 0.012 0.048 0.207 -Inventory growth -0.000 0.049 0.039 -0.091 0.134 -Asset growth -0.074 0.077 0.045 -0.079 0.494 -Book valueper share growth -0.029 0.071 -0.084 0.196 0.113 -Debt growth -0.075 -0.022 0.016 -0.118 0.551 -Rdexpense growth 0 0 0 0 0 -Sgaexpenses growth 0.108 0.179 -0.148 0.125 -0.033 +Fiscal Date Ending 2018 2019 2020 2021 2022 +Period FY FY FY FY FY +Revenue growth 0.030506 0.006076 -0.037276 0.09448 0.011368 +Gross profit growth 0.030083 0.022526 -0.008656 0.117647 -0.047485 +Ebitgrowth -0.010954 -0.074361 0.107967 0.112016 -0.056185 +Operating income growth -0.010954 -0.074361 0.107967 0.112016 -0.056185 +Net income growth 0.310853 -0.091771 0.121225 0.13071 -0.006697 +Epsgrowth 0.308483 -0.094303 0.119306 0.133721 -0.006838 +Epsdiluted growth 0.308483 -0.094303 0.119306 0.131783 -0.005137 +Weighted average shares growth 0.001933 0 0.001286 0.000642 -0.000642 +Weighted average shares diluted growth 0.001288 0.000643 0.001285 0.000642 -0.001283 +Dividendsper share growth 0.053944 0.040087 0.027027 0.028671 0.031269 +Operating cash flow growth 0.06351 0.064571 -0.027552 0.219629 -0.097267 +Free cash flow growth 0.09207 0.148719 -0.003031 0.218132 -0.133078 +Ten y revenue growth per share 0.532713 0.487592 0.245626 0.118744 0.100039 +Five y revenue growth per share -0.010108 0.00836 0.065409 0.171591 0.101294 +Three y revenue growth per share 0.101392 0.114047 -0.005084 0.058043 0.064291 +Ten y operating c f growth per share 0.58851 0.599142 0.228052 0.259066 0.246118 +Five y operating c f growth per share -0.024531 0.313009 0.241142 0.474958 0.208293 +Three y operating c f growth per share 0.200436 0.246013 0.097452 0.260177 0.069289 +Ten y net income growth per share 0.526976 0.415608 0.310798 0.174566 0.117331 +Five y net income growth per share -0.037796 -0.034322 0.1661 0.301575 0.49444 +Three y net income growth per share 0.146584 0.028638 0.330593 0.149218 0.257673 +Ten y shareholders equity growth per share -3.209236 -3.530732 -5.233629 -49.887088 -1.800235 +Five y shareholders equity growth per share -0.673425 0.076816 0.055993 0.207078 0.261275 +Three y shareholders equity growth per share 0.062902 0.08991 -0.036459 0.190421 0.227305 +Ten y dividendper share growth per share 0.802793 1.067898 0.966482 0.753741 0.570937 +Five y dividendper share growth per share 0.255534 0.194972 0.172186 0.183121 0.194312 +Three y dividendper share growth per share 0.097349 0.119878 0.125821 0.098824 0.089508 +Receivables growth -0.046549 0.042929 0.011838 0.047594 0.207107 +Inventory growth -0.000227 0.048955 0.038549 -0.090814 0.133716 +Asset growth -0.073706 0.077234 0.045248 -0.078657 0.493848 +Book valueper share growth -0.028873 0.070792 -0.08412 0.196347 0.113126 +Debt growth -0.075133 -0.022482 0.015816 -0.118278 0.550852 +Rdexpense growth 0 0 0 0 0 +Sgaexpenses growth 0.107658 0.179219 -0.148338 0.125384 -0.033377 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt index f1bffd71384e..7171041bf454 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_income_statement-kwargs_dict3].txt @@ -5,34 +5,34 @@ Filling Date 2019-02-07 00:00:00 2020-02-07 00:00:00 2 Accepted Date 2019-02-07 15:09:20 2020-02-07 06:47:13 2021-02-09 16:20:37 2022-02-11 08:29:22 2023-02-10 08:20:35 Calendar Year 2018-01-01 00:00:00 2019-01-01 00:00:00 2020-01-01 00:00:00 2021-01-01 00:00:00 2022-01-01 00:00:00 Period FY FY FY FY FY -Revenue 29.625 B 29.805 B 28.694 B 31.405 B 31.762 B -Cost Of Revenue 10.758 B 10.513 B 9.569 B 10.030 B 11.402 B -Gross Profit 18.867 B 19.292 B 19.125 B 21.375 B 20.360 B -Gross Profit Ratio 0.637 0.647 0.667 0.681 0.641 +Revenue 29625000000 29805000000 28694000000 31405000000 31762000000 +Cost Of Revenue 10758000000 10513000000 9569000000 10030000000 11402000000 +Gross Profit 18867000000 19292000000 19125000000 21375000000 20360000000 +Gross Profit Ratio 0.636861 0.647274 0.666516 0.680624 0.641018 Research And Development Expenses 0 0 0 0 0 -General And Administrative Expenses 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B -Selling And Marketing Expenses 7.408 B 8.695 B 7.384 B 8.304 B 0 -Selling General And Administrative 7.449 B 8.784 B 7.481 B 8.419 B 8.138 B -Other Expenses 82 M 66 M 73 M 96 M 0 -Operating Expenses 7.531 B 8.850 B 7.554 B 8.515 B 8.138 B -Costs And Expenses 18.289 B 19.363 B 17.123 B 18.545 B 19.540 B -Interest Income 190 M 226 M 110 M 109 M 180 M -Interest Expense 855 M 570 M 618 M 737 M 768 M -Depreciation And Amortization 989 M -23 M -24 M 540 M 1.003 B -Ebitda 12.200 B 10.508 B 11.644 B 13.515 B 13.249 B -Ebitda Ratio 0.412 0.353 0.406 0.430 0.417 -Operating Income 11.377 B 10.531 B 11.668 B 12.975 B 12.246 B -Operating Income Ratio 0.384 0.353 0.407 0.413 0.386 -Non Operating Income Loss -41 M -659 M -715 M -743 M -612 M -Income Before Tax 10.671 B 9.872 B 10.953 B 12.232 B 11.634 B -Income Before Tax Ratio 0.360 0.331 0.382 0.389 0.366 -Income Tax Expense 2.445 B 2.293 B 2.377 B 2.671 B 2.244 B -Net Income 7.911 B 7.185 B 8.056 B 9.109 B 9.048 B -Net Income Ratio 0.267 0.241 0.281 0.290 0.285 -Basic Earnings Per Share 5.090 4.610 5.160 5.850 5.810 -Diluted Earnings Per Share 5.090 4.610 5.160 5.840 5.810 -Basic Average Shares 1.555 B 1.555 B 1.557 B 1.558 B 1.557 B -Diluted Average Shares 1.555 B 1.556 B 1.558 B 1.559 B 1.557 B +General And Administrative Expenses 7449000000 8784000000 7481000000 8419000000 8138000000 +Selling And Marketing Expenses 7408000000 8695000000 7384000000 8304000000 0 +Selling General And Administrative 7449000000 8784000000 7481000000 8419000000 8138000000 +Other Expenses 82000000 66000000 73000000 96000000 0 +Operating Expenses 7531000000 8850000000 7554000000 8515000000 8138000000 +Costs And Expenses 18289000000 19363000000 17123000000 18545000000 19540000000 +Interest Income 190000000 226000000 110000000 109000000 180000000 +Interest Expense 855000000 570000000 618000000 737000000 768000000 +Depreciation And Amortization 989000000 -23000000 -24000000 540000000 1003000000 +Ebitda 12200000000 10508000000 11644000000 13515000000 13249000000 +Ebitda Ratio 0.411814 0.352558 0.405799 0.430345 0.417134 +Operating Income 11377000000 10531000000 11668000000 12975000000 12246000000 +Operating Income Ratio 0.384034 0.35333 0.406636 0.413151 0.385555 +Non Operating Income Loss -41000000 -659000000 -715000000 -743000000 -612000000 +Income Before Tax 10671000000 9872000000 10953000000 12232000000 11634000000 +Income Before Tax Ratio 0.360203 0.33122 0.381717 0.389492 0.366287 +Income Tax Expense 2445000000 2293000000 2377000000 2671000000 2244000000 +Net Income 7911000000 7185000000 8056000000 9109000000 9048000000 +Net Income Ratio 0.267038 0.241067 0.280756 0.290049 0.284869 +Basic Earnings Per Share 5.09 4.61 5.16 5.85 5.81 +Diluted Earnings Per Share 5.09 4.61 5.16 5.84 5.81 +Basic Average Shares 1555000000 1555000000 1557000000 1558000000 1557000000 +Diluted Average Shares 1555000000 1556000000 1558000000 1559000000 1557000000 Final Link Fiscal Date Ending 2018 https://www.sec.gov/Archives/edgar/data/1413329/000141332919000007/pm123118form10kwrapinclfsm.htm diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt index d03ee1a302d6..a847f0249376 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_fmp_view/test_check_output[True-display_key_metrics-kwargs_dict6].txt @@ -1,59 +1,59 @@ -Fiscal Date Ending 2018 2019 2020 2021 2022 -Period FY FY FY FY FY -Revenue per share 19.051 19.167 18.429 20.157 20.399 -Net income per share 5.087 4.621 5.174 5.847 5.811 -Operating cash flow per share 6.095 6.489 6.302 7.681 6.938 -Free cash flow per share 5.172 5.941 5.915 7.201 6.247 -Cash per share 4.240 4.412 4.676 2.886 2.060 -Book value per share -8.012 -7.445 -8.071 -6.487 -5.753 -Tangible book value per share -12.994 -11.299 -11.955 -11.365 -21.001 -Shareholders equity per share -8.012 -7.445 -8.071 -6.487 -5.753 -Interest debt per share 20.974 20.331 20.651 18.320 28.189 -Market cap 103.812 B 132.315 B 128.904 B 148.010 B 157.584 B -Enterprise value 128.978 B 156.499 B 153.160 B 171.320 B 197.500 B -Pe ratio 13.122 18.415 16.001 16.249 17.416 -Price to sales ratio 3.504 4.439 4.492 4.713 4.961 -Pocfratio 10.953 13.113 13.137 12.368 14.587 -Pfcf ratio 12.909 14.323 13.996 13.193 16.202 -Pb ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Ptb ratio -8.332 -11.429 -10.257 -14.646 -17.593 -Ev to sales 4.354 5.251 5.338 5.455 6.218 -Enterprise value over EBITDA 10.572 14.893 13.154 12.676 14.907 -Ev to operating cash flow 13.608 15.510 15.609 14.316 18.282 -Ev to free cash flow 16.038 16.941 16.630 15.271 20.306 -Earnings yield 0.076 0.054 0.062 0.062 0.057 -Free cash flow yield 0.077 0.070 0.071 0.076 0.062 -Debt to equity -4.057 -4.533 -4.412 -4.898 -7.591 -Debt to assets 1.270 1.224 1.237 1.199 1.102 -Net debt to EBITDA 2.063 2.301 2.083 1.725 3.013 -Current ratio 1.131 1.089 1.096 0.920 0.718 -Interest coverage 13.306 18.475 18.880 17.605 15.945 -Income quality 1.144 1.306 1.142 1.232 1.134 -Dividend yield 0.066 0.054 0.057 0.051 0.050 -Payout ratio 0.870 0.997 0.914 0.832 0.863 -Sales general and administrative to revenue 0.251 0.295 0.261 0.268 0.256 -Research and ddevelopement to revenue 0 0 0 0 0 -Intangibles to total assets 0.238 0.186 0.178 0.230 0.428 -Capex to operating cash flow -0.152 -0.084 -0.061 -0.063 -0.100 -Capex to revenue -0.048 -0.029 -0.021 -0.024 -0.034 -Capex to depreciation -1.452 -0.884 -0.614 -0.749 -0.906 -Stock based compensation to revenue 0 0 0 0 0 -Graham number 30.284 27.821 30.653 29.211 27.426 -Roic 0.357 0.301 0.333 0.350 0.193 -Return on tangible assets 0.261 0.206 0.219 0.287 0.256 -Graham net net -23.712 -24.571 -26.044 -24.189 -36.143 -Working capital 2.251 B 1.681 B 1.877 B -1.538 B -7.717 B -Tangible asset value -20.206 B -17.570 B -18.614 B -17.706 B -32.698 B -Net current asset value -31.098 B -31.960 B -33.954 B -31.781 B -48.373 B -Invested capital -2.549 -2.682 -2.509 -2.751 -4.814 -Average receivables 3.651 B 3.640 B 3.739 B 3.850 B 4.348 B -Average payables 2.155 B 2.183 B 2.539 B 3.055 B 3.704 B -Average inventory 8.805 B 9.020 B 9.413 B 9.155 B 9.303 B -Days sales outstanding 43.911 45.519 47.842 45.792 54.655 -Days payables outstanding 70.164 79.819 106.040 121.218 130.481 -Days of inventory on hand 298.704 320.629 365.839 317.328 316.470 -Receivables turnover 8.312 8.019 7.629 7.971 6.678 -Payables turnover 5.202 4.573 3.442 3.011 2.797 -Inventory turnover 1.222 1.138 0.998 1.150 1.153 -Roe -0.635 -0.621 -0.641 -0.901 -1.010 -Capex per share -0.923 -0.548 -0.387 -0.480 -0.692 +Fiscal Date Ending 2018 2019 2020 2021 2022 +Period FY FY FY FY FY +Revenue per share 19.051447 19.167203 18.42903 20.157253 20.399486 +Net income per share 5.08746 4.620579 5.174053 5.846598 5.811175 +Operating cash flow per share 6.095177 6.488746 6.301863 7.681001 6.938343 +Free cash flow per share 5.171704 5.940836 5.915222 7.200899 6.246628 +Cash per share 4.239871 4.412219 4.675658 2.885751 2.05973 +Book value per share -8.012219 -7.445016 -8.071291 -6.486521 -5.75273 +Tangible book value per share -12.994212 -11.299035 -11.955042 -11.36457 -21.000642 +Shareholders equity per share -8.012219 -7.445016 -8.071291 -6.486521 -5.75273 +Interest debt per share 20.973633 20.33119 20.651252 18.320282 28.189467 +Market cap 103811800000.000015 132314950000 128904030000.000015 148010000000 157583970000 +Enterprise value 128977800000.000015 156498950000 153160030000 171320000000 197499970000 +Pe ratio 13.122462 18.415442 16.000997 16.248765 17.416442 +Price to sales ratio 3.504196 4.439354 4.492369 4.712944 4.961399 +Pocfratio 10.952923 13.113474 13.137386 12.368179 14.587056 +Pfcf ratio 12.908704 14.3229 13.996094 13.192798 16.202341 +Pb ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Ptb ratio -8.332274 -11.429122 -10.257343 -14.645755 -17.593387 +Ev to sales 4.353681 5.250762 5.337702 5.455182 6.218121 +Enterprise value over EBITDA 10.571951 14.893315 13.153558 12.676286 14.906783 +Ev to operating cash flow 13.608124 15.510302 15.609461 14.316036 18.281956 +Ev to free cash flow 16.038025 16.940783 16.629754 15.270523 20.306392 +Earnings yield 0.076205 0.054302 0.062496 0.061543 0.057417 +Free cash flow yield 0.077467 0.069818 0.071449 0.075799 0.061719 +Debt to equity -4.056505 -4.532608 -4.412032 -4.897882 -7.590934 +Debt to assets 1.269817 1.223883 1.23722 1.198789 1.102317 +Net debt to EBITDA 2.062787 2.301485 2.083133 1.72475 3.012756 +Current ratio 1.130941 1.089258 1.095692 0.920125 0.717698 +Interest coverage 13.306433 18.475439 18.880259 17.605156 15.945312 +Income quality 1.143857 1.305642 1.141993 1.232441 1.133935 +Dividend yield 0.066322 0.054121 0.057128 0.051213 0.049574 +Payout ratio 0.870307 0.99666 0.914101 0.832144 0.863395 +Sales general and administrative to revenue 0.251443 0.294716 0.260717 0.268078 0.256218 +Research and ddevelopement to revenue 0 0 0 0 0 +Intangibles to total assets 0.237858 0.185913 0.178132 0.230031 0.427798 +Capex to operating cash flow -0.151509 -0.08444 -0.061353 -0.062505 -0.099695 +Capex to revenue -0.048473 -0.028586 -0.02098 -0.023818 -0.033908 +Capex to depreciation -1.451972 -0.883817 -0.61366 -0.749499 -0.905803 +Stock based compensation to revenue 0 0 0 0 0 +Graham number 30.284343 27.82097 30.653367 29.21116 27.425858 +Roic 0.357283 0.30107 0.332514 0.350114 0.19308 +Return on tangible assets 0.260796 0.20585 0.218723 0.286519 0.256361 +Graham net net -23.711897 -24.5709 -26.043513 -24.189345 -36.143224 +Working capital 2251000000 1681000000 1877000000 -1538000000 -7717000000 +Tangible asset value -20206000000 -17570000000 -18614000000 -17706000000 -32698000000 +Net current asset value -31098000000 -31960000000 -33954000000 -31781000000 -48373000000 +Invested capital -2.549081 -2.68161 -2.509429 -2.751435 -4.814447 +Average receivables 3651000000 3640500000 3739000000 3850500000 4348000000 +Average payables 2155000000 2183500000 2539500000 3055500000 3703500000 +Average inventory 8805000000 9019500000 9413000000 9155500000 9303000000 +Days sales outstanding 43.910886 45.519376 47.841535 45.792071 54.654619 +Days payables outstanding 70.163599 79.818796 106.040339 121.217846 130.480617 +Days of inventory on hand 298.70422 320.629221 365.839168 317.328016 316.469918 +Receivables turnover 8.31229 8.018563 7.629354 7.970812 6.678301 +Payables turnover 5.202128 4.572858 3.442086 3.011108 2.79735 +Inventory turnover 1.221945 1.138387 0.997706 1.150229 1.153348 +Roe -0.634963 -0.620627 -0.641044 -0.901346 -1.01016 +Capex per share -0.923473 -0.54791 -0.386641 -0.480103 -0.691715 diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt index 67bb6a08d292..57459f22c23d 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[False].txt @@ -1,183 +1,183 @@ - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K -10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 9.335000e+07 NaN 2.81 0.0849 177264.0 +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.770000e+09 72.42 90.96 0.1162 1325186.0 +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.380000e+09 NaN 20.69 0.0665 3622781.0 +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 4.243800e+08 NaN 20.32 0.0695 35883.0 +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 4.029100e+08 NaN 1.79 0.0915 1334633.0 +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.190000e+09 NaN 13.62 0.0607 25098420.0 +127 ALT Altimmune Inc. Healthcare Biotechnology USA 6.121300e+08 NaN 12.59 0.0642 968850.0 +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 3.224000e+08 NaN 6.43 0.1503 2721628.0 +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 8.458400e+08 NaN 2.03 0.1033 18472440.0 +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 4.722500e+08 NaN 1.25 0.0684 6857576.0 +54 AMST Amesite Inc. Technology Software - Application USA 6.880000e+06 NaN 2.98 0.0956 319511.0 +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 1.175500e+08 NaN 3.25 0.0656 388112.0 +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 8.594000e+07 NaN 1.70 0.0828 112313.0 +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 8.405800e+08 2.26 8.02 0.0567 1768517.0 +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.450000e+09 146.83 26.43 0.0788 263611.0 +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.810000e+09 9.23 3.96 0.0645 14007096.0 +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.320000e+09 NaN 9.09 0.0912 5665507.0 +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3.000000e+09 NaN 68.19 0.0641 1863069.0 +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 7.291000e+07 NaN 1.71 0.1325 61520.0 +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 5.113400e+08 NaN 2.46 0.1081 2578906.0 +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 1.894000e+07 NaN 2.95 0.0806 403699.0 +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 3.390600e+08 NaN 1.32 0.0909 843515.0 +72 BIVI BioVie Inc. Healthcare Biotechnology USA 2.972200e+08 NaN 7.69 0.0831 636821.0 +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 2.358300e+08 NaN 1.91 0.0730 543765.0 +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 1.293900e+08 NaN 1.75 0.0671 633722.0 +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 6.727100e+08 8.24 18.30 0.0925 311037.0 +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 3.629700e+08 NaN 3.26 0.0619 177162.0 +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 2.901000e+07 3.30 2.45 0.1136 107052.0 +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 1.703000e+07 NaN 1.16 0.0642 24318.0 +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 1.858300e+08 NaN 8.27 0.0630 41566.0 +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 8.801500e+08 NaN 1.77 0.1419 4386783.0 +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 3.357000e+07 NaN 3.45 1.5847 100099160.0 +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 8.924700e+08 NaN 16.82 0.1434 2145992.0 +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 5.400200e+08 53.16 15.63 0.0625 765578.0 +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.070000e+09 7.42 12.07 0.0700 2665182.0 +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.720000e+06 NaN 8.09 0.0622 10692.0 +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 5.918000e+07 6.26 6.44 0.0967 64010.0 +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 7.147800e+08 6.40 5.75 0.1616 6759202.0 +14 CING Cingulate Inc. Healthcare Biotechnology USA 1.446000e+07 NaN 1.79 0.1329 1401411.0 +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 1.492000e+08 NaN 7.46 0.1019 156598.0 +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 6.598800e+08 NaN 1.32 0.1478 20513328.0 +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 2.447200e+08 5.93 14.04 0.0800 74027.0 +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 1.089000e+07 NaN 3.24 0.1172 34343.0 +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.350000e+06 NaN 1.85 0.1562 338736.0 +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 6.975000e+07 NaN 1.29 0.1217 194127.0 +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 3.224000e+07 13.98 1.65 0.0784 203948.0 +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 1.601000e+10 NaN 64.83 0.0996 24843894.0 +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 8.344000e+07 NaN 1.73 0.0549 139553.0 +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 2.479000e+08 NaN 4.40 0.0628 99095.0 +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 3.078000e+07 NaN 1.83 0.0893 40708.0 +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.240000e+09 NaN 9.42 0.0549 20225034.0 +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 4.608000e+07 NaN 2.00 0.0695 74009.0 +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 2.626200e+08 NaN 3.22 0.0698 1377507.0 +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.160000e+06 NaN 1.54 0.0922 1582629.0 +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 1.814300e+08 10.71 12.75 0.0982 68625.0 +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 2.291000e+07 NaN 4.02 0.1136 44559.0 +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 1.043500e+08 175.00 2.10 0.0825 612276.0 +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.160000e+09 NaN 34.25 0.1237 610429.0 +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 3.232000e+07 NaN 5.18 0.1322 226033.0 +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 4.033000e+07 NaN 1.37 0.0873 12204.0 +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.340000e+06 NaN 3.39 0.0594 120986.0 +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 6.855900e+08 NaN 11.48 0.0600 1002032.0 +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.520000e+09 NaN 9.22 0.0746 4405546.0 +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.820000e+09 NaN 71.66 0.0689 298301.0 +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.220000e+09 36.92 14.51 0.0740 579272.0 +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.390000e+09 163.71 64.50 0.1304 4936592.0 +67 FTCI FTC Solar Inc. Technology Solar USA 3.311900e+08 NaN 3.07 0.0887 1500641.0 +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.450000e+09 22.94 49.21 0.0590 2959332.0 +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 1.340700e+08 NaN 2.37 0.1505 21798.0 +38 GNPX Genprex Inc. Healthcare Biotechnology USA 6.287000e+07 NaN 1.28 0.1034 534141.0 +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.200000e+09 10.99 16.46 0.1438 1542316.0 +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 9.355000e+08 NaN 25.56 0.0650 60619.0 +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 5.822000e+07 NaN 1.76 0.1069 81932.0 +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 1.547800e+08 NaN 2.63 0.0562 176325.0 +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 5.528900e+08 NaN 7.71 0.0697 32262.0 +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.390000e+09 NaN 1.28 0.1034 9356512.0 +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.730000e+09 2332.50 46.65 0.0573 432319.0 +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 3.005000e+07 5.13 2.17 0.0637 31561.0 +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.880000e+09 NaN 16.55 0.0535 201450.0 +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 4.006500e+08 NaN 17.21 0.0623 105293.0 +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.040000e+06 NaN 2.91 0.0738 1089768.0 +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 5.252400e+08 NaN 17.92 0.0516 462882.0 +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 6.996500e+08 9.23 34.33 0.1474 455535.0 +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.290000e+06 NaN 3.59 0.0781 278852.0 +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 1.192200e+08 NaN 1.61 0.1583 1064605.0 +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 4.986000e+07 NaN 3.80 0.0765 149828.0 +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.330000e+09 17.00 88.41 0.0714 780148.0 +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 2.461000e+07 NaN 1.34 0.1074 7407350.0 +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.450000e+09 18.86 51.44 0.0578 2173649.0 +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 5.622000e+07 NaN 2.42 0.0901 16811.0 +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 4.367000e+07 NaN 1.06 0.0600 59812.0 +84 ISUN iSun Inc. Technology Solar USA 2.122000e+07 NaN 1.38 0.0781 39688.0 +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.560000e+09 NaN 55.77 0.0779 592725.0 +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 1.637000e+08 NaN 2.55 0.0581 11497.0 +118 JFU 9F Inc. Technology Information Technology Services China 2.628000e+07 NaN 2.24 0.0667 84047.0 +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 9.170100e+08 NaN 24.10 0.0749 376197.0 +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.520000e+06 NaN 4.66 0.0713 291222.0 +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 1.514800e+08 NaN 1.31 0.0565 1318247.0 +77 LAW CS Disco Inc. Technology Software - Application USA 5.876500e+08 NaN 7.00 0.0802 876122.0 +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 2.389100e+08 NaN 1.35 0.0630 264324.0 +1 LION Lionheart III Corp Financial Shell Companies USA 2.419200e+08 NaN 14.60 1.0563 739802.0 +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 1.218900e+08 NaN 2.60 0.0744 35421.0 +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 7.166700e+08 NaN 5.90 0.0612 739016.0 +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 3.854100e+08 NaN 6.69 0.0653 252929.0 +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 3.683000e+07 80.45 1.77 0.0536 153745.0 +162 MFIN Medallion Financial Corp. Financial Credit Services USA 1.949400e+08 4.60 8.45 0.0562 131481.0 +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.390000e+09 42.72 17.90 0.0542 13542189.0 +153 MOVE Movano Inc. Healthcare Medical Devices USA 4.450000e+07 NaN 1.27 0.0583 60538.0 +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 6.441800e+08 NaN 6.06 0.1160 1302610.0 +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.650000e+09 NaN 7.00 0.1309 38358.0 +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 4.244000e+08 NaN 0.23 0.0696 238359920.0 +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 3.325200e+08 NaN 6.80 0.0880 800089.0 +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 2.747700e+08 NaN 2.12 0.0600 109728.0 +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.420000e+06 NaN 2.30 0.0900 29723.0 +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 9.835000e+07 NaN 1.45 0.1154 60524.0 +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 2.817000e+07 NaN 1.08 0.0588 99372.0 +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 4.078500e+08 NaN 3.44 0.1097 2528463.0 +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 5.911000e+07 NaN 2.80 0.0526 168721.0 +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 1.689000e+07 NaN 1.38 0.0972 72467.0 +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 9.679200e+08 NaN 1.37 0.0538 958889.0 +114 NVAX Novavax Inc. Healthcare Biotechnology USA 8.091400e+08 NaN 9.26 0.0681 11462643.0 +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 5.570200e+08 NaN 2.15 0.0644 9365563.0 +155 ODV Osisko Development Corp. Basic Materials Gold Canada 4.624400e+08 NaN 4.38 0.0580 24847.0 +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 2.960000e+09 NaN 23.44 0.0689 171895.0 +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 1.751900e+08 NaN 4.10 0.0540 42010.0 +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 3.169300e+08 NaN 6.46 0.1081 113341.0 +60 OUST Ouster Inc. Technology Electronic Components USA 4.765000e+08 NaN 1.20 0.0909 2677185.0 +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.840000e+06 NaN 1.37 0.1513 3973317.0 +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 4.942000e+07 NaN 5.11 0.0919 210951.0 +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 2.615000e+08 NaN 2.50 0.0730 179881.0 +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 3.116600e+08 NaN 3.57 0.0985 115746.0 +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.450000e+09 12.24 27.50 0.0593 924778.0 +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 2.500000e+07 NaN 2.08 0.0890 102509.0 +74 QH Quhuo Limited Technology Software - Application China 8.630000e+06 NaN 1.44 0.0827 42565.0 +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 7.150000e+07 4.76 2.05 0.1022 1381984.0 +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.380000e+09 NaN 23.58 0.1204 688194.0 +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 1.089700e+08 NaN 3.60 0.0557 207424.0 +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 7.821600e+08 NaN 4.18 0.1029 1000494.0 +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.380000e+09 NaN 26.76 0.0981 5593266.0 +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.590000e+09 NaN 8.15 0.0557 1362852.0 +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 5.312900e+08 NaN 8.97 0.0899 653746.0 +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 3.272000e+07 23.27 1.14 0.0853 272010.0 +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 2.687000e+07 NaN 1.88 0.0682 40273.0 +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.720000e+09 70.06 12.61 0.1140 6050024.0 +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 5.794300e+08 NaN 13.13 0.1174 1111233.0 +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 1.699000e+07 NaN 2.03 0.0684 57839.0 +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 8.829000e+08 24.83 39.86 0.0548 448341.0 +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 9.825000e+07 NaN 1.07 0.0594 111641.0 +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 2.958000e+07 NaN 1.10 0.0784 344242.0 +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 1.898000e+08 NaN 2.60 0.0788 41698.0 +135 STIX Semantix Inc. Technology Software - Application Brazil 2.332100e+08 NaN 3.40 0.0625 188753.0 +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 3.215000e+07 NaN 1.83 0.0579 41844.0 +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 5.227000e+07 NaN 1.25 0.0684 234751.0 +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.440000e+09 NaN 48.84 0.0793 1519154.0 +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.410000e+06 NaN 3.22 0.1027 26165.0 +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 4.433000e+07 11.80 1.18 0.0776 41188.0 +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 4.802200e+08 NaN 5.23 0.0609 161934.0 +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 2.140100e+08 NaN 3.07 0.0532 245867.0 +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 4.170500e+08 NaN 12.75 0.1283 91273.0 +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.550000e+06 NaN 1.08 0.0588 35252.0 +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 1.254000e+10 NaN 67.21 0.0539 11497556.0 +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 5.435900e+08 NaN 13.21 0.1064 30531.0 +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 8.611000e+07 NaN 9.73 0.0692 50727.0 +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 4.902100e+08 NaN 19.33 0.0586 870749.0 +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 1.232100e+08 7.50 2.79 0.0649 16656.0 +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 5.845000e+07 NaN 1.10 0.0680 28435.0 +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 2.523000e+07 NaN 1.16 0.0545 50389.0 +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 4.230000e+07 NaN 1.69 0.0696 263204.0 +100 VMEO Vimeo Inc. Technology Software - Application USA 6.709800e+08 NaN 3.83 0.0698 3840159.0 +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.110000e+09 6.95 151.44 0.0995 344220.0 +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 7.436800e+08 NaN 9.47 0.1591 11711654.0 +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.020000e+09 NaN 10.25 0.0666 1124843.0 +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 3.257400e+08 NaN 1.32 0.0518 130191.0 +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 1.096900e+08 NaN 1.19 0.1019 387869.0 +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 3.522400e+08 NaN 2.06 0.0564 3301611.0 +145 X United States Steel Corporation Basic Materials Steel USA 6.950000e+09 3.43 30.63 0.0595 9773440.0 +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 1.847000e+08 NaN 1.38 0.0781 1836987.0 +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 3.165000e+07 NaN 4.47 0.1175 604501.0 +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.390000e+09 NaN 38.07 0.1019 5997282.0 +178 YEXT Yext Inc. Technology Software - Infrastructure USA 9.185300e+08 NaN 7.34 0.0531 1114565.0 +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 3.383000e+07 36.67 1.43 0.0672 42664.0 +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 5.764500e+08 5.42 52.50 0.0534 217386.0 diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt index 67bb6a08d292..57459f22c23d 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener[True].txt @@ -1,183 +1,183 @@ - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K -10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 9.335000e+07 NaN 2.81 0.0849 177264.0 +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.770000e+09 72.42 90.96 0.1162 1325186.0 +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.380000e+09 NaN 20.69 0.0665 3622781.0 +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 4.243800e+08 NaN 20.32 0.0695 35883.0 +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 4.029100e+08 NaN 1.79 0.0915 1334633.0 +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.190000e+09 NaN 13.62 0.0607 25098420.0 +127 ALT Altimmune Inc. Healthcare Biotechnology USA 6.121300e+08 NaN 12.59 0.0642 968850.0 +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 3.224000e+08 NaN 6.43 0.1503 2721628.0 +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 8.458400e+08 NaN 2.03 0.1033 18472440.0 +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 4.722500e+08 NaN 1.25 0.0684 6857576.0 +54 AMST Amesite Inc. Technology Software - Application USA 6.880000e+06 NaN 2.98 0.0956 319511.0 +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 1.175500e+08 NaN 3.25 0.0656 388112.0 +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 8.594000e+07 NaN 1.70 0.0828 112313.0 +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 8.405800e+08 2.26 8.02 0.0567 1768517.0 +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.450000e+09 146.83 26.43 0.0788 263611.0 +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.810000e+09 9.23 3.96 0.0645 14007096.0 +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.320000e+09 NaN 9.09 0.0912 5665507.0 +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3.000000e+09 NaN 68.19 0.0641 1863069.0 +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 7.291000e+07 NaN 1.71 0.1325 61520.0 +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 5.113400e+08 NaN 2.46 0.1081 2578906.0 +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 1.894000e+07 NaN 2.95 0.0806 403699.0 +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 3.390600e+08 NaN 1.32 0.0909 843515.0 +72 BIVI BioVie Inc. Healthcare Biotechnology USA 2.972200e+08 NaN 7.69 0.0831 636821.0 +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 2.358300e+08 NaN 1.91 0.0730 543765.0 +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 1.293900e+08 NaN 1.75 0.0671 633722.0 +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 6.727100e+08 8.24 18.30 0.0925 311037.0 +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 3.629700e+08 NaN 3.26 0.0619 177162.0 +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 2.901000e+07 3.30 2.45 0.1136 107052.0 +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 1.703000e+07 NaN 1.16 0.0642 24318.0 +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 1.858300e+08 NaN 8.27 0.0630 41566.0 +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 8.801500e+08 NaN 1.77 0.1419 4386783.0 +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 3.357000e+07 NaN 3.45 1.5847 100099160.0 +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 8.924700e+08 NaN 16.82 0.1434 2145992.0 +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 5.400200e+08 53.16 15.63 0.0625 765578.0 +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.070000e+09 7.42 12.07 0.0700 2665182.0 +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.720000e+06 NaN 8.09 0.0622 10692.0 +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 5.918000e+07 6.26 6.44 0.0967 64010.0 +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 7.147800e+08 6.40 5.75 0.1616 6759202.0 +14 CING Cingulate Inc. Healthcare Biotechnology USA 1.446000e+07 NaN 1.79 0.1329 1401411.0 +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 1.492000e+08 NaN 7.46 0.1019 156598.0 +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 6.598800e+08 NaN 1.32 0.1478 20513328.0 +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 2.447200e+08 5.93 14.04 0.0800 74027.0 +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 1.089000e+07 NaN 3.24 0.1172 34343.0 +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.350000e+06 NaN 1.85 0.1562 338736.0 +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 6.975000e+07 NaN 1.29 0.1217 194127.0 +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 3.224000e+07 13.98 1.65 0.0784 203948.0 +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 1.601000e+10 NaN 64.83 0.0996 24843894.0 +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 8.344000e+07 NaN 1.73 0.0549 139553.0 +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 2.479000e+08 NaN 4.40 0.0628 99095.0 +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 3.078000e+07 NaN 1.83 0.0893 40708.0 +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.240000e+09 NaN 9.42 0.0549 20225034.0 +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 4.608000e+07 NaN 2.00 0.0695 74009.0 +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 2.626200e+08 NaN 3.22 0.0698 1377507.0 +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.160000e+06 NaN 1.54 0.0922 1582629.0 +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 1.814300e+08 10.71 12.75 0.0982 68625.0 +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 2.291000e+07 NaN 4.02 0.1136 44559.0 +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 1.043500e+08 175.00 2.10 0.0825 612276.0 +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.160000e+09 NaN 34.25 0.1237 610429.0 +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 3.232000e+07 NaN 5.18 0.1322 226033.0 +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 4.033000e+07 NaN 1.37 0.0873 12204.0 +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.340000e+06 NaN 3.39 0.0594 120986.0 +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 6.855900e+08 NaN 11.48 0.0600 1002032.0 +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.520000e+09 NaN 9.22 0.0746 4405546.0 +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.820000e+09 NaN 71.66 0.0689 298301.0 +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.220000e+09 36.92 14.51 0.0740 579272.0 +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.390000e+09 163.71 64.50 0.1304 4936592.0 +67 FTCI FTC Solar Inc. Technology Solar USA 3.311900e+08 NaN 3.07 0.0887 1500641.0 +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.450000e+09 22.94 49.21 0.0590 2959332.0 +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 1.340700e+08 NaN 2.37 0.1505 21798.0 +38 GNPX Genprex Inc. Healthcare Biotechnology USA 6.287000e+07 NaN 1.28 0.1034 534141.0 +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.200000e+09 10.99 16.46 0.1438 1542316.0 +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 9.355000e+08 NaN 25.56 0.0650 60619.0 +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 5.822000e+07 NaN 1.76 0.1069 81932.0 +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 1.547800e+08 NaN 2.63 0.0562 176325.0 +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 5.528900e+08 NaN 7.71 0.0697 32262.0 +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.390000e+09 NaN 1.28 0.1034 9356512.0 +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.730000e+09 2332.50 46.65 0.0573 432319.0 +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 3.005000e+07 5.13 2.17 0.0637 31561.0 +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.880000e+09 NaN 16.55 0.0535 201450.0 +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 4.006500e+08 NaN 17.21 0.0623 105293.0 +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.040000e+06 NaN 2.91 0.0738 1089768.0 +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 5.252400e+08 NaN 17.92 0.0516 462882.0 +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 6.996500e+08 9.23 34.33 0.1474 455535.0 +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.290000e+06 NaN 3.59 0.0781 278852.0 +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 1.192200e+08 NaN 1.61 0.1583 1064605.0 +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 4.986000e+07 NaN 3.80 0.0765 149828.0 +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.330000e+09 17.00 88.41 0.0714 780148.0 +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 2.461000e+07 NaN 1.34 0.1074 7407350.0 +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.450000e+09 18.86 51.44 0.0578 2173649.0 +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 5.622000e+07 NaN 2.42 0.0901 16811.0 +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 4.367000e+07 NaN 1.06 0.0600 59812.0 +84 ISUN iSun Inc. Technology Solar USA 2.122000e+07 NaN 1.38 0.0781 39688.0 +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.560000e+09 NaN 55.77 0.0779 592725.0 +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 1.637000e+08 NaN 2.55 0.0581 11497.0 +118 JFU 9F Inc. Technology Information Technology Services China 2.628000e+07 NaN 2.24 0.0667 84047.0 +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 9.170100e+08 NaN 24.10 0.0749 376197.0 +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.520000e+06 NaN 4.66 0.0713 291222.0 +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 1.514800e+08 NaN 1.31 0.0565 1318247.0 +77 LAW CS Disco Inc. Technology Software - Application USA 5.876500e+08 NaN 7.00 0.0802 876122.0 +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 2.389100e+08 NaN 1.35 0.0630 264324.0 +1 LION Lionheart III Corp Financial Shell Companies USA 2.419200e+08 NaN 14.60 1.0563 739802.0 +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 1.218900e+08 NaN 2.60 0.0744 35421.0 +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 7.166700e+08 NaN 5.90 0.0612 739016.0 +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 3.854100e+08 NaN 6.69 0.0653 252929.0 +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 3.683000e+07 80.45 1.77 0.0536 153745.0 +162 MFIN Medallion Financial Corp. Financial Credit Services USA 1.949400e+08 4.60 8.45 0.0562 131481.0 +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.390000e+09 42.72 17.90 0.0542 13542189.0 +153 MOVE Movano Inc. Healthcare Medical Devices USA 4.450000e+07 NaN 1.27 0.0583 60538.0 +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 6.441800e+08 NaN 6.06 0.1160 1302610.0 +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.650000e+09 NaN 7.00 0.1309 38358.0 +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 4.244000e+08 NaN 0.23 0.0696 238359920.0 +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 3.325200e+08 NaN 6.80 0.0880 800089.0 +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 2.747700e+08 NaN 2.12 0.0600 109728.0 +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.420000e+06 NaN 2.30 0.0900 29723.0 +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 9.835000e+07 NaN 1.45 0.1154 60524.0 +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 2.817000e+07 NaN 1.08 0.0588 99372.0 +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 4.078500e+08 NaN 3.44 0.1097 2528463.0 +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 5.911000e+07 NaN 2.80 0.0526 168721.0 +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 1.689000e+07 NaN 1.38 0.0972 72467.0 +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 9.679200e+08 NaN 1.37 0.0538 958889.0 +114 NVAX Novavax Inc. Healthcare Biotechnology USA 8.091400e+08 NaN 9.26 0.0681 11462643.0 +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 5.570200e+08 NaN 2.15 0.0644 9365563.0 +155 ODV Osisko Development Corp. Basic Materials Gold Canada 4.624400e+08 NaN 4.38 0.0580 24847.0 +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 2.960000e+09 NaN 23.44 0.0689 171895.0 +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 1.751900e+08 NaN 4.10 0.0540 42010.0 +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 3.169300e+08 NaN 6.46 0.1081 113341.0 +60 OUST Ouster Inc. Technology Electronic Components USA 4.765000e+08 NaN 1.20 0.0909 2677185.0 +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.840000e+06 NaN 1.37 0.1513 3973317.0 +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 4.942000e+07 NaN 5.11 0.0919 210951.0 +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 2.615000e+08 NaN 2.50 0.0730 179881.0 +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 3.116600e+08 NaN 3.57 0.0985 115746.0 +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.450000e+09 12.24 27.50 0.0593 924778.0 +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 2.500000e+07 NaN 2.08 0.0890 102509.0 +74 QH Quhuo Limited Technology Software - Application China 8.630000e+06 NaN 1.44 0.0827 42565.0 +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 7.150000e+07 4.76 2.05 0.1022 1381984.0 +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.380000e+09 NaN 23.58 0.1204 688194.0 +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 1.089700e+08 NaN 3.60 0.0557 207424.0 +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 7.821600e+08 NaN 4.18 0.1029 1000494.0 +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.380000e+09 NaN 26.76 0.0981 5593266.0 +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.590000e+09 NaN 8.15 0.0557 1362852.0 +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 5.312900e+08 NaN 8.97 0.0899 653746.0 +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 3.272000e+07 23.27 1.14 0.0853 272010.0 +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 2.687000e+07 NaN 1.88 0.0682 40273.0 +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.720000e+09 70.06 12.61 0.1140 6050024.0 +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 5.794300e+08 NaN 13.13 0.1174 1111233.0 +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 1.699000e+07 NaN 2.03 0.0684 57839.0 +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 8.829000e+08 24.83 39.86 0.0548 448341.0 +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 9.825000e+07 NaN 1.07 0.0594 111641.0 +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 2.958000e+07 NaN 1.10 0.0784 344242.0 +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 1.898000e+08 NaN 2.60 0.0788 41698.0 +135 STIX Semantix Inc. Technology Software - Application Brazil 2.332100e+08 NaN 3.40 0.0625 188753.0 +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 3.215000e+07 NaN 1.83 0.0579 41844.0 +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 5.227000e+07 NaN 1.25 0.0684 234751.0 +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.440000e+09 NaN 48.84 0.0793 1519154.0 +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.410000e+06 NaN 3.22 0.1027 26165.0 +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 4.433000e+07 11.80 1.18 0.0776 41188.0 +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 4.802200e+08 NaN 5.23 0.0609 161934.0 +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 2.140100e+08 NaN 3.07 0.0532 245867.0 +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 4.170500e+08 NaN 12.75 0.1283 91273.0 +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.550000e+06 NaN 1.08 0.0588 35252.0 +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 1.254000e+10 NaN 67.21 0.0539 11497556.0 +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 5.435900e+08 NaN 13.21 0.1064 30531.0 +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 8.611000e+07 NaN 9.73 0.0692 50727.0 +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 4.902100e+08 NaN 19.33 0.0586 870749.0 +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 1.232100e+08 7.50 2.79 0.0649 16656.0 +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 5.845000e+07 NaN 1.10 0.0680 28435.0 +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 2.523000e+07 NaN 1.16 0.0545 50389.0 +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 4.230000e+07 NaN 1.69 0.0696 263204.0 +100 VMEO Vimeo Inc. Technology Software - Application USA 6.709800e+08 NaN 3.83 0.0698 3840159.0 +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.110000e+09 6.95 151.44 0.0995 344220.0 +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 7.436800e+08 NaN 9.47 0.1591 11711654.0 +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.020000e+09 NaN 10.25 0.0666 1124843.0 +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 3.257400e+08 NaN 1.32 0.0518 130191.0 +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 1.096900e+08 NaN 1.19 0.1019 387869.0 +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 3.522400e+08 NaN 2.06 0.0564 3301611.0 +145 X United States Steel Corporation Basic Materials Steel USA 6.950000e+09 3.43 30.63 0.0595 9773440.0 +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 1.847000e+08 NaN 1.38 0.0781 1836987.0 +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 3.165000e+07 NaN 4.47 0.1175 604501.0 +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.390000e+09 NaN 38.07 0.1019 5997282.0 +178 YEXT Yext Inc. Technology Software - Infrastructure USA 9.185300e+08 NaN 7.34 0.0531 1114565.0 +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 3.383000e+07 36.67 1.43 0.0672 42664.0 +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 5.764500e+08 5.42 52.50 0.0534 217386.0 diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt index a87fd8e91da8..eed9cb5678ac 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[MOCK_SORT].txt @@ -1,184 +1,184 @@ Wrong sort column provided! Provide one of these: Ticker, Company, Sector, Industry, Country, Market Cap, P/E, Price, Change, Volume - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K -177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 3.357000e+07 NaN 3.45 1.5847 100099160.0 +1 LION Lionheart III Corp Financial Shell Companies USA 2.419200e+08 NaN 14.60 1.0563 739802.0 +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 7.147800e+08 6.40 5.75 0.1616 6759202.0 +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 7.436800e+08 NaN 9.47 0.1591 11711654.0 +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 1.192200e+08 NaN 1.61 0.1583 1064605.0 +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.350000e+06 NaN 1.85 0.1562 338736.0 +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.840000e+06 NaN 1.37 0.1513 3973317.0 +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 1.340700e+08 NaN 2.37 0.1505 21798.0 +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 3.224000e+08 NaN 6.43 0.1503 2721628.0 +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 6.598800e+08 NaN 1.32 0.1478 20513328.0 +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 6.996500e+08 9.23 34.33 0.1474 455535.0 +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.200000e+09 10.99 16.46 0.1438 1542316.0 +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 8.924700e+08 NaN 16.82 0.1434 2145992.0 +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 8.801500e+08 NaN 1.77 0.1419 4386783.0 +14 CING Cingulate Inc. Healthcare Biotechnology USA 1.446000e+07 NaN 1.79 0.1329 1401411.0 +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 7.291000e+07 NaN 1.71 0.1325 61520.0 +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 3.232000e+07 NaN 5.18 0.1322 226033.0 +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.650000e+09 NaN 7.00 0.1309 38358.0 +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.390000e+09 163.71 64.50 0.1304 4936592.0 +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 4.170500e+08 NaN 12.75 0.1283 91273.0 +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.160000e+09 NaN 34.25 0.1237 610429.0 +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 6.975000e+07 NaN 1.29 0.1217 194127.0 +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.380000e+09 NaN 23.58 0.1204 688194.0 +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 3.165000e+07 NaN 4.47 0.1175 604501.0 +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 5.794300e+08 NaN 13.13 0.1174 1111233.0 +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 1.089000e+07 NaN 3.24 0.1172 34343.0 +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.770000e+09 72.42 90.96 0.1162 1325186.0 +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 6.441800e+08 NaN 6.06 0.1160 1302610.0 +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 9.835000e+07 NaN 1.45 0.1154 60524.0 +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.720000e+09 70.06 12.61 0.1140 6050024.0 +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 2.901000e+07 3.30 2.45 0.1136 107052.0 +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 2.291000e+07 NaN 4.02 0.1136 44559.0 +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 4.078500e+08 NaN 3.44 0.1097 2528463.0 +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 5.113400e+08 NaN 2.46 0.1081 2578906.0 +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 3.169300e+08 NaN 6.46 0.1081 113341.0 +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 2.461000e+07 NaN 1.34 0.1074 7407350.0 +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 5.822000e+07 NaN 1.76 0.1069 81932.0 +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 5.435900e+08 NaN 13.21 0.1064 30531.0 +38 GNPX Genprex Inc. Healthcare Biotechnology USA 6.287000e+07 NaN 1.28 0.1034 534141.0 +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.390000e+09 NaN 1.28 0.1034 9356512.0 +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 8.458400e+08 NaN 2.03 0.1033 18472440.0 +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 7.821600e+08 NaN 4.18 0.1029 1000494.0 +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.410000e+06 NaN 3.22 0.1027 26165.0 +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 7.150000e+07 4.76 2.05 0.1022 1381984.0 +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 1.492000e+08 NaN 7.46 0.1019 156598.0 +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.390000e+09 NaN 38.07 0.1019 5997282.0 +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 1.096900e+08 NaN 1.19 0.1019 387869.0 +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 1.601000e+10 NaN 64.83 0.0996 24843894.0 +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.110000e+09 6.95 151.44 0.0995 344220.0 +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 3.116600e+08 NaN 3.57 0.0985 115746.0 +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 1.814300e+08 10.71 12.75 0.0982 68625.0 +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.380000e+09 NaN 26.76 0.0981 5593266.0 +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 1.689000e+07 NaN 1.38 0.0972 72467.0 +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 5.918000e+07 6.26 6.44 0.0967 64010.0 +54 AMST Amesite Inc. Technology Software - Application USA 6.880000e+06 NaN 2.98 0.0956 319511.0 +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 6.727100e+08 8.24 18.30 0.0925 311037.0 +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.160000e+06 NaN 1.54 0.0922 1582629.0 +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 4.942000e+07 NaN 5.11 0.0919 210951.0 +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 4.029100e+08 NaN 1.79 0.0915 1334633.0 +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.320000e+09 NaN 9.09 0.0912 5665507.0 +60 OUST Ouster Inc. Technology Electronic Components USA 4.765000e+08 NaN 1.20 0.0909 2677185.0 +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 3.390600e+08 NaN 1.32 0.0909 843515.0 +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 5.622000e+07 NaN 2.42 0.0901 16811.0 +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.420000e+06 NaN 2.30 0.0900 29723.0 +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 5.312900e+08 NaN 8.97 0.0899 653746.0 +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 3.078000e+07 NaN 1.83 0.0893 40708.0 +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 2.500000e+07 NaN 2.08 0.0890 102509.0 +67 FTCI FTC Solar Inc. Technology Solar USA 3.311900e+08 NaN 3.07 0.0887 1500641.0 +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 3.325200e+08 NaN 6.80 0.0880 800089.0 +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 4.033000e+07 NaN 1.37 0.0873 12204.0 +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 3.272000e+07 23.27 1.14 0.0853 272010.0 +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 9.335000e+07 NaN 2.81 0.0849 177264.0 +72 BIVI BioVie Inc. Healthcare Biotechnology USA 2.972200e+08 NaN 7.69 0.0831 636821.0 +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 8.594000e+07 NaN 1.70 0.0828 112313.0 +74 QH Quhuo Limited Technology Software - Application China 8.630000e+06 NaN 1.44 0.0827 42565.0 +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 1.043500e+08 175.00 2.10 0.0825 612276.0 +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 1.894000e+07 NaN 2.95 0.0806 403699.0 +77 LAW CS Disco Inc. Technology Software - Application USA 5.876500e+08 NaN 7.00 0.0802 876122.0 +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 2.447200e+08 5.93 14.04 0.0800 74027.0 +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.440000e+09 NaN 48.84 0.0793 1519154.0 +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 1.898000e+08 NaN 2.60 0.0788 41698.0 +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.450000e+09 146.83 26.43 0.0788 263611.0 +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 2.958000e+07 NaN 1.10 0.0784 344242.0 +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 3.224000e+07 13.98 1.65 0.0784 203948.0 +84 ISUN iSun Inc. Technology Solar USA 2.122000e+07 NaN 1.38 0.0781 39688.0 +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 1.847000e+08 NaN 1.38 0.0781 1836987.0 +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.290000e+06 NaN 3.59 0.0781 278852.0 +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.560000e+09 NaN 55.77 0.0779 592725.0 +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 4.433000e+07 11.80 1.18 0.0776 41188.0 +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 4.986000e+07 NaN 3.80 0.0765 149828.0 +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 9.170100e+08 NaN 24.10 0.0749 376197.0 +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.520000e+09 NaN 9.22 0.0746 4405546.0 +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 1.218900e+08 NaN 2.60 0.0744 35421.0 +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.220000e+09 36.92 14.51 0.0740 579272.0 +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.040000e+06 NaN 2.91 0.0738 1089768.0 +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 2.358300e+08 NaN 1.91 0.0730 543765.0 +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 2.615000e+08 NaN 2.50 0.0730 179881.0 +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.330000e+09 17.00 88.41 0.0714 780148.0 +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.520000e+06 NaN 4.66 0.0713 291222.0 +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.070000e+09 7.42 12.07 0.0700 2665182.0 +100 VMEO Vimeo Inc. Technology Software - Application USA 6.709800e+08 NaN 3.83 0.0698 3840159.0 +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 2.626200e+08 NaN 3.22 0.0698 1377507.0 +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 5.528900e+08 NaN 7.71 0.0697 32262.0 +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 4.230000e+07 NaN 1.69 0.0696 263204.0 +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 4.244000e+08 NaN 0.23 0.0696 238359920.0 +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 4.608000e+07 NaN 2.00 0.0695 74009.0 +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 4.243800e+08 NaN 20.32 0.0695 35883.0 +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 8.611000e+07 NaN 9.73 0.0692 50727.0 +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.820000e+09 NaN 71.66 0.0689 298301.0 +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 2.960000e+09 NaN 23.44 0.0689 171895.0 +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 1.699000e+07 NaN 2.03 0.0684 57839.0 +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 4.722500e+08 NaN 1.25 0.0684 6857576.0 +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 5.227000e+07 NaN 1.25 0.0684 234751.0 +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 2.687000e+07 NaN 1.88 0.0682 40273.0 +114 NVAX Novavax Inc. Healthcare Biotechnology USA 8.091400e+08 NaN 9.26 0.0681 11462643.0 +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 5.845000e+07 NaN 1.10 0.0680 28435.0 +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 3.383000e+07 36.67 1.43 0.0672 42664.0 +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 1.293900e+08 NaN 1.75 0.0671 633722.0 +118 JFU 9F Inc. Technology Information Technology Services China 2.628000e+07 NaN 2.24 0.0667 84047.0 +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.020000e+09 NaN 10.25 0.0666 1124843.0 +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.380000e+09 NaN 20.69 0.0665 3622781.0 +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 1.175500e+08 NaN 3.25 0.0656 388112.0 +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 3.854100e+08 NaN 6.69 0.0653 252929.0 +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 9.355000e+08 NaN 25.56 0.0650 60619.0 +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 1.232100e+08 7.50 2.79 0.0649 16656.0 +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.810000e+09 9.23 3.96 0.0645 14007096.0 +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 5.570200e+08 NaN 2.15 0.0644 9365563.0 +127 ALT Altimmune Inc. Healthcare Biotechnology USA 6.121300e+08 NaN 12.59 0.0642 968850.0 +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 1.703000e+07 NaN 1.16 0.0642 24318.0 +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3.000000e+09 NaN 68.19 0.0641 1863069.0 +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 3.005000e+07 5.13 2.17 0.0637 31561.0 +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 2.389100e+08 NaN 1.35 0.0630 264324.0 +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 1.858300e+08 NaN 8.27 0.0630 41566.0 +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 2.479000e+08 NaN 4.40 0.0628 99095.0 +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 5.400200e+08 53.16 15.63 0.0625 765578.0 +135 STIX Semantix Inc. Technology Software - Application Brazil 2.332100e+08 NaN 3.40 0.0625 188753.0 +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 4.006500e+08 NaN 17.21 0.0623 105293.0 +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.720000e+06 NaN 8.09 0.0622 10692.0 +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 3.629700e+08 NaN 3.26 0.0619 177162.0 +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 7.166700e+08 NaN 5.90 0.0612 739016.0 +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 4.802200e+08 NaN 5.23 0.0609 161934.0 +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.190000e+09 NaN 13.62 0.0607 25098420.0 +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 6.855900e+08 NaN 11.48 0.0600 1002032.0 +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 4.367000e+07 NaN 1.06 0.0600 59812.0 +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 2.747700e+08 NaN 2.12 0.0600 109728.0 +145 X United States Steel Corporation Basic Materials Steel USA 6.950000e+09 3.43 30.63 0.0595 9773440.0 +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 9.825000e+07 NaN 1.07 0.0594 111641.0 +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.340000e+06 NaN 3.39 0.0594 120986.0 +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.450000e+09 12.24 27.50 0.0593 924778.0 +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.450000e+09 22.94 49.21 0.0590 2959332.0 +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 2.817000e+07 NaN 1.08 0.0588 99372.0 +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.550000e+06 NaN 1.08 0.0588 35252.0 +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 4.902100e+08 NaN 19.33 0.0586 870749.0 +153 MOVE Movano Inc. Healthcare Medical Devices USA 4.450000e+07 NaN 1.27 0.0583 60538.0 +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 1.637000e+08 NaN 2.55 0.0581 11497.0 +155 ODV Osisko Development Corp. Basic Materials Gold Canada 4.624400e+08 NaN 4.38 0.0580 24847.0 +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 3.215000e+07 NaN 1.83 0.0579 41844.0 +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.450000e+09 18.86 51.44 0.0578 2173649.0 +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.730000e+09 2332.50 46.65 0.0573 432319.0 +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 8.405800e+08 2.26 8.02 0.0567 1768517.0 +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 1.514800e+08 NaN 1.31 0.0565 1318247.0 +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 3.522400e+08 NaN 2.06 0.0564 3301611.0 +162 MFIN Medallion Financial Corp. Financial Credit Services USA 1.949400e+08 4.60 8.45 0.0562 131481.0 +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 1.547800e+08 NaN 2.63 0.0562 176325.0 +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 1.089700e+08 NaN 3.60 0.0557 207424.0 +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.590000e+09 NaN 8.15 0.0557 1362852.0 +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 8.344000e+07 NaN 1.73 0.0549 139553.0 +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.240000e+09 NaN 9.42 0.0549 20225034.0 +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 8.829000e+08 24.83 39.86 0.0548 448341.0 +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 2.523000e+07 NaN 1.16 0.0545 50389.0 +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.390000e+09 42.72 17.90 0.0542 13542189.0 +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 1.751900e+08 NaN 4.10 0.0540 42010.0 +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 1.254000e+10 NaN 67.21 0.0539 11497556.0 +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 9.679200e+08 NaN 1.37 0.0538 958889.0 +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 3.683000e+07 80.45 1.77 0.0536 153745.0 +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.880000e+09 NaN 16.55 0.0535 201450.0 +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 5.764500e+08 5.42 52.50 0.0534 217386.0 +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 2.140100e+08 NaN 3.07 0.0532 245867.0 +178 YEXT Yext Inc. Technology Software - Infrastructure USA 9.185300e+08 NaN 7.34 0.0531 1114565.0 +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 5.911000e+07 NaN 2.80 0.0526 168721.0 +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 3.257400e+08 NaN 1.32 0.0518 130191.0 +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 5.252400e+08 NaN 17.92 0.0516 462882.0 diff --git a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt index 67bb6a08d292..57459f22c23d 100644 --- a/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt +++ b/tests/openbb_terminal/stocks/screener/txt/test_finviz_view/test_screener_sort_matches[Ticker].txt @@ -1,183 +1,183 @@ - Ticker Company Sector Industry Country Market Cap P/E Price Change Volume -71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 93.3 M 2.81 0.0849 177.3 K -26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.8 B 72.42 90.96 0.1162 1.3 M -120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.4 B 20.69 0.0665 3.6 M -106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 424.4 M 20.32 0.0695 35.9 K -58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 402.9 M 1.79 0.0915 1.3 M -141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.2 B 13.62 0.0607 25.1 M -127 ALT Altimmune Inc. Healthcare Biotechnology USA 612.1 M 12.59 0.0642 968.9 K -8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 322.4 M 6.43 0.1503 2.7 M -40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 845.8 M 2.03 0.1033 18.5 M -111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 472.2 M 1.25 0.0684 6.9 M -54 AMST Amesite Inc. Technology Software - Application USA 6.9 M 2.98 0.0956 319.5 K -121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 117.5 M 3.25 0.0656 388.1 K -73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 85.9 M 1.70 0.0828 112.3 K -159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 840.6 M 2.26 8.02 0.0567 1.8 M -81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.5 B 146.83 26.43 0.0788 263.6 K -125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.8 B 9.23 3.96 0.0645 14.0 M -59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.3 B 9.09 0.0912 5.7 M -129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3 B 68.19 0.0641 1.9 M -15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 72.9 M 1.71 0.1325 61.5 K -33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 511.3 M 2.46 0.1081 2.6 M -76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 18.9 M 2.95 0.0806 403.7 K -61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 339.1 M 1.32 0.0909 843.5 K -72 BIVI BioVie Inc. Healthcare Biotechnology USA 297.2 M 7.69 0.0831 636.8 K -95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 235.8 M 1.91 0.0730 543.8 K -117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 129.4 M 1.75 0.0671 633.7 K -55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 672.7 M 8.24 18.30 0.0925 311.0 K -138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 363.0 M 3.26 0.0619 177.2 K -30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 29.0 M 3.3 2.45 0.1136 107.1 K -128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 17.0 M 1.16 0.0642 24.3 K -132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 185.8 M 8.27 0.0630 41.6 K -13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 880.1 M 1.77 0.1419 4.4 M -0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 33.6 M 3.45 1.5847 100.1 M -12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 892.5 M 16.82 0.1434 2.1 M -134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 540.0 M 53.16 15.63 0.0625 765.6 K -99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.1 B 7.42 12.07 0.0700 2.7 M -137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.7 M 8.09 0.0622 10.7 K -53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 59.2 M 6.26 6.44 0.0967 64.0 K -2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 714.8 M 6.4 5.75 0.1616 6.8 M -14 CING Cingulate Inc. Healthcare Biotechnology USA 14.5 M 1.79 0.1329 1.4 M -44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 149.2 M 7.46 0.1019 156.6 K -9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 659.9 M 1.32 0.1478 20.5 M -78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 244.7 M 5.93 14.04 0.0800 74.0 K -25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 10.9 M 3.24 0.1172 34.3 K -5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.4 M 1.85 0.1562 338.7 K -21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 69.8 M 1.29 0.1217 194.1 K -83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 32.2 M 13.98 1.65 0.0784 203.9 K -47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 16.0 B 64.83 0.0996 24.8 M -166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 83.4 M 1.73 0.0549 139.6 K -133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 247.9 M 4.40 0.0628 99.1 K -65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 30.8 M 1.83 0.0893 40.7 K -167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.2 B 9.42 0.0549 20.2 M -105 CXDO Crexendo Inc. Communication Services Telecom Services USA 46.1 M 2.00 0.0695 74.0 K -101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 262.6 M 3.22 0.0698 1.4 M -56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.2 M 1.54 0.0922 1.6 M -50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 181.4 M 10.71 12.75 0.0982 68.6 K -31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 22.9 M 4.02 0.1136 44.6 K -75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 104.3 M 175.0 2.10 0.0825 612.3 K -20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.2 B 34.25 0.1237 610.4 K -16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 32.3 M 5.18 0.1322 226.0 K -69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 40.3 M 1.37 0.0873 12.2 K -147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.3 M 3.39 0.0594 121.0 K -142 EH EHang Holdings Limited Industrials Aerospace & Defense China 685.6 M 11.48 0.0600 1.0 M -91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.5 B 9.22 0.0746 4.4 M -108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.8 B 71.66 0.0689 298.3 K -93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.2 B 36.92 14.51 0.0740 579.3 K -18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.4 B 163.71 64.50 0.1304 4.9 M -67 FTCI FTC Solar Inc. Technology Solar USA 331.2 M 3.07 0.0887 1.5 M -149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.5 B 22.94 49.21 0.0590 3.0 M -7 GGE Green Giant Inc. Real Estate Real Estate - Development China 134.1 M 2.37 0.1505 21.8 K -38 GNPX Genprex Inc. Healthcare Biotechnology USA 62.9 M 1.28 0.1034 534.1 K -11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.2 B 10.99 16.46 0.1438 1.5 M -123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 935.5 M 25.56 0.0650 60.6 K -36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 58.2 M 1.76 0.1069 81.9 K -163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 154.8 M 2.63 0.0562 176.3 K -102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 552.9 M 7.71 0.0697 32.3 K -39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.4 B 1.28 0.1034 9.4 M -158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.7 B 2332.5 46.65 0.0573 432.3 K -130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 30.1 M 5.13 2.17 0.0637 31.6 K -175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.9 B 16.55 0.0535 201.4 K -136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 400.6 M 17.21 0.0623 105.3 K -94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.0 M 2.91 0.0738 1.1 M -181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 525.2 M 17.92 0.0516 462.9 K -10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 699.6 M 9.23 34.33 0.1474 455.5 K -86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.3 M 3.59 0.0781 278.9 K -4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 119.2 M 1.61 0.1583 1.1 M -89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 49.9 M 3.80 0.0765 149.8 K -97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.3 B 17.0 88.41 0.0714 780.1 K -35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 24.6 M 1.34 0.1074 7.4 M -157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.5 B 18.86 51.44 0.0578 2.2 M -62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 56.2 M 2.42 0.0901 16.8 K -143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 43.7 M 1.06 0.0600 59.8 K -84 ISUN iSun Inc. Technology Solar USA 21.2 M 1.38 0.0781 39.7 K -87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.6 B 55.77 0.0779 592.7 K -154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 163.7 M 2.55 0.0581 11.5 K -118 JFU 9F Inc. Technology Information Technology Services China 26.3 M 2.24 0.0667 84.0 K -90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 917.0 M 24.10 0.0749 376.2 K -98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.5 M 4.66 0.0713 291.2 K -160 KULR KULR Technology Group Inc. Technology Electronic Components USA 151.5 M 1.31 0.0565 1.3 M -77 LAW CS Disco Inc. Technology Software - Application USA 587.6 M 7.00 0.0802 876.1 K -131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 238.9 M 1.35 0.0630 264.3 K -1 LION Lionheart III Corp Financial Shell Companies USA 241.9 M 14.60 1.0563 739.8 K -92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 121.9 M 2.60 0.0744 35.4 K -139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 716.7 M 5.90 0.0612 739.0 K -122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 385.4 M 6.69 0.0653 252.9 K -174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 36.8 M 80.45 1.77 0.0536 153.7 K -162 MFIN Medallion Financial Corp. Financial Credit Services USA 194.9 M 4.6 8.45 0.0562 131.5 K -170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.4 B 42.72 17.90 0.0542 13.5 M -153 MOVE Movano Inc. Healthcare Medical Devices USA 44.5 M 1.27 0.0583 60.5 K -27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 644.2 M 6.06 0.1160 1.3 M -17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.6 B 7.00 0.1309 38.4 K -104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 424.4 M 0.23 0.0696 238.4 M -68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 332.5 M 6.80 0.0880 800.1 K -144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 274.8 M 2.12 0.0600 109.7 K -63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.4 M 2.30 0.0900 29.7 K -28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 98.3 M 1.45 0.1154 60.5 K -150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 28.2 M 1.08 0.0588 99.4 K -32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 407.9 M 3.44 0.1097 2.5 M -179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 59.1 M 2.80 0.0526 168.7 K -52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 16.9 M 1.38 0.0972 72.5 K -173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 967.9 M 1.37 0.0538 958.9 K -114 NVAX Novavax Inc. Healthcare Biotechnology USA 809.1 M 9.26 0.0681 11.5 M -126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 557.0 M 2.15 0.0644 9.4 M -155 ODV Osisko Development Corp. Basic Materials Gold Canada 462.4 M 4.38 0.0580 24.8 K -109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 3.0 B 23.44 0.0689 171.9 K -171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 175.2 M 4.10 0.0540 42.0 K -34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 316.9 M 6.46 0.1081 113.3 K -60 OUST Ouster Inc. Technology Electronic Components USA 476.5 M 1.20 0.0909 2.7 M -6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.8 M 1.37 0.1513 4.0 M -57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 49.4 M 5.11 0.0919 211.0 K -96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 261.5 M 2.50 0.0730 179.9 K -49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 311.7 M 3.57 0.0985 115.7 K -148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.4 B 12.24 27.50 0.0593 924.8 K -66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 25 M 2.08 0.0890 102.5 K -74 QH Quhuo Limited Technology Software - Application China 8.6 M 1.44 0.0827 42.6 K -43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 71.5 M 4.76 2.05 0.1022 1.4 M -22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.4 B 23.58 0.1204 688.2 K -164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 109.0 M 3.60 0.0557 207.4 K -41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 782.2 M 4.18 0.1029 1.0 M -51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.4 B 26.76 0.0981 5.6 M -165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.6 B 8.15 0.0557 1.4 M -64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 531.3 M 8.97 0.0899 653.7 K -70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 32.7 M 23.27 1.14 0.0853 272.0 K -113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 26.9 M 1.88 0.0682 40.3 K -29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.7 B 70.06 12.61 0.1140 6.1 M -24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 579.4 M 13.13 0.1174 1.1 M -110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 17.0 M 2.03 0.0684 57.8 K -168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 882.9 M 24.83 39.86 0.0548 448.3 K -146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 98.2 M 1.07 0.0594 111.6 K -82 SOPA Society Pass Incorporated Technology Software - Application Singapore 29.6 M 1.10 0.0784 344.2 K -80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 189.8 M 2.60 0.0788 41.7 K -135 STIX Semantix Inc. Technology Software - Application Brazil 233.2 M 3.40 0.0625 188.8 K -156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 32.1 M 1.83 0.0579 41.8 K -112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 52.3 M 1.25 0.0684 234.8 K -79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.4 B 48.84 0.0793 1.5 M -42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.4 M 3.22 0.1027 26.2 K -88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 44.3 M 11.8 1.18 0.0776 41.2 K -140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 480.2 M 5.23 0.0609 161.9 K -177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 214.0 M 3.07 0.0532 245.9 K -19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 417.1 M 12.75 0.1283 91.3 K -151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.6 M 1.08 0.0588 35.3 K -172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 12.5 B 67.21 0.0539 11.5 M -37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 543.6 M 13.21 0.1064 30.5 K -107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 86.1 M 9.73 0.0692 50.7 K -152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 490.2 M 19.33 0.0586 870.7 K -124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 123.2 M 7.5 2.79 0.0649 16.7 K -115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 58.5 M 1.10 0.0680 28.4 K -169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 25.2 M 1.16 0.0545 50.4 K -103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 42.3 M 1.69 0.0696 263.2 K -100 VMEO Vimeo Inc. Technology Software - Application USA 671.0 M 3.83 0.0698 3.8 M -48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.1 B 6.95 151.44 0.0995 344.2 K -3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 743.7 M 9.47 0.1591 11.7 M -119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.0 B 10.25 0.0666 1.1 M -180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 325.7 M 1.32 0.0518 130.2 K -46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 109.7 M 1.19 0.1019 387.9 K -161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 352.2 M 2.06 0.0564 3.3 M -145 X United States Steel Corporation Basic Materials Steel USA 7.0 B 3.43 30.63 0.0595 9.8 M -85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 184.7 M 1.38 0.0781 1.8 M -23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 31.6 M 4.47 0.1175 604.5 K -45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.4 B 38.07 0.1019 6.0 M -178 YEXT Yext Inc. Technology Software - Infrastructure USA 918.5 M 7.34 0.0531 1.1 M -116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 33.8 M 36.67 1.43 0.0672 42.7 K -176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 576.5 M 5.42 52.50 0.0534 217.4 K + Ticker Company Sector Industry Country Market Cap P/E Price Change Volume +71 AAOI Applied Optoelectronics Inc. Technology Semiconductors USA 9.335000e+07 NaN 2.81 0.0849 177264.0 +26 AAON AAON Inc. Industrials Building Products & Equipment USA 4.770000e+09 72.42 90.96 0.1162 1325186.0 +120 ACAD ACADIA Pharmaceuticals Inc. Healthcare Biotechnology USA 3.380000e+09 NaN 20.69 0.0665 3622781.0 +106 ACRV Acrivon Therapeutics Inc. Healthcare Biotechnology USA 4.243800e+08 NaN 20.32 0.0695 35883.0 +58 AEVA Aeva Technologies Inc. Consumer Cyclical Auto Parts USA 4.029100e+08 NaN 1.79 0.0915 1334633.0 +141 AFRM Affirm Holdings Inc. Technology Software - Infrastructure USA 4.190000e+09 NaN 13.62 0.0607 25098420.0 +127 ALT Altimmune Inc. Healthcare Biotechnology USA 6.121300e+08 NaN 12.59 0.0642 968850.0 +8 AMAM Ambrx Biopharma Inc. Healthcare Biotechnology USA 3.224000e+08 NaN 6.43 0.1503 2721628.0 +40 AMRN Amarin Corporation plc Healthcare Drug Manufacturers - General Ireland 8.458400e+08 NaN 2.03 0.1033 18472440.0 +111 AMRS Amyris Inc. Basic Materials Specialty Chemicals USA 4.722500e+08 NaN 1.25 0.0684 6857576.0 +54 AMST Amesite Inc. Technology Software - Application USA 6.880000e+06 NaN 2.98 0.0956 319511.0 +121 APYX Apyx Medical Corporation Healthcare Medical Devices USA 1.175500e+08 NaN 3.25 0.0656 388112.0 +73 ARBK Argo Blockchain plc Financial Capital Markets United Kingdom 8.594000e+07 NaN 1.70 0.0828 112313.0 +159 ASTL Algoma Steel Group Inc. Basic Materials Steel Canada 8.405800e+08 2.26 8.02 0.0567 1768517.0 +81 ATAT Atour Lifestyle Holdings Limited Consumer Cyclical Lodging China 3.450000e+09 146.83 26.43 0.0788 263611.0 +125 ATUS Altice USA Inc. Communication Services Telecom Services USA 1.810000e+09 9.23 3.96 0.0645 14007096.0 +59 AUPH Aurinia Pharmaceuticals Inc. Healthcare Biotechnology Canada 1.320000e+09 NaN 9.09 0.0912 5665507.0 +129 AXSM Axsome Therapeutics Inc. Healthcare Biotechnology USA 3.000000e+09 NaN 68.19 0.0641 1863069.0 +15 AZ A2Z Smart Technologies Corp. Industrials Aerospace & Defense Canada 7.291000e+07 NaN 1.71 0.1325 61520.0 +33 BFLY Butterfly Network Inc. Healthcare Medical Devices USA 5.113400e+08 NaN 2.46 0.1081 2578906.0 +76 BFRG Bullfrog AI Holdings Inc. Healthcare Health Information Services USA 1.894000e+07 NaN 2.95 0.0806 403699.0 +61 BGRY Berkshire Grey Inc. Industrials Specialty Industrial Machinery USA 3.390600e+08 NaN 1.32 0.0909 843515.0 +72 BIVI BioVie Inc. Healthcare Biotechnology USA 2.972200e+08 NaN 7.69 0.0831 636821.0 +95 BKSY BlackSky Technology Inc. Technology Scientific & Technical Instruments USA 2.358300e+08 NaN 1.91 0.0730 543765.0 +117 BLI Berkeley Lights Inc. Healthcare Biotechnology USA 1.293900e+08 NaN 1.75 0.0671 633722.0 +55 BLX Banco Latinoamericano de Comercio Exterior S. A. Financial Banks - Regional Panama 6.727100e+08 8.24 18.30 0.0925 311037.0 +138 BNR Burning Rock Biotech Limited Healthcare Diagnostics & Research China 3.629700e+08 NaN 3.26 0.0619 177162.0 +30 BON Bon Natural Life Limited Consumer Defensive Packaged Foods China 2.901000e+07 3.30 2.45 0.1136 107052.0 +128 BRFH Barfresh Food Group Inc. Consumer Defensive Beverages - Non-Alcoholic USA 1.703000e+07 NaN 1.16 0.0642 24318.0 +132 BYRN Byrna Technologies Inc. Industrials Aerospace & Defense USA 1.858300e+08 NaN 8.27 0.0630 41566.0 +13 CCO Clear Channel Outdoor Holdings Inc. Communication Services Advertising Agencies USA 8.801500e+08 NaN 1.77 0.1419 4386783.0 +0 CDIO Cardio Diagnostics Holdings Inc. Healthcare Biotechnology USA 3.357000e+07 NaN 3.45 1.5847 100099160.0 +12 CDNA CareDx Inc Healthcare Diagnostics & Research USA 8.924700e+08 NaN 16.82 0.1434 2145992.0 +134 CECO CECO Environmental Corp. Industrials Pollution & Treatment Controls USA 5.400200e+08 53.16 15.63 0.0625 765578.0 +99 CENX Century Aluminum Company Basic Materials Aluminum USA 1.070000e+09 7.42 12.07 0.0700 2665182.0 +137 CETX Cemtrex Inc. Technology Software - Infrastructure USA 6.720000e+06 NaN 8.09 0.0622 10692.0 +53 CHCI Comstock Holding Companies Inc. Real Estate Real Estate - Diversified USA 5.918000e+07 6.26 6.44 0.0967 64010.0 +2 CHS Chico's FAS Inc. Consumer Cyclical Apparel Retail USA 7.147800e+08 6.40 5.75 0.1616 6759202.0 +14 CING Cingulate Inc. Healthcare Biotechnology USA 1.446000e+07 NaN 1.79 0.1329 1401411.0 +44 CJJD China Jo-Jo Drugstores Inc. Healthcare Pharmaceutical Retailers China 1.492000e+08 NaN 7.46 0.1019 156598.0 +9 CLOV Clover Health Investments Corp. Healthcare Healthcare Plans USA 6.598800e+08 NaN 1.32 0.1478 20513328.0 +78 CMCL Caledonia Mining Corporation Plc Basic Materials Gold USA 2.447200e+08 5.93 14.04 0.0800 74027.0 +25 CMND Clearmind Medicine Inc. Healthcare Biotechnology Canada 1.089000e+07 NaN 3.24 0.1172 34343.0 +5 CNSP CNS Pharmaceuticals Inc. Healthcare Biotechnology USA 2.350000e+06 NaN 1.85 0.1562 338736.0 +21 CNTB Connect Biopharma Holdings Limited Healthcare Biotechnology China 6.975000e+07 NaN 1.29 0.1217 194127.0 +83 COEP Coeptis Therapeutics Holdings Inc. Healthcare Biotechnology USA 3.224000e+07 13.98 1.65 0.0784 203948.0 +47 COIN Coinbase Global Inc. Financial Financial Data & Stock Exchanges USA 1.601000e+10 NaN 64.83 0.0996 24843894.0 +166 CRDF Cardiff Oncology Inc. Healthcare Biotechnology USA 8.344000e+07 NaN 1.73 0.0549 139553.0 +133 CRGO Freightos Limited Industrials Integrated Freight & Logistics Israel 2.479000e+08 NaN 4.40 0.0628 99095.0 +65 CTIB Yunhong CTI Ltd. Consumer Cyclical Specialty Retail USA 3.078000e+07 NaN 1.83 0.0893 40708.0 +167 CVNA Carvana Co. Consumer Cyclical Auto & Truck Dealerships USA 2.240000e+09 NaN 9.42 0.0549 20225034.0 +105 CXDO Crexendo Inc. Communication Services Telecom Services USA 4.608000e+07 NaN 2.00 0.0695 74009.0 +101 DBD Diebold Nixdorf Incorporated Technology Software - Application USA 2.626200e+08 NaN 3.22 0.0698 1377507.0 +56 DBGI Digital Brands Group Inc. Consumer Cyclical Apparel Retail USA 8.160000e+06 NaN 1.54 0.0922 1582629.0 +50 DLHC DLH Holdings Corp. Industrials Specialty Business Services USA 1.814300e+08 10.71 12.75 0.0982 68625.0 +31 DOMH Dominari Holdings Inc. Healthcare Biotechnology USA 2.291000e+07 NaN 4.02 0.1136 44559.0 +75 DPRO Draganfly Inc. Industrials Aerospace & Defense Canada 1.043500e+08 175.00 2.10 0.0825 612276.0 +20 DRQ Dril-Quip Inc. Energy Oil & Gas Equipment & Services USA 1.160000e+09 NaN 34.25 0.1237 610429.0 +16 DUOT Duos Technologies Group Inc. Technology Software - Application USA 3.232000e+07 NaN 5.18 0.1322 226033.0 +69 DYAI Dyadic International Inc. Healthcare Biotechnology USA 4.033000e+07 NaN 1.37 0.0873 12204.0 +147 EDBL Edible Garden AG Incorporated Consumer Defensive Farm Products USA 8.340000e+06 NaN 3.39 0.0594 120986.0 +142 EH EHang Holdings Limited Industrials Aerospace & Defense China 6.855900e+08 NaN 11.48 0.0600 1002032.0 +91 ENVX Enovix Corporation Industrials Electrical Equipment & Parts USA 1.520000e+09 NaN 9.22 0.0746 4405546.0 +108 ESTA Establishment Labs Holdings Inc. Healthcare Medical Devices Costa Rica 1.820000e+09 NaN 71.66 0.0689 298301.0 +93 FA First Advantage Corporation Industrials Specialty Business Services USA 2.220000e+09 36.92 14.51 0.0740 579272.0 +18 FOUR Shift4 Payments Inc. Technology Software - Infrastructure USA 5.390000e+09 163.71 64.50 0.1304 4936592.0 +67 FTCI FTC Solar Inc. Technology Solar USA 3.311900e+08 NaN 3.07 0.0887 1500641.0 +149 FUTU Futu Holdings Limited Financial Capital Markets Hong Kong 7.450000e+09 22.94 49.21 0.0590 2959332.0 +7 GGE Green Giant Inc. Real Estate Real Estate - Development China 1.340700e+08 NaN 2.37 0.1505 21798.0 +38 GNPX Genprex Inc. Healthcare Biotechnology USA 6.287000e+07 NaN 1.28 0.1034 534141.0 +11 GOGO Gogo Inc. Communication Services Telecom Services USA 2.200000e+09 10.99 16.46 0.1438 1542316.0 +123 GPCR Structure Therapeutics Inc. Healthcare Biotechnology USA 9.355000e+08 NaN 25.56 0.0650 60619.0 +36 GRFX Graphex Group Limited Basic Materials Other Industrial Metals & Mining Hong Kong 5.822000e+07 NaN 1.76 0.1069 81932.0 +163 GRPH Graphite Bio Inc. Healthcare Biotechnology USA 1.547800e+08 NaN 2.63 0.0562 176325.0 +102 GRRR Gorilla Technology Group Inc. Technology Software - Infrastructure Taiwan 5.528900e+08 NaN 7.71 0.0697 32262.0 +39 GSAT Globalstar Inc. Communication Services Telecom Services USA 2.390000e+09 NaN 1.28 0.1034 9356512.0 +158 GSHD Goosehead Insurance Inc Financial Insurance - Diversified USA 1.730000e+09 2332.50 46.65 0.0573 432319.0 +130 GTEC Greenland Technologies Holding Corporation Industrials Specialty Industrial Machinery USA 3.005000e+07 5.13 2.17 0.0637 31561.0 +175 HCM HUTCHMED (China) Limited Healthcare Drug Manufacturers - Specialty & Generic Hong Kong 2.880000e+09 NaN 16.55 0.0535 201450.0 +136 HIPO Hippo Holdings Inc. Financial Insurance - Specialty USA 4.006500e+08 NaN 17.21 0.0623 105293.0 +94 HOTH Hoth Therapeutics Inc. Healthcare Biotechnology USA 4.040000e+06 NaN 2.91 0.0738 1089768.0 +181 HROW Harrow Health Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 5.252400e+08 NaN 17.92 0.0516 462882.0 +10 HSII Heidrick & Struggles International Inc. Industrials Staffing & Employment Services USA 6.996500e+08 9.23 34.33 0.1474 455535.0 +86 HTGM HTG Molecular Diagnostics Inc. Healthcare Diagnostics & Research USA 7.290000e+06 NaN 3.59 0.0781 278852.0 +4 HYPR Hyperfine Inc. Healthcare Medical Devices USA 1.192200e+08 NaN 1.61 0.1583 1064605.0 +89 ICD Independence Contract Drilling Inc. Energy Oil & Gas Drilling USA 4.986000e+07 NaN 3.80 0.0765 149828.0 +97 IIPR Innovative Industrial Properties Inc. Real Estate REIT - Industrial USA 2.330000e+09 17.00 88.41 0.0714 780148.0 +35 ILAG Intelligent Living Application Group Inc. Industrials Building Products & Equipment Hong Kong 2.461000e+07 NaN 1.34 0.1074 7407350.0 +157 INSW International Seaways Inc. Energy Oil & Gas Midstream USA 2.450000e+09 18.86 51.44 0.0578 2173649.0 +62 INTZ Intrusion Inc. Technology Software - Infrastructure USA 5.622000e+07 NaN 2.42 0.0901 16811.0 +143 ISO IsoPlexis Corporation Healthcare Medical Devices USA 4.367000e+07 NaN 1.06 0.0600 59812.0 +84 ISUN iSun Inc. Technology Solar USA 2.122000e+07 NaN 1.38 0.0781 39688.0 +87 ITRI Itron Inc. Technology Scientific & Technical Instruments USA 2.560000e+09 NaN 55.77 0.0779 592725.0 +154 IXHL Incannex Healthcare Limited Healthcare Drug Manufacturers - Specialty & Generic Australia 1.637000e+08 NaN 2.55 0.0581 11497.0 +118 JFU 9F Inc. Technology Information Technology Services China 2.628000e+07 NaN 2.24 0.0667 84047.0 +90 JRVR James River Group Holdings Ltd. Financial Insurance - Specialty Bermuda 9.170100e+08 NaN 24.10 0.0749 376197.0 +98 KAL Kalera Public Limited Company Consumer Defensive Farm Products USA 4.520000e+06 NaN 4.66 0.0713 291222.0 +160 KULR KULR Technology Group Inc. Technology Electronic Components USA 1.514800e+08 NaN 1.31 0.0565 1318247.0 +77 LAW CS Disco Inc. Technology Software - Application USA 5.876500e+08 NaN 7.00 0.0802 876122.0 +131 LCTX Lineage Cell Therapeutics Inc. Healthcare Biotechnology USA 2.389100e+08 NaN 1.35 0.0630 264324.0 +1 LION Lionheart III Corp Financial Shell Companies USA 2.419200e+08 NaN 14.60 1.0563 739802.0 +92 LOOP Loop Industries Inc. Basic Materials Specialty Chemicals Canada 1.218900e+08 NaN 2.60 0.0744 35421.0 +139 LWLG Lightwave Logic Inc. Basic Materials Specialty Chemicals USA 7.166700e+08 NaN 5.90 0.0612 739016.0 +122 MCG Membership Collective Group Inc. Consumer Cyclical Lodging USA 3.854100e+08 NaN 6.69 0.0653 252929.0 +174 MEGL Magic Empire Global Limited Financial Capital Markets Hong Kong 3.683000e+07 80.45 1.77 0.0536 153745.0 +162 MFIN Medallion Financial Corp. Financial Credit Services USA 1.949400e+08 4.60 8.45 0.0562 131481.0 +170 MNSO MINISO Group Holding Limited Consumer Cyclical Specialty Retail China 6.390000e+09 42.72 17.90 0.0542 13542189.0 +153 MOVE Movano Inc. Healthcare Medical Devices USA 4.450000e+07 NaN 1.27 0.0583 60538.0 +27 MRSN Mersana Therapeutics Inc. Healthcare Biotechnology USA 6.441800e+08 NaN 6.06 0.1160 1302610.0 +17 MSC Studio City International Holdings Limited Consumer Cyclical Resorts & Casinos Hong Kong 1.650000e+09 NaN 7.00 0.1309 38358.0 +104 MULN Mullen Automotive Inc. Consumer Cyclical Auto Manufacturers USA 4.244000e+08 NaN 0.23 0.0696 238359920.0 +68 MUX McEwen Mining Inc. Basic Materials Other Precious Metals & Mining Canada 3.325200e+08 NaN 6.80 0.0880 800089.0 +144 NAUT Nautilus Biotechnology Inc. Healthcare Biotechnology USA 2.747700e+08 NaN 2.12 0.0600 109728.0 +63 NBY NovaBay Pharmaceuticals Inc. Healthcare Biotechnology USA 4.420000e+06 NaN 2.30 0.0900 29723.0 +28 NCNA NuCana plc Healthcare Biotechnology United Kingdom 9.835000e+07 NaN 1.45 0.1154 60524.0 +150 NCTY The9 Limited Communication Services Electronic Gaming & Multimedia China 2.817000e+07 NaN 1.08 0.0588 99372.0 +32 NGL NGL Energy Partners LP Energy Oil & Gas Midstream USA 4.078500e+08 NaN 3.44 0.1097 2528463.0 +179 NM Navios Maritime Holdings Inc. Industrials Marine Shipping Cayman Islands 5.911000e+07 NaN 2.80 0.0526 168721.0 +52 NNVC NanoViricides Inc. Healthcare Biotechnology USA 1.689000e+07 NaN 1.38 0.0972 72467.0 +173 NUTX Nutex Health Inc. Healthcare Health Information Services USA 9.679200e+08 NaN 1.37 0.0538 958889.0 +114 NVAX Novavax Inc. Healthcare Biotechnology USA 8.091400e+08 NaN 9.26 0.0681 11462643.0 +126 NVTA Invitae Corporation Healthcare Diagnostics & Research USA 5.570200e+08 NaN 2.15 0.0644 9365563.0 +155 ODV Osisko Development Corp. Basic Materials Gold Canada 4.624400e+08 NaN 4.38 0.0580 24847.0 +109 OLK Olink Holding AB (publ) Healthcare Diagnostics & Research Sweden 2.960000e+09 NaN 23.44 0.0689 171895.0 +171 OLMA Olema Pharmaceuticals Inc. Healthcare Biotechnology USA 1.751900e+08 NaN 4.10 0.0540 42010.0 +34 OMGA Omega Therapeutics Inc. Healthcare Biotechnology USA 3.169300e+08 NaN 6.46 0.1081 113341.0 +60 OUST Ouster Inc. Technology Electronic Components USA 4.765000e+08 NaN 1.20 0.0909 2677185.0 +6 PBLA Panbela Therapeutics Inc. Healthcare Biotechnology USA 8.840000e+06 NaN 1.37 0.1513 3973317.0 +57 PIXY ShiftPixy Inc. Industrials Staffing & Employment Services USA 4.942000e+07 NaN 5.11 0.0919 210951.0 +96 PLM PolyMet Mining Corp. Basic Materials Other Industrial Metals & Mining USA 2.615000e+08 NaN 2.50 0.0730 179881.0 +49 PPTA Perpetua Resources Corp. Basic Materials Other Precious Metals & Mining USA 3.116600e+08 NaN 3.57 0.0985 115746.0 +148 PRIM Primoris Services Corporation Industrials Engineering & Construction USA 1.450000e+09 12.24 27.50 0.0593 924778.0 +66 PXMD PaxMedica Inc. Healthcare Biotechnology USA 2.500000e+07 NaN 2.08 0.0890 102509.0 +74 QH Quhuo Limited Technology Software - Application China 8.630000e+06 NaN 1.44 0.0827 42565.0 +43 RCON Recon Technology Ltd. Energy Oil & Gas Equipment & Services China 7.150000e+07 4.76 2.05 0.1022 1381984.0 +22 RDNT RadNet Inc. Healthcare Diagnostics & Research USA 1.380000e+09 NaN 23.58 0.1204 688194.0 +164 RLMD Relmada Therapeutics Inc. Healthcare Biotechnology USA 1.089700e+08 NaN 3.60 0.0557 207424.0 +41 ROVR Rover Group Inc. Consumer Cyclical Personal Services USA 7.821600e+08 NaN 4.18 0.1029 1000494.0 +51 RVMD Revolution Medicines Inc. Healthcare Biotechnology USA 2.380000e+09 NaN 26.76 0.0981 5593266.0 +165 RXRX Recursion Pharmaceuticals Inc. Healthcare Biotechnology USA 1.590000e+09 NaN 8.15 0.0557 1362852.0 +64 SCU Sculptor Capital Management Inc. Financial Asset Management USA 5.312900e+08 NaN 8.97 0.0899 653746.0 +70 SDPI Superior Drilling Products Inc. Energy Oil & Gas Equipment & Services USA 3.272000e+07 23.27 1.14 0.0853 272010.0 +113 SHPH Shuttle Pharmaceuticals Holdings Inc. Healthcare Drug Manufacturers - Specialty & Generic USA 2.687000e+07 NaN 1.88 0.0682 40273.0 +29 SKIN The Beauty Health Company Consumer Defensive Household & Personal Products USA 1.720000e+09 70.06 12.61 0.1140 6050024.0 +24 SKYT SkyWater Technology Inc. Technology Semiconductors USA 5.794300e+08 NaN 13.13 0.1174 1111233.0 +110 SLNO Soleno Therapeutics Inc. Healthcare Biotechnology USA 1.699000e+07 NaN 2.03 0.0684 57839.0 +168 SNBR Sleep Number Corporation Consumer Cyclical Furnishings, Fixtures & Appliances USA 8.829000e+08 24.83 39.86 0.0548 448341.0 +146 SNCR Synchronoss Technologies Inc. Technology Software - Infrastructure USA 9.825000e+07 NaN 1.07 0.0594 111641.0 +82 SOPA Society Pass Incorporated Technology Software - Application Singapore 2.958000e+07 NaN 1.10 0.0784 344242.0 +80 SOPH SOPHiA GENETICS SA Healthcare Health Information Services Switzerland 1.898000e+08 NaN 2.60 0.0788 41698.0 +135 STIX Semantix Inc. Technology Software - Application Brazil 2.332100e+08 NaN 3.40 0.0625 188753.0 +156 SWAG Stran & Company Inc. Communication Services Advertising Agencies USA 3.215000e+07 NaN 1.83 0.0579 41844.0 +112 TCRR TCR2 Therapeutics Inc. Healthcare Biotechnology USA 5.227000e+07 NaN 1.25 0.0684 234751.0 +79 TDW Tidewater Inc. Energy Oil & Gas Equipment & Services USA 2.440000e+09 NaN 48.84 0.0793 1519154.0 +42 THMO ThermoGenesis Holdings Inc. Healthcare Medical Devices USA 3.410000e+06 NaN 3.22 0.1027 26165.0 +88 TKLF Yoshitsu Co. Ltd Consumer Defensive Household & Personal Products Japan 4.433000e+07 11.80 1.18 0.0776 41188.0 +140 TNGX Tango Therapeutics Inc. Healthcare Biotechnology USA 4.802200e+08 NaN 5.23 0.0609 161934.0 +177 TNYA Tenaya Therapeutics Inc. Healthcare Biotechnology USA 2.140100e+08 NaN 3.07 0.0532 245867.0 +19 TRDA Entrada Therapeutics Inc. Healthcare Biotechnology USA 4.170500e+08 NaN 12.75 0.1283 91273.0 +151 TRVN Trevena Inc. Healthcare Biotechnology USA 8.550000e+06 NaN 1.08 0.0588 35252.0 +172 TWLO Twilio Inc. Communication Services Internet Content & Information USA 1.254000e+10 NaN 67.21 0.0539 11497556.0 +37 TYRA Tyra Biosciences Inc. Healthcare Biotechnology USA 5.435900e+08 NaN 13.21 0.1064 30531.0 +107 USAP Universal Stainless & Alloy Products Inc. Basic Materials Steel USA 8.611000e+07 NaN 9.73 0.0692 50727.0 +152 UVE Universal Insurance Holdings Inc. Financial Insurance - Property & Casualty USA 4.902100e+08 NaN 19.33 0.0586 870749.0 +124 VACC Vaccitech plc Healthcare Biotechnology United Kingdom 1.232100e+08 7.50 2.79 0.0649 16656.0 +115 VANI Vivani Medical Inc. Healthcare Medical Devices USA 5.845000e+07 NaN 1.10 0.0680 28435.0 +169 VINC Vincerx Pharma Inc. Healthcare Biotechnology USA 2.523000e+07 NaN 1.16 0.0545 50389.0 +103 VLCN Volcon Inc. Consumer Cyclical Auto Manufacturers USA 4.230000e+07 NaN 1.69 0.0696 263204.0 +100 VMEO Vimeo Inc. Technology Software - Application USA 6.709800e+08 NaN 3.83 0.0698 3840159.0 +48 VRTV Veritiv Corporation Industrials Conglomerates USA 2.110000e+09 6.95 151.44 0.0995 344220.0 +3 VTNR Vertex Energy Inc. Energy Oil & Gas Refining & Marketing USA 7.436800e+08 NaN 9.47 0.1591 11711654.0 +119 VZIO VIZIO Holding Corp. Technology Consumer Electronics USA 2.020000e+09 NaN 10.25 0.0666 1124843.0 +180 VZLA Vizsla Silver Corp. Basic Materials Other Industrial Metals & Mining Canada 3.257400e+08 NaN 1.32 0.0518 130191.0 +46 WIMI WiMi Hologram Cloud Inc. Communication Services Advertising Agencies China 1.096900e+08 NaN 1.19 0.1019 387869.0 +161 WKHS Workhorse Group Inc. Consumer Cyclical Auto Manufacturers USA 3.522400e+08 NaN 2.06 0.0564 3301611.0 +145 X United States Steel Corporation Basic Materials Steel USA 6.950000e+09 3.43 30.63 0.0595 9773440.0 +85 XERS Xeris Biopharma Holdings Inc. Healthcare Biotechnology USA 1.847000e+08 NaN 1.38 0.0781 1836987.0 +23 XPON Expion360 Inc. Industrials Electrical Equipment & Parts USA 3.165000e+07 NaN 4.47 0.1175 604501.0 +45 XRAY DENTSPLY SIRONA Inc. Healthcare Medical Instruments & Supplies USA 8.390000e+09 NaN 38.07 0.1019 5997282.0 +178 YEXT Yext Inc. Technology Software - Infrastructure USA 9.185300e+08 NaN 7.34 0.0531 1114565.0 +116 YGMZ MingZhu Logistics Holdings Limited Industrials Trucking China 3.383000e+07 36.67 1.43 0.0672 42664.0 +176 ZEUS Olympic Steel Inc. Basic Materials Steel USA 5.764500e+08 5.42 52.50 0.0534 217386.0 diff --git a/tests/openbb_terminal/test_sources.py b/tests/openbb_terminal/test_sources.py index 33d9c635d780..19699dccc2af 100644 --- a/tests/openbb_terminal/test_sources.py +++ b/tests/openbb_terminal/test_sources.py @@ -4,7 +4,7 @@ def test_sources_load(): - with open(DATA_SOURCES_DEFAULT_FILE) as json_file: + with open(DATA_SOURCES_DEFAULT_FILE, encoding="utf-8", newline="\n") as json_file: json_doc = json.load(json_file) assert isinstance(json_doc, dict) assert "stocks" in json_doc diff --git a/website/content/terminal/reference/generate_index.py b/website/content/terminal/reference/generate_index.py deleted file mode 100644 index df1def212834..000000000000 --- a/website/content/terminal/reference/generate_index.py +++ /dev/null @@ -1,41 +0,0 @@ -import os - -# This script is used to generate the index.mdx files for the terminal -# reference section of the docs Copy paste the output of the -# .txt file into the section it generates relative to the index.mdx file - -# TODO - we need to make Terminal behave like the other 2 menus - so we can use this - -# get the file names of all the files in a given relative path -files_terminal = os.listdir(os.path.join(os.getcwd())) -print(files_terminal) - -# remove last entry in a list cause it is not needed - category.json file -files_terminal.pop() - -print(files_terminal) - - -# create discord reference card -with open(os.path.join(os.getcwd(), "terminal.txt"), "w") as f: - for x in files_terminal: - desc_text = [] - # if x is index.mdx or index.md then skip - if x == "index.md" or x == "index.mdx" or x == "generate_index.py": - pass - else: - description = os.listdir(os.path.join(os.getcwd(), x)) - for xx in description: - if ( - xx == "index.md" - or xx == "index.mdx" - or xx == "generate_index.py" - or xx == "_category_.json" - ): - pass - else: - desc_text.append(os.path.splitext(xx)[0]) - f.write( - '\n'.format( - x, ", ".join(desc_text), x - ) - ) diff --git a/website/controller_doc_classes.py b/website/controller_doc_classes.py index f767be7acb81..39efdc45970f 100644 --- a/website/controller_doc_classes.py +++ b/website/controller_doc_classes.py @@ -16,6 +16,7 @@ import openbb_terminal import openbb_terminal.config_terminal as cfg from openbb_terminal.core.plots.backend import plots_backend +from openbb_terminal.core.session.current_system import set_system_variable from openbb_terminal.core.session.current_user import get_current_user # noqa: F401 from openbb_terminal.decorators import disable_check_api from openbb_terminal.helper_funcs import ( @@ -29,6 +30,8 @@ from openbb_terminal.sdk import openbb from openbb_terminal.stocks.comparison_analysis import finviz_compare_model +set_system_variable("TEST_MODE", True) +set_system_variable("LOG_COLLECT", False) disable_check_api() diff --git a/website/generate_sdk_markdown.py b/website/generate_sdk_markdown.py index dbcb6416c2e0..537dcc0e41a4 100644 --- a/website/generate_sdk_markdown.py +++ b/website/generate_sdk_markdown.py @@ -8,7 +8,10 @@ from docstring_parser import parse from openbb_terminal.core.sdk.trailmap import Trailmap, get_trailmaps +from openbb_terminal.core.session.current_system import set_system_variable +set_system_variable("TEST_MODE", True) +set_system_variable("LOG_COLLECT", False) website_path = Path(__file__).parent.absolute() reference_import = """ diff --git a/website/generate_terminal_markdown.py b/website/generate_terminal_markdown.py index a54187d5c280..76fc8d2dfd26 100644 --- a/website/generate_terminal_markdown.py +++ b/website/generate_terminal_markdown.py @@ -8,6 +8,7 @@ from textwrap import shorten from typing import Dict, List, TextIO, Union +from openbb_terminal.core.session.current_system import set_system_variable from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.rich_config import console from website.controller_doc_classes import ( @@ -16,6 +17,8 @@ sub_names_full as subnames, ) +set_system_variable("TEST_MODE", True) +set_system_variable("LOG_COLLECT", False) website_path = Path(__file__).parent.absolute() reference_import = """ From addd4f7727033649b71a7467ba8c1d85627a5813 Mon Sep 17 00:00:00 2001 From: Henrique Joaquim Date: Fri, 12 May 2023 10:02:14 +0100 Subject: [PATCH 59/70] Feature/improve posthog logs (#4951) * improving handling of logging handlers * removing alias * lint * removing debug print * adding alias back * adding the commithash to the system so it gets logged * doing posthog on hub_user login * ruff * tacking this on - docs update * identify and alias together * fixing conditions * the juan way * ruff * don't send logs to S3 if posthog is an active handler * branch name on the posthog logs * removing duplicate import * fixing tests --------- Co-authored-by: andrewkenreich Co-authored-by: James Maslek --- .../core/log/collection/log_sender.py | 1 + .../core/log/generation/settings.py | 7 ++- openbb_terminal/core/models/system_model.py | 34 +++++++++- openbb_terminal/loggers.py | 62 ++++++++++++++----- tests/openbb_terminal/core/log/conftest.py | 2 +- .../core/log/generation/test_settings.py | 4 +- tests/openbb_terminal/test_loggers.py | 10 ++- .../content/bot/usage/customizing/server.md | 15 ++++- 8 files changed, 107 insertions(+), 28 deletions(-) diff --git a/openbb_terminal/core/log/collection/log_sender.py b/openbb_terminal/core/log/collection/log_sender.py index a4a33b21fee5..8bcbcd89e8d4 100644 --- a/openbb_terminal/core/log/collection/log_sender.py +++ b/openbb_terminal/core/log/collection/log_sender.py @@ -115,6 +115,7 @@ def check_sending_conditions(self, file: Path) -> bool: self.start_required() and not self.max_fails_reached() and not self.max_size_exceeded(file=file) + and get_current_system().LOGGING_SEND_TO_S3 ) def fails_increment(self): diff --git a/openbb_terminal/core/log/generation/settings.py b/openbb_terminal/core/log/generation/settings.py index fd637ada0a38..cec4e0c50df3 100644 --- a/openbb_terminal/core/log/generation/settings.py +++ b/openbb_terminal/core/log/generation/settings.py @@ -3,6 +3,7 @@ from pathlib import Path # IMPORTATION THIRDPARTY +from typing import List # IMPORTATION INTERNAL @@ -84,7 +85,7 @@ def frequency(self) -> str: return self.__frequency @property - def handler_list(self) -> str: + def handler_list(self) -> List[str]: return self.__handler_list @property @@ -99,7 +100,7 @@ def __init__( self, directory: Path, frequency: str, - handler_list: str, + handler_list: List[str], rolling_clock: bool, verbosity: int, ): @@ -107,7 +108,7 @@ def __init__( Args: directory (Path): Directory used to store log files. frequency (str): Frequency of the log files rotation. - handler_list (str) : Comma separated list of handlers : stdout,stderr,noop,file. + handler_list (List[str]) : list of handlers : stdout,stderr,noop,file,posthog. rolling_clock (bool): Whether or not to start a Thread to rotate logs even when inactive. verbosity (str): Verbosity level as defined in Python `logging` module. """ diff --git a/openbb_terminal/core/models/system_model.py b/openbb_terminal/core/models/system_model.py index 01a811436b2a..b902148482fb 100644 --- a/openbb_terminal/core/models/system_model.py +++ b/openbb_terminal/core/models/system_model.py @@ -1,6 +1,7 @@ import platform -from typing import Literal +from typing import List, Literal +from pydantic import Field, root_validator, validator from pydantic.dataclasses import dataclass from openbb_terminal.core.models import BaseModel @@ -35,12 +36,14 @@ class SystemModel(BaseModel): LOGGING_AWS_ACCESS_KEY_ID: str = "REPLACE_ME" LOGGING_AWS_SECRET_ACCESS_KEY: str = "REPLACE_ME" LOGGING_COMMIT_HASH: str = "REPLACE_ME" + LOGGING_BRANCH: str = "REPLACE_ME" LOGGING_FREQUENCY: Literal["D", "H", "M", "S"] = "H" - LOGGING_HANDLERS: Literal["stdout", "stderr", "noop", "file"] = "file" + LOGGING_HANDLERS: List[str] = Field(default_factory=lambda: ["file"]) LOGGING_ROLLING_CLOCK: bool = False LOGGING_VERBOSITY: int = 20 LOGGING_SUB_APP: str = "terminal" LOGGING_SUPPRESS: bool = False + LOGGING_SEND_TO_S3: bool = True LOG_COLLECT: bool = True # Personalization section @@ -56,3 +59,30 @@ class SystemModel(BaseModel): def __repr__(self) -> str: # pylint: disable=useless-super-delegation return super().__repr__() + + @root_validator + @classmethod + def add_additional_handlers(cls, values): + if ( + not any([values["TEST_MODE"], values["LOGGING_SUPPRESS"]]) + and values["LOG_COLLECT"] + and "posthog" not in values["LOGGING_HANDLERS"] + ): + values["LOGGING_HANDLERS"].append("posthog") + + return values + + @root_validator + @classmethod + def validate_send_to_s3(cls, values): + if "posthog" in values["LOGGING_HANDLERS"] or values["LOG_COLLECT"] is False: + values["LOGGING_SEND_TO_S3"] = False + return values + + @validator("LOGGING_HANDLERS") + @classmethod + def validate_logging_handlers(cls, v): + for value in v: + if value not in ["stdout", "stderr", "noop", "file", "posthog"]: + raise ValueError("Invalid logging handler") + return v diff --git a/openbb_terminal/loggers.py b/openbb_terminal/loggers.py index 3abf4b0f870e..8026d8429576 100644 --- a/openbb_terminal/loggers.py +++ b/openbb_terminal/loggers.py @@ -42,14 +42,15 @@ ) from openbb_terminal.core.session.current_system import ( get_current_system, - set_current_system, + set_system_variable, ) +from openbb_terminal.helper_funcs import request logger = logging.getLogger(__name__) -current_system = get_current_system() +logging_verbosity = get_current_system().LOGGING_VERBOSITY -logging.getLogger("requests").setLevel(current_system.LOGGING_VERBOSITY) -logging.getLogger("urllib3").setLevel(current_system.LOGGING_VERBOSITY) +logging.getLogger("requests").setLevel(logging_verbosity) +logging.getLogger("urllib3").setLevel(logging_verbosity) def get_app_id() -> str: @@ -80,8 +81,9 @@ def get_session_id() -> str: def get_commit_hash(use_env=True) -> str: """Get Commit Short Hash""" - if use_env and current_system.LOGGING_COMMIT_HASH != "REPLACE_ME": - return current_system.LOGGING_COMMIT_HASH + logging_commit_hash = get_current_system().LOGGING_COMMIT_HASH + if use_env and logging_commit_hash != "REPLACE_ME": + return logging_commit_hash git_dir = Path(__file__).parent.parent.joinpath(".git") @@ -96,6 +98,34 @@ def get_commit_hash(use_env=True) -> str: return commit_hash +def get_branch() -> str: + def get_branch_commit_hash(branch: str) -> str: + response = request( + url=f"https://api.github.com/repos/openbb-finance/openbbterminal/branches/{branch}" + ) + return "sha:" + response.json()["commit"]["sha"][:8] + + current_commit_hash = get_commit_hash() + + for branch in ["main", "develop"]: + try: + if get_branch_commit_hash(branch) == current_commit_hash: + return branch + except Exception: + pass + + git_dir = Path(__file__).parent.parent.joinpath(".git") + if WITH_GIT and git_dir.is_dir(): + try: + repo = git.Repo(path=git_dir) + branch = repo.active_branch.name + return branch + except Exception: + pass + + return "unknown-branch" + + class PosthogHandler(logging.Handler): """Posthog Handler""" @@ -174,7 +204,8 @@ def extract_log_extra(self, record: logging.LogRecord) -> Dict[str, Any]: "commitHash": self.app_settings.commit_hash, "platform": platform(), "pythonVersion": python_version(), - "terminalVersion": current_system.VERSION, + "terminalVersion": get_current_system().VERSION, + "branch": get_current_system().LOGGING_BRANCH, } if get_user_uuid() != NO_USER_PLACEHOLDER: @@ -245,7 +276,7 @@ def setup_handlers(settings: Settings): handlers=[], ) - for handler_type in handler_list.split(","): + for handler_type in handler_list: if handler_type == "stdout": add_stdout_handler(settings=settings) elif handler_type == "stderr": @@ -254,6 +285,8 @@ def setup_handlers(settings: Settings): add_noop_handler(settings=settings) elif handler_type == "file": add_file_handler(settings=settings) + elif handler_type == "posthog": + add_posthog_handler(settings=settings) else: logger.debug("Unknown log handler.") @@ -266,12 +299,6 @@ def setup_handlers(settings: Settings): FormatterWithExceptions.LOGFORMAT.replace("|", "-"), ) - if ( - not any([current_system.TEST_MODE, current_system.LOGGING_SUPPRESS]) - and current_system.LOG_COLLECT - ): - add_posthog_handler(settings=settings) - def setup_logging( app_name: Optional[str] = None, @@ -279,6 +306,7 @@ def setup_logging( verbosity: Optional[int] = None, ) -> None: """Setup Logging""" + current_system = get_current_system() # AppSettings commit_hash = get_commit_hash() @@ -286,9 +314,11 @@ def setup_logging( identifier = get_app_id() session_id = get_session_id() user_id = get_user_uuid() + branch = get_branch() - current_system.LOGGING_APP_ID = identifier - set_current_system(current_system) + set_system_variable("LOGGING_APP_ID", identifier) + set_system_variable("LOGGING_COMMIT_HASH", commit_hash) + set_system_variable("LOGGING_BRANCH", branch) # AWSSettings aws_access_key_id = current_system.LOGGING_AWS_ACCESS_KEY_ID diff --git a/tests/openbb_terminal/core/log/conftest.py b/tests/openbb_terminal/core/log/conftest.py index 6069187d858b..f79043b59af7 100644 --- a/tests/openbb_terminal/core/log/conftest.py +++ b/tests/openbb_terminal/core/log/conftest.py @@ -25,7 +25,7 @@ def settings(tmp_path): log_settings=LogSettings( directory=tmp_path, frequency="H", - handler_list="file", + handler_list=["file"], rolling_clock=False, verbosity=20, ), diff --git a/tests/openbb_terminal/core/log/generation/test_settings.py b/tests/openbb_terminal/core/log/generation/test_settings.py index a02c06badf7b..0c5ae369c292 100644 --- a/tests/openbb_terminal/core/log/generation/test_settings.py +++ b/tests/openbb_terminal/core/log/generation/test_settings.py @@ -43,7 +43,7 @@ def test_app_settings(): def test_log_settings(tmp_path): directory = tmp_path frequency = "MOCK_FREQUENCY" - handler_list = "MOCK_HANDLER_LIST" + handler_list = ["MOCK_HANDLER_LIST"] rolling_clock = "MOCK_ROLLING_CLOCK" verbosity = 20 @@ -65,7 +65,7 @@ def test_log_settings(tmp_path): def test_settings(tmp_path): directory = tmp_path frequency = "MOCK_FREQUENCY" - handler_list = "MOCK_HANDLER_LIST" + handler_list = ["MOCK_HANDLER_LIST"] rolling_clock = "MOCK_ROLLING_CLOCK" verbosity = 20 log_settings = LogSettings( diff --git a/tests/openbb_terminal/test_loggers.py b/tests/openbb_terminal/test_loggers.py index 73b978277dd9..05d6643c5ab5 100644 --- a/tests/openbb_terminal/test_loggers.py +++ b/tests/openbb_terminal/test_loggers.py @@ -25,7 +25,7 @@ log_settings=LogSettings( directory=Path("."), frequency="H", - handler_list="file", + handler_list=["file"], rolling_clock=False, verbosity=20, ), @@ -67,9 +67,13 @@ def test_get_commit_hash(mocker, git): def test_get_commit_hash_obff(mocker): + class MockSystem: # pylint: disable=too-few-public-methods + def __init__(self): + self.LOGGING_COMMIT_HASH = "MOCK_COMMIT_HASH" + mocker.patch( - "openbb_terminal.loggers.current_system.LOGGING_COMMIT_HASH", - "MOCKING_COMMIT_HASH", + "openbb_terminal.loggers.get_current_system", + MockSystem, ) value = loggers.get_commit_hash() assert value diff --git a/website/content/bot/usage/customizing/server.md b/website/content/bot/usage/customizing/server.md index 822f2e9a4ccd..287d8f2b0e34 100644 --- a/website/content/bot/usage/customizing/server.md +++ b/website/content/bot/usage/customizing/server.md @@ -28,10 +28,23 @@ We currently offer the following Auto Posting Categories: | Category | Description | Choices | | ---- | ----------- | ------- | -| Flow | Options Flow for all stocks | Opening, Golden Sweep, Large, Unusual, Weekly, Above Ask/Below Bid | +| Flow | Options Flow for all stocks | Opening, Golden Sweep, Large, Unusual, Weekly, Above Ask/Below Bid, Sell to Open, Buy to Open, Whale | | Darkpool | Darkpool Data for the market | Large | | Heatmap | Overview of the market | S&P 500, Dow Jones 30, NASDAQ 100, Russell 1000, Russell 2000, Crypto, Heatchart | +For a further breakdown on what each Flow Auto Post entails - See below + +| Type | Description | +| ---- | ----------- | +| Opening | "Premium > $200,000" & "Volume > Open Interest" | +| Golden Sweep | "Premium > $1,000,000" & "Volume > Open Interest" & "Trade Type is SWEEP" | +| Large | "Premium > $500,000" | +| Unusual | "Premium > $200,000" & "Unusual" (high ratio of volume to open interest) | +| Weekly | "Premium > $200,000" & "Days to Expiration < 7" | +| Above Ask/Below Bid | "Premium > $200,000" & "Side is Above Ask or Below Bid" | +| Sell to Open | "Premium > $1,000,000" & "Volume > Open Interest" & "Trade Type is Below Bed" | +| Buy to Open | "Premium > $1,000,000" & "Volume > Open Interest" & "Trade Type is Above Ask" | +| Whale | "Premium > $1.000,000" & "Days to Expiration < 45" | ### Charting From c642dc108da1c0444d9f784fcd31e17f2b140637 Mon Sep 17 00:00:00 2001 From: teh_coderer Date: Sat, 13 May 2023 16:23:35 -0500 Subject: [PATCH 60/70] Update system_model.py (#5017) --- openbb_terminal/core/models/system_model.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openbb_terminal/core/models/system_model.py b/openbb_terminal/core/models/system_model.py index b902148482fb..24907fbe33d3 100644 --- a/openbb_terminal/core/models/system_model.py +++ b/openbb_terminal/core/models/system_model.py @@ -60,7 +60,7 @@ class SystemModel(BaseModel): def __repr__(self) -> str: # pylint: disable=useless-super-delegation return super().__repr__() - @root_validator + @root_validator(allow_reuse=True) @classmethod def add_additional_handlers(cls, values): if ( @@ -72,14 +72,14 @@ def add_additional_handlers(cls, values): return values - @root_validator + @root_validator(allow_reuse=True) @classmethod def validate_send_to_s3(cls, values): if "posthog" in values["LOGGING_HANDLERS"] or values["LOG_COLLECT"] is False: values["LOGGING_SEND_TO_S3"] = False return values - @validator("LOGGING_HANDLERS") + @validator("LOGGING_HANDLERS", allow_reuse=True) @classmethod def validate_logging_handlers(cls, v): for value in v: From 3e0309816c2795a43f8c8f4ea095f35454e888ea Mon Sep 17 00:00:00 2001 From: teh_coderer Date: Mon, 15 May 2023 10:57:20 -0500 Subject: [PATCH 61/70] Hotfix/ Candle Lines, Tables/Charts Save (`MacOS`) (#5019) * init * fix tables save * Update .gitignore * Update utils.ts * add volume to csv, fix `-` filename * fixes #5020 * tests * License year * tests v1 * tests? * Revert "tests?" This reverts commit f837a6e0dfb6b67f3ff01f3759a61c27b9ca047e. * fix posthog * Update test_get_debt.yaml * tests --------- Co-authored-by: James Maslek --- .gitignore | 3 +- .../macOS/darwin/Resources/LICENSE.txt | 2 +- frontend-components/plotly/src/App.tsx | 2 + frontend-components/plotly/src/utils/utils.ts | 651 ++++++------- frontend-components/tables/src/App.tsx | 8 +- .../src/components/Table/ColumnHeader.tsx | 560 ++++++----- .../Table/DownloadFinishedDialog.tsx | 4 +- .../tables/src/components/Table/index.tsx | 12 +- frontend-components/tables/src/utils/utils.ts | 524 +++++----- openbb_terminal/core/plots/plotly.html | 4 +- openbb_terminal/core/plots/plotly_helper.py | 8 +- .../plugins/custom_indicators_plugin.py | 8 +- .../plotly_ta/plugins/momentum_plugin.py | 14 +- .../plots/plotly_ta/plugins/overlap_plugin.py | 4 +- .../plotly_ta/plugins/volatility_plugin.py | 14 +- .../core/plots/plotly_ta/ta_class.py | 9 +- openbb_terminal/core/plots/table.html | 112 +-- openbb_terminal/forex/forex_helper.py | 4 +- openbb_terminal/loggers.py | 12 +- openbb_terminal/stocks/stocks_helper.py | 4 +- .../test_load_none[btc-usd].yaml | 272 ++++++ .../test_commodity_model/test_get_debt.yaml | 907 ++++++++++++++++++ ...c_filings-other_args37-called_with37].yaml | 425 ++++++++ 23 files changed, 2589 insertions(+), 974 deletions(-) diff --git a/.gitignore b/.gitignore index 72ffeb44fe7c..e3616f955db9 100644 --- a/.gitignore +++ b/.gitignore @@ -41,9 +41,8 @@ website/functions website/terminaltest !build/docker/compose.env openbb_terminal/core/plots/assets/plotly*.js -openbb_terminal/core/plots/plotly_temp.html -openbb_terminal/core/plots/table_temp.html .dccache +*rome.json # pyinstaller artifacts *.pyo diff --git a/build/pyinstaller/macOS/darwin/Resources/LICENSE.txt b/build/pyinstaller/macOS/darwin/Resources/LICENSE.txt index b366787995e3..793f55bb6076 100644 --- a/build/pyinstaller/macOS/darwin/Resources/LICENSE.txt +++ b/build/pyinstaller/macOS/darwin/Resources/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021-2022 OpenBB Inc. +Copyright (c) 2021-2023 OpenBB Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/frontend-components/plotly/src/App.tsx b/frontend-components/plotly/src/App.tsx index c2e7e60a5ef1..87c4e8f7c77b 100644 --- a/frontend-components/plotly/src/App.tsx +++ b/frontend-components/plotly/src/App.tsx @@ -50,6 +50,8 @@ function App() { title: "", }; let filename = data.layout?.title?.text + .replace(/ -/g, "") + .replace(/-/g, "") .replace(/|<\/b>/g, "") .replace(/ /g, "_"); let date = new Date().toISOString().slice(0, 10).replace(/-/g, ""); diff --git a/frontend-components/plotly/src/utils/utils.ts b/frontend-components/plotly/src/utils/utils.ts index d5aea8d6bb01..c1710524977d 100644 --- a/frontend-components/plotly/src/utils/utils.ts +++ b/frontend-components/plotly/src/utils/utils.ts @@ -1,377 +1,382 @@ // @ts-nocheck import domtoimage from "dom-to-image"; -import { Figure } from "react-plotly.js"; import * as Plotly from "plotly.js-dist-min"; +import { Figure } from "react-plotly.js"; const exportNativeFileSystem = async ({ - fileHandle, - blob, + fileHandle, + blob, }: { - fileHandle?: FileSystemFileHandle | null; - blob: Blob; + fileHandle?: FileSystemFileHandle | null; + blob: Blob; }) => { - if (!fileHandle) { - return; - } + if (!fileHandle) { + return; + } - return writeFileHandler({ fileHandle, blob }); + return writeFileHandler({ fileHandle, blob }); }; const writeFileHandler = async ({ - fileHandle, - blob, + fileHandle, + blob, }: { - fileHandle: FileSystemFileHandle; - blob: Blob; + fileHandle: FileSystemFileHandle; + blob: Blob; }) => { - const writer = await fileHandle.createWritable(); - await writer.write(blob); - await writer.close(); + const writer = await fileHandle.createWritable(); + await writer.write(blob); + await writer.close(); }; const IMAGE_TYPE: FilePickerAcceptType[] = [ - { - description: "PNG Image", - accept: { - "image/png": [".png"], - }, - }, - { - description: "JPEG Image", - accept: { - "image/jpeg": [".jpeg"], - }, - }, - { - description: "SVG Image", - accept: { - "image/svg+xml": [".svg"], - }, - }, + { + description: "PNG Image", + accept: { + "image/png": [".png"], + }, + }, + { + description: "JPEG Image", + accept: { + "image/jpeg": [".jpeg"], + }, + }, + { + description: "SVG Image", + accept: { + "image/svg+xml": [".svg"], + }, + }, ]; const getNewFileHandle = ({ - filename, - is_image, + filename, + is_image, }: { - filename: string; - is_image?: boolean; + filename: string; + is_image?: boolean; }): Promise => { - if ("showSaveFilePicker" in window) { - const opts: SaveFilePickerOptions = { - suggestedName: filename, - types: is_image - ? IMAGE_TYPE - : [ - { - description: "CSV File", - accept: { - "image/csv": [".csv"], - }, - }, - ], - excludeAcceptAllOption: true, - }; - - return showSaveFilePicker(opts); - } - - return new Promise((resolve) => { - resolve(null); - }); + try { + if ("showSaveFilePicker" in window) { + const opts: SaveFilePickerOptions = { + suggestedName: filename, + types: is_image + ? IMAGE_TYPE + : [ + { + description: "CSV File", + accept: { + "image/csv": [".csv"], + }, + }, + ], + excludeAcceptAllOption: true, + }; + + return showSaveFilePicker(opts); + } + } catch (error) { + console.error(error); + } + + return new Promise((resolve) => { + resolve(null); + }); }; export const saveToFile = ( - blob: Blob, - fileName: string, - fileHandle?: FileSystemFileHandle | null + blob: Blob, + fileName: string, + fileHandle?: FileSystemFileHandle | null, ) => { - try { - if (fileHandle === null) { - throw new Error("Cannot access filesystem"); - } - return exportNativeFileSystem({ fileHandle, blob }); - } catch (error) { - console.error("oops, something went wrong!", error); - const url = URL.createObjectURL(blob); - const link = document.createElement("a"); - link.setAttribute("href", url); - link.setAttribute("download", fileName); - link.style.visibility = "hidden"; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - } - return new Promise((resolve) => { - resolve(true); - }); + try { + if (fileHandle === null) { + throw new Error("Cannot access filesystem"); + } + return exportNativeFileSystem({ fileHandle, blob }); + } catch (error) { + console.error("oops, something went wrong!", error); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.setAttribute("href", url); + link.setAttribute("download", fileName); + link.style.visibility = "hidden"; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + return new Promise((resolve) => { + resolve(true); + }); }; export async function downloadCSV( - gd: Figure, - downloadFinished: (change: boolean) => void + gd: Figure, + downloadFinished: (change: boolean) => void, ) { - let data = gd.data; - let columns: string[] = []; - let rows: any[] = []; - - let xaxis = - "title" in gd.layout["xaxis"] && - gd.layout["xaxis"]["title"]["text"] != undefined - ? gd.layout["xaxis"]["title"]["text"] - : "x"; - - let yaxis = - "title" in gd.layout["yaxis"] && - gd.layout["yaxis"]["title"]["text"] != undefined - ? gd.layout["yaxis"]["title"]["text"] - : "y"; - - data.forEach(function (trace) { - if (trace.type == "candlestick") { - if (columns.length == 0) { - columns = ["Date", "Open", "High", "Low", "Close"]; - } - trace.x.forEach(function (x, i) { - rows.push([ - x, - trace.open[i], - trace.high[i], - trace.low[i], - trace.close[i], - ]); - }); - } - - if (trace.type == "scatter") { - if (columns.length == 0) { - columns.push(xaxis); - } - columns.push(trace.name != undefined ? trace.name : yaxis); - trace.x.forEach(function (x, i) { - if (rows[i] == undefined) { - rows[i] = [x]; - } - rows[i].push(trace.y[i]); - }); - } - }); - - return await downloadData(columns, rows, downloadFinished); + const data = gd.data; + let columns: string[] = []; + const rows: any[] = []; + + const xaxis = + "title" in gd.layout["xaxis"] && + gd.layout["xaxis"]["title"]["text"] !== undefined + ? gd.layout["xaxis"]["title"]["text"] + : "x"; + + const yaxis = + "title" in gd.layout["yaxis"] && + gd.layout["yaxis"]["title"]["text"] !== undefined + ? gd.layout["yaxis"]["title"]["text"] + : "y"; + + data.forEach(function (trace) { + if (trace.type === "candlestick") { + if (columns.length === 0) { + columns = ["Date", "Open", "High", "Low", "Close"]; + } + trace.x.forEach(function (x, i) { + rows.push([ + x, + trace.open[i], + trace.high[i], + trace.low[i], + trace.close[i], + ]); + }); + } + + if (["scatter", "bar"].includes(trace.type)) { + if (columns.length === 0) { + columns.push(xaxis); + } + columns.push(trace.name !== undefined ? trace.name : yaxis); + trace.x.forEach(function (x, i) { + if (rows[i] === undefined) { + rows[i] = [x]; + } + rows[i].push(trace.y[i]); + }); + } + }); + + return await downloadData(columns, rows, downloadFinished); } export async function downloadData( - columns: any, - data: any, - downloadFinished: (change: boolean) => void + columns: any, + data: any, + downloadFinished: (change: boolean) => void, ) { - const headers = columns; - const rows = data.map((row: any) => - row.map((cell: any) => { - if (cell == null) { - return ""; - } else if (typeof cell === "object") { - return JSON.stringify(cell); - } else { - return cell.toString().replace(/"/g, '""'); - } - }) - ); - const csvData = [headers, ...rows]; - - const csvContent = csvData.map((e) => e.join(",")).join("\n"); - const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }); - const filename = `${window.title}.csv`; - try { - let fileHandle = await getNewFileHandle({ - filename: filename, - }); - - await loadingOverlay("Saving CSV"); - - non_blocking(async function () { - // @ts-ignore - saveToFile(blob, filename, fileHandle).then(async function () { - await new Promise((resolve) => setTimeout(resolve, 1500)); - if (!fileHandle) { - downloadFinished(true); - } - await loadingOverlay("", true); - }); - }, 2)(); - } catch (error) { - console.error(error); - } + const headers = columns; + const rows = data.map((row: any) => + row.map((cell: any) => { + if (cell == null) { + return ""; + } else if (typeof cell === "object") { + return JSON.stringify(cell); + } else { + return cell.toString().replace(/"/g, '""'); + } + }), + ); + const csvData = [headers, ...rows]; + + const csvContent = csvData.map((e) => e.join(",")).join("\n"); + const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }); + const filename = `${window.title}.csv`; + try { + const fileHandle = await getNewFileHandle({ + filename: filename, + }); + + await loadingOverlay("Saving CSV"); + + non_blocking(async function () { + // @ts-ignore + saveToFile(blob, filename, fileHandle).then(async function () { + await new Promise((resolve) => setTimeout(resolve, 1500)); + if (!fileHandle) { + downloadFinished(true); + } + await loadingOverlay("", true); + }); + }, 2)(); + } catch (error) { + console.error(error); + } } function loadingOverlay(message?: string, is_close?: boolean) { - const loading = window.document.getElementById("loading") as HTMLElement; - const loading_text = window.document.getElementById( - "loading_text" - ) as HTMLElement; - return new Promise((resolve) => { - if (is_close) { - loading.classList.remove("show"); - } else { - // @ts-ignore - loading_text.innerHTML = message; - loading.classList.add("show"); - } - - let is_loaded = setInterval(function () { - if ( - is_close - ? !loading.classList.contains("show") - : loading.classList.contains("show") - ) { - clearInterval(is_loaded); - resolve(true); - } - }, 0.01); - }); + const loading = window.document.getElementById("loading") as HTMLElement; + const loading_text = window.document.getElementById( + "loading_text", + ) as HTMLElement; + return new Promise((resolve) => { + if (is_close) { + loading.classList.remove("show"); + } else { + // @ts-ignore + loading_text.innerHTML = message; + loading.classList.add("show"); + } + + const is_loaded = setInterval(function () { + if ( + is_close + ? !loading.classList.contains("show") + : loading.classList.contains("show") + ) { + clearInterval(is_loaded); + resolve(true); + } + }, 0.01); + }); } export const non_blocking = (func: Function, delay: number) => { - let timeout: number; - return function () { - // @ts-ignore - const context = this; - const args = arguments; - clearTimeout(timeout); - timeout = setTimeout(() => func.apply(context, args), delay); - }; + let timeout: number; + return function () { + // @ts-ignore + const context = this; + const args = arguments; + clearTimeout(timeout); + timeout = setTimeout(() => func.apply(context, args), delay); + }; }; const openbb_watermark = { - yref: "paper", - xref: "paper", - x: 1, - y: 0, - text: "OpenBB Terminal", - font_size: 17, - font_color: "gray", - opacity: 0.5, - xanchor: "right", - yanchor: "bottom", - yshift: -80, - xshift: 40, + yref: "paper", + xref: "paper", + x: 1, + y: 0, + text: "OpenBB Terminal", + font_size: 17, + font_color: "gray", + opacity: 0.5, + xanchor: "right", + yanchor: "bottom", + yshift: -80, + xshift: 40, }; async function setWatermarks(margin, old_index, init = false) { - const chart = document.getElementById("plotlyChart") as HTMLElement; - - if (init) { - chart.layout.annotations.push(openbb_watermark); - if ( - chart.globals.cmd_idx != undefined && - chart.globals.cmd_src != undefined - ) { - chart.layout.annotations[chart.globals.cmd_idx].text = - chart.globals.cmd_src; - } - - Plotly.relayout(chart, { - "title.text": chart.globals.title, - margin: chart.globals.old_margin, - }); - } - - if (!init) { - if ( - chart.globals.cmd_idx != undefined && - chart.globals.cmd_src != undefined - ) { - chart.layout.annotations[chart.globals.cmd_idx].text = ""; - } - chart.layout.annotations.splice(old_index, 1); - - Plotly.relayout(chart, { - "title.text": "", - margin: margin, - }); - } + const chart = document.getElementById("plotlyChart") as HTMLElement; + + if (init) { + chart.layout.annotations.push(openbb_watermark); + if ( + chart.globals.cmd_idx !== undefined && + chart.globals.cmd_src !== undefined + ) { + chart.layout.annotations[chart.globals.cmd_idx].text = + chart.globals.cmd_src; + } + + Plotly.relayout(chart, { + "title.text": chart.globals.title, + margin: chart.globals.old_margin, + }); + } + + if (!init) { + if ( + chart.globals.cmd_idx !== undefined && + chart.globals.cmd_src !== undefined + ) { + chart.layout.annotations[chart.globals.cmd_idx].text = ""; + } + chart.layout.annotations.splice(old_index, 1); + + Plotly.relayout(chart, { + "title.text": "", + margin: margin, + }); + } } export async function saveImage( - id: string, - filename: string, - extension: string + id: string, + filename: string, + extension: string, ) { - const chart = document.getElementById(id) as HTMLElement; - - if (["svg", "pdf"].includes(extension)) { - const chart = document.getElementById("plotlyChart") as HTMLElement; - const margin = chart.layout.margin; - const old_index = chart.layout.annotations.length; - - await setWatermarks(margin, old_index, true); - - Plotly.downloadImage(chart, { - format: "svg", - height: chart.clientHeight, - width: chart.clientWidth, - filename: window.title, - }); - - await setWatermarks(margin, old_index, false); - await loadingOverlay("", true); - return; - } - - non_blocking(async function () { - domtoimage.toBlob(chart).then(function (blob: Blob) { - saveToFile(blob, filename, null); - }); - }, 2)(); + const chart = document.getElementById(id) as HTMLElement; + + if (["svg", "pdf"].includes(extension)) { + const chart = document.getElementById("plotlyChart") as HTMLElement; + const margin = chart.layout.margin; + const old_index = chart.layout.annotations.length; + + await setWatermarks(margin, old_index, true); + + Plotly.downloadImage(chart, { + format: "svg", + height: chart.clientHeight, + width: chart.clientWidth, + filename: window.title, + }); + + await setWatermarks(margin, old_index, false); + await loadingOverlay("", true); + return; + } + + non_blocking(async function () { + domtoimage.toBlob(chart).then(function (blob: Blob) { + saveToFile(blob, filename, null); + }); + }, 2)(); } export async function downloadImage( - id: string, - hidemodebar: () => void, - loading: (bool: boolean) => void, - downloadFinished: (bool: boolean) => void + id: string, + hidemodebar: () => void, + loading: (bool: boolean) => void, + downloadFinished: (bool: boolean) => void, ) { - const chart = document.getElementById(id) as HTMLElement; - const filename = `${window.title}.png`; - - try { - loading(true); - let fileHandle = await getNewFileHandle({ - filename: filename, - is_image: true, - }); - let extension: string = "png"; - if (fileHandle !== null) { - // @ts-ignore - extension = fileHandle.name.split(".").pop(); - } - await loadingOverlay(`Saving ${extension.toUpperCase()}`); - - if (["svg", "pdf"].includes(extension)) { - await saveImage(id, filename, extension); - hidemodebar(false); - loading(false); - if (!fileHandle) { - downloadFinished(true); - } - return; - } - - non_blocking(async function () { - domtoimage.toBlob(chart).then(function (blob: Blob) { - saveToFile(blob, filename, fileHandle).then(async function () { - await loadingOverlay("", true); - hidemodebar(false); - loading(false); - if (!fileHandle) { - downloadFinished(true); - } - }); - }); - }, 2)(); - } catch (error) { - console.error(error); - hidemodebar(false); - loading(false); - } + const chart = document.getElementById(id) as HTMLElement; + const filename = `${window.title}.png`; + + try { + loading(true); + const fileHandle = await getNewFileHandle({ + filename: filename, + is_image: true, + }); + let extension = "png"; + if (fileHandle !== null) { + // @ts-ignore + extension = fileHandle.name.split(".").pop(); + } + await loadingOverlay(`Saving ${extension.toUpperCase()}`); + + if (["svg", "pdf"].includes(extension)) { + await saveImage(id, filename, extension); + hidemodebar(false); + loading(false); + if (!fileHandle) { + downloadFinished(true); + } + return; + } + + non_blocking(async function () { + domtoimage.toBlob(chart).then(function (blob: Blob) { + saveToFile(blob, filename, fileHandle).then(async function () { + await loadingOverlay("", true); + hidemodebar(false); + loading(false); + if (!fileHandle) { + downloadFinished(true); + } + }); + }); + }, 2)(); + } catch (error) { + console.error(error); + hidemodebar(false); + loading(false); + } + loading(false); } diff --git a/frontend-components/tables/src/App.tsx b/frontend-components/tables/src/App.tsx index d7b57c7e6b12..75c92ee6c2a7 100644 --- a/frontend-components/tables/src/App.tsx +++ b/frontend-components/tables/src/App.tsx @@ -50,9 +50,9 @@ function App() { const transformData = (data: any) => { if (!data) return null; - let filename = data.title?.replace(/|<\/b>/g, "").replace(/ /g, "_"); - let date = new Date().toISOString().slice(0, 10).replace(/-/g, ""); - let time = new Date().toISOString().slice(11, 19).replace(/:/g, ""); + const filename = data.title?.replace(/|<\/b>/g, "").replace(/ /g, "_"); + const date = new Date().toISOString().slice(0, 10).replace(/-/g, ""); + const time = new Date().toISOString().slice(11, 19).replace(/:/g, ""); window.title = `openbb_${filename}_${date}_${time}`; const columns = data.columns; @@ -62,7 +62,7 @@ function App() { const transformedRow = {}; row.forEach((value: any, index: number) => { //@ts-ignore - transformedRow[columns[index]] = value || ""; + transformedRow[columns[index]] = value ? value : value === 0 ? 0 : ""; }); return transformedRow; }); diff --git a/frontend-components/tables/src/components/Table/ColumnHeader.tsx b/frontend-components/tables/src/components/Table/ColumnHeader.tsx index edd23391be19..21023836379a 100644 --- a/frontend-components/tables/src/components/Table/ColumnHeader.tsx +++ b/frontend-components/tables/src/components/Table/ColumnHeader.tsx @@ -8,310 +8,308 @@ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"; export const magnitudeRegex = new RegExp("^([0-9]+)(\\s)([kKmMbBtT])$"); function Filter({ - column, - table, - numberOfColumns, + column, + table, + numberOfColumns, }: { - column: any; - table: any; - numberOfColumns: number; + column: any; + table: any; + numberOfColumns: number; }) { - const values = table - .getPreFilteredRowModel() - .flatRows.map((row: { getValue: (arg0: any) => any }) => - row.getValue(column.id) - ); + function getTime(value: string | number | Date) { + if (!value) return null; + const date = new Date(value); + const year = date.getFullYear(); + const month = + date.getMonth() + 1 > 9 ? date.getMonth() + 1 : `0${date.getMonth() + 1}`; + const day = date.getDate() > 9 ? date.getDate() : `0${date.getDate()}`; + return `${year}-${month}-${day}`; + } - const areAllValuesString = values.every( - (value: null) => typeof value === "string" || value === null - ); + const values = table + .getPreFilteredRowModel() + .flatRows.map((row: { getValue: (arg0: any) => any }) => + row.getValue(column.id), + ); - const areAllValuesNumber = values.every( - (value: null | number | string) => - typeof value === "number" || - magnitudeRegex.test(value as string) || - value === null || - value === "" - ); + const areAllValuesString = values.every( + (value: null) => typeof value === "string" || value === null, + ); - const valuesContainStringWithSpaces = values.some( - (value: string | string[]) => - typeof value === "string" && value.includes(" ") - ); + const areAllValuesNumber = values.every( + (value: null | number | string) => + typeof value === "number" || + magnitudeRegex.test(value as string) || + value === null || + value === "", + ); - const columnFilterValue = column.getFilterValue(); + const valuesContainStringWithSpaces = values.some( + (value: string | string[]) => + typeof value === "string" && value.includes(" "), + ); - const isProbablyDate = values.every((value: string) => { - if (typeof value !== "string") return false; - const only_numbers = value?.replace(/[^0-9]/g, "").trim(); - return ( - only_numbers?.length >= 4 && - (includesDateNames(column.id) || - (column.id.toLowerCase() === "index" && !valuesContainStringWithSpaces)) - ); - }); + const columnFilterValue = column.getFilterValue(); - if (isProbablyDate) { - function getTime(value: string | number | Date) { - if (!value) return null; - const date = new Date(value); - const year = date.getFullYear(); - const month = - date.getMonth() + 1 > 9 - ? date.getMonth() + 1 - : `0${date.getMonth() + 1}`; - const day = date.getDate() > 9 ? date.getDate() : `0${date.getDate()}`; - return `${year}-${month}-${day}`; - } + const isProbablyDate = values.every((value: string) => { + if (typeof value !== "string") return false; + const only_numbers = value?.replace(/[^0-9]/g, "").trim(); + return ( + only_numbers?.length >= 4 && + (includesDateNames(column.id) || + (column.id.toLowerCase() === "index" && !valuesContainStringWithSpaces)) + ); + }); - return ( -
- { - const value = new Date(e.target.value).getTime(); - column.setFilterValue((old: [string, string]) => [value, old?.[1]]); - }} - placeholder={`Start date`} - className="_input" - /> - { - const value = new Date(e.target.value).getTime(); - column.setFilterValue((old: [string, string]) => [old?.[0], value]); - }} - placeholder={`End date`} - className="_input" - /> -
- ); - } + if (isProbablyDate) { + return ( +
+ { + const value = new Date(e.target.value).getTime(); + column.setFilterValue((old: [string, string]) => [value, old?.[1]]); + }} + placeholder={"Start date"} + className="_input" + /> + { + const value = new Date(e.target.value).getTime(); + column.setFilterValue((old: [string, string]) => [old?.[0], value]); + }} + placeholder={"End date"} + className="_input" + /> +
+ ); + } - if (areAllValuesNumber) { - return ( -
- - column.setFilterValue((old: [number, number]) => [ - e.target.value, - old?.[1], - ]) - } - placeholder={`Min`} - className="_input p-0.5" - /> - - column.setFilterValue((old: [number, number]) => [ - old?.[0], - e.target.value, - ]) - } - placeholder={`Max`} - className="_input p-0.5" - /> -
- ); - } - if (areAllValuesString) { - return ( -
- column.setFilterValue(e.target.value)} - placeholder={`Search...`} - className="_input" - /> -
- ); - } - return
; + if (areAllValuesNumber) { + return ( +
+ + column.setFilterValue((old: [number, number]) => [ + e.target.value, + old?.[1], + ]) + } + placeholder={"Min"} + className="_input p-0.5" + /> + + column.setFilterValue((old: [number, number]) => [ + old?.[0], + e.target.value, + ]) + } + placeholder={"Max"} + className="_input p-0.5" + /> +
+ ); + } + if (areAllValuesString) { + return ( +
+ column.setFilterValue(e.target.value)} + placeholder={"Search..."} + className="_input" + /> +
+ ); + } + return
; } const reorderColumn = ( - draggedColumnId: string, - targetColumnId: string, - columnOrder: string[] + draggedColumnId: string, + targetColumnId: string, + columnOrder: string[], ) => { - columnOrder.splice( - columnOrder.indexOf(targetColumnId), - 0, - columnOrder.splice(columnOrder.indexOf(draggedColumnId), 1)[0] as string - ); - return [...columnOrder]; + columnOrder.splice( + columnOrder.indexOf(targetColumnId), + 0, + columnOrder.splice(columnOrder.indexOf(draggedColumnId), 1)[0] as string, + ); + return [...columnOrder]; }; const DraggableColumnHeader: FC<{ - header: any; - table: any; - advanced: boolean; - idx: number; - lockFirstColumn: boolean; - setLockFirstColumn: (value: boolean) => void; + header: any; + table: any; + advanced: boolean; + idx: number; + lockFirstColumn: boolean; + setLockFirstColumn: (value: boolean) => void; }> = ({ - header, - table, - advanced, - idx, - lockFirstColumn, - setLockFirstColumn, + header, + table, + advanced, + idx, + lockFirstColumn, + setLockFirstColumn, }) => { - const { getState, setColumnOrder } = table; - const { columnOrder } = getState(); - const { column } = header; + const { getState, setColumnOrder } = table; + const { columnOrder } = getState(); + const { column } = header; - const [, dropRef] = useDrop({ - accept: "column", - drop: (draggedColumn: any) => { - const newColumnOrder = reorderColumn( - draggedColumn.id, - column.id, - columnOrder - ); - setColumnOrder(newColumnOrder); - }, - }); + const [, dropRef] = useDrop({ + accept: "column", + drop: (draggedColumn: any) => { + const newColumnOrder = reorderColumn( + draggedColumn.id, + column.id, + columnOrder, + ); + setColumnOrder(newColumnOrder); + }, + }); - const [{ isDragging }, dragRef, previewRef] = useDrag({ - collect: (monitor) => ({ - isDragging: monitor.isDragging(), - }), - item: () => column, - type: "column", - }); + const [{ isDragging }, dragRef, previewRef] = useDrag({ + collect: (monitor) => ({ + isDragging: monitor.isDragging(), + }), + item: () => column, + type: "column", + }); - const renderField = () => ( -
- {header.isPlaceholder ? null : ( - <> -
-
- {flexRender(column.columnDef.header, header.getContext())} - {column.getCanSort() && ( -
- - -
- )} -
- {advanced && column.id !== "select" && ( - - )} -
- {advanced && column.getCanFilter() ? ( -
- -
- ) : null} - - )} -
- ); + const renderField = () => ( +
+ {header.isPlaceholder ? null : ( + <> +
+
+ {flexRender(column.columnDef.header, header.getContext())} + {column.getCanSort() && ( +
+ + +
+ )} +
+ {advanced && column.id !== "select" && ( + + )} +
+ {advanced && column.getCanFilter() ? ( +
+ +
+ ) : null} + + )} +
+ ); - return ( - - {idx === 0 ? ( - - - {renderField()} - - - -
- -
-
-
-
- ) : ( - renderField() - )} - - - ); + return ( + + {idx === 0 ? ( + + + {renderField()} + + + +
+ +
+
+
+
+ ) : ( + renderField() + )} +