From dceb5d6572560cc90487c5ff23b0de3ec067a615 Mon Sep 17 00:00:00 2001 From: Raymond Li Date: Thu, 13 Oct 2022 18:12:36 -0400 Subject: [PATCH 01/11] Revert "#63: Add positions to CEO (#79)" This reverts commit 3b7c89c92527e1facdff326fba55c228a4081efd. --- ceo/tui/views/position_names.py | 8 -------- etc/ceo.ini | 4 +--- etc/ceod.ini | 4 +--- tests/ceo_dev.ini | 4 +--- tests/ceod_dev.ini | 4 +--- tests/ceod_test_local.ini | 4 +--- 6 files changed, 5 insertions(+), 23 deletions(-) diff --git a/ceo/tui/views/position_names.py b/ceo/tui/views/position_names.py index 0bb49e1..96b391d 100644 --- a/ceo/tui/views/position_names.py +++ b/ceo/tui/views/position_names.py @@ -9,12 +9,4 @@ position_names = { 'imapd': "IMAPD", 'webmaster': "Web Master", 'offsck': "Office Manager", - 'ext-affairs-lead': "External Affairs Lead", - 'marketing-lead': "Marketing Lead", - 'design-lead': "Design Lead", - 'events-lead': "Events Lead", - 'reps-lead': "Reps Lead", - 'mods-lead': "Mods Lead", - 'photography-lead': "Photography Lead", - 'other': "Other", } diff --git a/etc/ceo.ini b/etc/ceo.ini index 6f5e7ae..c3a5e95 100644 --- a/etc/ceo.ini +++ b/etc/ceo.ini @@ -19,9 +19,7 @@ port = 9987 [positions] required = president,vice-president,sysadmin available = president,vice-president,treasurer,secretary, - sysadmin,cro,librarian,imapd,webmaster,offsck, - ext-affairs-lead,marketing-lead,design-lead,events-lead, - reps-lead,mods-lead,photography-lead,other + sysadmin,cro,librarian,imapd,webmaster,offsck [mysql] host = caffeine diff --git a/etc/ceod.ini b/etc/ceod.ini index 090d97b..dc0e048 100644 --- a/etc/ceod.ini +++ b/etc/ceod.ini @@ -64,9 +64,7 @@ exec = exec,exec-moderators [positions] required = president,vice-president,sysadmin available = president,vice-president,treasurer,secretary, - sysadmin,cro,librarian,imapd,webmaster,offsck, - ext-affairs-lead,marketing-lead,design-lead,events-lead, - reps-lead,mods-lead,photography-lead,other + sysadmin,cro,librarian,imapd,webmaster,offsck [mysql] # This is only used on the database_host. diff --git a/tests/ceo_dev.ini b/tests/ceo_dev.ini index a7714f6..12ad1e3 100644 --- a/tests/ceo_dev.ini +++ b/tests/ceo_dev.ini @@ -15,9 +15,7 @@ port = 9987 [positions] required = president,vice-president,sysadmin available = president,vice-president,treasurer,secretary, - sysadmin,cro,librarian,imapd,webmaster,offsck, - ext-affairs-lead,marketing-lead,design-lead,events-lead, - reps-lead,mods-lead,photography-lead,other + sysadmin,cro,librarian,imapd,webmaster,offsck [mysql] host = coffee diff --git a/tests/ceod_dev.ini b/tests/ceod_dev.ini index a29566d..7404777 100644 --- a/tests/ceod_dev.ini +++ b/tests/ceod_dev.ini @@ -60,9 +60,7 @@ exec = exec [positions] required = president,vice-president,sysadmin available = president,vice-president,treasurer,secretary, - sysadmin,cro,librarian,imapd,webmaster,offsck, - ext-affairs-lead,marketing-lead,design-lead,events-lead, - reps-lead,mods-lead,photography-lead,other + sysadmin,cro,librarian,imapd,webmaster,offsck [mysql] username = mysql diff --git a/tests/ceod_test_local.ini b/tests/ceod_test_local.ini index c9f055d..8adc851 100644 --- a/tests/ceod_test_local.ini +++ b/tests/ceod_test_local.ini @@ -59,9 +59,7 @@ exec = exec [positions] required = president,vice-president,sysadmin available = president,vice-president,treasurer,secretary, - sysadmin,cro,librarian,imapd,webmaster,offsck, - ext-affairs-lead,marketing-lead,design-lead,events-lead, - reps-lead,mods-lead,photography-lead,other + sysadmin,cro,librarian,imapd,webmaster,offsck [mysql] username = mysql From b4a137355925cbe26a0ab6a35402d8da365216ba Mon Sep 17 00:00:00 2001 From: Edwin Date: Sun, 23 Oct 2022 19:50:06 -0400 Subject: [PATCH 02/11] Simplify packaging --- .gitignore | 1 + Makefile | 5 +++- PACKAGING.md | 56 +++++++++++-------------------------------- debian/source/options | 2 +- package.sh | 5 ++++ 5 files changed, 25 insertions(+), 44 deletions(-) create mode 100755 package.sh diff --git a/.gitignore b/.gitignore index 84b1aba..00c9dea 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ __pycache__/ /debian/files /debian/.debhelper/ /debian/debhelper-build-stamp +/pyceo.tar.gz diff --git a/Makefile b/Makefile index 8ecb067..dbd052e 100644 --- a/Makefile +++ b/Makefile @@ -31,4 +31,7 @@ clean: rm -rf venv rm -rf debian/{ceo,ceod,ceo-common,tmp} -.PHONY: build docs clean venv install +package: + podman run -it --rm -v "$$PWD":"$$PWD" -w "$$PWD" --security-opt label=disable debian:bullseye bash package.sh + +.PHONY: build docs clean venv install package diff --git a/PACKAGING.md b/PACKAGING.md index 8c54448..31c39b1 100644 --- a/PACKAGING.md +++ b/PACKAGING.md @@ -10,53 +10,25 @@ Make sure your GPG key is in /srv/debian/gpg on potassium-benzoate. See for instructions. ## Creating the package -Use Docker/Podman to avoid screwing up your main system. -For example, to create a package for bullseye (replace `podman` with `docker` in all instances below if you're using Docker): -```sh -podman run -it --name pyceo-packaging -v "$PWD":"$PWD" -w "$PWD" debian:bullseye bash -``` -**Important**: Make sure to use a container image for the same distribution which you're packaging. +Make sure you have Podman installed. + +Update `VERSION.txt` to the next version, `debian/changelog` with the new changes and do a git commit. + +Run `make package` to build the package and create the tarball `pyceo.tar.gz` in the repo root. + +**Important**: Make sure the container image for the same distribution which you're packaging. For example, if you're creating a package for bullseye, you should be using the debian:bullseye -Docker image (this is because the virtualenv symlinks python to the OS' version of python). +Docker image (this is because the virtualenv symlinks python to the OS' version of python). Also make +sure that all of the packages in the 'Build-Depends' section in debian/control are installed in the container. -Here are some of the prerequisites you'll need to build the deb files -(run this inside the container): +At some point before actually uploading, you'll need to the sign the package. On the extracted tarball, +run the following while placing your key ID after the `-k` argument, e.g. ```sh -apt update -apt install -y devscripts debhelper git-buildpackage vim -``` -Make sure to also install all of the packages in the 'Build-Depends' section in debian/control. - -Update VERSION.txt to the next version, and do a git commit. - -Now run `dch -i` and edit the changelog. - -Now you will build a signed package. Place your key ID after the `-k` argument, e.g. -```sh -gbp buildpackage --git-upstream-branch=master -k8E5568ABB0CF96BC367806ED127923BE10DA48DC -``` -This will create a bunch of files (deb, dsc, tar.gz, etc.) in the parent directory. - -Now do another git commit (since you edited the changelog file). - -To clean the packages: -```sh -rm ../*.{xz,gz,dsc,build,buildinfo,changes,deb} +debsign -k8E5568ABB0CF96BC367806ED127923BE10DA48DC *.changes ``` ## Uploading the package -Inside the container, go up one directory, and create a tarball with all the package files: -``` -cd .. -tar zcvf pyceo.tar.gz *.{xz,gz,dsc,build,buildinfo,changes,deb} -``` -Outside of the container (i.e. on your personal machine), copy the tarball out of the -container into your current directory, e.g. -``` -podman cp pyceo-packaging:/home/max/repos/pyceo.tar.gz . -``` -(Replace `/home/max/repos` by the directory in the container with the tarball.) -Now upload the tarball to a CSC machine, e.g. +Upload the tarball to a CSC machine, e.g. ``` scp pyceo.tar.gz mannitol:~/ ``` @@ -73,7 +45,7 @@ At this point, you will need a dupload.conf file. Ask someone on syscom for a co Now upload the package to potassium-benzoate: ``` kinit -dupload *.changes +dupload --to debian.csclub *.changes ``` Now SSH into potassium-benzoate and run the following: diff --git a/debian/source/options b/debian/source/options index fdd7a05..21bc363 100644 --- a/debian/source/options +++ b/debian/source/options @@ -1 +1 @@ -extend-diff-ignore = "^(venv/|docs/.+\.\d$|dist/|.+\.egg-info/|build/|\.vscode/|\.idea/)|__pycache__/|(^|/)\..+" +extend-diff-ignore = "^(venv/|docs/.+\.\d$|dist/|.+\.egg-info/|build/|\.vscode/|\.idea/|pyceo\.tar\.gz)|__pycache__/|(^|/)\..+" diff --git a/package.sh b/package.sh new file mode 100755 index 0000000..f81beb3 --- /dev/null +++ b/package.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +apt update && apt install -y git-buildpackage debhelper libkrb5-dev libpq-dev libaugeas0 python3-dev python3-venv scdoc +gbp buildpackage --git-export-dir=/tmp/build --git-upstream-branch=master --no-sign +tar zcvf pyceo.tar.gz -C /tmp/build . From 9ff3d850c97626328b5b24a2162af4f74f67e6e1 Mon Sep 17 00:00:00 2001 From: Edwin Date: Sun, 23 Oct 2022 19:50:38 -0400 Subject: [PATCH 03/11] Release 1.0.24 --- VERSION.txt | 2 +- debian/changelog | 13 +++++++++++++ debian/control | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 154b9fc..79728fe 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -1.0.23 +1.0.24 diff --git a/debian/changelog b/debian/changelog index 457b21f..16803ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +ceo (1.0.24-bullseye1) bullseye; urgency=high + + * Add support for using number in member terms renwewal API + * Sort group member listing by WatIAM ID + * Add more logging for Cloudstack + * Use LDAP instead of NSS + * Fix shadowExpire deserialization + * Fix email formatting bug in ClubWebHostingService + * Check if mail_local_addresses exists in UWLDAP entry + * Remove override_dh_systemd_start + + -- Edwin Sun, 23 Oct 2022 00:00:00 +0000 + ceo (1.0.23-bullseye1) bullseye; urgency=high * Fix some bugs in ClubWebHostingService. diff --git a/debian/control b/debian/control index 7158ff3..d18541d 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,8 @@ Standards-Version: 4.3.0 Vcs-Git: https://git.csclub.uwaterloo.ca/public/pyceo.git Vcs-Browser: https://git.csclub.uwaterloo.ca/public/pyceo Uploaders: Max Erenberg , - Raymond Li + Raymond Li , + Edwin Build-Depends: debhelper (>= 12.1.1), python3-dev (>= 3.7), python3-venv (>= 3.7), From 2cf9e25b592aeb9f08323fd2ed918b6b6e15efa2 Mon Sep 17 00:00:00 2001 From: Edwin Date: Sun, 23 Oct 2022 21:16:58 -0400 Subject: [PATCH 04/11] More fixes --- PACKAGING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PACKAGING.md b/PACKAGING.md index 31c39b1..7f26256 100644 --- a/PACKAGING.md +++ b/PACKAGING.md @@ -9,6 +9,8 @@ Make sure your GPG key is in /srv/debian/gpg on potassium-benzoate. See [here](https://wiki.csclub.uwaterloo.ca/Debian_Repository#Step_1:_Add_to_Uploaders) for instructions. +Make sure you are in the `csc-mirror` group too. + ## Creating the package Make sure you have Podman installed. @@ -30,7 +32,7 @@ debsign -k8E5568ABB0CF96BC367806ED127923BE10DA48DC *.changes ## Uploading the package Upload the tarball to a CSC machine, e.g. ``` -scp pyceo.tar.gz mannitol:~/ +scp pyceo.tar.gz mannitol:~ ``` SSH into that machine and extract the tarball into a separate directory: ``` From 6df1f4d4595248b2ec76c969a2d0c1ccabab84bc Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Sun, 23 Oct 2022 22:00:48 -0400 Subject: [PATCH 05/11] Revert "Simplify packaging" This reverts commit b4a137355925cbe26a0ab6a35402d8da365216ba. --- .gitignore | 1 - Makefile | 5 +--- PACKAGING.md | 60 +++++++++++++++++++++++++++++++------------ debian/source/options | 2 +- package.sh | 5 ---- 5 files changed, 46 insertions(+), 27 deletions(-) delete mode 100755 package.sh diff --git a/.gitignore b/.gitignore index 00c9dea..84b1aba 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,3 @@ __pycache__/ /debian/files /debian/.debhelper/ /debian/debhelper-build-stamp -/pyceo.tar.gz diff --git a/Makefile b/Makefile index dbd052e..8ecb067 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,4 @@ clean: rm -rf venv rm -rf debian/{ceo,ceod,ceo-common,tmp} -package: - podman run -it --rm -v "$$PWD":"$$PWD" -w "$$PWD" --security-opt label=disable debian:bullseye bash package.sh - -.PHONY: build docs clean venv install package +.PHONY: build docs clean venv install diff --git a/PACKAGING.md b/PACKAGING.md index 7f26256..62491e2 100644 --- a/PACKAGING.md +++ b/PACKAGING.md @@ -12,25 +12,53 @@ for instructions. Make sure you are in the `csc-mirror` group too. ## Creating the package -Make sure you have Podman installed. - -Update `VERSION.txt` to the next version, `debian/changelog` with the new changes and do a git commit. - -Run `make package` to build the package and create the tarball `pyceo.tar.gz` in the repo root. - -**Important**: Make sure the container image for the same distribution which you're packaging. -For example, if you're creating a package for bullseye, you should be using the debian:bullseye -Docker image (this is because the virtualenv symlinks python to the OS' version of python). Also make -sure that all of the packages in the 'Build-Depends' section in debian/control are installed in the container. - -At some point before actually uploading, you'll need to the sign the package. On the extracted tarball, -run the following while placing your key ID after the `-k` argument, e.g. +Use Docker/Podman to avoid screwing up your main system. +For example, to create a package for bullseye (replace `podman` with `docker` in all instances below if you're using Docker): ```sh -debsign -k8E5568ABB0CF96BC367806ED127923BE10DA48DC *.changes +podman run -it --name pyceo-packaging -v "$PWD":"$PWD" -w "$PWD" debian:bullseye bash +``` +**Important**: Make sure to use a container image for the same distribution which you're packaging. +For example, if you're creating a package for bullseye, you should be using the debian:bullseye +Docker image (this is because the virtualenv symlinks python to the OS' version of python). + +Here are some of the prerequisites you'll need to build the deb files +(run this inside the container): +```sh +apt update +apt install -y devscripts debhelper git-buildpackage vim +``` +Make sure to also install all of the packages in the 'Build-Depends' section in debian/control. + +Update VERSION.txt to the next version, and do a git commit. + +Now run `dch -i` and edit the changelog. + +Now you will build a signed package. Place your key ID after the `-k` argument, e.g. +```sh +gbp buildpackage --git-upstream-branch=master -k8E5568ABB0CF96BC367806ED127923BE10DA48DC +``` +This will create a bunch of files (deb, dsc, tar.gz, etc.) in the parent directory. + +Now do another git commit (since you edited the changelog file). + +To clean the packages: +```sh +rm ../*.{xz,gz,dsc,build,buildinfo,changes,deb} ``` ## Uploading the package -Upload the tarball to a CSC machine, e.g. +Inside the container, go up one directory, and create a tarball with all the package files: +``` +cd .. +tar zcvf pyceo.tar.gz *.{xz,gz,dsc,build,buildinfo,changes,deb} +``` +Outside of the container (i.e. on your personal machine), copy the tarball out of the +container into your current directory, e.g. +``` +podman cp pyceo-packaging:/home/max/repos/pyceo.tar.gz . +``` +(Replace `/home/max/repos` by the directory in the container with the tarball.) +Now upload the tarball to a CSC machine, e.g. ``` scp pyceo.tar.gz mannitol:~ ``` @@ -47,7 +75,7 @@ At this point, you will need a dupload.conf file. Ask someone on syscom for a co Now upload the package to potassium-benzoate: ``` kinit -dupload --to debian.csclub *.changes +dupload *.changes ``` Now SSH into potassium-benzoate and run the following: diff --git a/debian/source/options b/debian/source/options index 21bc363..fdd7a05 100644 --- a/debian/source/options +++ b/debian/source/options @@ -1 +1 @@ -extend-diff-ignore = "^(venv/|docs/.+\.\d$|dist/|.+\.egg-info/|build/|\.vscode/|\.idea/|pyceo\.tar\.gz)|__pycache__/|(^|/)\..+" +extend-diff-ignore = "^(venv/|docs/.+\.\d$|dist/|.+\.egg-info/|build/|\.vscode/|\.idea/)|__pycache__/|(^|/)\..+" diff --git a/package.sh b/package.sh deleted file mode 100755 index f81beb3..0000000 --- a/package.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -apt update && apt install -y git-buildpackage debhelper libkrb5-dev libpq-dev libaugeas0 python3-dev python3-venv scdoc -gbp buildpackage --git-export-dir=/tmp/build --git-upstream-branch=master --no-sign -tar zcvf pyceo.tar.gz -C /tmp/build . From 6a1fa81b82a6fefeed9b1270c87c7148ed4b91db Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Sun, 23 Oct 2022 22:04:06 -0400 Subject: [PATCH 06/11] merenber signs the packages Something went wrong when e42zhang tried to upload the packages to the mirror. reprepro kept on complaining that no distribution would accept the new package. I modified the changelog, re-signed and re-uploaded the packages, and that worked, so I'm still not sure what the problem was. --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 16803ed..dcd4680 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,7 +9,7 @@ ceo (1.0.24-bullseye1) bullseye; urgency=high * Check if mail_local_addresses exists in UWLDAP entry * Remove override_dh_systemd_start - -- Edwin Sun, 23 Oct 2022 00:00:00 +0000 + -- Max Erenberg Sun, 23 Oct 2022 21:41:00 -0400 ceo (1.0.23-bullseye1) bullseye; urgency=high From 1e452d10ce277fe0f777d3425136bcd115e313f7 Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Tue, 1 Nov 2022 21:02:05 -0400 Subject: [PATCH 07/11] Assume program is Alumni if UWLDAP is missing data (#84) This PR sets 'program=Alumni' for members who either do not have an 'ou' attribute in UWLDAP, or who do not have a UWLDAP entry at all. Reviewed-on: https://git.csclub.uwaterloo.ca/public/pyceo/pulls/84 Reviewed-by: Raymond Li --- ceod/model/LDAPService.py | 15 ++++++++++----- tests/conftest.py | 11 +++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/ceod/model/LDAPService.py b/ceod/model/LDAPService.py index 7ec6388..c15f916 100644 --- a/ceod/model/LDAPService.py +++ b/ceod/model/LDAPService.py @@ -316,12 +316,12 @@ class LDAPService: self, dry_run: bool = False, members: Union[List[str], None] = None, - uwldap_batch_size: int = 10, + uwldap_batch_size: int = 100, ): if members: filter = '(|' + ''.join([f'(uid={uid})' for uid in members]) + ')' else: - filter = '(objectClass=*)' + filter = '(objectClass=member)' conn = self._get_ldap_conn() conn.search( self.ldap_users_base, filter, attributes=['uid', 'program']) @@ -336,12 +336,17 @@ class LDAPService: batch_uids = uids[i:i + uwldap_batch_size] batch_uw_programs = uwldap_srv.get_programs_for_users(batch_uids) uw_programs.extend(batch_uw_programs) + # uw_programs[i] will be None if the 'ou' attribute was not + # present in UWLDAP, or if no UWLDAP entry was found at all + for i, uw_program in enumerate(uw_programs): + if uw_program in (None, 'expired', 'orphaned'): + # If the UWLDAP record is orphaned, nonexistent, or missing + # data, assume that the member graduated + uw_programs[i] = 'Alumni' users_to_change = [ (uids[i], csc_programs[i], uw_programs[i]) for i in range(len(uids)) - if csc_programs[i] != uw_programs[i] and ( - uw_programs[i] not in (None, 'expired', 'orphaned') - ) + if csc_programs[i] != uw_programs[i] ] if dry_run: return users_to_change diff --git a/tests/conftest.py b/tests/conftest.py index e3c3c3a..208bc90 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -298,6 +298,17 @@ def uwldap_srv(cfg, ldap_conn): delete_subtree(conn, base_dn) conn.add(base_dn, 'organizationalUnit') + conn.add( + f'uid=ctdalek,{base_dn}', + ['inetLocalMailRecipient', 'inetOrgPerson', 'organizationalPerson', 'person'], + { + 'mailLocalAddress': 'ctdalek@uwaterloo.internal', + 'ou': 'Math', + 'cn': 'Calum T. Dalek', + 'sn': 'Dalek', + 'givenName': 'Calum', + }, + ) _uwldap_srv = UWLDAPService() component.getGlobalSiteManager().registerUtility(_uwldap_srv, IUWLDAPService) yield _uwldap_srv From c0c97365931f5ea1d14736e97abbc01a37c4cd53 Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Sun, 6 Nov 2022 15:23:27 -0500 Subject: [PATCH 08/11] Use the admin creds in the HTTPClient when necessary (#85) Currently, ceod uses the Kerberos credentials of the client when making requests to other services. This requires the client to send delegated credentials. Unfortunately the NPM krb5 package appears to be unable to perform delegation. So we will use the admin credentials instead (when appropriate). Reviewed-on: https://git.csclub.uwaterloo.ca/public/pyceo/pulls/85 Reviewed-by: Raymond Li Co-authored-by: Max Erenberg Co-committed-by: Max Erenberg --- ceo_common/model/HTTPClient.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ceo_common/model/HTTPClient.py b/ceo_common/model/HTTPClient.py index 1348a9f..cbf635b 100644 --- a/ceo_common/model/HTTPClient.py +++ b/ceo_common/model/HTTPClient.py @@ -6,7 +6,7 @@ from requests_gssapi import HTTPSPNEGOAuth from zope import component from zope.interface import implementer -from ceo_common.interfaces import IConfig, IHTTPClient +from ceo_common.interfaces import IConfig, IHTTPClient, IKerberosService @implementer(IHTTPClient) @@ -40,10 +40,18 @@ class HTTPClient: 'opportunistic_auth': True, 'target_name': gssapi.Name('ceod/' + host), } - if flask.has_request_context() and 'client_token' in g: + if flask.has_request_context(): # This is reached when we are the server and the client has # forwarded their credentials to us. - spnego_kwargs['creds'] = gssapi.Credentials(token=g.client_token) + token = None + if g.get('need_admin_creds', False): + # Some Kerberos bindings in some programming languages can't + # perform delegation, so use the admin creds here. + token = component.getUtility(IKerberosService).get_admin_creds_token() + elif 'client_token' in g: + token = g.client_token + if token is not None: + spnego_kwargs['creds'] = gssapi.Credentials(token=token) elif delegate: # This is reached when we are the client and we want to # forward our credentials to the server. From b507c561363bf003c77a0ceb302576edbc5fce0b Mon Sep 17 00:00:00 2001 From: Jonathan Leung Date: Sat, 26 Nov 2022 20:09:05 -0500 Subject: [PATCH 09/11] Show groups in member for API, CLI and TUI (#82) Closes #69. Tests are failing locally with many `assert os.geteuid() == 0` errors even on the master branch. I will add tests after I figure this out. Reviewed-on: https://git.csclub.uwaterloo.ca/public/pyceo/pulls/82 Co-authored-by: Jonathan Leung Co-committed-by: Jonathan Leung --- ceo/utils.py | 2 + ceod/api/members.py | 4 +- ceod/model/LDAPService.py | 2 +- docs/openapi.yaml | 5 + docs/redoc-static.html | 2842 ++++++++++++++++++++++++++------ tests/ceo/cli/test_members.py | 3 +- tests/ceod/api/test_members.py | 2 + 7 files changed, 2330 insertions(+), 530 deletions(-) diff --git a/ceo/utils.py b/ceo/utils.py index 57c62ba..abc96bb 100644 --- a/ceo/utils.py +++ b/ceo/utils.py @@ -136,6 +136,8 @@ def user_dict_kv(d: Dict) -> List[Tuple[str]]: pairs.append(('non-member terms', ','.join(_terms))) if 'password' in d: pairs.append(('password', d['password'])) + if 'groups' in d: + pairs.append(('groups', ','.join(d['groups']))) return pairs diff --git a/ceod/api/members.py b/ceod/api/members.py index 0fe36fb..5557c49 100644 --- a/ceod/api/members.py +++ b/ceod/api/members.py @@ -71,7 +71,9 @@ def get_user(auth_user: str, username: str): get_forwarding_addresses = True ldap_srv = component.getUtility(ILDAPService) user = ldap_srv.get_user(username) - return user.to_dict(get_forwarding_addresses) + user_dict = user.to_dict(get_forwarding_addresses) + user_dict['groups'] = ldap_srv.get_groups_for_user(username) + return user_dict @bp.route('/', methods=['PATCH']) diff --git a/ceod/model/LDAPService.py b/ceod/model/LDAPService.py index c15f916..cb25462 100644 --- a/ceod/model/LDAPService.py +++ b/ceod/model/LDAPService.py @@ -103,7 +103,7 @@ class LDAPService: conn.search(self.ldap_groups_base, f'(uniqueMember={self.uid_to_dn(username)})', attributes=['cn']) - return [entry.cn.value for entry in conn.entries] + return sorted([entry.cn.value for entry in conn.entries]) def get_display_info_for_users(self, usernames: List[str]) -> List[Dict[str, str]]: if not usernames: diff --git a/docs/openapi.yaml b/docs/openapi.yaml index 8361a97..3bbe59d 100644 --- a/docs/openapi.yaml +++ b/docs/openapi.yaml @@ -942,6 +942,11 @@ components: $ref: "#/components/schemas/NonMemberTerms" forwarding_addresses: $ref: "#/components/schemas/ForwardingAddresses" + groups: + type: array + description: Groups for which this user is a member of + items: + $ref: "#/components/schemas/GroupCN" UWLDAPUser: type: object properties: diff --git a/docs/redoc-static.html b/docs/redoc-static.html index f857536..23f935e 100644 --- a/docs/redoc-static.html +++ b/docs/redoc-static.html @@ -13,34 +13,1837 @@ } "},this.getStyleTags=function(){return e.sealed?Ho(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return Ho(2);var r=((t={})[Uo]="",t["data-styled-version"]="5.3.0",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),o=oi();return o&&(r.nonce=o),[n.createElement("style",To({},r,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new pi({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?Ho(2):n.createElement(Ci,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return Ho(3)},e}(),aa=function(e){var t=n.forwardRef((function(t,r){var o=(0,n.useContext)(Qi),i=e.defaultProps,a=zi(t,o,i);return n.createElement(e,To({},t,{theme:a,ref:r}))}));return jo()(t,e),t.displayName="WithTheme("+Fo(e)+")",t},sa=function(){return(0,n.useContext)(Qi)},la={StyleSheet:pi,masterSheet:Ei},ca=ta;const{default:ua,css:pa,createGlobalStyle:da,keyframes:fa,ThemeProvider:ha}=e,ma=(e,t,n)=>(...r)=>pa` + @media ${t?"print, ":""} screen and (max-width: ${t=>t.theme.breakpoints[e]}) ${n||""} { + ${pa(...r)}; + } + `;var ga=ua;function ya(e){return t=>{if(t.theme.extensionsHook)return t.theme.extensionsHook(e,t)}}const va=ga.div` + padding: 20px; + color: red; +`;class ba extends n.Component{constructor(e){super(e),this.state={error:void 0}}componentDidCatch(e){return this.setState({error:e}),!1}render(){return this.state.error?n.createElement(va,null,n.createElement("h1",null,"Something went wrong..."),n.createElement("small",null," ",this.state.error.message," "),n.createElement("p",null,n.createElement("details",null,n.createElement("summary",null,"Stack trace"),n.createElement("pre",null,this.state.error.stack))),n.createElement("small",null," ReDoc Version: ","2.0.0-rc.77")," ",n.createElement("br",null),n.createElement("small",null," Commit: ","580f883")):n.createElement(n.Fragment,null,n.Children.only(this.props.children))}}const wa=fa` + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); + } +`,xa=ga((e=>n.createElement("svg",{className:e.className,version:"1.1",width:"512",height:"512",viewBox:"0 0 512 512"},n.createElement("path",{d:"M275.682 147.999c0 10.864-8.837 19.661-19.682 19.661v0c-10.875 0-19.681-8.796-19.681-19.661v-96.635c0-10.885 8.806-19.661 19.681-19.661v0c10.844 0 19.682 8.776 19.682 19.661v96.635z"}),n.createElement("path",{d:"M275.682 460.615c0 10.865-8.837 19.682-19.682 19.682v0c-10.875 0-19.681-8.817-19.681-19.682v-96.604c0-10.885 8.806-19.681 19.681-19.681v0c10.844 0 19.682 8.796 19.682 19.682v96.604z"}),n.createElement("path",{d:"M147.978 236.339c10.885 0 19.681 8.755 19.681 19.641v0c0 10.885-8.796 19.702-19.681 19.702h-96.624c-10.864 0-19.661-8.817-19.661-19.702v0c0-10.885 8.796-19.641 19.661-19.641h96.624z"}),n.createElement("path",{d:"M460.615 236.339c10.865 0 19.682 8.755 19.682 19.641v0c0 10.885-8.817 19.702-19.682 19.702h-96.584c-10.885 0-19.722-8.817-19.722-19.702v0c0-10.885 8.837-19.641 19.722-19.641h96.584z"}),n.createElement("path",{d:"M193.546 165.703c7.69 7.66 7.68 20.142 0 27.822v0c-7.701 7.701-20.162 7.701-27.853 0.020l-68.311-68.322c-7.68-7.701-7.68-20.142 0-27.863v0c7.68-7.68 20.121-7.68 27.822 0l68.342 68.342z"}),n.createElement("path",{d:"M414.597 386.775c7.7 7.68 7.7 20.163 0.021 27.863v0c-7.7 7.659-20.142 7.659-27.843-0.062l-68.311-68.26c-7.68-7.7-7.68-20.204 0-27.863v0c7.68-7.7 20.163-7.7 27.842 0l68.291 68.322z"}),n.createElement("path",{d:"M165.694 318.464c7.69-7.7 20.153-7.7 27.853 0v0c7.68 7.659 7.69 20.163 0 27.863l-68.342 68.322c-7.67 7.659-20.142 7.659-27.822-0.062v0c-7.68-7.68-7.68-20.122 0-27.801l68.311-68.322z"}),n.createElement("path",{d:"M386.775 97.362c7.7-7.68 20.142-7.68 27.822 0v0c7.7 7.68 7.7 20.183 0.021 27.863l-68.322 68.311c-7.68 7.68-20.163 7.68-27.843-0.020v0c-7.68-7.68-7.68-20.162 0-27.822l68.322-68.332z"}))))` + animation: 2s ${wa} linear infinite; + width: 50px; + height: 50px; + content: ''; + display: inline-block; + margin-left: -25px; + + path { + fill: ${e=>e.color}; + } +`,ka=ga.div` + font-family: helvetica, sans; + width: 100%; + text-align: center; + font-size: 25px; + margin: 30px 0 20px 0; + color: ${e=>e.color}; +`;class _a extends n.PureComponent{render(){return n.createElement("div",{style:{textAlign:"center"}},n.createElement(ka,{color:this.props.color},"Loading ..."),n.createElement(xa,{color:this.props.color}))}}var Oa=r(5697);const Sa=n.createContext(new xo({})),Ea=Sa.Provider,Pa=Sa.Consumer;var Aa=r(3675),$a=r(3777),Ca=r(8925);var Ra=r(1851),ja=r(6729),Ta=r(3573),Ia=r.n(Ta);const Na=Ta.parse;class Da{static baseName(e,t=1){const n=Da.parse(e);return n[n.length-t]}static dirName(e,t=1){const n=Da.parse(e);return Ta.compile(n.slice(0,n.length-t))}static relative(e,t){const n=Da.parse(e);return Da.parse(t).slice(n.length)}static parse(e){let t=e;return"#"===t.charAt(0)&&(t=t.substring(1)),Na(t)}static join(e,t){const n=Da.parse(e).concat(t);return Ta.compile(n)}static get(e,t){return Ta.get(e,t)}static compile(e){return Ta.compile(e)}static escape(e){return Ta.escape(e)}}Ta.parse=Da.parse,Object.assign(Da,Ta);var La=r(6470),Ma=r(3578),Fa=Object.defineProperty,za=Object.defineProperties,Ua=Object.getOwnPropertyDescriptors,Va=Object.getOwnPropertySymbols,Ba=Object.prototype.hasOwnProperty,qa=Object.prototype.propertyIsEnumerable,Wa=(e,t,n)=>t in e?Fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ha=(e,t)=>{for(var n in t||(t={}))Ba.call(t,n)&&Wa(e,n,t[n]);if(Va)for(var n of Va(t))qa.call(t,n)&&Wa(e,n,t[n]);return e},Ya=(e,t)=>za(e,Ua(t));function Ka(e){return"string"==typeof e&&/\dxx/i.test(e)}function Ga(e,t=!1){if("default"===e)return t?"error":"success";let n="string"==typeof e?parseInt(e,10):e;if(Ka(e)&&(n*=100),n<100||n>599)throw new Error("invalid HTTP code");let r="success";return n>=300&&n<400?r="redirect":n>=400?r="error":n<200&&(r="info"),r}const Qa={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};function Xa(e){return e in Qa}const Ja={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",properties:"object",patternProperties:"object"};function Za(e,t=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let n=!0;const r=io(t);return("object"===t||r&&(null==t?void 0:t.includes("object")))&&(n=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!io(e.items)&&!io(e.prefixItems)&&(void 0!==e.items&&!ao(e.items)&&("array"===t||r&&(null==t?void 0:t.includes("array")))&&(n=Za(e.items,e.items.type)),n)}function es(e){return-1!==e.search(/json/i)}function ts(e,t,n){return io(e)?e.map((e=>e.toString())).join(n):"object"==typeof e?Object.keys(e).map((t=>`${t}${n}${e[t]}`)).join(n):t+"="+e.toString()}function ns(e,t){return io(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((n=>`${t}[${n}]=${e[n]}`)).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function rs(e,t,n){const r="__redoc_param_name__",o=t?"*":"";return Ma.parse(`{?${r}${o}}`).expand({[r]:n}).substring(1).replace(/__redoc_param_name__/g,e)}function os(e,t){return es(t)?JSON.stringify(e):(console.warn(`Parameter serialization as ${t} is not supported`),"")}function is(e,t){return e.in?decodeURIComponent(function(e,t){const{name:n,style:r,explode:o=!1,serializationMime:i}=e;if(i)switch(e.in){case"path":case"header":return os(t,i);case"cookie":case"query":return`${n}=${os(t,i)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!r)return console.warn(`Missing style attribute or content for parameter ${n}`),"";switch(e.in){case"path":return function(e,t,n,r){const o=n?"*":"";let i="";"label"===t?i=".":"matrix"===t&&(i=";");const a="__redoc_param_name__";return Ma.parse(`{${i}${a}${o}}`).expand({[a]:r}).replace(/__redoc_param_name__/g,e)}(n,r,o,t);case"query":return function(e,t,n,r){switch(t){case"form":return rs(e,n,r);case"spaceDelimited":return io(r)?n?rs(e,n,r):`${e}=${r.join("%20")}`:(console.warn("The style spaceDelimited is only applicable to arrays"),"");case"pipeDelimited":return io(r)?n?rs(e,n,r):`${e}=${r.join("|")}`:(console.warn("The style pipeDelimited is only applicable to arrays"),"");case"deepObject":return!n||io(r)||"object"!=typeof r?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):ns(r,e);default:return console.warn("Unexpected style for query: "+t),""}}(n,r,o,t);case"header":return function(e,t,n){if("simple"===e){const e=t?"*":"",r="__redoc_param_name__",o=Ma.parse(`{${r}${e}}`);return decodeURIComponent(o.expand({[r]:n}))}return console.warn("Unexpected style for header: "+e),""}(r,o,t);case"cookie":return function(e,t,n,r){return"form"===t?rs(e,n,r):(console.warn("Unexpected style for cookie: "+t),"")}(n,r,o,t);default:return console.warn("Unexpected parameter location: "+e.in),""}}(e,t)):t}const as=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;function ss(e){return as.test(e||"")}function ls(e){var t;const[n]=(null==(t=null==e?void 0:e.match(as))?void 0:t.reverse())||[];return n}function cs(e,t,n){let r;return void 0!==t&&void 0!==n?r=t===n?`= ${t} ${e}`:`[ ${t} .. ${n} ] ${e}`:void 0!==n?r=`<= ${n} ${e}`:void 0!==t&&(r=1===t?"non-empty":`>= ${t} ${e}`),r}function us(e){const t=[],n=cs("characters",e.minLength,e.maxLength);void 0!==n&&t.push(n);const r=cs("items",e.minItems,e.maxItems);void 0!==r&&t.push(r);const o=cs("properties",e.minProperties,e.maxProperties);void 0!==o&&t.push(o);const i=function(e){if(void 0===e)return;const t=e.toString(10);return/^0\.0*1$/.test(t)?`decimal places <= ${t.split(".")[1].length}`:`multiple of ${t}`}(e.multipleOf);void 0!==i&&t.push(i);const a=function(e){var t,n;const r="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!=(t=e.minimum)?t:1/0):e.minimum,o="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!=(n=e.maximum)?n:-1/0):e.maximum,i="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==r&&void 0!==o?`${i?"( ":"[ "}${r} .. ${o}${a?" )":" ]"}`:void 0!==o?`${a?"< ":"<= "}${o}`:void 0!==r?`${i?"> ":">= "}${r}`:void 0}(e);return void 0!==a&&t.push(a),e.uniqueItems&&t.push("unique"),t}function ps(e,t=[]){const n=[],r=[],o=[];return e.forEach((e=>{e.required?t.includes(e.name)?r.push(e):o.push(e):n.push(e)})),r.sort(((e,n)=>t.indexOf(e.name)-t.indexOf(n.name))),[...r,...o,...n]}function ds(e,t){return[...e].sort(((e,n)=>e[t].localeCompare(n[t])))}function fs(e,t){const n=void 0===e?function(e){try{const t=ro(e);return t.search="",t.hash="",t.toString()}catch(t){return e}}((()=>{if(!qr)return"";const e=window.location.href;return e.endsWith(".html")?(0,La.dirname)(e):e})()):(0,La.dirname)(e);return 0===t.length&&(t=[{url:"/"}]),t.map((e=>{return Ya(Ha({},e),{url:(t=e.url,function(e,t){let n;if(t.startsWith("//"))try{n=`${new URL(e).protocol||"https:"}${t}`}catch(e){n=`https:${t}`}else if(function(e){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)}(t))n=t;else if(t.startsWith("/"))try{const r=new URL(e);r.pathname=t,n=r.href}catch(e){n=t}else n=Xr(e)+"/"+t;return Xr(n)}(n,t)),description:e.description||""});var t}))}let hs="section/Authentication/";const ms=e=>({delete:"del",options:"opts"}[e]||e);function gs(e,t){return Object.keys(e).filter((e=>!0===t?e.startsWith("x-")&&!function(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0}}(e):e.startsWith("x-")&&t.indexOf(e)>-1)).reduce(((t,n)=>(t[n]=e[n],t)),{})}var ys=r(5660);r(7874),r(4279),r(5433),r(6213),r(2731),r(3967),r(7046),r(57),r(2503),r(6841),r(6854),r(4335),r(1426),r(8246),r(9945),r(366),r(2939),r(9385),r(2886),r(5266),r(874),r(3358),r(8052);function vs(e,t="clike"){t=t.toLowerCase();let n=ys.languages[t];return n||(n=ys.languages[function(e){return{json:"js","c++":"cpp","c#":"csharp","objective-c":"objectivec",shell:"bash",viml:"vim"}[e]||"clike"}(t)]),ys.highlight(e.toString(),n,t)}ys.languages.insertBefore("javascript","string",{"property string":{pattern:/([{,]\s*)"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,lookbehind:!0}},void 0),ys.languages.insertBefore("javascript","punctuation",{property:{pattern:/([{,]\s*)[a-z]\w*(?=\s*:)/i,lookbehind:!0}},void 0);var bs=Object.defineProperty,ws=Object.defineProperties,xs=Object.getOwnPropertyDescriptors,ks=Object.getOwnPropertySymbols,_s=Object.prototype.hasOwnProperty,Os=Object.prototype.propertyIsEnumerable,Ss=(e,t,n)=>t in e?bs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Es=(e,t)=>{for(var n in t||(t={}))_s.call(t,n)&&Ss(e,n,t[n]);if(ks)for(var n of ks(t))Os.call(t,n)&&Ss(e,n,t[n]);return e},Ps=(e,t)=>ws(e,xs(t));const As={};function $s(e,t,n){if("function"==typeof n.value)return function(e,t,n){if(!n.value||n.value.length>0)throw new Error("@memoize decorator can only be applied to methods of zero arguments");const r=`_memoized_${t}`,o=n.value;return e[r]=As,Ps(Es({},n),{value(){return this[r]===As&&(this[r]=o.call(this)),this[r]}})}(e,t,n);if("function"==typeof n.get)return function(e,t,n){const r=`_memoized_${t}`,o=n.get;return e[r]=As,Ps(Es({},n),{get(){return this[r]===As&&(this[r]=o.call(this)),this[r]}})}(e,t,n);throw new Error("@memoize decorator can be applied to methods or getters, got "+String(n.value)+" instead")}function Cs(e){let t=1;return"-"===e[0]&&(t=-1,e=e.substr(1)),(n,r)=>-1==t?r[e].localeCompare(n[e]):n[e].localeCompare(r[e])}var Rs=Object.defineProperty,js=Object.getOwnPropertyDescriptor;const Ts="hashchange";class Is{constructor(){this.emit=()=>{this._emiter.emit(Ts,this.currentId)},this._emiter=new ja.EventEmitter,this.bind()}get currentId(){return qr?decodeURIComponent(window.location.hash.substring(1)):""}linkForId(e){return e?"#"+e:""}subscribe(e){const t=this._emiter.addListener(Ts,e);return()=>t.removeListener(Ts,e)}bind(){qr&&window.addEventListener("hashchange",this.emit,!1)}dispose(){qr&&window.removeEventListener("hashchange",this.emit)}replace(e,t=!1){qr&&null!=e&&e!==this.currentId&&(t?window.history.replaceState(null,"",window.location.href.split("#")[0]+this.linkForId(e)):(window.history.pushState(null,"",window.location.href.split("#")[0]+this.linkForId(e)),this.emit()))}}((e,t,n,r)=>{for(var o,i=js(t,n),a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);i&&Rs(t,n,i)})([Ra.bind,Ra.debounce],Is.prototype,"replace");const Ns=new Is;var Ds=r(813);class Ls{constructor(){this.map=new Map,this.prevTerm=""}add(e){this.map.set(e,new Ds(e))}delete(e){this.map.delete(e)}addOnly(e){this.map.forEach(((t,n)=>{-1===e.indexOf(n)&&(t.unmark(),this.map.delete(n))}));for(const t of e)this.map.has(t)||this.map.set(t,new Ds(t))}clearAll(){this.unmark(),this.map.clear()}mark(e){(e||this.prevTerm)&&(this.map.forEach((t=>{t.unmark(),t.mark(e||this.prevTerm)})),this.prevTerm=e||this.prevTerm)}unmark(){this.map.forEach((e=>e.unmark())),this.prevTerm=""}}let Ms={baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};const Fs=/[&<>"']/,zs=/[&<>"']/g,Us=/[<>"']|&(?!#?\w+;)/,Vs=/[<>"']|&(?!#?\w+;)/g,Bs={"&":"&","<":"<",">":">",'"':""","'":"'"},qs=e=>Bs[e];function Ws(e,t){if(t){if(Fs.test(e))return e.replace(zs,qs)}else if(Us.test(e))return e.replace(Vs,qs);return e}const Hs=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Ys(e){return e.replace(Hs,((e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}const Ks=/(^|[^\[])\^/g;function Gs(e,t){e="string"==typeof e?e:e.source,t=t||"";const n={replace:(t,r)=>(r=(r=r.source||r).replace(Ks,"$1"),e=e.replace(t,r),n),getRegex:()=>new RegExp(e,t)};return n}const Qs=/[^\w:]/g,Xs=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Js(e,t,n){if(e){let e;try{e=decodeURIComponent(Ys(n)).replace(Qs,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!Xs.test(n)&&(n=function(e,t){Zs[" "+e]||(el.test(e)?Zs[" "+e]=e+"/":Zs[" "+e]=al(e,"/",!0));const n=-1===(e=Zs[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(tl,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(nl,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}const Zs={},el=/^[^:]+:\/*[^/]*$/,tl=/^([^:]+:)[\s\S]*$/,nl=/^([^:]+:\/*[^/]*)[\s\S]*$/,rl={exec:function(){}};function ol(e){let t,n,r=1;for(;r{let r=!1,o=t;for(;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"})).split(/ \|/);let r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}function cl(e,t,n,r){const o=t.href,i=t.title?Ws(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){r.state.inLink=!0;const e={type:"link",raw:n,href:o,title:i,text:a,tokens:r.inlineTokens(a,[])};return r.state.inLink=!1,e}return{type:"image",raw:n,href:o,title:i,text:Ws(a)}}class ul{constructor(e){this.options=e||Ms}space(e){const t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:al(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t){const n=e.match(/^(\s+)(?:```)/);if(null===n)return t;const r=n[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[n]=t;return n.length>=r.length?e.slice(r.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim():t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=al(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}const n={type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:[]};return this.lexer.inline(n.text,n.tokens),n}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){const e=t[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(e,[]),text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n,r,o,i,a,s,l,c,u,p,d,f,h=t[1].trim();const m=h.length>1,g={type:"list",raw:"",ordered:m,start:m?+h.slice(0,-1):"",loose:!1,items:[]};h=m?`\\d{1,9}\\${h.slice(-1)}`:`\\${h}`,this.options.pedantic&&(h=m?h:"[*+-]");const y=new RegExp(`^( {0,3}${h})((?:[\t ][^\\n]*)?(?:\\n|$))`);for(;e&&(f=!1,t=y.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0],u=e.split("\n",1)[0],this.options.pedantic?(i=2,d=c.trimLeft()):(i=t[2].search(/[^ ]/),i=i>4?1:i,d=c.slice(i),i+=t[1].length),s=!1,!c&&/^ *$/.test(u)&&(n+=u+"\n",e=e.substring(u.length+1),f=!0),!f){const t=new RegExp(`^ {0,${Math.min(3,i-1)}}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))`),r=new RegExp(`^ {0,${Math.min(3,i-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`);for(;e&&(p=e.split("\n",1)[0],c=p,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!t.test(c))&&!r.test(e);){if(c.search(/[^ ]/)>=i||!c.trim())d+="\n"+c.slice(i);else{if(s)break;d+="\n"+c}s||c.trim()||(s=!0),n+=p+"\n",e=e.substring(p.length+1)}}g.loose||(l?g.loose=!0:/\n *\n *$/.test(n)&&(l=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(d),r&&(o="[ ] "!==r[0],d=d.replace(/^\[[ xX]\] +/,""))),g.items.push({type:"list_item",raw:n,task:!!r,checked:o,loose:!1,text:d}),g.raw+=n}g.items[g.items.length-1].raw=n.trimRight(),g.items[g.items.length-1].text=d.trimRight(),g.raw=g.raw.trimRight();const v=g.items.length;for(a=0;a"space"===e.type)),t=e.every((e=>{const t=e.raw.split("");let n=0;for(const e of t)if("\n"===e&&(n+=1),n>1)return!0;return!1}));!g.loose&&e.length&&t&&(g.loose=!0,g.items[a].loose=!0)}return g}}html(e){const t=this.rules.block.html.exec(e);if(t){const e={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(e.type="paragraph",e.text=this.options.sanitizer?this.options.sanitizer(t[0]):Ws(t[0]),e.tokens=[],this.lexer.inline(e.text,e.tokens)),e}}def(e){const t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{type:"def",tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}}table(e){const t=this.rules.block.table.exec(e);if(t){const e={type:"table",header:il(t[1]).map((e=>({text:e}))),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(e.header.length===e.align.length){e.raw=t[0];let n,r,o,i,a=e.align.length;for(n=0;n({text:e})));for(a=e.header.length,r=0;r/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):Ws(t[0]):t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=al(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;const n=e.length;let r=0,o=0;for(;o-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^$/.test(e)?n.slice(1):n.slice(1,-1)),cl(t,{href:n?n.replace(this.rules.inline._escapes,"$1"):n,title:r?r.replace(this.rules.inline._escapes,"$1"):r},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=(n[2]||n[1]).replace(/\s+/g," ");if(e=t[e.toLowerCase()],!e||!e.href){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return cl(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrong.lDelim.exec(e);if(!r)return;if(r[3]&&n.match(/[\p{L}\p{N}]/u))return;const o=r[1]||r[2]||"";if(!o||o&&(""===n||this.rules.inline.punctuation.exec(n))){const n=r[0].length-1;let o,i,a=n,s=0;const l="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+n);null!=(r=l.exec(t));){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(i=o.length,r[3]||r[4]){a+=i;continue}if((r[5]||r[6])&&n%3&&!((n+i)%3)){s+=i;continue}if(a-=i,a>0)continue;if(i=Math.min(i,i+a+s),Math.min(n,i)%2){const t=e.slice(1,n+r.index+i);return{type:"em",raw:e.slice(0,n+r.index+i+1),text:t,tokens:this.lexer.inlineTokens(t,[])}}const t=e.slice(2,n+r.index+i-1);return{type:"strong",raw:e.slice(0,n+r.index+i+1),text:t,tokens:this.lexer.inlineTokens(t,[])}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const n=/[^ ]/.test(e),r=/^ /.test(e)&&/ $/.test(e);return n&&r&&(e=e.substring(1,e.length-1)),e=Ws(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}}autolink(e,t){const n=this.rules.inline.autolink.exec(e);if(n){let e,r;return"@"===n[2]?(e=Ws(this.options.mangle?t(n[1]):n[1]),r="mailto:"+e):(e=Ws(n[1]),r=e),{type:"link",raw:n[0],text:e,href:r,tokens:[{type:"text",raw:e,text:e}]}}}url(e,t){let n;if(n=this.rules.inline.url.exec(e)){let e,r;if("@"===n[2])e=Ws(this.options.mangle?t(n[0]):n[0]),r="mailto:"+e;else{let t;do{t=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(t!==n[0]);e=Ws(n[0]),r="www."===n[1]?"http://"+e:e}return{type:"link",raw:n[0],text:e,href:r,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e,t){const n=this.rules.inline.text.exec(e);if(n){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):Ws(n[0]):n[0]:Ws(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:e}}}}const pl={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:rl,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};pl.def=Gs(pl.def).replace("label",pl._label).replace("title",pl._title).getRegex(),pl.bullet=/(?:[*+-]|\d{1,9}[.)])/,pl.listItemStart=Gs(/^( *)(bull) */).replace("bull",pl.bullet).getRegex(),pl.list=Gs(pl.list).replace(/bull/g,pl.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+pl.def.source+")").getRegex(),pl._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",pl._comment=/|$)/,pl.html=Gs(pl.html,"i").replace("comment",pl._comment).replace("tag",pl._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),pl.paragraph=Gs(pl._paragraph).replace("hr",pl.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",pl._tag).getRegex(),pl.blockquote=Gs(pl.blockquote).replace("paragraph",pl.paragraph).getRegex(),pl.normal=ol({},pl),pl.gfm=ol({},pl.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),pl.gfm.table=Gs(pl.gfm.table).replace("hr",pl.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",pl._tag).getRegex(),pl.gfm.paragraph=Gs(pl._paragraph).replace("hr",pl.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",pl.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",pl._tag).getRegex(),pl.pedantic=ol({},pl.normal,{html:Gs("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",pl._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:rl,paragraph:Gs(pl.normal._paragraph).replace("hr",pl.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",pl.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const dl={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:rl,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:rl,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}dl._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",dl.punctuation=Gs(dl.punctuation).replace(/punctuation/g,dl._punctuation).getRegex(),dl.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,dl.escapedEmSt=/\\\*|\\_/g,dl._comment=Gs(pl._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),dl.emStrong.lDelim=Gs(dl.emStrong.lDelim).replace(/punct/g,dl._punctuation).getRegex(),dl.emStrong.rDelimAst=Gs(dl.emStrong.rDelimAst,"g").replace(/punct/g,dl._punctuation).getRegex(),dl.emStrong.rDelimUnd=Gs(dl.emStrong.rDelimUnd,"g").replace(/punct/g,dl._punctuation).getRegex(),dl._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,dl._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,dl._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,dl.autolink=Gs(dl.autolink).replace("scheme",dl._scheme).replace("email",dl._email).getRegex(),dl._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,dl.tag=Gs(dl.tag).replace("comment",dl._comment).replace("attribute",dl._attribute).getRegex(),dl._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,dl._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,dl._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,dl.link=Gs(dl.link).replace("label",dl._label).replace("href",dl._href).replace("title",dl._title).getRegex(),dl.reflink=Gs(dl.reflink).replace("label",dl._label).replace("ref",pl._label).getRegex(),dl.nolink=Gs(dl.nolink).replace("ref",pl._label).getRegex(),dl.reflinkSearch=Gs(dl.reflinkSearch,"g").replace("reflink",dl.reflink).replace("nolink",dl.nolink).getRegex(),dl.normal=ol({},dl),dl.pedantic=ol({},dl.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Gs(/^!?\[(label)\]\((.*?)\)/).replace("label",dl._label).getRegex(),reflink:Gs(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",dl._label).getRegex()}),dl.gfm=ol({},dl.normal,{escape:Gs(dl.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length)));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some((r=>!!(n=r.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.space(e))e=e.substring(n.raw.length),1===n.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(n);else if(n=this.tokenizer.code(e))e=e.substring(n.raw.length),r=t[t.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?t.push(n):(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(n=this.tokenizer.fences(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.heading(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.hr(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.blockquote(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.list(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.html(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.def(e))e=e.substring(n.raw.length),r=t[t.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(r.raw+="\n"+n.raw,r.text+="\n"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(n=this.tokenizer.table(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.lheading(e))e=e.substring(n.raw.length),t.push(n);else{if(o=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const n=e.slice(1);let r;this.options.extensions.startBlock.forEach((function(e){r=e.call({lexer:this},n),"number"==typeof r&&r>=0&&(t=Math.min(t,r))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(o)))r=t[t.length-1],i&&"paragraph"===r.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(n),i=o.length!==e.length,e=e.substring(n.raw.length);else if(n=this.tokenizer.text(e))e=e.substring(n.raw.length),r=t[t.length-1],r&&"text"===r.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t){this.inlineQueue.push({src:e,tokens:t})}inlineTokens(e,t=[]){let n,r,o,i,a,s,l=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(l));)e.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,i.index)+"["+ll("a",i[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,i.index)+"["+ll("a",i[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,i.index)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(a||(s=""),a=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((r=>!!(n=r.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),r=t[t.length-1],r&&"text"===n.type&&"text"===r.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),r=t[t.length-1],r&&"text"===n.type&&"text"===r.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,l,s))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e,hl))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e,hl))){if(o=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const n=e.slice(1);let r;this.options.extensions.startInline.forEach((function(e){r=e.call({lexer:this},n),"number"==typeof r&&r>=0&&(t=Math.min(t,r))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}if(n=this.tokenizer.inlineText(o,fl))e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(s=n.raw.slice(-1)),a=!0,r=t[t.length-1],r&&"text"===r.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(n.raw.length),t.push(n);return t}}class gl{constructor(e){this.options=e||Ms}code(e,t,n){const r=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,r);null!=t&&t!==e&&(n=!0,e=t)}return e=e.replace(/\n$/,"")+"\n",r?'
'+(n?e:Ws(e,!0))+"
\n":"
"+(n?e:Ws(e,!0))+"
\n"}blockquote(e){return`
\n${e}
\n`}html(e){return e}heading(e,t,n,r){return this.options.headerIds?`${e}\n`:`${e}\n`}hr(){return this.options.xhtml?"
\n":"
\n"}list(e,t,n){const r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"}listitem(e){return`
  • ${e}
  • \n`}checkbox(e){return" "}paragraph(e){return`

    ${e}

    \n`}table(e,t){return t&&(t=`${t}`),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return`\n${e}\n`}tablecell(e,t){const n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`\n`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,n){if(null===(e=Js(this.options.sanitize,this.options.baseUrl,e)))return n;let r='",r}image(e,t,n){if(null===(e=Js(this.options.sanitize,this.options.baseUrl,e)))return n;let r=`${n}":">",r}text(e){return e}}class yl{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}}class vl{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{r++,n=e+"-"+r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n}slug(e,t={}){const n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}class bl{constructor(e){this.options=e||Ms,this.options.renderer=this.options.renderer||new gl,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new yl,this.slugger=new vl}static parse(e,t){return new bl(t).parse(e)}static parseInline(e,t){return new bl(t).parseInline(e)}parse(e,t=!0){let n,r,o,i,a,s,l,c,u,p,d,f,h,m,g,y,v,b,w,x="";const k=e.length;for(n=0;n0&&"paragraph"===g.tokens[0].type?(g.tokens[0].text=b+" "+g.tokens[0].text,g.tokens[0].tokens&&g.tokens[0].tokens.length>0&&"text"===g.tokens[0].tokens[0].type&&(g.tokens[0].tokens[0].text=b+" "+g.tokens[0].tokens[0].text)):g.tokens.unshift({type:"text",text:b}):m+=b),m+=this.parse(g.tokens,h),u+=this.renderer.listitem(m,v,y);x+=this.renderer.list(u,d,f);continue;case"html":x+=this.renderer.html(p.text);continue;case"paragraph":x+=this.renderer.paragraph(this.parseInline(p.tokens));continue;case"text":for(u=p.tokens?this.parseInline(p.tokens):p.text;n+1{r(e.text,e.lang,(function(t,n){if(t)return i(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),a--,0===a&&i()}))}),0))})),void(0===a&&i())}try{const n=ml.lex(e,t);return t.walkTokens&&wl.walkTokens(n,t.walkTokens),bl.parse(n,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"

    An error occurred:

    "+Ws(e.message+"",!0)+"
    ";throw e}}wl.options=wl.setOptions=function(e){var t;return ol(wl.defaults,e),t=wl.defaults,Ms=t,wl},wl.getDefaults=function(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}},wl.defaults=Ms,wl.use=function(...e){const t=ol({},...e),n=wl.defaults.extensions||{renderers:{},childTokens:{}};let r;e.forEach((e=>{if(e.extensions&&(r=!0,e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if(e.renderer){const t=n.renderers?n.renderers[e.name]:null;n.renderers[e.name]=t?function(...n){let r=e.renderer.apply(this,n);return!1===r&&(r=t.apply(this,n)),r}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");n[e.level]?n[e.level].unshift(e.tokenizer):n[e.level]=[e.tokenizer],e.start&&("block"===e.level?n.startBlock?n.startBlock.push(e.start):n.startBlock=[e.start]:"inline"===e.level&&(n.startInline?n.startInline.push(e.start):n.startInline=[e.start]))}e.childTokens&&(n.childTokens[e.name]=e.childTokens)}))),e.renderer){const n=wl.defaults.renderer||new gl;for(const t in e.renderer){const r=n[t];n[t]=(...o)=>{let i=e.renderer[t].apply(n,o);return!1===i&&(i=r.apply(n,o)),i}}t.renderer=n}if(e.tokenizer){const n=wl.defaults.tokenizer||new ul;for(const t in e.tokenizer){const r=n[t];n[t]=(...o)=>{let i=e.tokenizer[t].apply(n,o);return!1===i&&(i=r.apply(n,o)),i}}t.tokenizer=n}if(e.walkTokens){const n=wl.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens.call(this,t),n&&n.call(this,t)}}r&&(t.extensions=n),wl.setOptions(t)}))},wl.walkTokens=function(e,t){for(const n of e)switch(t.call(wl,n),n.type){case"table":for(const e of n.header)wl.walkTokens(e.tokens,t);for(const e of n.rows)for(const n of e)wl.walkTokens(n.tokens,t);break;case"list":wl.walkTokens(n.items,t);break;default:wl.defaults.extensions&&wl.defaults.extensions.childTokens&&wl.defaults.extensions.childTokens[n.type]?wl.defaults.extensions.childTokens[n.type].forEach((function(e){wl.walkTokens(n[e],t)})):n.tokens&&wl.walkTokens(n.tokens,t)}},wl.parseInline=function(e,t){if(null==e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");sl(t=ol({},wl.defaults,t||{}));try{const n=ml.lexInline(e,t);return t.walkTokens&&wl.walkTokens(n,t.walkTokens),bl.parseInline(n,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"

    An error occurred:

    "+Ws(e.message+"",!0)+"
    ";throw e}},wl.Parser=bl,wl.parser=bl.parse,wl.Renderer=gl,wl.TextRenderer=yl,wl.Lexer=ml,wl.lexer=ml.lex,wl.Tokenizer=ul,wl.Slugger=vl,wl.parse=wl,wl.options,wl.setOptions,wl.use,wl.walkTokens,wl.parseInline,bl.parse,ml.lex;var xl=Object.defineProperty,kl=Object.defineProperties,_l=Object.getOwnPropertyDescriptors,Ol=Object.getOwnPropertySymbols,Sl=Object.prototype.hasOwnProperty,El=Object.prototype.propertyIsEnumerable,Pl=(e,t,n)=>t in e?xl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Al=(e,t)=>{for(var n in t||(t={}))Sl.call(t,n)&&Pl(e,n,t[n]);if(Ol)for(var n of Ol(t))El.call(t,n)&&Pl(e,n,t[n]);return e},$l=(e,t)=>kl(e,_l(t));const Cl=new wl.Renderer;wl.setOptions({renderer:Cl,highlight:(e,t)=>vs(e,t)});const Rl="(?:^ {0,3}\x3c!-- ReDoc-Inject:\\s+?<({component}).*?/?>\\s+?--\x3e\\s*$|(?:^ {0,3}<({component})([\\s\\S]*?)>([\\s\\S]*?)|^ {0,3}<({component})([\\s\\S]*?)(?:/>|\\n{2,})))";class jl{constructor(e,t){this.options=e,this.parentId=t,this.headings=[],this.headingRule=(e,t,n,r)=>(1===t?this.currentTopHeading=this.saveHeading(e,t):2===t&&this.saveHeading(e,t,this.currentTopHeading&&this.currentTopHeading.items,this.currentTopHeading&&this.currentTopHeading.id),this.originalHeadingRule(e,t,n,r)),this.parentId=t,this.parser=new wl.Parser,this.headingEnhanceRenderer=new wl.Renderer,this.originalHeadingRule=this.headingEnhanceRenderer.heading.bind(this.headingEnhanceRenderer),this.headingEnhanceRenderer.heading=this.headingRule}static containsComponent(e,t){return new RegExp(Rl.replace(/{component}/g,t),"gmi").test(e)}static getTextBeforeHading(e,t){const n=e.search(new RegExp(`^##?\\s+${t}`,"m"));return n>-1?e.substring(0,n):e}saveHeading(e,t,n=this.headings,r){e=e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(parseInt(t,10)))).replace(/&/g,"&").replace(/"/g,'"');const o={id:r?`${r}/${no(e)}`:`${this.parentId||"section"}/${no(e)}`,name:e,level:t,items:[]};return n.push(o),o}flattenHeadings(e){if(void 0===e)return[];const t=[];for(const n of e)t.push(n),t.push(...this.flattenHeadings(n.items));return t}attachHeadingsDescriptions(e){const t=e=>new RegExp(`##?\\s+${e.name.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}s*(\n|\r\n|$|s*)`),n=this.flattenHeadings(this.headings);if(n.length<1)return;let r=n[0],o=t(r),i=e.search(o);for(let a=1;a-1&&(this.description=this.description.substring(0,n)),this.downloadLink=this.getDownloadLink(),this.downloadFileName=this.getDownloadFileName()}getDownloadLink(){if(this.options.downloadDefinitionUrl)return this.options.downloadDefinitionUrl;if(this.parser.specUrl)return this.parser.specUrl;if(qr&&window.Blob&&window.URL&&window.URL.createObjectURL){const e=new Blob([JSON.stringify(this.parser.spec,null,2)],{type:"application/json"});return window.URL.createObjectURL(e)}}getDownloadFileName(){return this.parser.specUrl||this.options.downloadDefinitionUrl?this.options.downloadFileName:this.options.downloadFileName||"openapi.json"}}var Nl=Object.defineProperty,Dl=Object.defineProperties,Ll=Object.getOwnPropertyDescriptors,Ml=Object.getOwnPropertySymbols,Fl=Object.prototype.hasOwnProperty,zl=Object.prototype.propertyIsEnumerable,Ul=(e,t,n)=>t in e?Nl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Vl{constructor(e,t){const n=t.spec.components&&t.spec.components.securitySchemes||{};this.schemes=Object.keys(e||{}).map((r=>{const{resolved:o}=t.deref(n[r]),i=e[r]||[];if(!o)return void console.warn(`Non existing security scheme referenced: ${r}. Skipping`);const a=o["x-displayName"]||r;return((e,t)=>Dl(e,Ll(t)))(((e,t)=>{for(var n in t||(t={}))Fl.call(t,n)&&Ul(e,n,t[n]);if(Ml)for(var n of Ml(t))zl.call(t,n)&&Ul(e,n,t[n]);return e})({},o),{id:r,sectionId:r,displayName:a,scopes:i})})).filter((e=>void 0!==e))}}var Bl=Object.defineProperty,ql=Object.defineProperties,Wl=Object.getOwnPropertyDescriptor,Hl=Object.getOwnPropertyDescriptors,Yl=Object.getOwnPropertySymbols,Kl=Object.prototype.hasOwnProperty,Gl=Object.prototype.propertyIsEnumerable,Ql=(e,t,n)=>t in e?Bl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Xl=(e,t)=>{for(var n in t||(t={}))Kl.call(t,n)&&Ql(e,n,t[n]);if(Yl)for(var n of Yl(t))Gl.call(t,n)&&Ql(e,n,t[n]);return e},Jl=(e,t)=>ql(e,Hl(t)),Zl=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?Wl(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&Bl(t,n,i),i};class ec{constructor(e,t,n,r,o){this.expanded=!1,this.operations=[],tn(this),this.name=t;const{resolved:i}=e.deref(n);for(const n of Object.keys(i)){const a=i[n],s=Object.keys(a).filter(Xa);for(const i of s){const s=a[i],l=new _u(e,Jl(Xl({},s),{pathName:n,pointer:Da.compile([r,t,n,i]),httpVerb:i,pathParameters:a.parameters||[],pathServers:a.servers}),void 0,o,!0);this.operations.push(l)}}}toggle(){this.expanded=!this.expanded}}Zl([Ae],ec.prototype,"expanded",2),Zl([Pt],ec.prototype,"toggle",1);var tc=Object.defineProperty,nc=Object.defineProperties,rc=Object.getOwnPropertyDescriptors,oc=Object.getOwnPropertySymbols,ic=Object.prototype.hasOwnProperty,ac=Object.prototype.propertyIsEnumerable,sc=(e,t,n)=>t in e?tc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lc=(e,t)=>{for(var n in t||(t={}))ic.call(t,n)&&sc(e,n,t[n]);if(oc)for(var n of oc(t))ac.call(t,n)&&sc(e,n,t[n]);return e},cc=(e,t)=>nc(e,rc(t)),uc=(e,t)=>{var n={};for(var r in e)ic.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&oc)for(var r of oc(e))t.indexOf(r)<0&&ac.call(e,r)&&(n[r]=e[r]);return n};function pc(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}function dc(e,t){return t?e.concat(t):e}class fc{constructor(e,t,n=new xo({})){this.options=n,this.allowMergeRefs=!1,this.byRef=e=>{let t;if(this.spec){"#"!==e.charAt(0)&&(e="#"+e),e=decodeURIComponent(e);try{t=Da.get(this.spec,e)}catch(e){}return t||{}}},this.validate(e),this.spec=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const r=qr?window.location.href:"";"string"==typeof t&&(this.specUrl=r?new URL(t,r).href:t)}validate(e){if(void 0===e.openapi)throw new Error("Document must be valid OpenAPI 3.0.0 definition")}isRef(e){return!!e&&void 0!==e.$ref&&null!==e.$ref}deref(e,t=[],n=!1){const r=null==e?void 0:e["x-refsStack"];if(t=dc(t,r),this.isRef(e)){const r=ls(e.$ref);if(r&&this.options.ignoreNamedSchemas.has(r))return{resolved:{type:"object",title:r},refsStack:t};let o=this.byRef(e.$ref);if(!o)throw new Error(`Failed to resolve $ref "${e.$ref}"`);let i=t;if(t.includes(e.$ref)||t.length>999)o=Object.assign({},o,{"x-circular-ref":!0});else if(this.isRef(o)){const e=this.deref(o,t,n);i=e.refsStack,o=e.resolved}return i=pc(t,e.$ref),o=this.allowMergeRefs?this.mergeRefs(e,o,n):o,{resolved:o,refsStack:i}}return{resolved:e,refsStack:dc(t,r)}}mergeRefs(e,t,n){const r=e,{$ref:o}=r,i=uc(r,["$ref"]),a=Object.keys(i);if(0===a.length)return t;if(n&&a.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly"].includes(e)))){const e=i,{description:n,title:r,readOnly:o,writeOnly:a}=e;return{allOf:[{description:n,title:r,readOnly:o,writeOnly:a},t,uc(e,["description","title","readOnly","writeOnly"])]}}return lc(lc({},t),i)}mergeAllOf(e,t,n){var r;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e,n)).allOf)return e;let o=cc(lc({},e),{"x-parentRefs":[],allOf:void 0,title:e.title||ls(t)});void 0!==o.properties&&"object"==typeof o.properties&&(o.properties=lc({},o.properties)),void 0!==o.items&&"object"==typeof o.items&&(o.items=lc({},o.items));const i=function(e,t){const n=new Set;return e.filter((e=>{const t=e.$ref;return!t||t&&!n.has(t)&&n.add(t)}))}(e.allOf.map((e=>{var t;const{resolved:r,refsStack:i}=this.deref(e,n,!0),a=e.$ref||void 0,s=this.mergeAllOf(r,a,i);if(!s["x-circular-ref"]||!s.allOf)return a&&(null==(t=o["x-parentRefs"])||t.push(...s["x-parentRefs"]||[],a)),{$ref:a,refsStack:pc(i,a),schema:s}})).filter((e=>void 0!==e)));for(const{schema:e,refsStack:n}of i){const i=e,{type:a,enum:s,properties:l,items:c,required:u,title:p,description:d,readOnly:f,writeOnly:h,oneOf:m,anyOf:g,"x-circular-ref":y}=i,v=uc(i,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref"]);if(o.type!==a&&void 0!==o.type&&void 0!==a&&console.warn(`Incompatible types in allOf at "${t}": "${o.type}" and "${a}"`),void 0!==a&&(Array.isArray(a)&&Array.isArray(o.type)?o.type=[...a,...o.type]:o.type=a),void 0!==s&&(Array.isArray(s)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...s,...o.enum])):o.enum=s),void 0!==l&&"object"==typeof l){o.properties=o.properties||{};for(const e in l){const i=dc(n,null==(r=l[e])?void 0:r["x-refsStack"]);if(o.properties[e]){if(!y){const n=this.mergeAllOf({allOf:[o.properties[e],cc(lc({},l[e]),{"x-refsStack":i})],"x-refsStack":i},t+"/properties/"+e,i);o.properties[e]=n}}else o.properties[e]=cc(lc({},l[e]),{"x-refsStack":i})}}if(void 0!==c&&!y){const r="boolean"==typeof o.items?{}:Object.assign({},o.items),i="boolean"==typeof e.items?{}:Object.assign({},e.items);o.items=this.mergeAllOf({allOf:[r,i]},t+"/items",n)}void 0!==m&&(o.oneOf=m),void 0!==g&&(o.anyOf=g),void 0!==u&&(o.required=[...o.required||[],...u]),o=lc(cc(lc({},o),{title:o.title||p,description:o.description||d,readOnly:void 0!==o.readOnly?o.readOnly:f,writeOnly:void 0!==o.writeOnly?o.writeOnly:h,"x-circular-ref":o["x-circular-ref"]||y}),v)}return o}findDerived(e){const t={},n=this.spec.components&&this.spec.components.schemas||{};for(const r in n){const{resolved:o}=this.deref(n[r]);void 0!==o.allOf&&o.allOf.find((t=>void 0!==t.$ref&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+r]=[o["x-discriminator-value"]||r])}return t}hoistOneOfs(e,t){if(void 0===e.allOf)return e;const n=e.allOf;for(let e=0;e({allOf:[...o,e,...i],"x-refsStack":t})))}}}return e}}var hc=Object.defineProperty,mc=Object.defineProperties,gc=Object.getOwnPropertyDescriptor,yc=Object.getOwnPropertyDescriptors,vc=Object.getOwnPropertySymbols,bc=Object.prototype.hasOwnProperty,wc=Object.prototype.propertyIsEnumerable,xc=(e,t,n)=>t in e?hc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,kc=(e,t)=>{for(var n in t||(t={}))bc.call(t,n)&&xc(e,n,t[n]);if(vc)for(var n of vc(t))wc.call(t,n)&&xc(e,n,t[n]);return e},_c=(e,t)=>mc(e,yc(t)),Oc=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?gc(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&hc(t,n,i),i};const Sc=class{constructor(e,t,n,r,o=!1,i=[]){this.options=r,this.refsStack=i,this.typePrefix="",this.isCircular=!1,this.activeOneOf=0,tn(this),this.pointer=t.$ref||n||"";const{resolved:a,refsStack:s}=e.deref(t,i,!0);this.refsStack=pc(s,this.pointer),this.rawSchema=a,this.schema=e.mergeAllOf(this.rawSchema,this.pointer,this.refsStack),this.init(e,o),r.showExtensions&&(this.extensions=gs(this.schema,r.showExtensions))}activateOneOf(e){this.activeOneOf=e}hasType(e){return this.type===e||io(this.type)&&this.type.includes(e)}init(e,t){var n,r,o,i,a,s,l,c;const u=this.schema;if(this.isCircular=!!u["x-circular-ref"],this.title=u.title||ss(this.pointer)&&Da.baseName(this.pointer)||"",this.description=u.description||"",this.type=u.type||function(e){if(void 0!==e.type&&!io(e.type))return e.type;const t=Object.keys(Ja);for(const n of t){const t=Ja[n];if(void 0!==e[n])return t}return"any"}(u),this.format=u.format,this.enum=u.enum||[],this.example=u.example,this.examples=u.examples,this.deprecated=!!u.deprecated,this.pattern=u.pattern,this.externalDocs=u.externalDocs,this.constraints=us(u),this.displayFormat=this.format,this.isPrimitive=Za(u,this.type),this.default=u.default,this.readOnly=!!u.readOnly,this.writeOnly=!!u.writeOnly,this.const=u.const||"",this.contentEncoding=u.contentEncoding,this.contentMediaType=u.contentMediaType,this.minItems=u.minItems,this.maxItems=u.maxItems,(u.nullable||u["x-nullable"])&&(io(this.type)&&!this.type.some((e=>null===e||"null"===e))?this.type=[...this.type,"null"]:io(this.type)||null===this.type&&"null"===this.type||(this.type=[this.type,"null"])),this.displayType=io(this.type)?this.type.map((e=>null===e?"null":e)).join(" or "):this.type,!this.isCircular)if(u.if&&u.then||u.if&&u.else)this.initConditionalOperators(u,e);else if(t||void 0===Ac(u)){if(t&&io(u.oneOf)&&u.oneOf.find((e=>e.$ref===this.pointer))&&delete u.oneOf,void 0!==u.oneOf)return this.initOneOf(u.oneOf,e),this.oneOfType="One of",void(void 0!==u.anyOf&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${this.pointer}`));if(void 0!==u.anyOf)return this.initOneOf(u.anyOf,e),void(this.oneOfType="Any of");if(this.hasType("object"))this.fields=Pc(e,u,this.pointer,this.options,this.refsStack);else if(this.hasType("array")&&(io(u.items)||io(u.prefixItems)?this.fields=Pc(e,u,this.pointer,this.options,this.refsStack):u.items&&(this.items=new Sc(e,u.items,this.pointer+"/items",this.options,!1,this.refsStack)),this.displayType=u.prefixItems||io(u.items)?"items":((null==(n=this.items)?void 0:n.displayType)||this.displayType).split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or "),this.displayFormat=(null==(r=this.items)?void 0:r.format)||"",this.typePrefix=(null==(o=this.items)?void 0:o.typePrefix)||""+lo("arrayOf"),this.title=this.title||(null==(i=this.items)?void 0:i.title)||"",this.isPrimitive=void 0!==(null==(a=this.items)?void 0:a.isPrimitive)?null==(s=this.items)?void 0:s.isPrimitive:this.isPrimitive,void 0===this.example&&void 0!==(null==(l=this.items)?void 0:l.example)&&(this.example=[this.items.example]),(null==(c=this.items)?void 0:c.isPrimitive)&&(this.enum=this.items.enum),io(this.type))){const e=this.type.filter((e=>"array"!==e));e.length&&(this.displayType+=` or ${e.join(" or ")}`)}this.enum.length&&this.options.sortEnumValuesAlphabetically&&this.enum.sort()}else this.initDiscriminator(u,e)}initOneOf(e,t){if(this.oneOf=e.map(((e,n)=>{const{resolved:r,refsStack:o}=t.deref(e,this.refsStack,!0),i=t.mergeAllOf(r,this.pointer+"/oneOf/"+n,o),a=ss(e.$ref)&&!i.title?Da.baseName(e.$ref):`${i.title||""}${i.const&&JSON.stringify(i.const)||""}`;return new Sc(t,_c(kc({},i),{title:a,allOf:[_c(kc({},this.schema),{oneOf:void 0,anyOf:void 0})],discriminator:r.allOf?void 0:i.discriminator}),e.$ref||this.pointer+"/oneOf/"+n,this.options,!1,o)})),this.options.simpleOneOfTypeLabel){const e=function(e){const t=new Set;return function e(n){for(const r of n.oneOf||[])r.oneOf?e(r):r.type&&t.add(r.type)}(e),Array.from(t.values())}(this);this.displayType=e.join(" or ")}else this.displayType=this.oneOf.map((e=>{let t=e.typePrefix+(e.title?`${e.title} (${e.displayType})`:e.displayType);return t.indexOf(" or ")>-1&&(t=`(${t})`),t})).join(" or ")}initDiscriminator(e,t){const n=Ac(e);this.discriminatorProp=n.propertyName;const r=t.findDerived([...this.schema["x-parentRefs"]||[],this.pointer]);if(e.oneOf)for(const t of e.oneOf){if(void 0===t.$ref)continue;const e=Da.baseName(t.$ref);r[t.$ref]=e}const o=n.mapping||{};let i=n["x-explicitMappingOnly"]||!1;0===Object.keys(o).length&&(i=!1);const a={};for(const e in o){const t=o[e];io(a[t])?a[t].push(e):a[t]=[e]}const s=kc(i?{}:kc({},r),a);let l=[];for(const e of Object.keys(s)){const t=s[e];if(io(t))for(const n of t)l.push({$ref:e,name:n});else l.push({$ref:e,name:t})}const c=Object.keys(o);0!==c.length&&(l=l.sort(((e,t)=>{const n=c.indexOf(e.name),r=c.indexOf(t.name);return n<0&&r<0?e.name.localeCompare(t.name):n<0?1:r<0?-1:n-r}))),this.oneOf=l.map((({$ref:e,name:n})=>{const r=new Sc(t,{$ref:e},e,this.options,!0,this.refsStack.slice(0,-1));return r.title=n,r}))}initConditionalOperators(e,t){const n=e,{if:r,else:o={},then:i={}}=n,a=((e,t)=>{var n={};for(var r in e)bc.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&vc)for(var r of vc(e))t.indexOf(r)<0&&wc.call(e,r)&&(n[r]=e[r]);return n})(n,["if","else","then"]),s=[{allOf:[a,i,r],title:r&&r["x-displayName"]||(null==r?void 0:r.title)||"case 1"},{allOf:[a,o],title:o&&o["x-displayName"]||(null==o?void 0:o.title)||"case 2"}];this.oneOf=s.map(((e,n)=>new Sc(t,kc({},e),this.pointer+"/oneOf/"+n,this.options,!1,this.refsStack))),this.oneOfType="One of"}};let Ec=Sc;function Pc(e,t,n,r,o){const i=t.properties||t.prefixItems||t.items||{},a=t.patternProperties||{},s=t.additionalProperties||t.unevaluatedProperties,l=t.prefixItems?t.items:t.additionalItems,c=t.default;let u=Object.keys(i||[]).map((a=>{let s=i[a];s||(console.warn(`Field "${a}" is invalid, skipping.\n Field must be an object but got ${typeof s} at "${n}"`),s={});const l=void 0!==t.required&&t.required.indexOf(a)>-1;return new Nc(e,{name:t.properties?a:`[${a}]`,required:l,schema:_c(kc({},s),{default:void 0===s.default&&c?c[a]:s.default})},n+"/properties/"+a,r,o)}));return r.sortPropsAlphabetically&&(u=ds(u,"name")),r.requiredPropsFirst&&(u=ps(u,r.sortPropsAlphabetically?void 0:t.required)),u.push(...Object.keys(a).map((t=>{let i=a[t];return i||(console.warn(`Field "${t}" is invalid, skipping.\n Field must be an object but got ${typeof i} at "${n}"`),i={}),new Nc(e,{name:t,required:!1,schema:i,kind:"patternProperties"},`${n}/patternProperties/${t}`,r,o)}))),"object"!=typeof s&&!0!==s||u.push(new Nc(e,{name:("object"==typeof s&&s["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:!0===s?{}:s,kind:"additionalProperties"},n+"/additionalProperties",r,o)),u.push(...function({parser:e,schema:t=!1,fieldsCount:n,$ref:r,options:o,refsStack:i}){return ao(t)?t?[new Nc(e,{name:`[${n}...]`,schema:{}},`${r}/additionalItems`,o,i)]:[]:io(t)?[...t.map(((t,a)=>new Nc(e,{name:`[${n+a}]`,schema:t},`${r}/additionalItems`,o,i)))]:eo(t)?[new Nc(e,{name:`[${n}...]`,schema:t},`${r}/additionalItems`,o,i)]:[]}({parser:e,schema:l,fieldsCount:u.length,$ref:n,options:r,refsStack:o})),u}function Ac(e){return e.discriminator||e["x-discriminator"]}Oc([Ae],Ec.prototype,"activeOneOf",2),Oc([Pt],Ec.prototype,"activateOneOf",1);const $c={};class Cc{constructor(e,t,n,r){this.mime=n;const{resolved:o}=e.deref(t);this.value=o.value,this.summary=o.summary,this.description=o.description,o.externalValue&&(this.externalValueUrl=new URL(o.externalValue,e.specUrl).href),"application/x-www-form-urlencoded"===n&&this.value&&"object"==typeof this.value&&(this.value=function(e,t={}){if(io(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((n=>{const r=e[n],{style:o="form",explode:i=!0}=t[n]||{};switch(o){case"form":return rs(n,i,r);case"spaceDelimited":return ts(r,n,"%20");case"pipeDelimited":return ts(r,n,"|");case"deepObject":return ns(r,n);default:return console.warn("Incorrect or unsupported encoding style: "+o),""}})).join("&")}(this.value,r))}getExternalValue(e){return this.externalValueUrl?(this.externalValueUrl in $c||($c[this.externalValueUrl]=fetch(this.externalValueUrl).then((t=>t.text().then((n=>{if(!t.ok)return Promise.reject(new Error(n));if(!es(e))return n;try{return JSON.parse(n)}catch(e){return n}}))))),$c[this.externalValueUrl]):Promise.resolve(void 0)}}var Rc=Object.defineProperty,jc=Object.getOwnPropertyDescriptor,Tc=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?jc(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&Rc(t,n,i),i};const Ic={path:{style:"simple",explode:!1},query:{style:"form",explode:!0},header:{style:"simple",explode:!1},cookie:{style:"form",explode:!0}};class Nc{constructor(e,t,n,r,o){var i,a,s,l,c;this.expanded=void 0,tn(this);const{resolved:u}=e.deref(t);this.kind=t.kind||"field",this.name=t.name||u.name,this.in=u.in,this.required=!!u.required;let p=u.schema,d="";if(!p&&u.in&&u.content&&(d=Object.keys(u.content)[0],p=u.content[d]&&u.content[d].schema),this.schema=new Ec(e,p||{},n,r,!1,o),this.description=void 0===u.description?this.schema.description||"":u.description,this.example=u.example||this.schema.example,void 0!==u.examples||void 0!==this.schema.examples){const t=u.examples||this.schema.examples;this.examples=io(t)?t:Qr(t,((t,n)=>new Cc(e,t,n,u.encoding)))}d?this.serializationMime=d:u.style?this.style=u.style:this.in&&(this.style=null!=(a=null==(i=Ic[this.in])?void 0:i.style)?a:"form"),void 0===u.explode&&this.in?this.explode=null==(l=null==(s=Ic[this.in])?void 0:s.explode)||l:this.explode=!!u.explode,this.deprecated=void 0===u.deprecated?!!this.schema.deprecated:u.deprecated,r.showExtensions&&(this.extensions=gs(u,r.showExtensions)),this.const=(null==(c=this.schema)?void 0:c.const)||(null==u?void 0:u.const)||""}toggle(){this.expanded=!this.expanded}collapse(){this.expanded=!1}expand(){this.expanded=!0}}function Dc(e){return e<10?"0"+e:e}function Lc(e,t){return t>e.length?e.repeat(Math.trunc(t/e.length)+1).substring(0,t):e}function Mc(...e){const t=e=>e&&"object"==typeof e;return e.reduce(((e,n)=>(Object.keys(n||{}).forEach((r=>{const o=e[r],i=n[r];t(o)&&t(i)?e[r]=Mc(o,i):e[r]=i})),e)),Array.isArray(e[e.length-1])?[]:{})}function Fc(e){return{value:"object"===e?{}:"array"===e?[]:void 0}}function zc(e,t){t&&e.pop()}Tc([Ae],Nc.prototype,"expanded",2),Tc([Pt],Nc.prototype,"toggle",1),Tc([Pt],Nc.prototype,"collapse",1),Tc([Pt],Nc.prototype,"expand",1);const Uc={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",additionalItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",properties:"object",patternProperties:"object",dependencies:"object"};function Vc(e){if(void 0!==e.type)return Array.isArray(e.type)?0===e.type.length?null:e.type[0]:e.type;const t=Object.keys(Uc);for(var n=0;nt.maxSampleDepth)return zc(qc,r),Fc(Vc(e));if(e.$ref){if(!n)throw new Error("Your schema contains $ref. You must provide full specification in the third parameter.");let o=decodeURIComponent(e.$ref);o.startsWith("#")&&(o=o.substring(1));const i=Ia().get(n,o);let a;return!0!==Bc[o]?(Bc[o]=!0,a=Yc(i,t,n,r),Bc[o]=!1):a=Fc(Vc(i)),zc(qc,r),a}if(void 0!==e.example)return zc(qc,r),{value:e.example,readOnly:e.readOnly,writeOnly:e.writeOnly,type:e.type};if(void 0!==e.allOf)return zc(qc,r),Hc(e)||function(e,t,n,r,o){let i=Yc(e,n,r);const a=[];for(let e of t){const{type:t,readOnly:s,writeOnly:l,value:c}=Yc({type:i.type,...e},n,r,o);i.type&&t&&t!==i.type&&(console.warn("allOf: schemas with different types can't be merged"),i.type=t),i.type=i.type||t,i.readOnly=i.readOnly||s,i.writeOnly=i.writeOnly||l,null!=c&&a.push(c)}if("object"===i.type)return i.value=Mc(i.value||{},...a.filter((e=>"object"==typeof e))),i;{"array"===i.type&&(n.quiet||console.warn('OpenAPI Sampler: found allOf with "array" type. Result may be incorrect'));const e=a[a.length-1];return i.value=null!=e?e:i.value,i}}({...e,allOf:void 0},e.allOf,t,n,r);if(e.oneOf&&e.oneOf.length)return e.anyOf&&(t.quiet||console.warn("oneOf and anyOf are not supported on the same level. Skipping anyOf")),zc(qc,r),a(e,Object.assign({readOnly:e.readOnly,writeOnly:e.writeOnly},e.oneOf[0]));if(e.anyOf&&e.anyOf.length)return zc(qc,r),a(e,Object.assign({readOnly:e.readOnly,writeOnly:e.writeOnly},e.anyOf[0]));if(e.if&&e.then){zc(qc,r);const{if:o,then:i,...a}=e;return Yc(Mc(a,o,i),t,n,r)}let o=Wc(e),i=null;if(void 0===o){o=null,i=e.type,Array.isArray(i)&&e.type.length>0&&(i=e.type[0]),i||(i=Vc(e));let a=Jc[i];a&&(o=a(e,t,n,r))}return zc(qc,r),{value:o,readOnly:e.readOnly,writeOnly:e.writeOnly,type:i};function a(e,o){const i=Hc(e);if(void 0!==i)return i;const a=Yc({...e,oneOf:void 0,anyOf:void 0},t,n,r),s=Yc(o,t,n,r);if("object"==typeof a.value&&"object"==typeof s.value){const e=Mc(a.value,s.value);return{...s,value:e}}return s}}function Kc(e){let t=0;if("boolean"==typeof e.exclusiveMinimum||"boolean"==typeof e.exclusiveMaximum){if(e.maximum&&e.minimum)return t=e.exclusiveMinimum?Math.floor(e.minimum)+1:e.minimum,(e.exclusiveMaximum&&t>=e.maximum||!e.exclusiveMaximum&&t>e.maximum)&&(t=(e.maximum+e.minimum)/2),t;if(e.minimum)return e.exclusiveMinimum?Math.floor(e.minimum)+1:e.minimum;if(e.maximum)return e.exclusiveMaximum?e.maximum>0?0:Math.floor(e.maximum)-1:e.maximum>0?0:e.maximum}else{if(e.minimum)return e.minimum;e.exclusiveMinimum?(t=Math.floor(e.exclusiveMinimum)+1,t===e.exclusiveMaximum&&(t=(t+Math.floor(e.exclusiveMaximum)-1)/2)):e.exclusiveMaximum?t=Math.floor(e.exclusiveMaximum)-1:e.maximum&&(t=e.maximum)}return t}function Gc({min:e,max:t,omitTime:n,omitDate:r}){let o=function(e,t,n,r){var o=n?"":e.getUTCFullYear()+"-"+Dc(e.getUTCMonth()+1)+"-"+Dc(e.getUTCDate());return t||(o+="T"+Dc(e.getUTCHours())+":"+Dc(e.getUTCMinutes())+":"+Dc(e.getUTCSeconds())+"Z"),o}(new Date("2019-08-24T14:15:22.123Z"),n,r);return o.lengtht&&console.warn(`Using maxLength = ${t} is incorrect with format "date-time"`),o}function Qc(e,t){let n=Lc("string",e);return t&&n.length>t&&(n=n.substring(0,t)),n}const Xc={email:function(){return"user@example.com"},"idn-email":function(){return"пошта@укр.нет"},password:function(e,t){let n="pa$$word";return e>n.length&&(n+="_",n+=Lc("qwerty!@#$%^123456",e-n.length).substring(0,e-n.length)),n},"date-time":function(e,t){return Gc({min:e,max:t,omitTime:!1,omitDate:!1})},date:function(e,t){return Gc({min:e,max:t,omitTime:!0,omitDate:!1})},time:function(e,t){return Gc({min:e,max:t,omitTime:!1,omitDate:!0}).slice(1)},ipv4:function(){return"192.168.0.1"},ipv6:function(){return"2001:0db8:85a3:0000:0000:8a2e:0370:7334"},hostname:function(){return"example.com"},"idn-hostname":function(){return"приклад.укр"},iri:function(){return"http://example.com"},"iri-reference":function(){return"../словник"},uri:function(){return"http://example.com"},"uri-reference":function(){return"../dictionary"},"uri-template":function(){return"http://example.com/{endpoint}"},uuid:function(e,t,n){return r=function(e){var t=0;if(0==e.length)return t;for(var n=0;n>>5)|0;return e=t^((n|=0)<<17|n>>>15),t=n+(r|=0)|0,n=r+o|0,((r=e+o|0)>>>0)/4294967296}}(r,r,r,r),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{var t=16*o()%16|0;return("x"==e?t:3&t|8).toString(16)}));var r,o},default:Qc,"json-pointer":function(){return"/json/pointer"},"relative-json-pointer":function(){return"1/relative/json/pointer"},regex:function(){return"/regex/"}};var Jc={};const Zc={skipReadOnly:!1,maxSampleDepth:15};function eu(e,t,n){let r=Object.assign({},Zc,t);return Bc={},qc=[],Yc(e,r,n).value}function tu(e,t){Jc[e]=t}tu("array",(function(e,t={},n,r){const o=r&&r.depth||1;let i=Math.min(null!=e.maxItems?e.maxItems:1/0,e.minItems||1);const a=e.prefixItems||e.items||e.contains;Array.isArray(a)&&(i=Math.max(i,a.length));let s=[];if(!a)return s;for(let e=0;e(e[t]=!0,e)),{});Object.keys(e.properties).forEach((a=>{if(t.skipNonRequired&&!r.hasOwnProperty(a))return;const s=Yc(e.properties[a],t,n,{propertyName:a,depth:i+1});t.skipReadOnly&&s.readOnly||t.skipWriteOnly&&s.writeOnly||(o[a]=s.value)}))}if(e&&"object"==typeof e.additionalProperties){const r=e.additionalProperties["x-additionalPropertiesName"]||"property";o[`${String(r)}1`]=Yc(e.additionalProperties,t,n,{depth:i+1}).value,o[`${String(r)}2`]=Yc(e.additionalProperties,t,n,{depth:i+1}).value}return o})),tu("string",(function(e,t,n,r){let o=e.format||"default",i=Xc[o]||Qc,a=r&&r.propertyName;return i(0|e.minLength,e.maxLength,a)}));class nu{constructor(e,t,n,r,o){this.name=t,this.isRequestType=n,this.schema=r.schema&&new Ec(e,r.schema,"",o),this.onlyRequiredInSamples=o.onlyRequiredInSamples,this.generatedPayloadSamplesMaxDepth=o.generatedPayloadSamplesMaxDepth,void 0!==r.examples?this.examples=Qr(r.examples,(n=>new Cc(e,n,t,r.encoding))):void 0!==r.example?this.examples={default:new Cc(e,{value:e.deref(r.example).resolved},t,r.encoding)}:es(t)&&this.generateExample(e,r)}generateExample(e,t){const n={skipReadOnly:this.isRequestType,skipWriteOnly:!this.isRequestType,skipNonRequired:this.isRequestType&&this.onlyRequiredInSamples,maxSampleDepth:this.generatedPayloadSamplesMaxDepth};if(this.schema&&this.schema.oneOf){this.examples={};for(const r of this.schema.oneOf){const o=eu(r.rawSchema,n,e.spec);this.schema.discriminatorProp&&"object"==typeof o&&o&&(o[this.schema.discriminatorProp]=r.title),this.examples[r.title]=new Cc(e,{value:o},this.name,t.encoding)}}else this.schema&&(this.examples={default:new Cc(e,{value:eu(t.schema,n,e.spec)},this.name,t.encoding)})}}var ru=Object.defineProperty,ou=Object.getOwnPropertyDescriptor,iu=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?ou(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&ru(t,n,i),i};class au{constructor(e,t,n,r){this.isRequestType=n,this.activeMimeIdx=0,tn(this),r.unstable_ignoreMimeParameters&&(t=function(e){const t={};return Object.keys(e).forEach((n=>{const r=e[n],o=n.split(";")[0].trim();t[o]?t[o]=Ha(Ha({},t[o]),r):t[o]=r})),t}(t)),this.mediaTypes=Object.keys(t).map((o=>{const i=t[o];return new nu(e,o,n,i,r)}))}activate(e){this.activeMimeIdx=e}get active(){return this.mediaTypes[this.activeMimeIdx]}get hasSample(){return this.mediaTypes.filter((e=>!!e.examples)).length>0}}iu([Ae],au.prototype,"activeMimeIdx",2),iu([Pt],au.prototype,"activate",1),iu([je],au.prototype,"active",1);class su{constructor({parser:e,infoOrRef:t,options:n,isEvent:r}){const o=!r,{resolved:i}=e.deref(t);this.description=i.description||"",this.required=!!i.required;const a=function(e){let t=e.content;const n=e["x-examples"],r=e["x-example"];if(n){t=Ha({},t);for(const e of Object.keys(n)){const r=n[e];t[e]=Ya(Ha({},t[e]),{examples:r})}}else if(r){t=Ha({},t);for(const e of Object.keys(r)){const n=r[e];t[e]=Ya(Ha({},t[e]),{example:n})}}return t}(i);void 0!==a&&(this.content=new au(e,a,o,n))}}var lu=Object.defineProperty,cu=Object.defineProperties,uu=Object.getOwnPropertyDescriptor,pu=Object.getOwnPropertyDescriptors,du=Object.getOwnPropertySymbols,fu=Object.prototype.hasOwnProperty,hu=Object.prototype.propertyIsEnumerable,mu=(e,t,n)=>t in e?lu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gu=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?uu(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&lu(t,n,i),i};class yu{constructor({parser:e,code:t,defaultAsError:n,infoOrRef:r,options:o,isEvent:i}){this.expanded=!1,this.headers=[],tn(this),this.expanded="all"===o.expandResponses||o.expandResponses[t];const{resolved:a}=e.deref(r);this.code=t,void 0!==a.content&&(this.content=new au(e,a.content,i,o)),void 0!==a["x-summary"]?(this.summary=a["x-summary"],this.description=a.description||""):(this.summary=a.description||"",this.description=""),this.type=Ga(t,n);const s=a.headers;void 0!==s&&(this.headers=Object.keys(s).map((t=>{const n=s[t];return new Nc(e,((e,t)=>cu(e,pu(t)))(((e,t)=>{for(var n in t||(t={}))fu.call(t,n)&&mu(e,n,t[n]);if(du)for(var n of du(t))hu.call(t,n)&&mu(e,n,t[n]);return e})({},n),{name:t}),"",o)}))),o.showExtensions&&(this.extensions=gs(a,o.showExtensions))}toggle(){this.expanded=!this.expanded}}gu([Ae],yu.prototype,"expanded",2),gu([Pt],yu.prototype,"toggle",1);var vu=Object.defineProperty,bu=Object.getOwnPropertyDescriptor,wu=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?bu(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&vu(t,n,i),i};function xu(e){return"payload"===e.lang&&e.requestBodyContent}let ku=!1;class _u{constructor(e,t,n,r,o=!1){var i;this.parser=e,this.operationSpec=t,this.options=r,this.type="operation",this.items=[],this.ready=!0,this.active=!1,this.expanded=!1,tn(this),this.pointer=t.pointer,this.description=t.description,this.parent=n,this.externalDocs=t.externalDocs,this.deprecated=!!t.deprecated,this.httpVerb=t.httpVerb,this.deprecated=!!t.deprecated,this.operationId=t.operationId,this.path=t.pathName,this.isCallback=o,this.isWebhook=t.isWebhook,this.isEvent=this.isCallback||this.isWebhook,this.name=(i=t).summary||i.operationId||i.description&&i.description.substring(0,50)||i.pathName||"",this.sidebarLabel=r.sideNavStyle===co.IdOnly?this.operationId||this.path:r.sideNavStyle===co.PathOnly?this.path:this.name,this.isCallback?(this.security=(t.security||[]).map((t=>new Vl(t,e))),this.servers=fs("",t.servers||t.pathServers||[])):(this.operationHash=t.operationId&&"operation/"+t.operationId,this.id=void 0!==t.operationId?(n?n.id+"/":"")+this.operationHash:void 0!==n?n.id+this.pointer:this.pointer,this.security=(t.security||e.spec.security||[]).map((t=>new Vl(t,e))),this.servers=fs(e.specUrl,t.servers||t.pathServers||e.spec.servers||[])),r.showExtensions&&(this.extensions=gs(t,r.showExtensions))}activate(){this.active=!0}deactivate(){this.active=!1}toggle(){this.expanded=!this.expanded}expand(){this.parent&&this.parent.expand()}collapse(){}get requestBody(){return this.operationSpec.requestBody&&new su({parser:this.parser,infoOrRef:this.operationSpec.requestBody,options:this.options,isEvent:this.isEvent})}get codeSamples(){let e=this.operationSpec["x-codeSamples"]||this.operationSpec["x-code-samples"]||[];this.operationSpec["x-code-samples"]&&!ku&&(ku=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead'));const t=this.requestBody&&this.requestBody.content;if(t&&t.hasSample){const n=Math.min(e.length,this.options.payloadSampleIdx);e=[...e.slice(0,n),{lang:"payload",label:"Payload",source:"",requestBodyContent:t},...e.slice(n)]}return e}get parameters(){const e=function(e,t=[],n=[]){const r={};return n.forEach((t=>{({resolved:t}=e.deref(t)),r[t.name+"_"+t.in]=!0})),(t=t.filter((t=>(({resolved:t}=e.deref(t)),!r[t.name+"_"+t.in])))).concat(n)}(this.parser,this.operationSpec.pathParameters,this.operationSpec.parameters).map((e=>new Nc(this.parser,e,this.pointer,this.options)));return this.options.sortPropsAlphabetically?ds(e,"name"):this.options.requiredPropsFirst?ps(e):e}get responses(){let e=!1;return Object.keys(this.operationSpec.responses||[]).filter((t=>{return"default"===t||("success"===Ga(t)&&(e=!0),"default"===(n=t)||Jr(n)||Ka(n));var n})).map((t=>new yu({parser:this.parser,code:t,defaultAsError:e,infoOrRef:this.operationSpec.responses[t],options:this.options,isEvent:this.isEvent})))}get callbacks(){return Object.keys(this.operationSpec.callbacks||[]).map((e=>new ec(this.parser,e,this.operationSpec.callbacks[e],this.pointer,this.options)))}}wu([Ae],_u.prototype,"ready",2),wu([Ae],_u.prototype,"active",2),wu([Ae],_u.prototype,"expanded",2),wu([Pt],_u.prototype,"activate",1),wu([Pt],_u.prototype,"deactivate",1),wu([Pt],_u.prototype,"toggle",1),wu([$s],_u.prototype,"requestBody",1),wu([$s],_u.prototype,"codeSamples",1),wu([$s],_u.prototype,"parameters",1),wu([$s],_u.prototype,"responses",1),wu([$s],_u.prototype,"callbacks",1);const Ou=ga.div` + width: calc(100% - ${e=>e.theme.rightPanel.width}); + padding: 0 ${e=>e.theme.spacing.sectionHorizontal}px; + + ${({compact:e,theme:t})=>ma("medium",!0)` + width: 100%; + padding: ${`${e?0:t.spacing.sectionVertical}px ${t.spacing.sectionHorizontal}px`}; + `}; +`,Su=ga.div.attrs((e=>({[gf]:e.id})))` + padding: ${e=>e.theme.spacing.sectionVertical}px 0; + + &:last-child { + min-height: calc(100vh + 1px); + } + + & > &:last-child { + min-height: initial; + } + + ${ma("medium",!0)` + padding: 0; + `} + ${e=>e.underlined?"\n position: relative;\n\n &:not(:last-of-type):after {\n position: absolute;\n bottom: 0;\n width: 100%;\n display: block;\n content: '';\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n }\n ":""} +`,Eu=ga.div` + width: ${e=>e.theme.rightPanel.width}; + color: ${({theme:e})=>e.rightPanel.textColor}; + background-color: ${e=>e.theme.rightPanel.backgroundColor}; + padding: 0 ${e=>e.theme.spacing.sectionHorizontal}px; + + ${ma("medium",!0)` + width: 100%; + padding: ${e=>`${e.theme.spacing.sectionVertical}px ${e.theme.spacing.sectionHorizontal}px`}; + `}; +`,Pu=ga(Eu)` + background-color: ${e=>e.theme.rightPanel.backgroundColor}; +`,Au=ga.div` + display: flex; + width: 100%; + padding: 0; + + ${ma("medium",!0)` + flex-direction: column; + `}; +`,$u={1:"1.85714em",2:"1.57143em",3:"1.27em"},Cu=e=>pa` + font-family: ${({theme:e})=>e.typography.headings.fontFamily}; + font-weight: ${({theme:e})=>e.typography.headings.fontWeight}; + font-size: ${$u[e]}; + line-height: ${({theme:e})=>e.typography.headings.lineHeight}; +`,Ru=ga.h1` + ${Cu(1)}; + color: ${({theme:e})=>e.colors.text.primary}; + + ${ya("H1")}; +`,ju=ga.h2` + ${Cu(2)}; + color: ${({theme:e})=>e.colors.text.primary}; + margin: 0 0 20px; + + ${ya("H2")}; +`,Tu=(ga.h2` + ${Cu(3)}; + color: ${({theme:e})=>e.colors.text.primary}; + + ${ya("H3")}; +`,ga.h3` + color: ${({theme:e})=>e.rightPanel.textColor}; + + ${ya("RightPanelHeader")}; +`),Iu=ga.h5` + border-bottom: 1px solid rgba(38, 50, 56, 0.3); + margin: 1em 0 1em 0; + color: rgba(38, 50, 56, 0.5); + font-weight: normal; + text-transform: uppercase; + font-size: 0.929em; + line-height: 20px; + + ${ya("UnderlinedHeader")}; +`,Nu=(0,n.createContext)(void 0),{Provider:Du,Consumer:Lu}=Nu;function Mu(e){const{spec:t,specUrl:o,options:i,onLoaded:a,children:s}=e,[l,c]=n.useState(null),[u,p]=n.useState(null);if(u)throw u;n.useEffect((()=>{!function(){return e=this,null,n=function*(){if(t||o){c(null);try{const e=yield function(e){return t=this,n=function*(){const t=new $a.Config({}),n={config:t,base:qr?window.location.href:process.cwd()};qr&&(t.resolve.http.customFetch=r.g.fetch),"object"==typeof e&&null!==e?n.doc={source:{absoluteRef:""},parsed:e}:n.ref=e;const{bundle:{parsed:o}}=yield(0,Aa.bundle)(n);return void 0!==o.swagger?(i=o,console.warn("[ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0"),new Promise(((e,t)=>(0,Ca.convertObj)(i,{patch:!0,warnOnly:!0,text:"{}",anchors:!0},((n,r)=>{if(n)return t(n);e(r&&r.openapi)}))))):o;var i},new Promise(((e,r)=>{var o=e=>{try{a(n.next(e))}catch(e){r(e)}},i=e=>{try{a(n.throw(e))}catch(e){r(e)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,i);a((n=n.apply(t,null)).next())}));var t,n}(t||o);c(e)}catch(e){throw p(e),e}}},new Promise(((t,r)=>{var o=e=>{try{a(n.next(e))}catch(e){r(e)}},i=e=>{try{a(n.throw(e))}catch(e){r(e)}},a=e=>e.done?t(e.value):Promise.resolve(e.value).then(o,i);a((n=n.apply(e,null)).next())}));var e,n}()}),[t,o]);const d=n.useMemo((()=>{if(!l)return null;try{return new ey(l,o,i)}catch(e){throw a&&a(e),e}}),[l,o,i]);return n.useEffect((()=>{d&&a&&a()}),[d,a]),s({loading:!d,store:d})}const Fu=e=>pa` + ${e} { + cursor: pointer; + margin-left: -20px; + padding: 0; + line-height: 1; + width: 20px; + display: inline-block; + outline: 0; + } + ${e}:before { + content: ''; + width: 15px; + height: 15px; + background-size: contain; + background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg=='); + opacity: 0.5; + visibility: hidden; + display: inline-block; + vertical-align: middle; + } + + h1:hover > ${e}::before, h2:hover > ${e}::before, ${e}:hover::before { + visibility: visible; + } +`,zu=ga((function(e){const t=n.useContext(Nu),r=n.useCallback((n=>{t&&function(e,t,n){t.defaultPrevented||0!==t.button||(e=>!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey))(t)||(t.preventDefault(),e.replace(encodeURI(n)))}(t.menu.history,n,e.to)}),[t,e.to]);return t?n.createElement("a",{className:e.className,href:t.menu.history.linkForId(e.to),onClick:r,"aria-label":e.to},e.children):null}))` + ${Fu("&")}; +`;function Uu(e){return n.createElement(zu,{to:e.to})}const Vu={left:"90deg",right:"-90deg",up:"-180deg",down:"0"},Bu=ga((e=>n.createElement("svg",{className:e.className,style:e.style,version:"1.1",viewBox:"0 0 24 24",x:"0",xmlns:"http://www.w3.org/2000/svg",y:"0","aria-hidden":"true"},n.createElement("polygon",{points:"17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "}))))` + height: ${e=>e.size||"18px"}; + width: ${e=>e.size||"18px"}; + min-width: ${e=>e.size||"18px"}; + vertical-align: middle; + float: ${e=>e.float||""}; + transition: transform 0.2s ease-out; + transform: rotateZ(${e=>Vu[e.direction||"down"]}); + + polygon { + fill: ${({color:e,theme:t})=>e&&t.colors.responses[e]&&t.colors.responses[e].color||e}; + } +`,qu=ga.span` + display: inline-block; + padding: 2px 8px; + margin: 0; + background-color: ${e=>e.theme.colors[e.type].main}; + color: ${e=>e.theme.colors[e.type].contrastText}; + font-size: ${e=>e.theme.typography.code.fontSize}; + vertical-align: middle; + line-height: 1.6; + border-radius: 4px; + font-weight: ${({theme:e})=>e.typography.fontWeightBold}; + font-size: 12px; + + span[type] { + margin-left: 4px; + } +`,Wu=pa` + text-decoration: line-through; + color: #707070; +`,Hu=ga.caption` + text-align: right; + font-size: 0.9em; + font-weight: normal; + color: ${e=>e.theme.colors.text.secondary}; +`,Yu=ga.td` + border-left: 1px solid ${e=>e.theme.schema.linesColor}; + box-sizing: border-box; + position: relative; + padding: 10px 10px 10px 0; + + ${ma("small")` + display: block; + overflow: hidden; + `} + + tr:first-of-type > &, + tr.last > & { + border-left-width: 0; + background-position: top left; + background-repeat: no-repeat; + background-size: 1px 100%; + } + + tr:first-of-type > & { + background-image: linear-gradient( + to bottom, + transparent 0%, + transparent 22px, + ${e=>e.theme.schema.linesColor} 22px, + ${e=>e.theme.schema.linesColor} 100% + ); + } + + tr.last > & { + background-image: linear-gradient( + to bottom, + ${e=>e.theme.schema.linesColor} 0%, + ${e=>e.theme.schema.linesColor} 22px, + transparent 22px, + transparent 100% + ); + } + + tr.last + tr > & { + border-left-color: transparent; + } + + tr.last:first-child > & { + background: none; + border-left-color: transparent; + } +`,Ku=ga(Yu)` + padding: 0; +`,Gu=ga(Yu)` + vertical-align: top; + line-height: 20px; + white-space: nowrap; + font-size: 13px; + font-family: ${e=>e.theme.typography.code.fontFamily}; + + &.deprecated { + ${Wu}; + } + + ${({kind:e})=>"patternProperties"===e&&pa` + > span.property-name { + display: inline-table; + white-space: break-spaces; + margin-right: 20px; + + ::before, + ::after { + content: '/'; + filter: opacity(0.2); + } + } + `} + + ${({kind:e=""})=>["field","additionalProperties","patternProperties"].includes(e)?"":"font-style: italic"}; + + ${ya("PropertyNameCell")}; +`,Qu=ga.td` + border-bottom: 1px solid #9fb4be; + padding: 10px 0; + width: ${e=>e.theme.schema.defaultDetailsWidth}; + box-sizing: border-box; + + tr.expanded & { + border-bottom: none; + } + + ${ma("small")` + padding: 0 20px; + border-bottom: none; + border-left: 1px solid ${e=>e.theme.schema.linesColor}; + + tr.last > & { + border-left: none; + } + `} + + ${ya("PropertyDetailsCell")}; +`,Xu=ga.span` + color: ${e=>e.theme.schema.linesColor}; + font-family: ${e=>e.theme.typography.code.fontFamily}; + margin-right: 10px; + + &::before { + content: ''; + display: inline-block; + vertical-align: middle; + width: 10px; + height: 1px; + background: ${e=>e.theme.schema.linesColor}; + } + + &::after { + content: ''; + display: inline-block; + vertical-align: middle; + width: 1px; + background: ${e=>e.theme.schema.linesColor}; + height: 7px; + } +`,Ju=ga.div` + padding: ${({theme:e})=>e.schema.nestingSpacing}; +`,Zu=ga.table` + border-collapse: separate; + border-radius: 3px; + font-size: ${e=>e.theme.typography.fontSize}; + + border-spacing: 0; + width: 100%; + + > tr { + vertical-align: middle; + } + + ${ma("small")` + display: block; + > tr, > tbody > tr { + display: block; + } + `} + + ${ma("small",!1," and (-ms-high-contrast:none)")` + td { + float: left; + width: 100%; + } + `} + + & + ${Ju}, + & + ${Ju} + ${Ju} + ${Ju}, + & + ${Ju} + ${Ju} + ${Ju} + ${Ju} + ${Ju} { + margin: ${({theme:e})=>e.schema.nestingSpacing}; + margin-right: 0; + background: ${({theme:e})=>e.schema.nestedBackground}; + } + + & + ${Ju} + ${Ju}, + & + ${Ju} + ${Ju} + ${Ju} + ${Ju}, + & + ${Ju} + ${Ju} + ${Ju} + ${Ju} + ${Ju} + ${Ju} { + background: #ffffff; + } +`,ep=ga.div` + margin: 0 0 3px 0; + display: inline-block; +`,tp=ga.span` + font-size: 0.9em; + margin-right: 10px; + color: ${e=>e.theme.colors.primary.main}; + font-family: ${e=>e.theme.typography.headings.fontFamily}; +} +`,np=ga.button` + display: inline-block; + margin-right: 10px; + margin-bottom: 5px; + font-size: 0.8em; + cursor: pointer; + border: 1px solid ${e=>e.theme.colors.primary.main}; + padding: 2px 10px; + line-height: 1.5em; + outline: none; + &:focus { + box-shadow: 0 0 0 1px ${e=>e.theme.colors.primary.main}; + } + + ${({deprecated:e})=>e&&Wu||""}; + + ${e=>e.active?`\n color: white;\n background-color: ${e.theme.colors.primary.main};\n &:focus {\n box-shadow: none;\n background-color: ${Rr(.15,e.theme.colors.primary.main)};\n }\n `:`\n color: ${e.theme.colors.primary.main};\n background-color: white;\n `} +`,rp=ga.div` + font-size: 0.9em; + font-family: ${e=>e.theme.typography.code.fontFamily}; + &::after { + content: ' ['; + } +`,op=ga.div` + font-size: 0.9em; + font-family: ${e=>e.theme.typography.code.fontFamily}; + &::after { + content: ']'; + } +`;function ip(e){return function(t){return!!t.type&&t.type.tabsRole===e}}var ap=ip("Tab"),sp=ip("TabList"),lp=ip("TabPanel");function cp(){return cp=Object.assign||function(e){for(var t=1;t=this.getTabsCount())){var n=this.props;(0,n.onSelect)(e,n.selectedIndex,t)}},i.getNextTab=function(e){for(var t=this.getTabsCount(),n=e+1;ne;)if(!kp(this.getTab(t)))return t;return e},i.getFirstTab=function(){for(var e=this.getTabsCount(),t=0;t=0||(o[n]=e[n]);return o}(t,["children","className","disabledTabClassName","domRef","focus","forceRenderTabPanel","onSelect","selectedIndex","selectedTabClassName","selectedTabPanelClassName","environment","disableUpDownKeys"]));return n.createElement("div",vp({},i,{className:fp(r),onClick:this.handleClick,onKeyDown:this.handleKeyDown,ref:function(t){e.node=t,o&&o(t)},"data-tabs":!0}),this.getChildren())},o}(n.Component);function Op(e,t){return Op=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Op(e,t)}_p.defaultProps={className:"react-tabs",focus:!1},_p.propTypes={};var Sp=function(e){var t,r;function o(t){var n;return(n=e.call(this,t)||this).handleSelected=function(e,t,r){var o=n.props.onSelect,i=n.state.mode;if("function"!=typeof o||!1!==o(e,t,r)){var a={focus:"keydown"===r.type};1===i&&(a.selectedIndex=e),n.setState(a)}},n.state=o.copyPropsToState(n.props,{},t.defaultFocus),n}return r=e,(t=o).prototype=Object.create(r.prototype),t.prototype.constructor=t,Op(t,r),o.getDerivedStateFromProps=function(e,t){return o.copyPropsToState(e,t)},o.getModeFromProps=function(e){return null===e.selectedIndex?1:0},o.copyPropsToState=function(e,t,n){void 0===n&&(n=!1);var r={focus:n,mode:o.getModeFromProps(e)};if(1===r.mode){var i,a=Math.max(0,yp(e.children)-1);i=null!=t.selectedIndex?Math.min(t.selectedIndex,a):e.defaultIndex||0,r.selectedIndex=i}return r},o.prototype.render=function(){var e=this.props,t=e.children,r=(e.defaultIndex,e.defaultFocus,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["children","defaultIndex","defaultFocus"])),o=this.state,i=o.focus,a=o.selectedIndex;return r.focus=i,r.onSelect=this.handleSelected,null!=a&&(r.selectedIndex=a),n.createElement(_p,r,t)},o}(n.Component);function Ep(){return Ep=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,["children","className"]);return n.createElement("ul",Ep({},o,{className:fp(r),role:"tablist"}),t)},o}(n.Component);function $p(){return $p=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(r,["children","className","disabled","disabledClassName","focus","id","panelId","selected","selectedClassName","tabIndex","tabRef"]);return n.createElement("li",$p({},h,{className:fp(i,(e={},e[p]=u,e[s]=a,e)),ref:function(e){t.node=e,f&&f(e)},role:"tab",id:l,"aria-selected":u?"true":"false","aria-disabled":a?"true":"false","aria-controls":c,tabIndex:d||(u?"0":null)}),o)},o}(n.Component);function Tp(){return Tp=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(t,["children","className","forceRender","id","selected","selectedClassName","tabId"]);return n.createElement("div",Tp({},u,{className:fp(o,(e={},e[l]=s,e)),role:"tabpanel",id:a,"aria-labelledby":c}),i||s?r:null)},o}(n.Component);Np.defaultProps={className:"react-tabs__tab-panel",forceRender:!1,selectedClassName:"react-tabs__tab-panel--selected"},Np.propTypes={},Np.tabsRole="TabPanel";const Dp=ga(Sp)` + > ul { + list-style: none; + padding: 0; + margin: 0; + margin: 0 -5px; + + > li { + padding: 5px 10px; + display: inline-block; + + background-color: ${({theme:e})=>e.codeBlock.backgroundColor}; + border-bottom: 1px solid rgba(0, 0, 0, 0.5); + cursor: pointer; + text-align: center; + outline: none; + color: ${({theme:e})=>Rr(e.colors.tonalOffset,e.rightPanel.textColor)}; + margin: 0 + ${({theme:e})=>`${e.spacing.unit}px ${e.spacing.unit}px ${e.spacing.unit}px`}; + border: 1px solid ${({theme:e})=>Rr(.05,e.codeBlock.backgroundColor)}; + border-radius: 5px; + min-width: 60px; + font-size: 0.9em; + font-weight: bold; + + &.react-tabs__tab--selected { + color: ${e=>e.theme.colors.text.primary}; + background: ${({theme:e})=>e.rightPanel.textColor}; + &:focus { + outline: auto; + } + } + + &:only-child { + flex: none; + min-width: 100px; + } + + &.tab-success { + color: ${e=>e.theme.colors.responses.success.tabTextColor}; + } + + &.tab-redirect { + color: ${e=>e.theme.colors.responses.redirect.tabTextColor}; + } + + &.tab-info { + color: ${e=>e.theme.colors.responses.info.tabTextColor}; + } + + &.tab-error { + color: ${e=>e.theme.colors.responses.error.tabTextColor}; + } + } + } + > .react-tabs__tab-panel { + background: ${({theme:e})=>e.codeBlock.backgroundColor}; + & > div, + & > pre { + padding: ${e=>4*e.theme.spacing.unit}px; + margin: 0; + } + + & > div > pre { + padding: 0; + } + } +`,Lp=(ga(Dp)` + > ul { + display: block; + > li { + padding: 2px 5px; + min-width: auto; + margin: 0 15px 0 0; + font-size: 13px; + font-weight: normal; + border-bottom: 1px dashed; + color: ${({theme:e})=>Rr(e.colors.tonalOffset,e.rightPanel.textColor)}; + border-radius: 0; + background: none; + + &:last-child { + margin-right: 0; + } + + &.react-tabs__tab--selected { + color: ${({theme:e})=>e.rightPanel.textColor}; + background: none; + } + } + } + > .react-tabs__tab-panel { + & > div, + & > pre { + padding: ${e=>2*e.theme.spacing.unit}px 0; + } + } +`,ga.div` + /** + * Based on prism-dark.css + */ + + code[class*='language-'], + pre[class*='language-'] { + /* color: white; + background: none; */ + text-shadow: 0 -0.1em 0.2em black; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + @media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } + } + + /* Code blocks */ + pre[class*='language-'] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + } + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: hsl(30, 20%, 50%); + } + + .token.punctuation { + opacity: 0.7; + } + + .namespace { + opacity: 0.7; + } + + .token.property, + .token.tag, + .token.number, + .token.constant, + .token.symbol { + color: #4a8bb3; + } + + .token.boolean { + color: #e64441; + } + + .token.selector, + .token.attr-name, + .token.string, + .token.char, + .token.builtin, + .token.inserted { + color: #a0fbaa; + & + a, + & + a:visited { + color: #4ed2ba; + text-decoration: underline; + } + } + + .token.property.string { + color: white; + } + + .token.operator, + .token.entity, + .token.url, + .token.variable { + color: hsl(40, 90%, 60%); + } + + .token.atrule, + .token.attr-value, + .token.keyword { + color: hsl(350, 40%, 70%); + } + + .token.regex, + .token.important { + color: #e90; + } + + .token.important, + .token.bold { + font-weight: bold; + } + .token.italic { + font-style: italic; + } + + .token.entity { + cursor: help; + } + + .token.deleted { + color: red; + } + + ${ya("Prism")}; +`),Mp=ga.div` + opacity: 0.7; + transition: opacity 0.3s ease; + text-align: right; + &:focus-within { + opacity: 1; + } + > button { + background-color: transparent; + border: 0; + color: inherit; + padding: 2px 10px; + font-family: ${({theme:e})=>e.typography.fontFamily}; + font-size: ${({theme:e})=>e.typography.fontSize}; + line-height: ${({theme:e})=>e.typography.lineHeight}; + cursor: pointer; + outline: 0; + + :hover, + :focus { + background: rgba(255, 255, 255, 0.1); + } + } +`,Fp=ga.div` + &:hover ${Mp} { + opacity: 1; + } +`,zp=ga(Lp.withComponent("pre"))` + font-family: ${e=>e.theme.typography.code.fontFamily}; + font-size: ${e=>e.theme.typography.code.fontSize}; + overflow-x: auto; + margin: 0; + + white-space: ${({theme:e})=>e.typography.code.wrap?"pre-wrap":"pre"}; +`;function Up(e){return getComputedStyle(e)}function Vp(e,t){for(var n in t){var r=t[n];"number"==typeof r&&(r+="px"),e.style[n]=r}return e}function Bp(e){var t=document.createElement("div");return t.className=e,t}var qp="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector);function Wp(e,t){if(!qp)throw new Error("No element matching method supported");return qp.call(e,t)}function Hp(e){e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)}function Yp(e,t){return Array.prototype.filter.call(e.children,(function(e){return Wp(e,t)}))}var Kp=function(e){return"ps__thumb-"+e},Gp=function(e){return"ps__rail-"+e},Qp="ps__child--consume",Xp="ps--focus",Jp="ps--clicking",Zp=function(e){return"ps--active-"+e},ed=function(e){return"ps--scrolling-"+e},td={x:null,y:null};function nd(e,t){var n=e.element.classList,r=ed(t);n.contains(r)?clearTimeout(td[t]):n.add(r)}function rd(e,t){td[t]=setTimeout((function(){return e.isAlive&&e.element.classList.remove(ed(t))}),e.settings.scrollingThreshold)}var od=function(e){this.element=e,this.handlers={}},id={isEmpty:{configurable:!0}};od.prototype.bind=function(e,t){void 0===this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this.element.addEventListener(e,t,!1)},od.prototype.unbind=function(e,t){var n=this;this.handlers[e]=this.handlers[e].filter((function(r){return!(!t||r===t)||(n.element.removeEventListener(e,r,!1),!1)}))},od.prototype.unbindAll=function(){for(var e in this.handlers)this.unbind(e)},id.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every((function(t){return 0===e.handlers[t].length}))},Object.defineProperties(od.prototype,id);var ad=function(){this.eventElements=[]};function sd(e){if("function"==typeof window.CustomEvent)return new CustomEvent(e);var t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!1,!1,void 0),t}function ld(e,t,n,r,o){var i;if(void 0===r&&(r=!0),void 0===o&&(o=!1),"top"===t)i=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==t)throw new Error("A proper axis should be provided");i=["contentWidth","containerWidth","scrollLeft","x","left","right"]}!function(e,t,n,r,o){var i=n[0],a=n[1],s=n[2],l=n[3],c=n[4],u=n[5];void 0===r&&(r=!0),void 0===o&&(o=!1);var p=e.element;e.reach[l]=null,p[s]<1&&(e.reach[l]="start"),p[s]>e[i]-e[a]-1&&(e.reach[l]="end"),t&&(p.dispatchEvent(sd("ps-scroll-"+l)),t<0?p.dispatchEvent(sd("ps-scroll-"+c)):t>0&&p.dispatchEvent(sd("ps-scroll-"+u)),r&&function(e,t){nd(e,t),rd(e,t)}(e,l)),e.reach[l]&&(t||o)&&p.dispatchEvent(sd("ps-"+l+"-reach-"+e.reach[l]))}(e,n,i,r,o)}function cd(e){return parseInt(e,10)||0}ad.prototype.eventElement=function(e){var t=this.eventElements.filter((function(t){return t.element===e}))[0];return t||(t=new od(e),this.eventElements.push(t)),t},ad.prototype.bind=function(e,t,n){this.eventElement(e).bind(t,n)},ad.prototype.unbind=function(e,t,n){var r=this.eventElement(e);r.unbind(t,n),r.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(r),1)},ad.prototype.unbindAll=function(){this.eventElements.forEach((function(e){return e.unbindAll()})),this.eventElements=[]},ad.prototype.once=function(e,t,n){var r=this.eventElement(e),o=function(e){r.unbind(t,o),n(e)};r.bind(t,o)};var ud={isWebKit:"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)};function pd(e){var t=e.element,n=Math.floor(t.scrollTop),r=t.getBoundingClientRect();e.containerWidth=Math.round(r.width),e.containerHeight=Math.round(r.height),e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight,t.contains(e.scrollbarXRail)||(Yp(t,Gp("x")).forEach((function(e){return Hp(e)})),t.appendChild(e.scrollbarXRail)),t.contains(e.scrollbarYRail)||(Yp(t,Gp("y")).forEach((function(e){return Hp(e)})),t.appendChild(e.scrollbarYRail)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),function(e,t){var n={width:t.railXWidth},r=Math.floor(e.scrollTop);t.isRtl?n.left=t.negativeScrollAdjustment+e.scrollLeft+t.containerWidth-t.contentWidth:n.left=e.scrollLeft,t.isScrollbarXUsingBottom?n.bottom=t.scrollbarXBottom-r:n.top=t.scrollbarXTop+r,Vp(t.scrollbarXRail,n);var o={top:r,height:t.railYHeight};t.isScrollbarYUsingRight?t.isRtl?o.right=t.contentWidth-(t.negativeScrollAdjustment+e.scrollLeft)-t.scrollbarYRight-t.scrollbarYOuterWidth-9:o.right=t.scrollbarYRight-e.scrollLeft:t.isRtl?o.left=t.negativeScrollAdjustment+e.scrollLeft+2*t.containerWidth-t.contentWidth-t.scrollbarYLeft-t.scrollbarYOuterWidth:o.left=t.scrollbarYLeft+e.scrollLeft,Vp(t.scrollbarYRail,o),Vp(t.scrollbarX,{left:t.scrollbarXLeft,width:t.scrollbarXWidth-t.railBorderXWidth}),Vp(t.scrollbarY,{top:t.scrollbarYTop,height:t.scrollbarYHeight-t.railBorderYWidth})}(t,e),e.scrollbarXActive?t.classList.add(Zp("x")):(t.classList.remove(Zp("x")),e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=!0===e.isRtl?e.contentWidth:0),e.scrollbarYActive?t.classList.add(Zp("y")):(t.classList.remove(Zp("y")),e.scrollbarYHeight=0,e.scrollbarYTop=0,t.scrollTop=0)}function dd(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function fd(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],p=e.element,d=null,f=null,h=null;function m(t){t.touches&&t.touches[0]&&(t[o]=t.touches[0].pageY),p[l]=d+h*(t[o]-f),nd(e,c),pd(e),t.stopPropagation(),t.type.startsWith("touch")&&t.changedTouches.length>1&&t.preventDefault()}function g(){rd(e,c),e[u].classList.remove(Jp),e.event.unbind(e.ownerDocument,"mousemove",m)}function y(t,a){d=p[l],a&&t.touches&&(t[o]=t.touches[0].pageY),f=t[o],h=(e[r]-e[n])/(e[i]-e[s]),a?e.event.bind(e.ownerDocument,"touchmove",m):(e.event.bind(e.ownerDocument,"mousemove",m),e.event.once(e.ownerDocument,"mouseup",g),t.preventDefault()),e[u].classList.add(Jp),t.stopPropagation()}e.event.bind(e[a],"mousedown",(function(e){y(e)})),e.event.bind(e[a],"touchstart",(function(e){y(e,!0)}))}var hd={"click-rail":function(e){e.element,e.event.bind(e.scrollbarY,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarYRail,"mousedown",(function(t){var n=t.pageY-window.pageYOffset-e.scrollbarYRail.getBoundingClientRect().top>e.scrollbarYTop?1:-1;e.element.scrollTop+=n*e.containerHeight,pd(e),t.stopPropagation()})),e.event.bind(e.scrollbarX,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarXRail,"mousedown",(function(t){var n=t.pageX-window.pageXOffset-e.scrollbarXRail.getBoundingClientRect().left>e.scrollbarXLeft?1:-1;e.element.scrollLeft+=n*e.containerWidth,pd(e),t.stopPropagation()}))},"drag-thumb":function(e){fd(e,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x","scrollbarXRail"]),fd(e,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y","scrollbarYRail"])},keyboard:function(e){var t=e.element;e.event.bind(e.ownerDocument,"keydown",(function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(Wp(t,":hover")||Wp(e.scrollbarX,":focus")||Wp(e.scrollbarY,":focus"))){var r,o=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(o){if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(Wp(r=o,"input,[contenteditable]")||Wp(r,"select,[contenteditable]")||Wp(r,"textarea,[contenteditable]")||Wp(r,"button,[contenteditable]"))return}var i=0,a=0;switch(n.which){case 37:i=n.metaKey?-e.contentWidth:n.altKey?-e.containerWidth:-30;break;case 38:a=n.metaKey?e.contentHeight:n.altKey?e.containerHeight:30;break;case 39:i=n.metaKey?e.contentWidth:n.altKey?e.containerWidth:30;break;case 40:a=n.metaKey?-e.contentHeight:n.altKey?-e.containerHeight:-30;break;case 32:a=n.shiftKey?e.containerHeight:-e.containerHeight;break;case 33:a=e.containerHeight;break;case 34:a=-e.containerHeight;break;case 36:a=e.contentHeight;break;case 35:a=-e.contentHeight;break;default:return}e.settings.suppressScrollX&&0!==i||e.settings.suppressScrollY&&0!==a||(t.scrollTop-=a,t.scrollLeft+=i,pd(e),function(n,r){var o=Math.floor(t.scrollTop);if(0===n){if(!e.scrollbarYActive)return!1;if(0===o&&r>0||o>=e.contentHeight-e.containerHeight&&r<0)return!e.settings.wheelPropagation}var i=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===i&&n<0||i>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}(i,a)&&n.preventDefault())}}))},wheel:function(e){var t=e.element;function n(n){var r=function(e){var t=e.deltaX,n=-1*e.deltaY;return void 0!==t&&void 0!==n||(t=-1*e.wheelDeltaX/6,n=e.wheelDeltaY/6),e.deltaMode&&1===e.deltaMode&&(t*=10,n*=10),t!=t&&n!=n&&(t=0,n=e.wheelDelta),e.shiftKey?[-n,-t]:[t,n]}(n),o=r[0],i=r[1];if(!function(e,n,r){if(!ud.isWebKit&&t.querySelector("select:focus"))return!0;if(!t.contains(e))return!1;for(var o=e;o&&o!==t;){if(o.classList.contains(Qp))return!0;var i=Up(o);if(r&&i.overflowY.match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&(o.scrollTop>0&&r<0||o.scrollTop0))return!0}if(n&&i.overflowX.match(/(scroll|auto)/)){var s=o.scrollWidth-o.clientWidth;if(s>0&&(o.scrollLeft>0&&n<0||o.scrollLeft0))return!0}o=o.parentNode}return!1}(n.target,o,i)){var a=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(i?t.scrollTop-=i*e.settings.wheelSpeed:t.scrollTop+=o*e.settings.wheelSpeed,a=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(o?t.scrollLeft+=o*e.settings.wheelSpeed:t.scrollLeft-=i*e.settings.wheelSpeed,a=!0):(t.scrollTop-=i*e.settings.wheelSpeed,t.scrollLeft+=o*e.settings.wheelSpeed),pd(e),a=a||function(n,r){var o=Math.floor(t.scrollTop),i=0===t.scrollTop,a=o+t.offsetHeight===t.scrollHeight,s=0===t.scrollLeft,l=t.scrollLeft+t.offsetWidth===t.scrollWidth;return!(Math.abs(r)>Math.abs(n)?i||a:s||l)||!e.settings.wheelPropagation}(o,i),a&&!n.ctrlKey&&(n.stopPropagation(),n.preventDefault())}}void 0!==window.onwheel?e.event.bind(t,"wheel",n):void 0!==window.onmousewheel&&e.event.bind(t,"mousewheel",n)},touch:function(e){if(ud.supportsTouch||ud.supportsIePointer){var t=e.element,n={},r=0,o={},i=null;ud.supportsTouch?(e.event.bind(t,"touchstart",c),e.event.bind(t,"touchmove",u),e.event.bind(t,"touchend",p)):ud.supportsIePointer&&(window.PointerEvent?(e.event.bind(t,"pointerdown",c),e.event.bind(t,"pointermove",u),e.event.bind(t,"pointerup",p)):window.MSPointerEvent&&(e.event.bind(t,"MSPointerDown",c),e.event.bind(t,"MSPointerMove",u),e.event.bind(t,"MSPointerUp",p)))}function a(n,r){t.scrollTop-=r,t.scrollLeft-=n,pd(e)}function s(e){return e.targetTouches?e.targetTouches[0]:e}function l(e){return!(e.pointerType&&"pen"===e.pointerType&&0===e.buttons||(!e.targetTouches||1!==e.targetTouches.length)&&(!e.pointerType||"mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))}function c(e){if(l(e)){var t=s(e);n.pageX=t.pageX,n.pageY=t.pageY,r=(new Date).getTime(),null!==i&&clearInterval(i)}}function u(i){if(l(i)){var c=s(i),u={pageX:c.pageX,pageY:c.pageY},p=u.pageX-n.pageX,d=u.pageY-n.pageY;if(function(e,n,r){if(!t.contains(e))return!1;for(var o=e;o&&o!==t;){if(o.classList.contains(Qp))return!0;var i=Up(o);if(r&&i.overflowY.match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&(o.scrollTop>0&&r<0||o.scrollTop0))return!0}if(n&&i.overflowX.match(/(scroll|auto)/)){var s=o.scrollWidth-o.clientWidth;if(s>0&&(o.scrollLeft>0&&n<0||o.scrollLeft0))return!0}o=o.parentNode}return!1}(i.target,p,d))return;a(p,d),n=u;var f=(new Date).getTime(),h=f-r;h>0&&(o.x=p/h,o.y=d/h,r=f),function(n,r){var o=Math.floor(t.scrollTop),i=t.scrollLeft,a=Math.abs(n),s=Math.abs(r);if(s>a){if(r<0&&o===e.contentHeight-e.containerHeight||r>0&&0===o)return 0===window.scrollY&&r>0&&ud.isChrome}else if(a>s&&(n<0&&i===e.contentWidth-e.containerWidth||n>0&&0===i))return!0;return!0}(p,d)&&i.preventDefault()}}function p(){e.settings.swipeEasing&&(clearInterval(i),i=setInterval((function(){e.isInitialized?clearInterval(i):o.x||o.y?Math.abs(o.x)<.01&&Math.abs(o.y)<.01?clearInterval(i):e.element?(a(30*o.x,30*o.y),o.x*=.8,o.y*=.8):clearInterval(i):clearInterval(i)}),10))}}},md=function(e,t){var n=this;if(void 0===t&&(t={}),"string"==typeof e&&(e=document.querySelector(e)),!e||!e.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var r in this.element=e,e.classList.add("ps"),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1},t)this.settings[r]=t[r];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var o,i,a=function(){return e.classList.add(Xp)},s=function(){return e.classList.remove(Xp)};this.isRtl="rtl"===Up(e).direction,!0===this.isRtl&&e.classList.add("ps__rtl"),this.isNegativeScroll=(i=e.scrollLeft,e.scrollLeft=-1,o=e.scrollLeft<0,e.scrollLeft=i,o),this.negativeScrollAdjustment=this.isNegativeScroll?e.scrollWidth-e.clientWidth:0,this.event=new ad,this.ownerDocument=e.ownerDocument||document,this.scrollbarXRail=Bp(Gp("x")),e.appendChild(this.scrollbarXRail),this.scrollbarX=Bp(Kp("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",a),this.event.bind(this.scrollbarX,"blur",s),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var l=Up(this.scrollbarXRail);this.scrollbarXBottom=parseInt(l.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=cd(l.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=cd(l.borderLeftWidth)+cd(l.borderRightWidth),Vp(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=cd(l.marginLeft)+cd(l.marginRight),Vp(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=Bp(Gp("y")),e.appendChild(this.scrollbarYRail),this.scrollbarY=Bp(Kp("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",a),this.event.bind(this.scrollbarY,"blur",s),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var c=Up(this.scrollbarYRail);this.scrollbarYRight=parseInt(c.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=cd(c.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?function(e){var t=Up(e);return cd(t.width)+cd(t.paddingLeft)+cd(t.paddingRight)+cd(t.borderLeftWidth)+cd(t.borderRightWidth)}(this.scrollbarY):null,this.railBorderYWidth=cd(c.borderTopWidth)+cd(c.borderBottomWidth),Vp(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=cd(c.marginTop)+cd(c.marginBottom),Vp(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:e.scrollLeft<=0?"start":e.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:e.scrollTop<=0?"start":e.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(e){return hd[e](n)})),this.lastScrollTop=Math.floor(e.scrollTop),this.lastScrollLeft=e.scrollLeft,this.event.bind(this.element,"scroll",(function(e){return n.onScroll(e)})),pd(this)};md.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,Vp(this.scrollbarXRail,{display:"block"}),Vp(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=cd(Up(this.scrollbarXRail).marginLeft)+cd(Up(this.scrollbarXRail).marginRight),this.railYMarginHeight=cd(Up(this.scrollbarYRail).marginTop)+cd(Up(this.scrollbarYRail).marginBottom),Vp(this.scrollbarXRail,{display:"none"}),Vp(this.scrollbarYRail,{display:"none"}),pd(this),ld(this,"top",0,!1,!0),ld(this,"left",0,!1,!0),Vp(this.scrollbarXRail,{display:""}),Vp(this.scrollbarYRail,{display:""}))},md.prototype.onScroll=function(e){this.isAlive&&(pd(this),ld(this,"top",this.element.scrollTop-this.lastScrollTop),ld(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=Math.floor(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},md.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),Hp(this.scrollbarX),Hp(this.scrollbarY),Hp(this.scrollbarXRail),Hp(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},md.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(e){return!e.match(/^ps([-_].+|)$/)})).join(" ")};var gd=md,yd=Object.defineProperty,vd=Object.getOwnPropertySymbols,bd=Object.prototype.hasOwnProperty,wd=Object.prototype.propertyIsEnumerable,xd=(e,t,n)=>t in e?yd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const kd=gd||t;let _d="";qr&&(_d=r(3433),_d="function"==typeof _d.toString&&_d.toString()||"",_d="[object Object]"===_d?"":_d);const Od=da`${_d}`,Sd=ga.div` + position: relative; +`;class Ed extends n.Component{constructor(){super(...arguments),this.handleRef=e=>{this._container=e}}componentDidMount(){const e=this._container.parentElement&&this._container.parentElement.scrollTop||0;this.inst=new kd(this._container,this.props.options||{}),this._container.scrollTo&&this._container.scrollTo(0,e)}componentDidUpdate(){this.inst.update()}componentWillUnmount(){this.inst.destroy()}render(){const{children:e,className:t,updateFn:r}=this.props;return r&&r(this.componentDidUpdate.bind(this)),n.createElement(n.Fragment,null,_d&&n.createElement(Od,null),n.createElement(Sd,{className:`scrollbar-container ${t}`,ref:this.handleRef},e))}}function Pd(e){return n.createElement(Sa.Consumer,null,(t=>t.nativeScrollbars?n.createElement("div",{style:{overflow:"auto",overscrollBehavior:"contain",msOverflowStyle:"-ms-autohiding-scrollbar"}},e.children):n.createElement(Ed,((e,t)=>{for(var n in t||(t={}))bd.call(t,n)&&xd(e,n,t[n]);if(vd)for(var n of vd(t))wd.call(t,n)&&xd(e,n,t[n]);return e})({},e),e.children)))}const Ad=ga((({className:e,style:t})=>n.createElement("svg",{className:e,style:t,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},n.createElement("polyline",{points:"6 9 12 15 18 9"}))))` + position: absolute; + pointer-events: none; + z-index: 1; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + right: 8px; + margin: auto; + text-align: center; + polyline { + color: ${e=>"dark"===e.variant&&"white"}; + } +`,$d=n.memo((e=>{const{options:t,onChange:r,placeholder:o,value:i="",variant:a,className:s}=e;return n.createElement("div",{className:s},n.createElement(Ad,{variant:a}),n.createElement("select",{onChange:e=>{const{selectedIndex:n}=e.target;r(t[o?n-1:n])},value:i,className:"dropdown-select"},o&&n.createElement("option",{disabled:!0,hidden:!0,value:o},o),t.map((({idx:e,value:t,title:r},o)=>n.createElement("option",{key:e||t+o,value:t},r||t)))),n.createElement("label",null,i))})),Cd=ca($d)` + label { + box-sizing: border-box; + min-width: 100px; + outline: none; + display: inline-block; + font-family: ${e=>e.theme.typography.headings.fontFamily}; + color: ${({theme:e})=>e.colors.text.primary}; + vertical-align: bottom; + width: ${({fullWidth:e})=>e?"100%":"auto"}; + text-transform: none; + padding: 0 22px 0 4px; + + font-size: 0.929em; + line-height: 1.5em; + font-family: inherit; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + .dropdown-select { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + border: none; + appearance: none; + cursor: pointer; + + color: ${({theme:e})=>e.colors.text.primary}; + line-height: inherit; + font-family: inherit; + } + box-sizing: border-box; + min-width: 100px; + outline: none; + display: inline-block; + border-radius: 2px; + border: 1px solid rgba(38, 50, 56, 0.5); + vertical-align: bottom; + padding: 2px 0px 2px 6px; + position: relative; + width: auto; + background: white; + color: #263238; + font-family: ${e=>e.theme.typography.headings.fontFamily}; + font-size: 0.929em; + line-height: 1.5em; + cursor: pointer; + transition: border 0.25s ease, color 0.25s ease, box-shadow 0.25s ease; + + &:hover, + &:focus-within { + border: 1px solid ${e=>e.theme.colors.primary.main}; + color: ${e=>e.theme.colors.primary.main}; + box-shadow: 0px 0px 0px 1px ${e=>e.theme.colors.primary.main}; + } +`,Rd=ca(Cd)` + margin-left: 10px; + text-transform: none; + font-size: 0.969em; + + font-size: 1em; + border: none; + padding: 0 1.2em 0 0; + background: transparent; + + &:hover, + &:focus-within { + border: none; + box-shadow: none; + label { + color: ${e=>e.theme.colors.primary.main}; + text-shadow: 0px 0px 0px ${e=>e.theme.colors.primary.main}; + } + } +`,jd=ca.span` + margin-left: 10px; + text-transform: none; + font-size: 0.929em; + color: black; +`;var Td=Object.defineProperty,Id=Object.defineProperties,Nd=Object.getOwnPropertyDescriptors,Dd=Object.getOwnPropertySymbols,Ld=Object.prototype.hasOwnProperty,Md=Object.prototype.propertyIsEnumerable,Fd=(e,t,n)=>t in e?Td(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zd=(e,t)=>{for(var n in t||(t={}))Ld.call(t,n)&&Fd(e,n,t[n]);if(Dd)for(var n of Dd(t))Md.call(t,n)&&Fd(e,n,t[n]);return e},Ud=(e,t)=>Id(e,Nd(t));class Vd{constructor(e,t,n){this.operations=[];const{resolved:r}=e.deref(n||{});this.initWebhooks(e,r,t)}initWebhooks(e,t,n){for(const r of Object.keys(t)){const o=t[r],i=Object.keys(o).filter(Xa);for(const t of i){const r=o[t];if(o.$ref){const r=e.deref(o||{});this.initWebhooks(e,{[t]:r},n)}if(!r)continue;const i=new _u(e,Ud(zd({},r),{httpVerb:t}),void 0,n,!1);this.operations.push(i)}}}}class Bd{constructor(e,t,n){const{resolved:r}=e.deref(n);this.id=t,this.sectionId=hs+t,this.type=r.type,this.displayName=r["x-displayName"]||t,this.description=r.description||"","apiKey"===r.type&&(this.apiKey={name:r.name,in:r.in}),"http"===r.type&&(this.http={scheme:r.scheme,bearerFormat:r.bearerFormat}),"openIdConnect"===r.type&&(this.openId={connectUrl:r.openIdConnectUrl}),"oauth2"===r.type&&r.flows&&(this.flows=r.flows)}}class qd{constructor(e){const t=e.spec.components&&e.spec.components.securitySchemes||{};this.schemes=Object.keys(t).map((n=>new Bd(e,n,t[n])))}}var Wd=Object.defineProperty,Hd=Object.getOwnPropertySymbols,Yd=Object.prototype.hasOwnProperty,Kd=Object.prototype.propertyIsEnumerable,Gd=(e,t,n)=>t in e?Wd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Qd=(e,t)=>{for(var n in t||(t={}))Yd.call(t,n)&&Gd(e,n,t[n]);if(Hd)for(var n of Hd(t))Kd.call(t,n)&&Gd(e,n,t[n]);return e};class Xd{constructor(e,t,n){var r,o,i;this.options=n,this.parser=new fc(e,t,n),this.info=new Il(this.parser,this.options),this.externalDocs=this.parser.spec.externalDocs,this.contentItems=df.buildStructure(this.parser,this.options),this.securitySchemes=new qd(this.parser);const a=Qd(Qd({},null==(o=null==(r=this.parser)?void 0:r.spec)?void 0:o["x-webhooks"]),null==(i=this.parser)?void 0:i.spec.webhooks);this.webhooks=new Vd(this.parser,n,a)}}var Jd=Object.defineProperty,Zd=Object.getOwnPropertyDescriptor,ef=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?Zd(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&Jd(t,n,i),i};class tf{constructor(e,t,n){this.items=[],this.active=!1,this.expanded=!1,tn(this),this.id=t.id||e+"/"+no(t.name),this.type=e,this.name=t["x-displayName"]||t.name,this.level=t.level||1,this.sidebarLabel=this.name,this.description=t.description||"";const r=t.items;r&&r.length&&(this.description=jl.getTextBeforeHading(this.description,r[0].name)),this.parent=n,this.externalDocs=t.externalDocs,"group"===this.type&&(this.expanded=!0)}activate(){this.active=!0}expand(){this.parent&&this.parent.expand(),this.expanded=!0}collapse(){"group"!==this.type&&(this.expanded=!1)}deactivate(){this.active=!1}}ef([Ae],tf.prototype,"active",2),ef([Ae],tf.prototype,"expanded",2),ef([Pt],tf.prototype,"activate",1),ef([Pt],tf.prototype,"expand",1),ef([Pt],tf.prototype,"collapse",1),ef([Pt],tf.prototype,"deactivate",1);var nf=Object.defineProperty,rf=Object.defineProperties,of=Object.getOwnPropertyDescriptors,af=Object.getOwnPropertySymbols,sf=Object.prototype.hasOwnProperty,lf=Object.prototype.propertyIsEnumerable,cf=(e,t,n)=>t in e?nf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uf=(e,t)=>{for(var n in t||(t={}))sf.call(t,n)&&cf(e,n,t[n]);if(af)for(var n of af(t))lf.call(t,n)&&cf(e,n,t[n]);return e},pf=(e,t)=>rf(e,of(t));class df{static buildStructure(e,t){const n=e.spec,r=[],o=df.getTagsWithOperations(e,n);return r.push(...df.addMarkdownItems(n.info.description||"",void 0,1,t)),n["x-tagGroups"]&&n["x-tagGroups"].length>0?r.push(...df.getTagGroupsItems(e,void 0,n["x-tagGroups"],o,t)):r.push(...df.getTagsItems(e,o,void 0,void 0,t)),r}static addMarkdownItems(e,t,n,r){const o=new jl(r,null==t?void 0:t.id).extractHeadings(e||"");o.length&&t&&t.description&&(t.description=jl.getTextBeforeHading(t.description,o[0].name));const i=(e,t,n=1)=>t.map((t=>{const r=new tf("section",t,e);return r.depth=n,t.items&&(r.items=i(r,t.items,n+1)),r}));return i(t,o,n)}static getTagGroupsItems(e,t,n,r,o){const i=[];for(const a of n){const n=new tf("group",a,t);n.depth=0,n.items=df.getTagsItems(e,r,n,a,o),i.push(n)}return i}static getTagsItems(e,t,n,r,o){let i;i=void 0===r?Object.keys(t):r.tags;const a=i.map((e=>t[e]?(t[e].used=!0,t[e]):(console.warn(`Non-existing tag "${e}" is added to the group "${r.name}"`),null))),s=[];for(const t of a){if(!t)continue;const r=new tf("tag",t,n);if(r.depth=1,""!==t.name)r.items=[...df.addMarkdownItems(t.description||"",r,r.depth+1,o),...this.getOperationsItems(e,r,t,r.depth+1,o)],s.push(r);else{const n=[...df.addMarkdownItems(t.description||"",r,r.depth+1,o),...this.getOperationsItems(e,void 0,t,r.depth+1,o)];s.push(...n)}}return o.sortTagsAlphabetically&&s.sort(Cs("name")),s}static getOperationsItems(e,t,n,r,o){if(0===n.operations.length)return[];const i=[];for(const a of n.operations){const n=new _u(e,a,t,o);n.depth=r,i.push(n)}return o.sortOperationsAlphabetically&&i.sort(Cs("name")),i}static getTagsWithOperations(e,t){const n={},r=t["x-webhooks"]||t.webhooks;for(const e of t.tags||[])n[e.name]=pf(uf({},e),{operations:[]});function o(e,t,r){for(const i of Object.keys(t)){const a=t[i],s=Object.keys(a).filter(Xa);for(const t of s){const s=a[t];if(a.$ref){const{resolved:t}=e.deref(a);o(e,{[i]:t},r);continue}let l=null==s?void 0:s.tags;l&&l.length||(l=[""]);for(const e of l){let o=n[e];void 0===o&&(o={name:e,operations:[]},n[e]=o),o["x-traitTag"]||o.operations.push(pf(uf({},s),{pathName:i,pointer:Da.compile(["paths",i,t]),httpVerb:t,pathParameters:a.parameters||[],pathServers:a.servers,isWebhook:!!r}))}}}}return r&&o(e,r,!0),t.paths&&o(e,t.paths),n}}var ff=Object.defineProperty,hf=Object.getOwnPropertyDescriptor,mf=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?hf(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&ff(t,n,i),i};const gf="data-section-id";class yf{constructor(e,t,n){this.scroll=t,this.history=n,this.activeItemIdx=-1,this.sideBarOpened=!1,this.updateOnScroll=e=>{const t=e?1:-1;let n=this.activeItemIdx;for(;(-1!==n||e)&&!(n>=this.flatItems.length-1&&e);){if(e){const e=this.getElementAtOrFirstChild(n+1);if(this.scroll.isElementBellow(e))break}else{const e=this.getElementAt(n);if(this.scroll.isElementAbove(e))break}n+=t}this.activate(this.flatItems[n],!0,!0)},this.updateOnHistory=(e=this.history.currentId)=>{if(!e)return;let t;t=this.flatItems.find((t=>t.id===e)),t?this.activateAndScroll(t,!1):(e.startsWith(hs)&&(t=this.flatItems.find((e=>hs.startsWith(e.id))),this.activateAndScroll(t,!1)),this.scroll.scrollIntoViewBySelector(`[${gf}="${oo(e)}"]`))},this.getItemById=e=>this.flatItems.find((t=>t.id===e)),tn(this),this.items=e.contentItems,this.flatItems=function(e,t){const n=[],r=e=>{for(const t of e)n.push(t),t.items&&r(t.items)};return r(e),n}(this.items||[]),this.flatItems.forEach(((e,t)=>e.absoluteIdx=t)),this.subscribe()}static updateOnHistory(e=Ns.currentId,t){e&&t.scrollIntoViewBySelector(`[${gf}="${oo(e)}"]`)}subscribe(){this._unsubscribe=this.scroll.subscribe(this.updateOnScroll),this._hashUnsubscribe=this.history.subscribe(this.updateOnHistory)}toggleSidebar(){this.sideBarOpened=!this.sideBarOpened}closeSidebar(){this.sideBarOpened=!1}getElementAt(e){const t=this.flatItems[e];return t&&Wr(`[${gf}="${oo(t.id)}"]`)||null}getElementAtOrFirstChild(e){let t=this.flatItems[e];return t&&"group"===t.type&&(t=t.items[0]),t&&Wr(`[${gf}="${oo(t.id)}"]`)||null}get activeItem(){return this.flatItems[this.activeItemIdx]||void 0}activate(e,t=!0,n=!1){if((this.activeItem&&this.activeItem.id)!==(e&&e.id)&&(!e||"group"!==e.type)){if(this.deactivate(this.activeItem),!e)return this.activeItemIdx=-1,void this.history.replace("",n);e.depth<=0||(this.activeItemIdx=e.absoluteIdx,t&&this.history.replace(encodeURI(e.id),n),e.activate(),e.expand())}}deactivate(e){if(void 0!==e)for(e.deactivate();void 0!==e;)e.collapse(),e=e.parent}activateAndScroll(e,t,n){const r=e&&this.getItemById(e.id)||e;this.activate(r,t,n),this.scrollToActive(),r&&r.items.length||this.closeSidebar()}scrollToActive(){this.scroll.scrollIntoView(this.getElementAt(this.activeItemIdx))}dispose(){this._unsubscribe(),this._hashUnsubscribe()}}mf([Ae],yf.prototype,"activeItemIdx",2),mf([Ae],yf.prototype,"sideBarOpened",2),mf([Pt],yf.prototype,"toggleSidebar",1),mf([Pt],yf.prototype,"closeSidebar",1),mf([Pt],yf.prototype,"activate",1),mf([Pt.bound],yf.prototype,"activateAndScroll",1);var vf=Object.defineProperty,bf=Object.getOwnPropertyDescriptor;const wf="scroll";class xf{constructor(e){this.options=e,this._prevOffsetY=0,this._scrollParent=qr?window:void 0,this._emiter=new ja,this.bind()}bind(){this._prevOffsetY=this.scrollY(),this._scrollParent&&this._scrollParent.addEventListener("scroll",this.handleScroll)}dispose(){this._scrollParent&&this._scrollParent.removeEventListener("scroll",this.handleScroll),this._emiter.removeAllListeners(wf)}scrollY(){return"undefined"!=typeof HTMLElement&&this._scrollParent instanceof HTMLElement?this._scrollParent.scrollTop:void 0!==this._scrollParent?this._scrollParent.pageYOffset:0}isElementBellow(e){if(null!==e)return e.getBoundingClientRect().top>this.options.scrollYOffset()}isElementAbove(e){if(null===e)return;const t=e.getBoundingClientRect().top;return(t>0?Math.floor(t):Math.ceil(t))<=this.options.scrollYOffset()}subscribe(e){const t=this._emiter.addListener(wf,e);return()=>t.removeListener(wf,e)}scrollIntoView(e){null!==e&&(e.scrollIntoView(),this._scrollParent&&this._scrollParent.scrollBy&&this._scrollParent.scrollBy(0,1-this.options.scrollYOffset()))}scrollIntoViewBySelector(e){const t=Wr(e);this.scrollIntoView(t)}handleScroll(){const e=this.scrollY()-this._prevOffsetY>0;this._prevOffsetY=this.scrollY(),this._emiter.emit(wf,e)}}((e,t,n,r)=>{for(var o,i=bf(t,n),a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);i&&vf(t,n,i)})([Ra.bind,(100,(e,t,n)=>{n.value=function(e,t){let n,r,o,i=null,a=0;const s=()=>{a=(new Date).getTime(),i=null,o=e.apply(n,r),i||(n=r=null)};return function(){const l=(new Date).getTime(),c=t-(l-a);return n=this,r=arguments,c<=0||c>t?(i&&(clearTimeout(i),i=null),a=l,o=e.apply(n,r),i||(n=r=null)):i||(i=setTimeout(s,c)),o}}(n.value,100)})],xf.prototype,"handleScroll");class kf{constructor(){this.searchWorker=function(){let e;if(qr)try{e=r(6980)}catch(t){e=r(4798).default}else e=r(4798).default;return new e}()}indexItems(e){const t=e=>{e.forEach((e=>{"group"!==e.type&&this.add(e.name,(e.description||"").concat(" ",e.path||""),e.id),t(e.items)}))};t(e),this.searchWorker.done()}add(e,t,n){this.searchWorker.add(e,t,n)}dispose(){this.searchWorker.terminate(),this.searchWorker.dispose()}search(e){return this.searchWorker.search(e)}toJS(){return e=this,null,t=function*(){return this.searchWorker.toJS()},new Promise(((n,r)=>{var o=e=>{try{a(t.next(e))}catch(e){r(e)}},i=e=>{try{a(t.throw(e))}catch(e){r(e)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(o,i);a((t=t.apply(e,null)).next())}));var e,t}load(e){this.searchWorker.load(e)}fromExternalJS(e,t){e&&t&&this.searchWorker.fromExternalJS(e,t)}}var _f=Object.defineProperty,Of=Object.getOwnPropertySymbols,Sf=Object.prototype.hasOwnProperty,Ef=Object.prototype.propertyIsEnumerable,Pf=(e,t,n)=>t in e?_f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function Af(e){const{Label:t=jd,Dropdown:r=Rd}=e;return 1===e.options.length?n.createElement(t,null,e.options[0].value):n.createElement(r,((e,t)=>{for(var n in t||(t={}))Sf.call(t,n)&&Pf(e,n,t[n]);if(Of)for(var n of Of(t))Ef.call(t,n)&&Pf(e,n,t[n]);return e})({},e))}var $f=r(7856);const Cf=pa` + a { + text-decoration: ${e=>e.theme.typography.links.textDecoration}; + color: ${e=>e.theme.typography.links.color}; + + &:visited { + color: ${e=>e.theme.typography.links.visited}; + } + + &:hover { + color: ${e=>e.theme.typography.links.hover}; + text-decoration: ${e=>e.theme.typography.links.hoverTextDecoration}; + } + } +`,Rf=ga(Lp)` + font-family: ${e=>e.theme.typography.fontFamily}; + font-weight: ${e=>e.theme.typography.fontWeightRegular}; + line-height: ${e=>e.theme.typography.lineHeight}; + + p { + &:last-child { + margin-bottom: 0; + } + } + + ${({compact:e})=>e&&"\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n "} + + ${({inline:e})=>e&&" p {\n display: inline-block;\n }"} + + h1 { + ${Cu(1)}; + color: ${e=>e.theme.colors.primary.main}; + margin-top: 0; + } + + h2 { + ${Cu(2)}; + color: ${e=>e.theme.colors.text.primary}; + } + + code { + color: ${({theme:e})=>e.typography.code.color}; + background-color: ${({theme:e})=>e.typography.code.backgroundColor}; + + font-family: ${e=>e.theme.typography.code.fontFamily}; + border-radius: 2px; + border: 1px solid rgba(38, 50, 56, 0.1); + padding: 0 ${({theme:e})=>e.spacing.unit}px; + font-size: ${e=>e.theme.typography.code.fontSize}; + font-weight: ${({theme:e})=>e.typography.code.fontWeight}; + + word-break: break-word; + } + + pre { + font-family: ${e=>e.theme.typography.code.fontFamily}; + white-space: ${({theme:e})=>e.typography.code.wrap?"pre-wrap":"pre"}; + background-color: ${({theme:e})=>e.codeBlock.backgroundColor}; + color: white; + padding: ${e=>4*e.theme.spacing.unit}px; + overflow-x: auto; + line-height: normal; + border-radius: 0px; + border: 1px solid rgba(38, 50, 56, 0.1); + + code { + background-color: transparent; + color: white; + padding: 0; + + &:before, + &:after { + content: none; + } + } + } + + blockquote { + margin: 0; + margin-bottom: 1em; + padding: 0 15px; + color: #777; + border-left: 4px solid #ddd; + } + + img { + max-width: 100%; + box-sizing: content-box; + } + + ul, + ol { + padding-left: 2em; + margin: 0; + margin-bottom: 1em; + + ul, + ol { + margin-bottom: 0; + margin-top: 0; + } + } + + table { + display: block; + width: 100%; + overflow: auto; + word-break: normal; + word-break: keep-all; + border-collapse: collapse; + border-spacing: 0; + margin-top: 1.5em; + margin-bottom: 1.5em; + } + + table tr { + background-color: #fff; + border-top: 1px solid #ccc; + + &:nth-child(2n) { + background-color: ${({theme:e})=>e.schema.nestedBackground}; + } + } + + table th, + table td { + padding: 6px 13px; + border: 1px solid #ddd; + } + + table th { + text-align: left; + font-weight: bold; + } + + ${Fu(".share-link")}; + + ${Cf} + + ${ya("Markdown")}; +`;var jf=Object.defineProperty,Tf=Object.getOwnPropertySymbols,If=Object.prototype.hasOwnProperty,Nf=Object.prototype.propertyIsEnumerable,Df=(e,t,n)=>t in e?jf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Lf=Rf.withComponent("span");function Mf(e){const t=e.inline?Lf:Rf;return n.createElement(Pa,null,(r=>{return n.createElement(t,((e,t)=>{for(var n in t||(t={}))If.call(t,n)&&Df(e,n,t[n]);if(Tf)for(var n of Tf(t))Nf.call(t,n)&&Df(e,n,t[n]);return e})({className:"redoc-markdown "+(e.className||""),dangerouslySetInnerHTML:{__html:(o=r.untrustedSpec,i=e.html,o?$f.sanitize(i):i)},"data-role":e["data-role"]},e));var o,i}))}class Ff extends n.Component{render(){const{source:e,inline:t,compact:r,className:o,"data-role":i}=this.props,a=new jl;return n.createElement(Mf,{html:a.renderMd(e),inline:t,compact:r,className:o,"data-role":i})}}const zf=ga.div` + position: relative; +`,Uf=ga.div` + position: absolute; + min-width: 80px; + max-width: 500px; + background: #fff; + bottom: 100%; + left: 50%; + margin-bottom: 10px; + transform: translateX(-50%); + + border-radius: 4px; + padding: 0.3em 0.6em; + text-align: center; + box-shadow: 0px 0px 5px 0px rgba(204, 204, 204, 1); +`,Vf=ga.div` + background: #fff; + color: #000; + display: inline; + font-size: 0.85em; + white-space: nowrap; +`,Bf=ga.div` + position: absolute; + width: 0; + height: 0; + bottom: -5px; + left: 50%; + margin-left: -5px; + border-left: solid transparent 5px; + border-right: solid transparent 5px; + border-top: solid #fff 5px; +`,qf=ga.div` + position: absolute; + width: 100%; + height: 20px; + bottom: -20px; +`;class Wf extends n.Component{render(){const{open:e,title:t,children:r}=this.props;return n.createElement(zf,null,r,e&&n.createElement(Uf,null,n.createElement(Vf,null,t),n.createElement(Bf,null),n.createElement(qf,null)))}}const Hf="undefined"!=typeof document&&document.queryCommandSupported&&document.queryCommandSupported("copy");class Yf{static isSupported(){return Hf}static selectElement(e){let t,n;document.body.createTextRange?(t=document.body.createTextRange(),t.moveToElementText(e),t.select()):document.createRange&&window.getSelection&&(n=window.getSelection(),t=document.createRange(),t.selectNodeContents(e),n.removeAllRanges(),n.addRange(t))}static deselect(){if(document.selection)document.selection.empty();else if(window.getSelection){const e=window.getSelection();e&&e.removeAllRanges()}}static copySelected(){let e;try{e=document.execCommand("copy")}catch(t){e=!1}return e}static copyElement(e){Yf.selectElement(e);const t=Yf.copySelected();return t&&Yf.deselect(),t}static copyCustom(e){const t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=e,document.body.appendChild(t),t.select();const n=Yf.copySelected();return document.body.removeChild(t),n}}const Kf=e=>{const[t,r]=n.useState(!1),o=()=>{const t="string"==typeof e.data?e.data:JSON.stringify(e.data,null,2);Yf.copyCustom(t),i()},i=()=>{r(!0),setTimeout((()=>{r(!1)}),1500)};return e.children({renderCopyButton:()=>n.createElement("button",{onClick:o},n.createElement(Wf,{title:Yf.isSupported()?"Copied":"Not supported in your browser",open:t},"Copy"))})};let Gf=1;function Qf(e,t){Gf=1;let n="";return n+='
    ',n+="",n+=th(e,t),n+="",n+="
    ",n}function Xf(e){return void 0!==e?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""}function Jf(e){return JSON.stringify(e).slice(1,-1)}function Zf(e,t){return''+Xf(e)+""}function eh(e){return''+e+""}function th(e,t){const n=typeof e;let r="";return null==e?r+=Zf("null","token keyword"):e&&e.constructor===Array?(Gf++,r+=function(e,t){const n=Gf>t?"collapsed":"";let r=`${eh("[")}
      `,o=!1;const i=e.length;for(let a=0;a
      ',r+=th(e[a],t),a";return r+=`
    ${eh("]")}`,o||(r=eh("[ ]")),r}(e,t),Gf--):e&&e.constructor===Date?r+=Zf('"'+e.toISOString()+'"',"token string"):"object"===n?(Gf++,r+=function(e,t){const n=Gf>t?"collapsed":"",r=Object.keys(e),o=r.length;let i=`${eh("{")}
      `,a=!1;for(let s=0;s
      ',i+='"'+Xf(l)+'": ',i+=th(e[l],t),s"}return i+=`
    ${eh("}")}`,a||(i=eh("{ }")),i}(e,t),Gf--):"number"===n?r+=Zf(e,"token number"):"string"===n?/^(http|https):\/\/[^\s]+$/.test(e)?r+=Zf('"',"token string")+'
    '+Xf(Jf(e))+""+Zf('"',"token string"):r+=Zf('"'+Jf(e)+'"',"token string"):"boolean"===n&&(r+=Zf(e,"token boolean")),r}const nh=pa` + .redoc-json code > .collapser { + display: none; + pointer-events: none; + } + + font-family: ${e=>e.theme.typography.code.fontFamily}; + font-size: ${e=>e.theme.typography.code.fontSize}; + + white-space: ${({theme:e})=>e.typography.code.wrap?"pre-wrap":"pre"}; + contain: content; + overflow-x: auto; + + .callback-function { + color: gray; + } + + .collapser:after { + content: '-'; + cursor: pointer; + } + + .collapsed > .collapser:after { + content: '+'; + cursor: pointer; + } + + .ellipsis:after { + content: ' … '; + } + + .collapsible { + margin-left: 2em; + } + + .hoverable { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 2px; + padding-right: 2px; + border-radius: 2px; + } + + .hovered { + background-color: rgba(235, 238, 249, 1); + } + + .collapser { + background-color: transparent; + border: 0; + color: #fff; + font-family: ${e=>e.theme.typography.code.fontFamily}; + font-size: ${e=>e.theme.typography.code.fontSize}; + padding-right: 6px; + padding-left: 6px; + padding-top: 0; + padding-bottom: 0; + display: flex; + align-items: center; + justify-content: center; + width: 15px; + height: 15px; + position: absolute; + top: 4px; + left: -1.5em; + cursor: default; + user-select: none; + -webkit-user-select: none; + padding: 2px; + &:focus { + outline-color: #fff; + outline-style: dotted; + outline-width: 1px; + } + } + + ul { + list-style-type: none; + padding: 0px; + margin: 0px 0px 0px 26px; + } + + li { + position: relative; + display: block; + } + + .hoverable { + display: inline-block; + } + + .selected { + outline-style: solid; + outline-width: 1px; + outline-style: dotted; + } + + .collapsed > .collapsible { + display: none; + } + + .ellipsis { + display: none; + } + + .collapsed > .ellipsis { + display: inherit; + } +`,rh=ga.div` + &:hover > ${Mp} { + opacity: 1; + } +`,oh=ga((e=>{const[t,r]=n.useState(),o=({renderCopyButton:t})=>{const o=e.data&&Object.values(e.data).some((e=>"object"==typeof e&&null!==e));return n.createElement(rh,null,n.createElement(Mp,null,t(),o&&n.createElement(n.Fragment,null,n.createElement("button",{onClick:i}," Expand all "),n.createElement("button",{onClick:a}," Collapse all "))),n.createElement(Sa.Consumer,null,(t=>n.createElement(Lp,{className:e.className,ref:e=>r(e),dangerouslySetInnerHTML:{__html:Qf(e.data,t.jsonSampleExpandLevel)}}))))},i=()=>{const e=null==t?void 0:t.getElementsByClassName("collapsible");for(const t of Array.prototype.slice.call(e)){const e=t.parentNode;e.classList.remove("collapsed"),e.querySelector(".collapser").setAttribute("aria-label","collapse")}},a=()=>{const e=null==t?void 0:t.getElementsByClassName("collapsible"),n=Array.prototype.slice.call(e,1);for(const e of n){const t=e.parentNode;t.classList.add("collapsed"),t.querySelector(".collapser").setAttribute("aria-label","expand")}},s=e=>{let t;"collapser"===e.className&&(t=e.parentElement.getElementsByClassName("collapsible")[0],t.parentElement.classList.contains("collapsed")?(t.parentElement.classList.remove("collapsed"),e.setAttribute("aria-label","collapse")):(t.parentElement.classList.add("collapsed"),e.setAttribute("aria-label","expand")))},l=n.useCallback((e=>{s(e.target)}),[]),c=n.useCallback((e=>{"Enter"===e.key&&s(e.target)}),[]);return n.useEffect((()=>(null==t||t.addEventListener("click",l),null==t||t.addEventListener("focus",c),()=>{null==t||t.removeEventListener("click",l),null==t||t.removeEventListener("focus",c)})),[l,c,t]),n.createElement(Kf,{data:e.data},o)}))` + ${nh}; +`,ih=e=>{const{source:t,lang:r}=e;return n.createElement(zp,{dangerouslySetInnerHTML:{__html:vs(t,r)}})},ah=e=>{const{source:t,lang:r}=e;return n.createElement(Kf,{data:t},(({renderCopyButton:e})=>n.createElement(Fp,null,n.createElement(Mp,null,e()),n.createElement(ih,{lang:r,source:t}))))};function sh({value:e,mimeType:t}){return es(t)?n.createElement(oh,{data:e}):("object"==typeof e&&(e=JSON.stringify(e,null,2)),n.createElement(ah,{lang:(r=t,-1!==r.search(/xml/i)?"xml":-1!==r.search(/csv/i)?"csv":-1!==r.search(/plain/i)?"tex":"clike"),source:e}));var r}function lh({example:e,mimeType:t}){return void 0===e.value&&e.externalValueUrl?n.createElement(ch,{example:e,mimeType:t}):n.createElement(sh,{value:e.value,mimeType:t})}function ch({example:e,mimeType:t}){const r=function(e,t){const[,r]=(0,n.useState)(!0),o=(0,n.useRef)(void 0),i=(0,n.useRef)(void 0);return i.current!==e&&(o.current=void 0),i.current=e,(0,n.useEffect)((()=>{(()=>{return n=this,i=function*(){r(!0);try{o.current=yield e.getExternalValue(t)}catch(e){o.current=e}r(!1)},new Promise(((e,t)=>{var r=e=>{try{a(i.next(e))}catch(e){t(e)}},o=e=>{try{a(i.throw(e))}catch(e){t(e)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,o);a((i=i.apply(n,null)).next())}));var n,i})()}),[e,t]),o.current}(e,t);return void 0===r?n.createElement("span",null,"Loading..."):r instanceof Error?n.createElement(zp,null,"Error loading external example: ",n.createElement("br",null),n.createElement("a",{className:"token string",href:e.externalValueUrl,target:"_blank",rel:"noopener noreferrer"},e.externalValueUrl)):n.createElement(sh,{value:r,mimeType:t})}const uh=ga.div` + padding: 0.9em; + background-color: ${({theme:e})=>Ur(.6,e.rightPanel.backgroundColor)}; + margin: 0 0 10px 0; + display: block; + font-family: ${({theme:e})=>e.typography.headings.fontFamily}; + font-size: 0.929em; + line-height: 1.5em; +`,ph=ga.span` + font-family: ${({theme:e})=>e.typography.headings.fontFamily}; + font-size: 12px; + position: absolute; + z-index: 1; + top: -11px; + left: 12px; + font-weight: ${({theme:e})=>e.typography.fontWeightBold}; + color: ${({theme:e})=>Ur(.3,e.rightPanel.textColor)}; +`,dh=ga.div` + position: relative; +`,fh=ga(Cd)` + label { + color: ${({theme:e})=>e.rightPanel.textColor}; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + font-size: 1em; + text-transform: none; + border: none; + } + margin: 0 0 10px 0; + display: block; + background-color: ${({theme:e})=>Ur(.6,e.rightPanel.backgroundColor)}; + border: none; + padding: 0.9em 1.6em 0.9em 0.9em; + box-shadow: none; + &:hover, + &:focus-within { + border: none; + box-shadow: none; + background-color: ${({theme:e})=>Ur(.3,e.rightPanel.backgroundColor)}; + } +`,hh=ga.div` + font-family: ${e=>e.theme.typography.code.fontFamily}; + font-size: 12px; + color: #ee807f; +`;class mh extends n.Component{constructor(){super(...arguments),this.state={activeIdx:0},this.switchMedia=({idx:e})=>{void 0!==e&&this.setState({activeIdx:e})}}render(){const{activeIdx:e}=this.state,t=this.props.mediaType.examples||{},r=this.props.mediaType.name,o=n.createElement(hh,null,"No sample"),i=Object.keys(t);if(0===i.length)return o;if(i.length>1){const o=i.map(((e,n)=>({value:t[e].summary||e,idx:n}))),a=t[i[e]],s=a.description;return n.createElement(gh,null,n.createElement(dh,null,n.createElement(ph,null,"Example"),this.props.renderDropdown({value:o[e].value,options:o,onChange:this.switchMedia,ariaLabel:"Example"})),n.createElement("div",null,s&&n.createElement(Ff,{source:s}),n.createElement(lh,{example:a,mimeType:r})))}{const e=t[i[0]];return n.createElement(gh,null,e.description&&n.createElement(Ff,{source:e.description}),n.createElement(lh,{example:e,mimeType:r}))}}}const gh=ga.div` + margin-top: 15px; +`;if(!n.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!tn)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");function yh(e){e()}var vh=[];function bh(e){return Dt(Bn(e,t));var t}var wh="undefined"==typeof FinalizationRegistry?void 0:FinalizationRegistry;function xh(e){return{reaction:e,mounted:!1,changedBeforeMount:!1,cleanAt:Date.now()+kh}}var kh=1e4,_h=wh?function(e){var t=new Map,n=1,r=new e((function(e){var n=t.get(e);n&&(n.reaction.dispose(),t.delete(e))}));return{addReactionToTrack:function(e,o,i){var a=n++;return r.register(i,a,e),e.current=xh(o),e.current.finalizationRegistryCleanupToken=a,t.set(a,e.current),e.current},recordReactionAsCommitted:function(e){r.unregister(e),e.current&&e.current.finalizationRegistryCleanupToken&&t.delete(e.current.finalizationRegistryCleanupToken)},forceCleanupTimerToRunNowForTests:function(){},resetCleanupScheduleForTests:function(){}}}(wh):function(){var e,t=new Set;function n(){void 0===e&&(e=setTimeout(r,1e4))}function r(){e=void 0;var r=Date.now();t.forEach((function(e){var n=e.current;n&&r>=n.cleanAt&&(n.reaction.dispose(),e.current=null,t.delete(e))})),t.size>0&&n()}return{addReactionToTrack:function(e,r,o){var i;return e.current=xh(r),i=e,t.add(i),n(),e.current},recordReactionAsCommitted:function(e){t.delete(e)},forceCleanupTimerToRunNowForTests:function(){e&&(clearTimeout(e),r())},resetCleanupScheduleForTests:function(){var n,r;if(t.size>0){try{for(var o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),i=o.next();!i.done;i=o.next()){var a=i.value,s=a.current;s&&(s.reaction.dispose(),a.current=null)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}t.clear()}e&&(clearTimeout(e),e=void 0)}}}(),Oh=_h.addReactionToTrack,Sh=_h.recordReactionAsCommitted,Eh=(_h.resetCleanupScheduleForTests,_h.forceCleanupTimerToRunNowForTests,!1);function Ph(){return Eh}function Ah(e){return"observer"+e}var $h=function(){};function Ch(e,t){if(void 0===t&&(t="observed"),Ph())return e();var r,o=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}(n.useState(new $h),1)[0],i=(r=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}((0,n.useState)(0),2)[1],(0,n.useCallback)((function(){r((function(e){return e+1}))}),vh)),a=n.useRef(null);if(!a.current)var s=new mt(Ah(t),(function(){l.mounted?i():l.changedBeforeMount=!0})),l=Oh(a,s,o);var c,u,p=a.current.reaction;if(n.useDebugValue(p,bh),n.useEffect((function(){return Sh(a),a.current?(a.current.mounted=!0,a.current.changedBeforeMount&&(a.current.changedBeforeMount=!1,i())):(a.current={reaction:new mt(Ah(t),(function(){i()})),mounted:!0,changedBeforeMount:!1,cleanAt:1/0},i()),function(){a.current.reaction.dispose(),a.current=null}}),[]),p.track((function(){try{c=e()}catch(e){u=e}})),u)throw u;return c}var Rh=function(){return Rh=Object.assign||function(e){for(var t,n=1,r=arguments.length;n2?r-2:0),i=2;i"}function Zh(e){var t=this;if(!0===Ph())return e.call(this);Fh(this,Gh,!1),Fh(this,Qh,!1);var r=Jh(this),o=e.bind(this),i=!1,a=new mt(r+".render()",(function(){if(!i&&(i=!0,!0!==t[Kh])){var e=!0;try{Fh(t,Qh,!0),t[Gh]||n.Component.prototype.forceUpdate.call(t),e=!1}finally{Fh(t,Qh,!1),e&&a.dispose()}}}));function s(){i=!1;var e=void 0,t=void 0;if(a.track((function(){try{t=function(e,t){var n=ze(e);try{return t()}finally{Ue(n)}}(!1,o)}catch(t){e=t}})),e)throw e;return t}return a.reactComponent=this,s[Hh]=a,this.render=s,s.call(this)}function em(e,t){return Ph()&&console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."),this.state!==t||!Lh(this.props,e)}function tm(e,t){var n=Dh("reactProp_"+t+"_valueHolder"),r=Dh("reactProp_"+t+"_atomHolder");function o(){return this[r]||Fh(this,r,K("reactive "+t)),this[r]}Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){var e=!1;return nt&&rt&&(e=nt(!0)),o.call(this).reportObserved(),nt&&rt&&rt(e),this[n]},set:function(e){this[Qh]||Lh(this[n],e)?Fh(this,n,e):(Fh(this,n,e),Fh(this,Gh,!0),o.call(this).reportChanged(),Fh(this,Gh,!1))}})}var nm="function"==typeof Symbol&&Symbol.for,rm=nm?Symbol.for("react.forward_ref"):"function"==typeof n.forwardRef&&(0,n.forwardRef)((function(e){return null})).$$typeof,om=nm?Symbol.for("react.memo"):"function"==typeof n.memo&&(0,n.memo)((function(e){return null})).$$typeof;function im(e){if(!0===e.isMobxInjector&&console.warn("Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'"),om&&e.$$typeof===om)throw new Error("Mobx observer: You are trying to use 'observer' on a function component wrapped in either another observer or 'React.memo'. The observer already applies 'React.memo' for you.");if(rm&&e.$$typeof===rm){var t=e.render;if("function"!=typeof t)throw new Error("render property of ForwardRef was not a function");return(0,n.forwardRef)((function(){var e=arguments;return(0,n.createElement)(Th,null,(function(){return t.apply(void 0,e)}))}))}return"function"!=typeof e||e.prototype&&e.prototype.render||e.isReactClass||Object.prototype.isPrototypeOf.call(n.Component,e)?Xh(e):function(e,t){if(Ph())return e;var r,o,i,a=Rh({forwardRef:!1},t),s=e.displayName||e.name,l=function(t,n){return Ch((function(){return e(t,n)}),s)};return l.displayName=s,r=a.forwardRef?(0,n.memo)((0,n.forwardRef)(l)):(0,n.memo)(l),o=e,i=r,Object.keys(o).forEach((function(e){jh[e]||Object.defineProperty(i,e,Object.getOwnPropertyDescriptor(o,e))})),r.displayName=s,r}(e)}if(!n.Component)throw new Error("mobx-react requires React to be available");if(!Ae)throw new Error("mobx-react requires mobx to be available");const am=ga(Gu)` + button { + background-color: transparent; + border: 0; + outline: 0; + font-size: 13px; + font-family: ${e=>e.theme.typography.code.fontFamily}; + cursor: pointer; + padding: 0; + color: ${e=>e.theme.colors.text.primary}; + &:focus { + font-weight: ${({theme:e})=>e.typography.fontWeightBold}; + } + ${({kind:e})=>"patternProperties"===e&&pa` + display: inline-flex; + margin-right: 20px; + + > span.property-name { + white-space: break-spaces; + text-align: left; + + ::before, + ::after { + content: '/'; + filter: opacity(0.2); + } + } + + > svg { + align-self: center; + } + `} + } + ${Bu} { + height: ${({theme:e})=>e.schema.arrow.size}; + width: ${({theme:e})=>e.schema.arrow.size}; + polygon { + fill: ${({theme:e})=>e.schema.arrow.color}; + } + } +`,sm=ga.span` + vertical-align: middle; + font-size: ${({theme:e})=>e.typography.code.fontSize}; + line-height: 20px; +`,lm=ga(sm)` + color: ${e=>Ur(.1,e.theme.schema.typeNameColor)}; +`,cm=ga(sm)` + color: ${e=>e.theme.schema.typeNameColor}; +`,um=ga(sm)` + color: ${e=>e.theme.schema.typeTitleColor}; + word-break: break-word; +`,pm=cm,dm=ga(sm.withComponent("div"))` + color: ${e=>e.theme.schema.requireLabelColor}; + font-size: ${e=>e.theme.schema.labelsTextSize}; + font-weight: normal; + margin-left: 20px; + line-height: 1; +`,fm=ga(dm)` + color: ${e=>e.theme.colors.primary.light}; +`,hm=ga(sm)` + color: ${({theme:e})=>e.colors.warning.main}; + font-size: 13px; +`,mm=ga(sm)` + color: #0e7c86; + &::before, + &::after { + font-weight: bold; + } +`,gm=ga(sm)` + border-radius: 2px; + word-break: break-word; + ${({theme:e})=>`\n background-color: ${Ur(.95,e.colors.text.primary)};\n color: ${Ur(.1,e.colors.text.primary)};\n\n padding: 0 ${e.spacing.unit}px;\n border: 1px solid ${Ur(.9,e.colors.text.primary)};\n font-family: ${e.typography.code.fontFamily};\n}`}; + & + & { + margin-left: 0; + } + ${ya("ExampleValue")}; +`,ym=ga(gm)``,vm=ga(sm)` + border-radius: 2px; + ${({theme:e})=>`\n background-color: ${Ur(.95,e.colors.primary.light)};\n color: ${Ur(.1,e.colors.primary.main)};\n\n margin: 0 ${e.spacing.unit}px;\n padding: 0 ${e.spacing.unit}px;\n border: 1px solid ${Ur(.9,e.colors.primary.main)};\n}`}; + & + & { + margin-left: 0; + } + ${ya("ConstraintItem")}; +`,bm=ga.button` + background-color: transparent; + border: 0; + color: ${({theme:e})=>e.colors.text.secondary}; + margin-left: ${({theme:e})=>e.spacing.unit}px; + border-radius: 2px; + cursor: pointer; + outline-color: ${({theme:e})=>e.colors.text.secondary}; + font-size: 12px; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;const wm=ga.div` + ${Cf}; + ${({compact:e})=>e?"":"margin: 1em 0"} +`;let xm=class extends n.Component{render(){const{externalDocs:e}=this.props;return e&&e.url?n.createElement(wm,{compact:this.props.compact},n.createElement("a",{href:e.url},e.description||e.url)):null}};xm=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],xm);class km extends n.PureComponent{constructor(){super(...arguments),this.state={collapsed:!0}}toggle(){this.setState({collapsed:!this.state.collapsed})}render(){const{values:e,isArrayType:t}=this.props,{collapsed:r}=this.state,{enumSkipQuotes:o,maxDisplayedEnumValues:i}=this.context;if(!e.length)return null;const a=this.state.collapsed&&i?e.slice(0,i):e,s=!!i&&e.length>i,l=i?r?`… ${e.length-i} more`:"Hide":"";return n.createElement("div",null,n.createElement(sm,null,t?lo("enumArray"):""," ",1===e.length?lo("enumSingleValue"):lo("enum"),":")," ",a.map(((e,t)=>{const r=o?String(e):JSON.stringify(e);return n.createElement(n.Fragment,{key:t},n.createElement(gm,null,r)," ")})),s?n.createElement(_m,{onClick:()=>{this.toggle()}},l):null)}}km.contextType=Sa;const _m=ga.span` + color: ${e=>e.theme.colors.primary.main}; + vertical-align: middle; + font-size: 13px; + line-height: 20px; + padding: 0 5px; + cursor: pointer; +`,Om=ga(Rf)` + margin: 2px 0; +`;class Sm extends n.PureComponent{render(){const e=this.props.extensions;return n.createElement(Sa.Consumer,null,(t=>n.createElement(n.Fragment,null,t.showExtensions&&Object.keys(e).map((t=>n.createElement(Om,{key:t},n.createElement(sm,null," ",t.substring(2),": ")," ",n.createElement(ym,null,"string"==typeof e[t]?e[t]:JSON.stringify(e[t]))))))))}}function Em({field:e}){return e.examples?n.createElement(n.Fragment,null,n.createElement(sm,null," ",lo("examples"),": "),io(e.examples)?e.examples.map(((t,r)=>{const o=is(e,t),i=e.in?String(o):JSON.stringify(o);return n.createElement(n.Fragment,{key:r},n.createElement(gm,null,i)," ")})):n.createElement(Pm,null,Object.values(e.examples).map(((t,r)=>n.createElement("li",{key:r+t.value},n.createElement(gm,null,is(e,t.value))," -"," ",t.summary||t.description))))):null}const Pm=ga.ul` + margin-top: 1em; + list-style-position: outside; +`;class Am extends n.PureComponent{render(){return 0===this.props.constraints.length?null:n.createElement("span",null," ",this.props.constraints.map((e=>n.createElement(vm,{key:e}," ",e," "))))}}const $m=n.memo((function({value:e,label:t,raw:r}){if(void 0===e)return null;const o=r?String(e):JSON.stringify(e);return n.createElement("div",null,n.createElement(sm,null," ",t," ")," ",n.createElement(gm,null,o))}));function Cm(e){const t=e.schema.pattern,{hideSchemaPattern:r}=n.useContext(Sa),[o,i]=n.useState(!1),a=n.useCallback((()=>i(!o)),[o]);return!t||r?null:n.createElement(n.Fragment,null,n.createElement(mm,null,o||t.length<45?t:`${t.substr(0,45)}...`),t.length>45&&n.createElement(bm,{onClick:a},o?"Hide pattern":"Show pattern"))}function Rm({schema:e}){const{hideSchemaPattern:t}=n.useContext(Sa);return e&&("string"!==e.type||e.constraints.length)&&((null==e?void 0:e.pattern)&&!t||e.items||e.displayFormat||e.constraints.length)?n.createElement(jm,null,"[ items",e.displayFormat&&n.createElement(pm,null," <",e.displayFormat," >"),n.createElement(Am,{constraints:e.constraints}),n.createElement(Cm,{schema:e}),e.items&&n.createElement(Rm,{schema:e.items})," ]"):null}const jm=ga(lm)` + margin: 0 5px; + vertical-align: text-top; +`;var Tm=Object.defineProperty,Im=Object.getOwnPropertySymbols,Nm=Object.prototype.hasOwnProperty,Dm=Object.prototype.propertyIsEnumerable,Lm=(e,t,n)=>t in e?Tm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mm=(e,t)=>{for(var n in t||(t={}))Nm.call(t,n)&&Lm(e,n,t[n]);if(Im)for(var n of Im(t))Dm.call(t,n)&&Lm(e,n,t[n]);return e};const Fm=im((e=>{const{enumSkipQuotes:t,hideSchemaTitles:r}=n.useContext(Sa),{showExamples:o,field:i,renderDiscriminatorSwitch:a}=e,{schema:s,description:l,deprecated:c,extensions:u,in:p,const:d}=i,f="array"===s.type,h=t||"header"===p,m=n.useMemo((()=>!o||void 0===i.example&&void 0===i.examples?null:void 0!==i.examples?n.createElement(Em,{field:i}):n.createElement($m,{label:lo("example")+":",value:is(i,i.example),raw:Boolean(i.in)})),[i,o]);return n.createElement("div",null,n.createElement("div",null,n.createElement(lm,null,s.typePrefix),n.createElement(cm,null,s.displayType),s.displayFormat&&n.createElement(pm,null," ","<",s.displayFormat,">"," "),s.contentEncoding&&n.createElement(pm,null," ","<",s.contentEncoding,">"," "),s.contentMediaType&&n.createElement(pm,null," ","<",s.contentMediaType,">"," "),s.title&&!r&&n.createElement(um,null," (",s.title,") "),n.createElement(Am,{constraints:s.constraints}),n.createElement(Cm,{schema:s}),s.isCircular&&n.createElement(hm,null," ",lo("recursive")," "),f&&s.items&&n.createElement(Rm,{schema:s.items})),c&&n.createElement("div",null,n.createElement(qu,{type:"warning"}," ",lo("deprecated")," ")),n.createElement($m,{raw:h,label:lo("default")+":",value:s.default}),!a&&n.createElement(km,{isArrayType:f,values:s.enum})," ",m,n.createElement(Sm,{extensions:Mm(Mm({},u),s.extensions)}),n.createElement("div",null,n.createElement(Ff,{compact:!0,source:l})),s.externalDocs&&n.createElement(xm,{externalDocs:s.externalDocs,compact:!0}),a&&a(e)||null,d&&n.createElement($m,{label:lo("const")+":",value:d})||null)})),zm=n.memo(Fm);var Um=Object.defineProperty,Vm=(Object.getOwnPropertyDescriptor,Object.getOwnPropertySymbols),Bm=Object.prototype.hasOwnProperty,qm=Object.prototype.propertyIsEnumerable,Wm=(e,t,n)=>t in e?Um(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Hm=class extends n.Component{constructor(){super(...arguments),this.toggle=()=>{void 0===this.props.field.expanded&&this.props.expandByDefault?this.props.field.collapse():this.props.field.toggle()},this.handleKeyPress=e=>{"Enter"===e.key&&(e.preventDefault(),this.toggle())}}render(){const{className:e="",field:t,isLast:r,expandByDefault:o}=this.props,{name:i,deprecated:a,required:s,kind:l}=t,c=!t.schema.isPrimitive&&!t.schema.isCircular,u=void 0===t.expanded?o:t.expanded,p=n.createElement(n.Fragment,null,"additionalProperties"===l&&n.createElement(fm,null,"additional property"),"patternProperties"===l&&n.createElement(fm,null,"pattern property"),s&&n.createElement(dm,null,"required")),d=c?n.createElement(am,{className:a?"deprecated":"",kind:l,title:i},n.createElement(Xu,null),n.createElement("button",{onClick:this.toggle,onKeyPress:this.handleKeyPress,"aria-label":"expand properties"},n.createElement("span",{className:"property-name"},i),n.createElement(Bu,{direction:u?"down":"right"})),p):n.createElement(Gu,{className:a?"deprecated":void 0,kind:l,title:i},n.createElement(Xu,null),n.createElement("span",{className:"property-name"},i),p);return n.createElement(n.Fragment,null,n.createElement("tr",{className:r?"last "+e:e},d,n.createElement(Qu,null,n.createElement(zm,((e,t)=>{for(var n in t||(t={}))Bm.call(t,n)&&Wm(e,n,t[n]);if(Vm)for(var n of Vm(t))qm.call(t,n)&&Wm(e,n,t[n]);return e})({},this.props)))),u&&c&&n.createElement("tr",{key:t.name+"inner"},n.createElement(Ku,{colSpan:2},n.createElement(Ju,null,n.createElement(Pg,{schema:t.schema,skipReadOnly:this.props.skipReadOnly,skipWriteOnly:this.props.skipWriteOnly,showTitle:this.props.showTitle,level:this.props.level})))))}};Hm=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Hm);Object.defineProperty,Object.getOwnPropertyDescriptor;let Ym=class extends n.Component{constructor(){super(...arguments),this.changeActiveChild=e=>{void 0!==e.idx&&this.props.parent.activateOneOf(e.idx)}}sortOptions(e,t){if(0===t.length)return;const n={};t.forEach(((e,t)=>{n[e]=t})),e.sort(((e,t)=>n[e.value]>n[t.value]?1:-1))}render(){const{parent:e,enumValues:t}=this.props;if(void 0===e.oneOf)return null;const r=e.oneOf.map(((e,t)=>({value:e.title,idx:t}))),o=r[e.activeOneOf].value;return this.sortOptions(r,t),n.createElement(Cd,{value:o,options:r,onChange:this.changeActiveChild,ariaLabel:"Example"})}};Ym=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Ym);const Km=im((({schema:{fields:e=[],title:t},showTitle:r,discriminator:o,skipReadOnly:i,skipWriteOnly:a,level:s})=>{const{expandSingleSchemaField:l,showObjectSchemaExamples:c,schemaExpansionLevel:u}=n.useContext(Sa),p=n.useMemo((()=>i||a?e.filter((e=>!(i&&e.schema.readOnly||a&&e.schema.writeOnly))):e),[i,a,e]),d=l&&1===p.length||u>=s;return n.createElement(Zu,null,r&&n.createElement(Hu,null,t),n.createElement("tbody",null,Gr(p,((e,t)=>n.createElement(Hm,{key:e.name,isLast:t,field:e,expandByDefault:d,renderDiscriminatorSwitch:(null==o?void 0:o.fieldName)===e.name?()=>n.createElement(Ym,{parent:o.parentSchema,enumValues:e.schema.enum}):void 0,className:e.expanded?"expanded":void 0,showExamples:c,skipReadOnly:i,skipWriteOnly:a,showTitle:r,level:s})))))}));var Gm=Object.defineProperty,Qm=Object.defineProperties,Xm=Object.getOwnPropertyDescriptors,Jm=Object.getOwnPropertySymbols,Zm=Object.prototype.hasOwnProperty,eg=Object.prototype.propertyIsEnumerable,tg=(e,t,n)=>t in e?Gm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ng=(e,t)=>{for(var n in t||(t={}))Zm.call(t,n)&&tg(e,n,t[n]);if(Jm)for(var n of Jm(t))eg.call(t,n)&&tg(e,n,t[n]);return e},rg=(e,t)=>Qm(e,Xm(t));const og=ga.div` + padding-left: ${({theme:e})=>2*e.spacing.unit}px; +`;class ig extends n.PureComponent{render(){const e=this.props.schema,t=e.items,r=void 0===e.minItems&&void 0===e.maxItems?"":`(${us(e)})`;return e.fields?n.createElement(Km,rg(ng({},this.props),{level:this.props.level})):!e.displayType||t||r.length?n.createElement("div",null,n.createElement(rp,null," Array ",r),n.createElement(og,null,n.createElement(Pg,rg(ng({},this.props),{schema:t}))),n.createElement(op,null)):n.createElement("div",null,n.createElement(cm,null,e.displayType))}}var ag=Object.defineProperty,sg=Object.defineProperties,lg=Object.getOwnPropertyDescriptor,cg=Object.getOwnPropertyDescriptors,ug=Object.getOwnPropertySymbols,pg=Object.prototype.hasOwnProperty,dg=Object.prototype.propertyIsEnumerable,fg=(e,t,n)=>t in e?ag(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hg=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?lg(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&ag(t,n,i),i};let mg=class extends n.Component{constructor(){super(...arguments),this.activateOneOf=()=>{this.props.schema.activateOneOf(this.props.idx)}}render(){const{idx:e,schema:t,subSchema:r}=this.props;return n.createElement(np,{deprecated:r.deprecated,active:e===t.activeOneOf,onClick:this.activateOneOf},r.title||r.typePrefix+r.displayType)}};mg=hg([im],mg);let gg=class extends n.Component{render(){const{schema:{oneOf:e},schema:t}=this.props;if(void 0===e)return null;const r=e[t.activeOneOf];return n.createElement("div",null,n.createElement(tp,null," ",t.oneOfType," "),n.createElement(ep,null,e.map(((e,r)=>n.createElement(mg,{key:e.pointer,schema:t,subSchema:e,idx:r})))),n.createElement("div",null,e[t.activeOneOf].deprecated&&n.createElement(qu,{type:"warning"},"Deprecated")),n.createElement(Am,{constraints:r.constraints}),n.createElement(Pg,((e,t)=>sg(e,cg(t)))(((e,t)=>{for(var n in t||(t={}))pg.call(t,n)&&fg(e,n,t[n]);if(ug)for(var n of ug(t))dg.call(t,n)&&fg(e,n,t[n]);return e})({},this.props),{schema:r})))}};gg=hg([im],gg);const yg=im((({schema:e})=>n.createElement("div",null,n.createElement(cm,null,e.displayType),e.title&&n.createElement(um,null," ",e.title," "),n.createElement(hm,null," ",lo("recursive")," "))));var vg=Object.defineProperty,bg=Object.defineProperties,wg=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),xg=Object.getOwnPropertySymbols,kg=Object.prototype.hasOwnProperty,_g=Object.prototype.propertyIsEnumerable,Og=(e,t,n)=>t in e?vg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Sg=(e,t)=>{for(var n in t||(t={}))kg.call(t,n)&&Og(e,n,t[n]);if(xg)for(var n of xg(t))_g.call(t,n)&&Og(e,n,t[n]);return e},Eg=(e,t)=>bg(e,wg(t));let Pg=class extends n.Component{render(){var e;const t=this.props,{schema:r}=t,o=((e,t)=>{var n={};for(var r in e)kg.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&xg)for(var r of xg(e))t.indexOf(r)<0&&_g.call(e,r)&&(n[r]=e[r]);return n})(t,["schema"]),i=(o.level||0)+1;if(!r)return n.createElement("em",null," Schema not provided ");const{type:a,oneOf:s,discriminatorProp:l,isCircular:c}=r;if(c)return n.createElement(yg,{schema:r});if(void 0!==l){if(!s||!s.length)return console.warn(`Looks like you are using discriminator wrong: you don't have any definition inherited from the ${r.title}`),null;const e=s[r.activeOneOf];return e.isCircular?n.createElement(yg,{schema:e}):n.createElement(Km,Eg(Sg({},o),{level:i,schema:e,discriminator:{fieldName:l,parentSchema:r}}))}if(void 0!==s)return n.createElement(gg,Sg({schema:r},o));const u=io(a)?a:[a];if(u.includes("object")){if(null==(e=r.fields)?void 0:e.length)return n.createElement(Km,Eg(Sg({},this.props),{level:i}))}else if(u.includes("array"))return n.createElement(ig,Eg(Sg({},this.props),{level:i}));const p={schema:r,name:"",required:!1,description:r.description,externalDocs:r.externalDocs,deprecated:!1,toggle:()=>null,expanded:!1};return n.createElement("div",null,n.createElement(zm,{field:p}))}};Pg=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Pg);var Ag=Object.defineProperty,$g=Object.defineProperties,Cg=Object.getOwnPropertyDescriptors,Rg=Object.getOwnPropertySymbols,jg=Object.prototype.hasOwnProperty,Tg=Object.prototype.propertyIsEnumerable,Ig=(e,t,n)=>t in e?Ag(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class Ng extends n.PureComponent{constructor(){super(...arguments),this.renderDropdown=e=>{return n.createElement(Af,(t=((e,t)=>{for(var n in t||(t={}))jg.call(t,n)&&Ig(e,n,t[n]);if(Rg)for(var n of Rg(t))Tg.call(t,n)&&Ig(e,n,t[n]);return e})({Label:jd,Dropdown:fh},e),$g(t,Cg({variant:"dark"}))));var t}}static getMediaType(e,t){if(!e)return{};const n={schema:{$ref:e}};return t&&(n.examples={example:{$ref:t}}),n}get mediaModel(){const{parser:e,schemaRef:t,exampleRef:n,options:r}=this.props;return this._mediaModel||(this._mediaModel=new nu(e,"json",!1,Ng.getMediaType(t,n),r)),this._mediaModel}render(){const{showReadOnly:e=!0,showWriteOnly:t=!1}=this.props;return n.createElement(Su,null,n.createElement(Au,null,n.createElement(Ou,null,n.createElement(Pg,{skipWriteOnly:!t,skipReadOnly:!e,schema:this.mediaModel.schema})),n.createElement(Pu,null,n.createElement(Dg,null,n.createElement(mh,{renderDropdown:this.renderDropdown,mediaType:this.mediaModel})))))}}const Dg=ga.div` + background: ${({theme:e})=>e.codeBlock.backgroundColor}; + & > div, + & > pre { + padding: ${e=>4*e.theme.spacing.unit}px; + margin: 0; + } + + & > div > pre { + padding: 0; + } +`,Lg=(ca.div` + background-color: #e4e7eb; +`,ca.ul` + display: inline; + list-style: none; + padding: 0; + + li { + display: inherit; + + &:after { + content: ','; + } + &:last-child:after { + content: none; + } + } +`,ca.code` + font-size: ${e=>e.theme.typography.code.fontSize}; + font-family: ${e=>e.theme.typography.code.fontFamily}; + margin: 0 3px; + padding: 0.2em; + display: inline-block; + line-height: 1; + + &:after { + content: ','; + font-weight: normal; + } + + &:last-child:after { + content: none; + } +`),Mg=ca.span` + &:after { + content: ' and '; + font-weight: normal; + } + + &:last-child:after { + content: none; + } + + ${Cf}; +`,Fg=ca.span` + ${e=>!e.expanded&&"white-space: nowrap;"} + &:after { + content: ' or '; + ${e=>e.expanded&&"content: ' or \\a';"} + white-space: pre; + } + + &:last-child:after, + &:only-child:after { + content: none; + } + + ${Cf}; +`,zg=ca.div` + flex: 1 1 auto; + cursor: pointer; +`,Ug=ca.div` + width: ${e=>e.theme.schema.defaultDetailsWidth}; + text-overflow: ellipsis; + border-radius: 4px; + overflow: hidden; + ${e=>e.expanded&&`background: ${e.theme.colors.gray[100]};\n padding: 8px 9.6px;\n margin: 20px 0;\n width: 100%;\n `}; + ${ma("small")` + margin-top: 10px; + `} +`,Vg=ca(Iu)` + display: inline-block; + margin: 0; +`,Bg=ca.div` + width: 100%; + display: flex; + margin: 1em 0; + flex-direction: ${e=>e.expanded?"column":"row"}; + ${ma("small")` + flex-direction: column; + `} +`,qg=ca.div` + margin: 0.5em 0; +`,Wg=ca.div` + border-bottom: 1px solid ${({theme:e})=>e.colors.border.dark}; + margin-bottom: 1.5em; + padding-bottom: 0.7em; + + h5 { + line-height: 1em; + margin: 0 0 0.6em; + font-size: ${({theme:e})=>e.typography.fontSize}; + } + + .redoc-markdown p:first-child { + display: inline; + } +`;function Hg({children:e,height:t}){const r=n.createRef(),[o,i]=n.useState(!1),[a,s]=n.useState(!1);return n.useEffect((()=>{r.current&&r.current.clientHeight+20{i(!o)}},o?"See less":"See more")))}const Yg=ca.div` + overflow-y: hidden; +`,Kg=ca.div` + text-align: center; + line-height: 1.5em; + ${({dimmed:e})=>e&&"background-image: linear-gradient(to bottom, transparent,rgb(255 255 255));\n position: relative;\n top: -0.5em;\n padding-top: 0.5em;\n background-position-y: -1em;\n "} +`,Gg=ca.a` + cursor: pointer; +`,Qg=n.memo((function(e){const{type:t,flow:r,RequiredScopes:o}=e,i=Object.keys((null==r?void 0:r.scopes)||{});return n.createElement(n.Fragment,null,n.createElement(qg,null,n.createElement("b",null,"Flow type: "),n.createElement("code",null,t," ")),("implicit"===t||"authorizationCode"===t)&&n.createElement(qg,null,n.createElement("strong",null," Authorization URL: "),n.createElement("code",null,n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:r.authorizationUrl},r.authorizationUrl))),("password"===t||"clientCredentials"===t||"authorizationCode"===t)&&n.createElement(qg,null,n.createElement("b",null," Token URL: "),n.createElement("code",null,r.tokenUrl)),r.refreshUrl&&n.createElement(qg,null,n.createElement("strong",null," Refresh URL: "),r.refreshUrl),!!i.length&&n.createElement(n.Fragment,null,o||null,n.createElement(qg,null,n.createElement("b",null," Scopes: ")),n.createElement(Hg,{height:"4em"},n.createElement("ul",null,i.map((e=>n.createElement("li",{key:e},n.createElement("code",null,e)," -"," ",n.createElement(Ff,{className:"redoc-markdown",inline:!0,source:r.scopes[e]||""}))))))))}));function Xg(e){const{RequiredScopes:t,scheme:r}=e;return n.createElement(Rf,null,r.apiKey?n.createElement(n.Fragment,null,n.createElement(qg,null,n.createElement("b",null,(o=r.apiKey.in||"").charAt(0).toUpperCase()+o.slice(1)," parameter name: "),n.createElement("code",null,r.apiKey.name)),t):r.http?n.createElement(n.Fragment,null,n.createElement(qg,null,n.createElement("b",null,"HTTP Authorization Scheme: "),n.createElement("code",null,r.http.scheme)),n.createElement(qg,null,"bearer"===r.http.scheme&&r.http.bearerFormat&&n.createElement(n.Fragment,null,n.createElement("b",null,"Bearer format: "),n.createElement("code",null,r.http.bearerFormat))),t):r.openId?n.createElement(n.Fragment,null,n.createElement(qg,null,n.createElement("b",null,"Connect URL: "),n.createElement("code",null,n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:r.openId.connectUrl},r.openId.connectUrl))),t):r.flows?Object.keys(r.flows).map((e=>n.createElement(Qg,{key:e,type:e,RequiredScopes:t,flow:r.flows[e]}))):null);var o}const Jg={oauth2:"OAuth2",apiKey:"API Key",http:"HTTP",openIdConnect:"OpenID Connect"};class Zg extends n.PureComponent{render(){return this.props.securitySchemes.schemes.map((e=>n.createElement(Su,{id:e.sectionId,key:e.id},n.createElement(Au,null,n.createElement(Ou,null,n.createElement(ju,null,n.createElement(Uu,{to:e.sectionId}),e.displayName),n.createElement(Ff,{source:e.description||""}),n.createElement(Wg,null,n.createElement(qg,null,n.createElement("b",null,"Security Scheme Type: "),n.createElement("span",null,Jg[e.type]||e.type)),n.createElement(Xg,{scheme:e})))))))}}class ey{constructor(e,t,n={},r=!0){var o,i,a,s;this.marker=new Ls,this.disposer=null,this.rawOptions=n,this.options=new xo(n,ty),this.scroll=new xf(this.options),yf.updateOnHistory(Ns.currentId,this.scroll),this.spec=new Xd(e,t,this.options),this.menu=new yf(this.spec,this.scroll,Ns),this.options.disableSearch||(this.search=new kf,r&&this.search.indexItems(this.menu.items),this.disposer=(o=this.menu,i="activeItemIdx",w(a=e=>{this.updateMarkOnMenu(e.newValue)})?function(e,t,n,r){return qn(e,t).observe_(n,r)}(o,i,a,s):function(e,t,n){return qn(e).observe_(t,n)}(o,i,a)))}static fromJS(e){const t=new ey(e.spec.data,e.spec.url,e.options,!1);return t.menu.activeItemIdx=e.menu.activeItemIdx||0,t.menu.activate(t.menu.flatItems[t.menu.activeItemIdx]),t.options.disableSearch||t.search.load(e.searchIndex),t}onDidMount(){this.menu.updateOnHistory(),this.updateMarkOnMenu(this.menu.activeItemIdx)}dispose(){this.scroll.dispose(),this.menu.dispose(),this.search&&this.search.dispose(),null!=this.disposer&&this.disposer()}toJS(){return e=this,t=null,n=function*(){return{menu:{activeItemIdx:this.menu.activeItemIdx},spec:{url:this.spec.parser.specUrl,data:this.spec.parser.spec},searchIndex:this.search?yield this.search.toJS():void 0,options:this.rawOptions}},new Promise(((r,o)=>{var i=e=>{try{s(n.next(e))}catch(e){o(e)}},a=e=>{try{s(n.throw(e))}catch(e){o(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(i,a);s((n=n.apply(e,t)).next())}));var e,t,n}updateMarkOnMenu(e){const t=Math.max(0,e),n=Math.min(this.menu.flatItems.length,t+5),r=[];for(let e=t;e({securitySchemes:e.spec.securitySchemes})},"security-definitions":{component:Zg,propsSelector:e=>({securitySchemes:e.spec.securitySchemes})},SchemaDefinition:{component:Ng,propsSelector:e=>({parser:e.spec.parser,options:e.options})}}},ny=ga(Ru)` + margin-top: 0; + margin-bottom: 0.5em; + + ${ya("ApiHeader")}; +`,ry=ga.a` + border: 1px solid ${e=>e.theme.colors.primary.main}; + color: ${e=>e.theme.colors.primary.main}; + font-weight: normal; + margin-left: 0.5em; + padding: 4px 8px 4px; + display: inline-block; + text-decoration: none; + cursor: pointer; + + ${ya("DownloadButton")}; +`,oy=ga.span` + &::before { + content: '|'; + display: inline-block; + opacity: 0.5; + width: ${15}px; + text-align: center; + } + + &:last-child::after { + display: none; + } +`,iy=ga.div` + overflow: hidden; +`,ay=ga.div` + display: flex; + flex-wrap: wrap; + // hide separator on new lines: idea from https://stackoverflow.com/a/31732902/1749888 + margin-left: -${15}px; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;let sy=class extends n.Component{constructor(){super(...arguments),this.handleDownloadClick=e=>{e.target.href||(e.target.href=this.props.store.spec.info.downloadLink)}}render(){const{store:e}=this.props,{info:t,externalDocs:r}=e.spec,o=e.options.hideDownloadButton,i=t.downloadFileName,a=t.downloadLink,s=t.license&&n.createElement(oy,null,"License:"," ",t.license.identifier?t.license.identifier:n.createElement("a",{href:t.license.url},t.license.name))||null,l=t.contact&&t.contact.url&&n.createElement(oy,null,"URL: ",n.createElement("a",{href:t.contact.url},t.contact.url))||null,c=t.contact&&t.contact.email&&n.createElement(oy,null,t.contact.name||"E-mail",":"," ",n.createElement("a",{href:"mailto:"+t.contact.email},t.contact.email))||null,u=t.termsOfService&&n.createElement(oy,null,n.createElement("a",{href:t.termsOfService},"Terms of Service"))||null,p=t.version&&n.createElement("span",null,"(",t.version,")")||null;return n.createElement(Su,null,n.createElement(Au,null,n.createElement(Ou,{className:"api-info"},n.createElement(ny,null,t.title," ",p),!o&&n.createElement("p",null,lo("downloadSpecification"),":",n.createElement(ry,{download:i||!0,target:"_blank",href:a,onClick:this.handleDownloadClick},lo("download"))),n.createElement(Rf,null,(t.license||t.contact||t.termsOfService)&&n.createElement(iy,null,n.createElement(ay,null,c," ",l," ",s," ",u))||null),n.createElement(Ff,{source:e.spec.info.summary,"data-role":"redoc-summary"}),n.createElement(Ff,{source:e.spec.info.description,"data-role":"redoc-description"}),r&&n.createElement(xm,{externalDocs:r}))))}};sy=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],sy);const ly=ga.img` + max-height: ${e=>e.theme.logo.maxHeight}; + max-width: ${e=>e.theme.logo.maxWidth}; + padding: ${e=>e.theme.logo.gutter}; + width: 100%; + display: block; +`,cy=ga.div` + text-align: center; +`,uy=ga.a` + display: inline-block; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;let py=class extends n.Component{render(){const{info:e}=this.props,t=e["x-logo"];if(!t||!t.url)return null;const r=t.href||e.contact&&e.contact.url,o=t.altText?t.altText:"logo",i=n.createElement(ly,{src:t.url,alt:o});return n.createElement(cy,{style:{backgroundColor:t.backgroundColor}},r?(a=r,e=>n.createElement(uy,{href:a},e))(i):i);var a}};py=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],py);var dy=Object.defineProperty,fy=Object.getOwnPropertySymbols,hy=Object.prototype.hasOwnProperty,my=Object.prototype.propertyIsEnumerable,gy=(e,t,n)=>t in e?dy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yy=(e,t)=>{for(var n in t||(t={}))hy.call(t,n)&&gy(e,n,t[n]);if(fy)for(var n of fy(t))my.call(t,n)&&gy(e,n,t[n]);return e};class vy extends n.Component{render(){return n.createElement(Pa,null,(e=>n.createElement(Lu,null,(t=>this.renderWithOptionsAndStore(e,t)))))}renderWithOptionsAndStore(e,t){const{source:r,htmlWrap:o=(e=>e)}=this.props;if(!t)throw new Error("When using components in markdown, store prop must be provided");const i=new jl(e,this.props.parentId).renderMdWithComponents(r);return i.length?i.map(((e,r)=>{if("string"==typeof e)return n.cloneElement(o(n.createElement(Mf,{html:e,inline:!1,compact:!1})),{key:r});const i=e.component;return n.createElement(i,yy({key:r},yy(yy({},e.props),e.propsSelector(t))))})):null}}var by=r(4184),wy=r.n(by);const xy=ga.span.attrs((e=>({className:`operation-type ${e.type}`})))` + width: 9ex; + display: inline-block; + height: ${e=>e.theme.typography.code.fontSize}; + line-height: ${e=>e.theme.typography.code.fontSize}; + background-color: #333; + border-radius: 3px; + background-repeat: no-repeat; + background-position: 6px 4px; + font-size: 7px; + font-family: Verdana, sans-serif; // web-safe + color: white; + text-transform: uppercase; + text-align: center; + font-weight: bold; + vertical-align: middle; + margin-right: 6px; + margin-top: 2px; + + &.get { + background-color: ${e=>e.theme.colors.http.get}; + } + + &.post { + background-color: ${e=>e.theme.colors.http.post}; + } + + &.put { + background-color: ${e=>e.theme.colors.http.put}; + } + + &.options { + background-color: ${e=>e.theme.colors.http.options}; + } + + &.patch { + background-color: ${e=>e.theme.colors.http.patch}; + } + + &.delete { + background-color: ${e=>e.theme.colors.http.delete}; + } + + &.basic { + background-color: ${e=>e.theme.colors.http.basic}; + } + + &.link { + background-color: ${e=>e.theme.colors.http.link}; + } + + &.head { + background-color: ${e=>e.theme.colors.http.head}; + } + + &.hook { + background-color: ${e=>e.theme.colors.primary.main}; + } +`;function ky(e,{theme:t},n){return e>1?t.sidebar.level1Items[n]:1===e?t.sidebar.groupItems[n]:""}const _y=ga.ul` + margin: 0; + padding: 0; + + &:first-child { + padding-bottom: 32px; + } + + & & { + font-size: 0.929em; + } + + ${e=>e.expanded?"":"display: none;"}; +`,Oy=ga.li` + list-style: none inside none; + overflow: hidden; + text-overflow: ellipsis; + padding: 0; + ${e=>0===e.depth?"margin-top: 15px":""}; +`,Sy={0:pa` + opacity: 0.7; + text-transform: ${({theme:e})=>e.sidebar.groupItems.textTransform}; + font-size: 0.8em; + padding-bottom: 0; + cursor: default; + `,1:pa` + font-size: 0.929em; + text-transform: ${({theme:e})=>e.sidebar.level1Items.textTransform}; + `},Ey=ga.label.attrs((e=>({role:"menuitem",className:wy()("-depth"+e.depth,{active:e.active})})))` + cursor: pointer; + color: ${e=>e.active?ky(e.depth,e,"activeTextColor"):e.theme.sidebar.textColor}; + margin: 0; + padding: 12.5px ${e=>4*e.theme.spacing.unit}px; + ${({depth:e,type:t,theme:n})=>"section"===t&&e>1&&"padding-left: "+8*n.spacing.unit+"px;"||""} + display: flex; + justify-content: space-between; + font-family: ${e=>e.theme.typography.headings.fontFamily}; + ${e=>Sy[e.depth]}; + background-color: ${e=>e.active?ky(e.depth,e,"activeBackgroundColor"):e.theme.sidebar.backgroundColor}; + + ${e=>e.deprecated&&Wu||""}; + + &:hover { + color: ${e=>ky(e.depth,e,"activeTextColor")}; + background-color: ${e=>ky(e.depth,e,"activeBackgroundColor")}; + } + + ${Bu} { + height: ${({theme:e})=>e.sidebar.arrow.size}; + width: ${({theme:e})=>e.sidebar.arrow.size}; + polygon { + fill: ${({theme:e})=>e.sidebar.arrow.color}; + } + } +`,Py=ga.span` + display: inline-block; + vertical-align: middle; + width: ${e=>e.width?e.width:"auto"}; + overflow: hidden; + text-overflow: ellipsis; +`,Ay=ga.div` + ${({theme:e})=>pa` + font-size: 0.8em; + margin-top: ${2*e.spacing.unit}px; + text-align: center; + position: fixed; + width: ${e.sidebar.width}; + bottom: 0; + background: ${e.sidebar.backgroundColor}; + + a, + a:visited, + a:hover { + color: ${e.sidebar.textColor} !important; + padding: ${e.spacing.unit}px 0; + border-top: 1px solid ${Rr(.1,e.sidebar.backgroundColor)}; + text-decoration: none; + display: flex; + align-items: center; + justify-content: center; + } + `}; + img { + width: 15px; + margin-right: 5px; + } + + ${ma("small")` + width: 100%; + `}; +`,$y=ga.button` + border: 0; + width: 100%; + text-align: left; + & > * { + vertical-align: middle; + } + + ${Bu} { + polygon { + fill: ${({theme:e})=>Rr(e.colors.tonalOffset,e.colors.gray[100])}; + } + } +`,Cy=ga.span` + text-decoration: ${e=>e.deprecated?"line-through":"none"}; + margin-right: 8px; +`,Ry=ga(xy)` + margin: 0 5px 0 0; +`,jy=ga((e=>{const{name:t,opened:r,className:o,onClick:i,httpVerb:a,deprecated:s}=e;return n.createElement($y,{className:o,onClick:i||void 0},n.createElement(Ry,{type:a},ms(a)),n.createElement(Bu,{size:"1.5em",direction:r?"down":"right",float:"left"}),n.createElement(Cy,{deprecated:s},t),s?n.createElement(qu,{type:"warning"}," ",lo("deprecated")," "):null)}))` + padding: 10px; + border-radius: 2px; + margin-bottom: 4px; + line-height: 1.5em; + background-color: ${({theme:e})=>e.colors.gray[100]}; + cursor: pointer; + outline-color: ${({theme:e})=>Rr(e.colors.tonalOffset,e.colors.gray[100])}; +`,Ty=ga.div` + padding: 10px 25px; + background-color: ${({theme:e})=>e.colors.gray[50]}; + margin-bottom: 5px; + margin-top: 5px; +`;class Iy extends n.PureComponent{constructor(){super(...arguments),this.selectElement=()=>{Yf.selectElement(this.child)}}render(){const{children:e}=this.props;return n.createElement("div",{ref:e=>this.child=e,onClick:this.selectElement,onFocus:this.selectElement,tabIndex:0,role:"button"},e)}}const Ny=ga.div` + cursor: pointer; + position: relative; + margin-bottom: 5px; +`,Dy=ga.span` + font-family: ${e=>e.theme.typography.code.fontFamily}; + margin-left: 10px; + flex: 1; + overflow-x: hidden; + text-overflow: ellipsis; +`,Ly=ga.button` + outline: 0; + color: inherit; + width: 100%; + text-align: left; + cursor: pointer; + padding: 10px 30px 10px ${e=>e.inverted?"10px":"20px"}; + border-radius: ${e=>e.inverted?"0":"4px 4px 0 0"}; + background-color: ${e=>e.inverted?"transparent":e.theme.codeBlock.backgroundColor}; + display: flex; + white-space: nowrap; + align-items: center; + border: ${e=>e.inverted?"0":"1px solid transparent"}; + border-bottom: ${e=>e.inverted?"1px solid #ccc":"0"}; + transition: border-color 0.25s ease; + + ${e=>e.expanded&&!e.inverted&&`border-color: ${e.theme.colors.border.dark};`||""} + + .${Dy} { + color: ${e=>e.inverted?e.theme.colors.text.primary:"#ffffff"}; + } + &:focus { + box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.45), 0 2px 0 rgba(128, 128, 128, 0.25); + } +`,My=ga.span.attrs((e=>({className:`http-verb ${e.type}`})))` + font-size: ${e=>e.compact?"0.8em":"0.929em"}; + line-height: ${e=>e.compact?"18px":"20px"}; + background-color: ${e=>e.theme.colors.http[e.type]||"#999999"}; + color: #ffffff; + padding: ${e=>e.compact?"2px 8px":"3px 10px"}; + text-transform: uppercase; + font-family: ${e=>e.theme.typography.headings.fontFamily}; + margin: 0; +`,Fy=ga.div` + position: absolute; + width: 100%; + z-index: 100; + background: ${e=>e.theme.rightPanel.servers.overlay.backgroundColor}; + color: ${e=>e.theme.rightPanel.servers.overlay.textColor}; + box-sizing: border-box; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.33); + overflow: hidden; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + transition: all 0.25s ease; + visibility: hidden; + ${e=>e.expanded?"visibility: visible;":"transform: translateY(-50%) scaleY(0);"} +`,zy=ga.div` + padding: 10px; +`,Uy=ga.div` + padding: 5px; + border: 1px solid #ccc; + background: ${e=>e.theme.rightPanel.servers.url.backgroundColor}; + word-break: break-all; + color: ${e=>e.theme.colors.primary.main}; + > span { + color: ${e=>e.theme.colors.text.primary}; + } +`;class Vy extends n.Component{constructor(e){super(e),this.toggle=()=>{this.setState({expanded:!this.state.expanded})},this.state={expanded:!1}}render(){const{operation:e,inverted:t,hideHostname:r}=this.props,{expanded:o}=this.state;return n.createElement(Sa.Consumer,null,(i=>n.createElement(Ny,null,n.createElement(Ly,{onClick:this.toggle,expanded:o,inverted:t},n.createElement(My,{type:e.httpVerb,compact:this.props.compact},e.httpVerb),n.createElement(Dy,null,e.path),n.createElement(Bu,{float:"right",color:t?"black":"white",size:"20px",direction:o?"up":"down",style:{marginRight:"-25px"}})),n.createElement(Fy,{expanded:o,"aria-hidden":!o},e.servers.map((t=>{const o=i.expandDefaultServerVariables?function(e,t={}){return e.replace(/(?:{)([\w-.]+)(?:})/g,((e,n)=>t[n]&&t[n].default||e))}(t.url,t.variables):t.url,a=function(e){try{return ro(e).pathname}catch(t){return e}}(o);return n.createElement(zy,{key:o},n.createElement(Ff,{source:t.description||"",compact:!0}),n.createElement(Iy,null,n.createElement(Uy,null,n.createElement("span",null,r||i.hideHostname?"/"===a?"":a:o),e.path)))}))))))}}class By extends n.PureComponent{render(){const{place:e,parameters:t}=this.props;return t&&t.length?n.createElement("div",{key:e},n.createElement(Iu,null,e," Parameters"),n.createElement(Zu,null,n.createElement("tbody",null,Gr(t,((e,t)=>n.createElement(Hm,{key:e.name,isLast:t,field:e,showExamples:!0})))))):null}}Object.defineProperty,Object.getOwnPropertyDescriptor;let qy=class extends n.Component{constructor(){super(...arguments),this.switchMedia=({idx:e})=>{this.props.content&&void 0!==e&&this.props.content.activate(e)}}render(){const{content:e}=this.props;if(!e||!e.mediaTypes||!e.mediaTypes.length)return null;const t=e.activeMimeIdx,r=e.mediaTypes.map(((e,t)=>({value:e.name,idx:t}))),o=({children:e})=>this.props.withLabel?n.createElement(dh,null,n.createElement(ph,null,"Content type"),e):e;return n.createElement(n.Fragment,null,n.createElement(o,null,this.props.renderDropdown({value:r[t].value,options:r,onChange:this.switchMedia,ariaLabel:"Content type"})),this.props.children(e.active))}};qy=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],qy);var Wy=Object.defineProperty,Hy=Object.getOwnPropertySymbols,Yy=Object.prototype.hasOwnProperty,Ky=Object.prototype.propertyIsEnumerable,Gy=(e,t,n)=>t in e?Wy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Qy=["path","query","cookie","header"];class Xy extends n.PureComponent{orderParams(e){const t={};return e.forEach((e=>{var n,r,o;o=e,(n=t)[r=e.in]||(n[r]=[]),n[r].push(o)})),t}render(){const{body:e,parameters:t=[]}=this.props;if(void 0===e&&void 0===t)return null;const r=this.orderParams(t),o=t.length>0?Qy:[],i=e&&e.content,a=e&&e.description;return n.createElement(n.Fragment,null,o.map((e=>n.createElement(By,{key:e,place:e,parameters:r[e]}))),i&&n.createElement(Zy,{content:i,description:a}))}}function Jy(e){return n.createElement(Iu,{key:"header"},"Request Body schema: ",n.createElement(Af,((e,t)=>{for(var n in t||(t={}))Yy.call(t,n)&&Gy(e,n,t[n]);if(Hy)for(var n of Hy(t))Ky.call(t,n)&&Gy(e,n,t[n]);return e})({},e)))}function Zy(e){const{content:t,description:r}=e,{isRequestType:o}=t;return n.createElement(qy,{content:t,renderDropdown:Jy},(({schema:e})=>n.createElement(n.Fragment,null,void 0!==r&&n.createElement(Ff,{source:r}),"object"===(null==e?void 0:e.type)&&n.createElement(Am,{constraints:(null==e?void 0:e.constraints)||[]}),n.createElement(Pg,{skipReadOnly:o,skipWriteOnly:!o,key:"schema",schema:e}))))}const ev=ga(n.memo((function({title:e,type:t,empty:r,code:o,opened:i,className:a,onClick:s}){return n.createElement("button",{className:a,onClick:!r&&s||void 0,"aria-expanded":i,disabled:r},!r&&n.createElement(Bu,{size:"1.5em",color:t,direction:i?"down":"right",float:"left"}),n.createElement(rv,null,o," "),n.createElement(Ff,{compact:!0,inline:!0,source:e}))})))` + display: block; + border: 0; + width: 100%; + text-align: left; + padding: 10px; + border-radius: 2px; + margin-bottom: 4px; + line-height: 1.5em; + cursor: pointer; + + color: ${e=>e.theme.colors.responses[e.type].color}; + background-color: ${e=>e.theme.colors.responses[e.type].backgroundColor}; + &:focus { + outline: auto ${e=>e.theme.colors.responses[e.type].color}; + } + ${e=>e.empty?'\ncursor: default;\n&::before {\n content: "—";\n font-weight: bold;\n width: 1.5em;\n text-align: center;\n display: inline-block;\n vertical-align: top;\n}\n&:focus {\n outline: 0;\n}\n':""}; +`,tv=ga.div` + padding: 10px; +`,nv=ga(Iu.withComponent("caption"))` + text-align: left; + margin-top: 1em; + caption-side: top; +`,rv=ga.strong` + vertical-align: top; +`;class ov extends n.PureComponent{render(){const{headers:e}=this.props;return void 0===e||0===e.length?null:n.createElement(Zu,null,n.createElement(nv,null," Response Headers "),n.createElement("tbody",null,Gr(e,((e,t)=>n.createElement(Hm,{isLast:t,key:e.name,field:e,showExamples:!0})))))}}var iv=Object.defineProperty,av=Object.getOwnPropertySymbols,sv=Object.prototype.hasOwnProperty,lv=Object.prototype.propertyIsEnumerable,cv=(e,t,n)=>t in e?iv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;class uv extends n.PureComponent{constructor(){super(...arguments),this.renderDropdown=e=>n.createElement(Iu,{key:"header"},"Response Schema: ",n.createElement(Af,((e,t)=>{for(var n in t||(t={}))sv.call(t,n)&&cv(e,n,t[n]);if(av)for(var n of av(t))lv.call(t,n)&&cv(e,n,t[n]);return e})({},e)))}render(){const{description:e,extensions:t,headers:r,content:o}=this.props.response;return n.createElement(n.Fragment,null,e&&n.createElement(Ff,{source:e}),n.createElement(Sm,{extensions:t}),n.createElement(ov,{headers:r}),n.createElement(qy,{content:o,renderDropdown:this.renderDropdown},(({schema:e})=>n.createElement(n.Fragment,null,"object"===(null==e?void 0:e.type)&&n.createElement(Am,{constraints:(null==e?void 0:e.constraints)||[]}),n.createElement(Pg,{skipWriteOnly:!0,key:"schema",schema:e})))))}}const pv=im((({response:e})=>{const{extensions:t,headers:r,type:o,summary:i,description:a,code:s,expanded:l,content:c}=e,u=n.useMemo((()=>void 0===c?[]:c.mediaTypes.filter((e=>void 0!==e.schema))),[c]),p=n.useMemo((()=>!(t&&0!==Object.keys(t).length||0!==r.length||0!==u.length||a)),[t,r,u,a]);return n.createElement("div",null,n.createElement(ev,{onClick:()=>e.toggle(),type:o,empty:p,title:i||"",code:s,opened:l}),l&&!p&&n.createElement(tv,null,n.createElement(uv,{response:e})))})),dv=ga.h3` + font-size: 1.3em; + padding: 0.2em 0; + margin: 3em 0 1.1em; + color: ${({theme:e})=>e.colors.text.primary}; + font-weight: normal; +`;class fv extends n.PureComponent{render(){const{responses:e,isCallback:t}=this.props;return e&&0!==e.length?n.createElement("div",null,n.createElement(dv,null,lo(t?"callbackResponses":"responses")),e.map((e=>n.createElement(pv,{key:e.code,response:e})))):null}}function hv(e){const{security:t,showSecuritySchemeType:r,expanded:o}=e,i=t.schemes.length>1;return 0===t.schemes.length?n.createElement(Fg,{expanded:o},"None"):n.createElement(Fg,{expanded:o},i&&"(",t.schemes.map((e=>n.createElement(Mg,{key:e.id},r&&`${Jg[e.type]||e.type}: `,n.createElement("i",null,e.displayName),o&&e.scopes.length?[" (",e.scopes.map((e=>n.createElement(Lg,{key:e},e))),") "]:null))),i&&") ")}const mv=({scopes:e})=>e.length?n.createElement("div",null,n.createElement("b",null,"Required scopes: "),e.map(((e,t)=>n.createElement(n.Fragment,{key:t},n.createElement("code",null,e)," ")))):null;function gv(e){const t=(0,n.useContext)(Nu),r=null==t?void 0:t.options.showSecuritySchemeType,[o,i]=(0,n.useState)(!1),{securities:a}=e;if(!(null==a?void 0:a.length)||(null==t?void 0:t.options.hideSecuritySection))return null;const s=null==t?void 0:t.spec.securitySchemes.schemes.filter((({id:e})=>a.find((t=>t.schemes.find((t=>t.id===e))))));return n.createElement(n.Fragment,null,n.createElement(Bg,{expanded:o},n.createElement(zg,{onClick:()=>i(!o)},n.createElement(Vg,null,"Authorizations:"),n.createElement(Bu,{size:"1.3em",direction:o?"down":"right"})),n.createElement(Ug,{expanded:o},a.map(((e,t)=>n.createElement(hv,{key:t,expanded:o,showSecuritySchemeType:r,security:e}))))),o&&(null==s?void 0:s.length)&&s.map(((e,t)=>n.createElement(Wg,{key:t},n.createElement("h5",null,n.createElement(yv,null)," ",Jg[e.type]||e.type,": ",e.id),n.createElement(Ff,{source:e.description||""}),n.createElement(Xg,{key:e.id,scheme:e,RequiredScopes:n.createElement(mv,{scopes:vv(e.id,a)})})))))}const yv=()=>n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"11",height:"11"},n.createElement("path",{fill:"currentColor",d:"M18 10V6A6 6 0 0 0 6 6v4H3v14h18V10h-3zM8 6c0-2.206 1.794-4 4-4s4 1.794 4 4v4H8V6zm11 16H5V12h14v10z"}));function vv(e,t){const n=[];let r=t.length;for(;r--;){const o=t[r];let i=o.schemes.length;for(;i--;){const t=o.schemes[i];t.id===e&&Array.isArray(t.scopes)&&n.push(...t.scopes)}}return Array.from(new Set(n))}Object.defineProperty,Object.getOwnPropertyDescriptor;let bv=class extends n.Component{render(){const{operation:e}=this.props,{description:t,externalDocs:r}=e,o=!(!t&&!r);return n.createElement(Ty,null,o&&n.createElement(wv,null,void 0!==t&&n.createElement(Ff,{source:t}),r&&n.createElement(xm,{externalDocs:r})),n.createElement(Vy,{operation:this.props.operation,inverted:!0,compact:!0}),n.createElement(Sm,{extensions:e.extensions}),n.createElement(gv,{securities:e.security}),n.createElement(Xy,{parameters:e.parameters,body:e.requestBody}),n.createElement(fv,{responses:e.responses,isCallback:e.isCallback}))}};bv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],bv);const wv=ga.div` + margin-bottom: ${({theme:e})=>3*e.spacing.unit}px; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;let xv=class extends n.Component{constructor(){super(...arguments),this.toggle=()=>{this.props.callbackOperation.toggle()}}render(){const{name:e,expanded:t,httpVerb:r,deprecated:o}=this.props.callbackOperation;return n.createElement(n.Fragment,null,n.createElement(jy,{onClick:this.toggle,name:e,opened:t,httpVerb:r,deprecated:o}),t&&n.createElement(bv,{operation:this.props.callbackOperation}))}};xv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],xv);class kv extends n.PureComponent{render(){const{callbacks:e}=this.props;return e&&0!==e.length?n.createElement("div",null,n.createElement(_v,null," Callbacks "),e.map((e=>e.operations.map(((t,r)=>n.createElement(xv,{key:`${e.name}_${r}`,callbackOperation:t})))))):null}}const _v=ga.h3` + font-size: 1.3em; + padding: 0.2em 0; + margin: 3em 0 1.1em; + color: ${({theme:e})=>e.colors.text.primary}; + font-weight: normal; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;let Ov=class extends n.Component{constructor(e){super(e),this.switchItem=({idx:e})=>{this.props.items&&void 0!==e&&this.setState({activeItemIdx:e})},this.state={activeItemIdx:0}}render(){const{items:e}=this.props;if(!e||!e.length)return null;const t=({children:e})=>this.props.label?n.createElement(dh,null,n.createElement(ph,null,this.props.label),e):e;return n.createElement(n.Fragment,null,n.createElement(t,null,this.props.renderDropdown({value:this.props.options[this.state.activeItemIdx].value,options:this.props.options,onChange:this.switchItem,ariaLabel:this.props.label||"Callback"})),this.props.children(e[this.state.activeItemIdx]))}};Ov=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Ov);var Sv=Object.defineProperty,Ev=Object.defineProperties,Pv=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),Av=Object.getOwnPropertySymbols,$v=Object.prototype.hasOwnProperty,Cv=Object.prototype.propertyIsEnumerable,Rv=(e,t,n)=>t in e?Sv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let jv=class extends n.Component{constructor(){super(...arguments),this.renderDropdown=e=>{return n.createElement(Af,(t=((e,t)=>{for(var n in t||(t={}))$v.call(t,n)&&Rv(e,n,t[n]);if(Av)for(var n of Av(t))Cv.call(t,n)&&Rv(e,n,t[n]);return e})({Label:uh,Dropdown:fh},e),Ev(t,Pv({variant:"dark"}))));var t}}render(){const e=this.props.content;return void 0===e?null:n.createElement(qy,{content:e,renderDropdown:this.renderDropdown,withLabel:!0},(e=>n.createElement(mh,{key:"samples",mediaType:e,renderDropdown:this.renderDropdown})))}};jv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],jv);class Tv extends n.Component{render(){const e=this.props.callback.codeSamples.find((e=>xu(e)));return e?n.createElement(Iv,null,n.createElement(jv,{content:e.requestBodyContent})):null}}const Iv=ga.div` + margin-top: 15px; +`;var Nv=Object.defineProperty,Dv=Object.defineProperties,Lv=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),Mv=Object.getOwnPropertySymbols,Fv=Object.prototype.hasOwnProperty,zv=Object.prototype.propertyIsEnumerable,Uv=(e,t,n)=>t in e?Nv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Vv=class extends n.Component{constructor(){super(...arguments),this.renderDropdown=e=>{return n.createElement(Af,(t=((e,t)=>{for(var n in t||(t={}))Fv.call(t,n)&&Uv(e,n,t[n]);if(Mv)for(var n of Mv(t))zv.call(t,n)&&Uv(e,n,t[n]);return e})({Label:uh,Dropdown:fh},e),Dv(t,Lv({variant:"dark"}))));var t}}render(){const{callbacks:e}=this.props;if(!e||0===e.length)return null;const t=e.map((e=>e.operations.map((e=>e)))).reduce(((e,t)=>e.concat(t)),[]);if(!t.some((e=>e.codeSamples.length>0)))return null;const r=t.map(((e,t)=>({value:`${e.httpVerb.toUpperCase()}: ${e.name}`,idx:t})));return n.createElement("div",null,n.createElement(Tu,null," Callback payload samples "),n.createElement(Bv,null,n.createElement(Ov,{items:t,renderDropdown:this.renderDropdown,label:"Callback",options:r},(e=>n.createElement(Tv,{key:"callbackPayloadSample",callback:e,renderDropdown:this.renderDropdown})))))}};Vv.contextType=Sa,Vv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Vv);const Bv=ga.div` + background: ${({theme:e})=>e.codeBlock.backgroundColor}; + padding: ${e=>4*e.theme.spacing.unit}px; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;let qv=class extends n.Component{render(){const{operation:e}=this.props,t=e.codeSamples,r=t.length>0,o=1===t.length&&this.context.hideSingleRequestSampleTab;return r&&n.createElement("div",null,n.createElement(Tu,null," ",lo("requestSamples")," "),n.createElement(Dp,{defaultIndex:0},n.createElement(Ap,{hidden:o},t.map((e=>n.createElement(jp,{key:e.lang+"_"+(e.label||"")},void 0!==e.label?e.label:e.lang)))),t.map((e=>n.createElement(Np,{key:e.lang+"_"+(e.label||"")},xu(e)?n.createElement("div",null,n.createElement(jv,{content:e.requestBodyContent})):n.createElement(ah,{lang:e.lang,source:e.source}))))))||null}};qv.contextType=Sa,qv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],qv);Object.defineProperty,Object.getOwnPropertyDescriptor;let Wv=class extends n.Component{render(){const{operation:e}=this.props,t=e.responses.filter((e=>e.content&&e.content.hasSample));return t.length>0&&n.createElement("div",null,n.createElement(Tu,null," ",lo("responseSamples")," "),n.createElement(Dp,{defaultIndex:0},n.createElement(Ap,null,t.map((e=>n.createElement(jp,{className:"tab-"+e.type,key:e.code},e.code)))),t.map((e=>n.createElement(Np,{key:e.code},n.createElement("div",null,n.createElement(jv,{content:e.content})))))))||null}};Wv=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Wv);var Hv=Object.defineProperty,Yv=Object.defineProperties,Kv=Object.getOwnPropertyDescriptors,Gv=Object.getOwnPropertySymbols,Qv=Object.prototype.hasOwnProperty,Xv=Object.prototype.propertyIsEnumerable,Jv=(e,t,n)=>t in e?Hv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Zv=ga.div` + margin-bottom: ${({theme:e})=>6*e.spacing.unit}px; +`,eb=im((({operation:e})=>{const{name:t,description:r,deprecated:o,externalDocs:i,isWebhook:a,httpVerb:s}=e,l=!(!r&&!i),{showWebhookVerb:c}=n.useContext(Sa);return n.createElement(Sa.Consumer,null,(u=>n.createElement(Au,((e,t)=>Yv(e,Kv(t)))(((e,t)=>{for(var n in t||(t={}))Qv.call(t,n)&&Jv(e,n,t[n]);if(Gv)for(var n of Gv(t))Xv.call(t,n)&&Jv(e,n,t[n]);return e})({},{[gf]:e.operationHash}),{id:e.operationHash}),n.createElement(Ou,null,n.createElement(ju,null,n.createElement(Uu,{to:e.id}),t," ",o&&n.createElement(qu,{type:"warning"}," Deprecated "),a&&n.createElement(qu,{type:"primary"}," ","Webhook ",c&&s&&"| "+s.toUpperCase())),u.pathInMiddlePanel&&!a&&n.createElement(Vy,{operation:e,inverted:!0}),l&&n.createElement(Zv,null,void 0!==r&&n.createElement(Ff,{source:r}),i&&n.createElement(xm,{externalDocs:i})),n.createElement(Sm,{extensions:e.extensions}),n.createElement(gv,{securities:e.security}),n.createElement(Xy,{parameters:e.parameters,body:e.requestBody}),n.createElement(fv,{responses:e.responses}),n.createElement(kv,{callbacks:e.callbacks})),n.createElement(Pu,null,!u.pathInMiddlePanel&&!a&&n.createElement(Vy,{operation:e}),n.createElement(qv,{operation:e}),n.createElement(Wv,{operation:e}),n.createElement(Vv,{callbacks:e.callbacks})))))}));var tb=Object.defineProperty,nb=Object.getOwnPropertyDescriptor,rb=Object.getOwnPropertySymbols,ob=Object.prototype.hasOwnProperty,ib=Object.prototype.propertyIsEnumerable,ab=(e,t,n)=>t in e?tb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sb=(e,t,n,r)=>{for(var o,i=r>1?void 0:r?nb(t,n):t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&tb(t,n,i),i};let lb=class extends n.Component{render(){const e=this.props.items;return 0===e.length?null:e.map((e=>n.createElement(cb,{key:e.id,item:e})))}};lb=sb([im],lb);let cb=class extends n.Component{render(){const e=this.props.item;let t;const{type:r}=e;switch(r){case"group":t=null;break;case"tag":case"section":default:t=n.createElement(pb,((e,t)=>{for(var n in t||(t={}))ob.call(t,n)&&ab(e,n,t[n]);if(rb)for(var n of rb(t))ib.call(t,n)&&ab(e,n,t[n]);return e})({},this.props));break;case"operation":t=n.createElement(db,{item:e})}return n.createElement(n.Fragment,null,t&&n.createElement(Su,{id:e.id,underlined:"operation"===e.type},t),e.items&&n.createElement(lb,{items:e.items}))}};cb=sb([im],cb);const ub=e=>n.createElement(Ou,{compact:!0},e);let pb=class extends n.Component{render(){const{name:e,description:t,externalDocs:r,level:o}=this.props.item,i=2===o?ju:Ru;return n.createElement(n.Fragment,null,n.createElement(Au,null,n.createElement(Ou,{compact:!1},n.createElement(i,null,n.createElement(Uu,{to:this.props.item.id}),e))),n.createElement(vy,{parentId:this.props.item.id,source:t||"",htmlWrap:ub}),r&&n.createElement(Au,null,n.createElement(Ou,null,n.createElement(xm,{externalDocs:r}))))}};pb=sb([im],pb);let db=class extends n.Component{render(){return n.createElement(eb,{operation:this.props.item})}};db=sb([im],db);var fb=Object.defineProperty,hb=Object.defineProperties,mb=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),gb=Object.getOwnPropertySymbols,yb=Object.prototype.hasOwnProperty,vb=Object.prototype.propertyIsEnumerable,bb=(e,t,n)=>t in e?fb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let wb=class extends n.Component{constructor(){super(...arguments),this.ref=n.createRef(),this.activate=e=>{this.props.onActivate(this.props.item),e.stopPropagation()}}componentDidMount(){this.scrollIntoViewIfActive()}componentDidUpdate(){this.scrollIntoViewIfActive()}scrollIntoViewIfActive(){this.props.item.active&&this.ref.current&&Hr(this.ref.current)}render(){const{item:e,withoutChildren:t}=this.props;return n.createElement(Oy,{onClick:this.activate,depth:e.depth,"data-item-id":e.id},"operation"===e.type?n.createElement(xb,((e,t)=>hb(e,mb(t)))(((e,t)=>{for(var n in t||(t={}))yb.call(t,n)&&bb(e,n,t[n]);if(gb)for(var n of gb(t))vb.call(t,n)&&bb(e,n,t[n]);return e})({},this.props),{item:e})):n.createElement(Ey,{depth:e.depth,active:e.active,type:e.type,ref:this.ref},n.createElement(Py,{title:e.sidebarLabel},e.sidebarLabel,this.props.children),e.depth>0&&e.items.length>0&&n.createElement(Bu,{float:"right",direction:e.expanded?"down":"right"})||null),!t&&e.items&&e.items.length>0&&n.createElement(Pb,{expanded:e.expanded,items:e.items,onActivate:this.props.onActivate}))}};wb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],wb);const xb=im((e=>{const{item:t}=e,r=n.createRef(),{showWebhookVerb:o}=n.useContext(Sa);return n.useEffect((()=>{e.item.active&&r.current&&Hr(r.current)}),[e.item.active,r]),n.createElement(Ey,{depth:t.depth,active:t.active,deprecated:t.deprecated,ref:r},t.isWebhook?n.createElement(xy,{type:"hook"},o?t.httpVerb:lo("webhook")):n.createElement(xy,{type:t.httpVerb},ms(t.httpVerb)),n.createElement(Py,{width:"calc(100% - 38px)"},t.sidebarLabel,e.children))}));var kb=Object.defineProperty,_b=(Object.getOwnPropertyDescriptor,Object.getOwnPropertySymbols),Ob=Object.prototype.hasOwnProperty,Sb=Object.prototype.propertyIsEnumerable,Eb=(e,t,n)=>t in e?kb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;let Pb=class extends n.Component{render(){const{items:e,root:t,className:r}=this.props,o=null==this.props.expanded||this.props.expanded;return n.createElement(_y,((e,t)=>{for(var n in t||(t={}))Ob.call(t,n)&&Eb(e,n,t[n]);if(_b)for(var n of _b(t))Sb.call(t,n)&&Eb(e,n,t[n]);return e})({className:r,style:this.props.style,expanded:o},t?{role:"menu"}:{}),e.map(((e,t)=>n.createElement(wb,{key:t,item:e,onActivate:this.props.onActivate}))))}};function Ab(){const[e,t]=(0,n.useState)(!1);return(0,n.useEffect)((()=>{t(!0)}),[]),e?n.createElement("img",{alt:"redocly logo",onError:()=>t(!1),src:"https://cdn.redoc.ly/redoc/logo-mini.svg"}):null}Pb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Pb);Object.defineProperty,Object.getOwnPropertyDescriptor;let $b=class extends n.Component{constructor(){super(...arguments),this.activate=e=>{if(e&&e.active&&this.context.menuToggle)return e.expanded?e.collapse():e.expand();this.props.menu.activateAndScroll(e,!0),setTimeout((()=>{this._updateScroll&&this._updateScroll()}))},this.saveScrollUpdate=e=>{this._updateScroll=e}}render(){const e=this.props.menu;return n.createElement(Pd,{updateFn:this.saveScrollUpdate,className:this.props.className,options:{wheelPropagation:!1}},n.createElement(Pb,{items:e.items,onActivate:this.activate,root:!0}),n.createElement(Ay,null,n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://redocly.com/redoc/"},n.createElement(Ab,null),"API docs by Redocly")))}};$b.contextType=Sa,$b=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],$b);const Cb=({open:e})=>{const t=e?8:-4;return n.createElement(jb,null,n.createElement(Rb,{size:15,style:{transform:`translate(2px, ${t}px) rotate(180deg)`,transition:"transform 0.2s ease"}}),n.createElement(Rb,{size:15,style:{transform:`translate(2px, ${0-t}px)`,transition:"transform 0.2s ease"}}))},Rb=({size:e=10,className:t="",style:r})=>n.createElement("svg",{className:t,style:r||{},viewBox:"0 0 926.23699 573.74994",version:"1.1",x:"0px",y:"0px",width:e,height:e},n.createElement("g",{transform:"translate(904.92214,-879.1482)"},n.createElement("path",{d:"\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n ",fill:"currentColor"}))),jb=ga.div` + user-select: none; + width: 20px; + height: 20px; + align-self: center; + display: flex; + flex-direction: column; + color: ${e=>e.theme.colors.primary.main}; +`;Object.defineProperty,Object.getOwnPropertyDescriptor;let Tb;qr&&(Tb=r(5114));const Ib=Tb&&Tb(),Nb=ga.div` + width: ${e=>e.theme.sidebar.width}; + background-color: ${e=>e.theme.sidebar.backgroundColor}; + overflow: hidden; + display: flex; + flex-direction: column; + + backface-visibility: hidden; + /* contain: strict; TODO: breaks layout since Chrome 80*/ + + height: 100vh; + position: sticky; + position: -webkit-sticky; + top: 0; + + ${ma("small")` + position: fixed; + z-index: 20; + width: 100%; + background: ${({theme:e})=>e.sidebar.backgroundColor}; + display: ${e=>e.open?"flex":"none"}; + `}; + + @media print { + display: none; + } +`,Db=ga.div` + outline: none; + user-select: none; + background-color: ${({theme:e})=>e.fab.backgroundColor}; + color: ${e=>e.theme.colors.primary.main}; + display: none; + cursor: pointer; + position: fixed; + right: 20px; + z-index: 100; + border-radius: 50%; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.3); + ${ma("small")` + display: flex; + `}; + + bottom: 44px; + + width: 60px; + height: 60px; + padding: 0 20px; + svg { + color: ${({theme:e})=>e.fab.color}; + } + + @media print { + display: none; + } +`;let Lb=class extends n.Component{constructor(){super(...arguments),this.state={offsetTop:"0px"},this.toggleNavMenu=()=>{this.props.menu.toggleSidebar()}}componentDidMount(){Ib&&Ib.add(this.stickyElement),this.setState({offsetTop:this.getScrollYOffset(this.context)})}componentWillUnmount(){Ib&&Ib.remove(this.stickyElement)}getScrollYOffset(e){let t;return t=void 0!==this.props.scrollYOffset?xo.normalizeScrollYOffset(this.props.scrollYOffset)():e.scrollYOffset(),t+"px"}render(){const e=this.props.menu.sideBarOpened,t=this.state.offsetTop;return n.createElement(n.Fragment,null,n.createElement(Nb,{open:e,className:this.props.className,style:{top:t,height:`calc(100vh - ${t})`},ref:e=>{this.stickyElement=e}},this.props.children),!this.context.hideFab&&n.createElement(Db,{onClick:this.toggleNavMenu},n.createElement(Cb,{open:e})))}};Lb.contextType=Sa,Lb=((e,t,n,r)=>{for(var o,i=t,a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(i)||i);return i})([im],Lb);const Mb=ga.div` + ${({theme:e})=>`\n font-family: ${e.typography.fontFamily};\n font-size: ${e.typography.fontSize};\n font-weight: ${e.typography.fontWeightRegular};\n line-height: ${e.typography.lineHeight};\n color: ${e.colors.text.primary};\n display: flex;\n position: relative;\n text-align: left;\n\n -webkit-font-smoothing: ${e.typography.smoothing};\n font-smoothing: ${e.typography.smoothing};\n ${e.typography.optimizeSpeed?"text-rendering: optimizeSpeed !important":""};\n\n tap-highlight-color: rgba(0, 0, 0, 0);\n text-size-adjust: 100%;\n\n * {\n box-sizing: border-box;\n -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n }\n`}; +`,Fb=ga.div` + z-index: 1; + position: relative; + overflow: hidden; + width: calc(100% - ${e=>e.theme.sidebar.width}); + ${ma("small",!0)` + width: 100%; + `}; + + contain: layout; +`,zb=ga.div` + background: ${({theme:e})=>e.rightPanel.backgroundColor}; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: ${({theme:e})=>{if(e.rightPanel.width.endsWith("%")){const t=parseInt(e.rightPanel.width,10);return`calc((100% - ${e.sidebar.width}) * ${t/100})`}return e.rightPanel.width}}; + ${ma("medium",!0)` + display: none; + `}; +`,Ub=ga.div` + padding: 5px 0; +`,Vb=ga.input.attrs((()=>({className:"search-input"})))` + width: calc(100% - ${e=>8*e.theme.spacing.unit}px); + box-sizing: border-box; + margin: 0 ${e=>4*e.theme.spacing.unit}px; + padding: 5px ${e=>2*e.theme.spacing.unit}px 5px + ${e=>4*e.theme.spacing.unit}px; + border: 0; + border-bottom: 1px solid + ${({theme:e})=>(Ir(e.sidebar.backgroundColor)>.5?Rr:Dr)(.1,e.sidebar.backgroundColor)}; + font-family: ${({theme:e})=>e.typography.fontFamily}; + font-weight: bold; + font-size: 13px; + color: ${e=>e.theme.sidebar.textColor}; + background-color: transparent; + outline: none; +`,Bb=ga((e=>n.createElement("svg",{className:e.className,version:"1.1",viewBox:"0 0 1000 1000",x:"0px",xmlns:"http://www.w3.org/2000/svg",y:"0px"},n.createElement("path",{d:"M968.2,849.4L667.3,549c83.9-136.5,66.7-317.4-51.7-435.6C477.1-25,252.5-25,113.9,113.4c-138.5,138.3-138.5,362.6,0,501C219.2,730.1,413.2,743,547.6,666.5l301.9,301.4c43.6,43.6,76.9,14.9,104.2-12.4C981,928.3,1011.8,893,968.2,849.4z M524.5,522c-88.9,88.7-233,88.7-321.8,0c-88.9-88.7-88.9-232.6,0-321.3c88.9-88.7,233-88.7,321.8,0C613.4,289.4,613.4,433.3,524.5,522z"})))).attrs({className:"search-icon"})` + position: absolute; + left: ${e=>4*e.theme.spacing.unit}px; + height: 1.8em; + width: 0.9em; + + path { + fill: ${e=>e.theme.sidebar.textColor}; + } +`,qb=ga.div` + padding: ${e=>e.theme.spacing.unit}px 0; + background-color: ${({theme:e})=>Rr(.05,e.sidebar.backgroundColor)}}; + color: ${e=>e.theme.sidebar.textColor}; + min-height: 150px; + max-height: 250px; + border-top: ${({theme:e})=>Rr(.1,e.sidebar.backgroundColor)}}; + border-bottom: ${({theme:e})=>Rr(.1,e.sidebar.backgroundColor)}}; + margin-top: 10px; + line-height: 1.4; + font-size: 0.9em; + + li { + background-color: inherit; + } + + ${Ey} { + padding-top: 6px; + padding-bottom: 6px; + + &:hover, + &.active { + background-color: ${({theme:e})=>Rr(.1,e.sidebar.backgroundColor)}; + } + + > svg { + display: none; + } + } +`,Wb=ga.i` + position: absolute; + display: inline-block; + width: ${e=>2*e.theme.spacing.unit}px; + text-align: center; + right: ${e=>4*e.theme.spacing.unit}px; + line-height: 2em; + vertical-align: middle; + margin-right: 2px; + cursor: pointer; + font-style: normal; + color: '#666'; +`;var Hb=Object.defineProperty,Yb=Object.getOwnPropertyDescriptor;class Kb extends n.PureComponent{constructor(e){super(e),this.activeItemRef=null,this.clear=()=>{this.setState({results:[],noResults:!1,term:"",activeItemIdx:-1}),this.props.marker.unmark()},this.handleKeyDown=e=>{if(27===e.keyCode&&this.clear(),40===e.keyCode&&(this.setState({activeItemIdx:Math.min(this.state.activeItemIdx+1,this.state.results.length-1)}),e.preventDefault()),38===e.keyCode&&(this.setState({activeItemIdx:Math.max(0,this.state.activeItemIdx-1)}),e.preventDefault()),13===e.keyCode){const e=this.state.results[this.state.activeItemIdx];if(e){const t=this.props.getItemById(e.meta);t&&this.props.onActivate(t)}}},this.search=e=>{const{minCharacterLengthToInitSearch:t}=this.context,n=e.target.value;n.lengththis.searchCallback(this.state.term)))},this.state={results:[],noResults:!1,term:"",activeItemIdx:-1}}clearResults(e){this.setState({results:[],noResults:!1,term:e}),this.props.marker.unmark()}setResults(e,t){this.setState({results:e,noResults:0===e.length}),this.props.marker.mark(t)}searchCallback(e){this.props.search.search(e).then((t=>{this.setResults(t,e)}))}render(){const{activeItemIdx:e}=this.state,t=this.state.results.filter((e=>this.props.getItemById(e.meta))).map((e=>({item:this.props.getItemById(e.meta),score:e.score}))).sort(((e,t)=>t.score-e.score));return n.createElement(Ub,{role:"search"},this.state.term&&n.createElement(Wb,{onClick:this.clear},"×"),n.createElement(Bb,null),n.createElement(Vb,{value:this.state.term,onKeyDown:this.handleKeyDown,placeholder:"Search...","aria-label":"Search",type:"text",onChange:this.search}),t.length>0&&n.createElement(Pd,{options:{wheelPropagation:!1}},n.createElement(qb,{"data-role":"search:results"},t.map(((t,r)=>n.createElement(wb,{item:Object.create(t.item,{active:{value:r===e}}),onActivate:this.props.onActivate,withoutChildren:!0,key:t.item.id,"data-role":"search:result"}))))),this.state.term&&this.state.noResults?n.createElement(qb,{"data-role":"search:results"},lo("noResultsFound")):null)}}Kb.contextType=Sa,((e,t,n,r)=>{for(var o,i=Yb(t,n),a=e.length-1;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);i&&Hb(t,n,i)})([Ra.bind,(0,Ra.debounce)(400)],Kb.prototype,"searchCallback");class Gb extends n.Component{componentDidMount(){this.props.store.onDidMount()}componentWillUnmount(){this.props.store.dispose()}render(){const{store:{spec:e,menu:t,options:r,search:o,marker:i}}=this.props,a=this.props.store;return n.createElement(ha,{theme:r.theme},n.createElement(Du,{value:a},n.createElement(Ea,{value:r},n.createElement(Mb,{className:"redoc-wrap"},n.createElement(Lb,{menu:t,className:"menu-content"},n.createElement(py,{info:e.info}),!r.disableSearch&&n.createElement(Kb,{search:o,marker:i,getItemById:t.getItemById,onActivate:t.activateAndScroll})||null,n.createElement($b,{menu:t})),n.createElement(Fb,{className:"api-content"},n.createElement(sy,{store:a}),n.createElement(lb,{items:t.items})),n.createElement(zb,null)))))}}Gb.propTypes={store:Oa.instanceOf(ey).isRequired};const Qb=function(e){const{spec:t,specUrl:o,options:i={},onLoaded:a}=e,s=bo(i.hideLoading,!1),l=new xo(i);if(void 0!==l.nonce)try{r.nc=l.nonce}catch(e){}return n.createElement(ba,null,n.createElement(Mu,{spec:t,specUrl:o,options:i,onLoaded:a},(({loading:e,store:t})=>e?s?null:n.createElement(_a,{color:l.theme.colors.primary.main}):n.createElement(Gb,{store:t}))))};var Xb=Object.defineProperty,Jb=Object.getOwnPropertySymbols,Zb=Object.prototype.hasOwnProperty,ew=Object.prototype.propertyIsEnumerable,tw=(e,t,n)=>t in e?Xb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nw=(e,t)=>{for(var n in t||(t={}))Zb.call(t,n)&&tw(e,n,t[n]);if(Jb)for(var n of Jb(t))ew.call(t,n)&&tw(e,n,t[n]);return e};Nt({useProxies:"ifavailable"});const rw="2.0.0-rc.77",ow="580f883";function iw(e){const t=function(e){const t={},n=e.attributes;for(let e=0;et.toUpperCase())),o=t[e];n[r]="theme"===e?JSON.parse(o):o}return n}function aw(e,t={},r=Wr("redoc"),o){if(null===r)throw new Error('"element" argument is not provided and tag is not found on the page');let a,s;"string"==typeof e?a=e:"object"==typeof e&&(s=e),(0,i.render)(n.createElement(Qb,{spec:s,onLoaded:o,specUrl:a,options:nw(nw({},t),iw(r))},["Loading..."]),r)}function sw(e=Wr("redoc")){e&&(0,i.unmountComponentAtNode)(e)}function lw(e,t=Wr("redoc"),r){const o=ey.fromJS(e);setTimeout((()=>{(0,i.hydrate)(n.createElement(Gb,{store:o}),t,r)}),0)}!function(){const e=Wr("redoc");if(!e)return;const t=e.getAttribute("spec-url");t&&aw(t,{},e)}()}(),o}()})); +//# sourceMappingURL=redoc.standalone.js.map -

    ceod - OpenAPI 3.0 (1.0.0)

    Download OpenAPI specification:Download

    This is an OpenAPI specification of ceod, the CSC Electronic Office daemon. + " fill="currentColor">

    ceod - OpenAPI 3.0 (1.0.0)

    Download OpenAPI specification:Download

    This is an OpenAPI specification of ceod, the CSC Electronic Office daemon. Visit the git repository for more details.

    -

    Streaming Responses

    Many endpoints return a "streaming response", which consists of a series of JSON +

    Streaming Responses

    Many endpoints return a "streaming response", which consists of a series of JSON objects, one per line (the mimetype is text/plain). For example:

    {"status": "in progress", "operation": "replace_login_shell"}
     {"status": "in progress", "operation": "replace_forwarding_addresses"}
    -{"status": "completed", "result": "OK"}

    Whenever an operation is completed, a corresponding JSON object will be streamed +{"status": "completed", "result": "OK"} + +

    Whenever an operation is completed, a corresponding JSON object will be streamed from the server to the client. This allows the client to track the server's progress in real time.

    -

    Authentication

    GSSAPIAuth

    ceod uses SPNEGO-based authentication over HTTP, as specified in RFC 4559. -It is basically a base64-encoded Kerberos ticket wrapped in a HTTP header. For endpoints which make modifications -to LDAP, the Delegate flag must also be set.

    -

    For example, with cURL:

    -
    kinit
    -curl --negotiate -u : --service-name ceod --delegation always -X POST -d '{"terms":["w2022"]}' https://phosphoric-acid.csclub.uwaterloo.ca/api/members/ctdalek/renew
    -
    Security Scheme Type HTTP
    HTTP Authorization Scheme negotiate

    members

    Operations on members and club reps

    -

    Create a new user

    Creates a new member or club rep. If terms is specified, a member is created; if non_member_terms is specified, a club rep is created.

    -
    Authorizations:
    Request Body schema: application/json
    uid
    string (UID)

    Username

    -
    cn
    string (UserCN)

    Full name

    -
    sn
    string (UserSN)

    Last name

    -
    given_name
    string (UserGivenName)

    First name

    -
    program
    string (Program)

    Academic program

    -
    terms
    Array of strings (Terms)

    Terms for which this user was a member

    -
    non_member_terms
    Array of strings (NonMemberTerms)

    Terms for which this user was a club rep

    -
    forwarding_addresses
    Array of strings <email> (ForwardingAddresses)

    Forwarding addresses in ~/.forward

    -

    Responses

    Request samples

    Content type
    application/json
    {
    • "uid": "ctdalek",
    • "cn": "Calum Dalek",
    • "sn": "Dalek",
    • "given_name": "Calum",
    • "program": "MAT/Mathematics Computer Science",
    • "terms": [
      ],
    • "non_member_terms": [
      ],
    • "forwarding_addresses": [
      ]
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "add_user_to_ldap"}
    +

    members

    Operations on members and club reps

    +

    Create a new user

    Creates a new member or club rep. If terms is specified, a member is created; if non_member_terms is specified, a club rep is created.

    +
    Authorizations:
    GSSAPIAuth
    Request Body schema: application/json
    uid
    string (UID)

    Username

    +
    cn
    string (UserCN)

    Full name

    +
    sn
    string (UserSN)

    Last name

    +
    given_name
    string (UserGivenName)

    First name

    +
    program
    string (Program)

    Academic program

    +
    terms
    Array of strings (Terms)

    Terms for which this user was a member

    +
    non_member_terms
    Array of strings (NonMemberTerms)

    Terms for which this user was a club rep

    +
    forwarding_addresses
    Array of strings <email> (ForwardingAddresses)

    Forwarding addresses in ~/.forward

    +

    Responses

    Request samples

    Content type
    application/json
    {
    • "uid": "ctdalek",
    • "cn": "Calum Dalek",
    • "sn": "Dalek",
    • "given_name": "Calum",
    • "program": "MAT/Mathematics Computer Science",
    • "terms": [
      ],
    • "non_member_terms": [
      ],
    • "forwarding_addresses": [
      ]
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "add_user_to_ldap"}
     {"status": "in progress", "operation": "add_group_to_ldap"}
     {"status": "in progress", "operation": "add_user_to_kerberos"}
     {"status": "in progress", "operation": "create_home_dir"}
    @@ -483,148 +2271,148 @@ curl --negotiate {"status": "in progress", "operation": "subscribe_to_mailing_list"}
     {"status": "in progress", "operation": "announce_new_user"}
     {"status": "completed", "result": {"cn": "Calum Dalek", "given_name": "Calum", "sn": "Dalek", "uid": "ctdalek", "uid_number": 20001, "gid_number": 20001, "login_shell": "/bin/bash", "home_directory": "/users/ctdalek", "is_club": false, "program": "MAT/Mathematics Computer Science", "terms": ["f2021"], "forwarding_addresses": ["ctdalek@uwaterloo.ca"], "password": "Wlw1wOTofERTEBlXWzR6/MZL"}}
    -

    Get information about a user

    Returns information about a member or club rep. The forwarding_addresses field will only be present if the client is an authenticated syscom member.

    -
    Authorizations:
    path Parameters
    username
    required
    string

    username of the user to return

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "cn": "Calum Dalek",
    • "sn": "Dalek",
    • "given_name": "Calum",
    • "uid": "ctdalek",
    • "uid_number": 20001,
    • "gid_number": 20001,
    • "home_directory": "/users/ctdalek",
    • "is_club": false,
    • "login_shell": "/bin/bash",
    • "program": "MAT/Mathematics Computer Science",
    • "positions": [
      ],
    • "terms": [
      ],
    • "non_member_terms": [
      ],
    • "forwarding_addresses": [
      ]
    }

    Modify a user

    Replace the login shell and/or forwarding addresses of a user

    -
    Authorizations:
    path Parameters
    username
    required
    string

    username of the user to modify

    -
    Request Body schema: application/json
    login_shell
    string (LoginShell)

    Login shell

    -
    forwarding_addresses
    Array of strings <email> (ForwardingAddresses)

    Forwarding addresses in ~/.forward

    -

    Responses

    Request samples

    Content type
    application/json
    {
    • "login_shell": "/bin/bash",
    • "forwarding_addresses": [
      ]
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "replace_login_shell"}
    +

    Get information about a user

    Returns information about a member or club rep. The forwarding_addresses field will only be present if the client is an authenticated syscom member.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    username of the user to return

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "cn": "Calum Dalek",
    • "sn": "Dalek",
    • "given_name": "Calum",
    • "uid": "ctdalek",
    • "uid_number": 20001,
    • "gid_number": 20001,
    • "home_directory": "/users/ctdalek",
    • "is_club": false,
    • "login_shell": "/bin/bash",
    • "program": "MAT/Mathematics Computer Science",
    • "positions": [
      ],
    • "terms": [
      ],
    • "non_member_terms": [
      ],
    • "forwarding_addresses": [
      ],
    • "groups": [
      ]
    }

    Modify a user

    Replace the login shell and/or forwarding addresses of a user

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    username of the user to modify

    +
    Request Body schema: application/json
    login_shell
    string (LoginShell)

    Login shell

    +
    forwarding_addresses
    Array of strings <email> (ForwardingAddresses)

    Forwarding addresses in ~/.forward

    +

    Responses

    Request samples

    Content type
    application/json
    {
    • "login_shell": "/bin/bash",
    • "forwarding_addresses": [
      ]
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "replace_login_shell"}
     {"status": "in progress", "operation": "replace_forwarding_addresses"}
     {"status": "completed", "result": "OK"}
    -

    Renew a user

    Add member or non-member terms to a user

    -
    Authorizations:
    path Parameters
    username
    required
    string

    username of the user to renew

    -
    Request Body schema: application/json
    One of
    terms
    Array of strings (Term)

    Terms for which this user will be a member

    -

    Responses

    Request samples

    Content type
    application/json
    {
    • "terms": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "terms_added": [
      ]
    }

    Reset a user's password

    Sets a user's password to a randomly generated string, and returns it. The user will be prompted to set a new password on their next login.

    -
    Authorizations:
    path Parameters
    username
    required
    string

    username of the user whose password will be reset

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "EPGbJwLl1pmiWz8Wvu/MSs+v"
    }

    groups

    Operations on groups and clubs

    -

    Create a new group

    Creates a new Unix group for a club. A new Unix user account with the same name will also be created. A sudo role will be created allowing members of the group to become this user.

    -
    Authorizations:
    Request Body schema: application/json
    cn
    string (GroupCN)

    the name of the group

    -
    description
    string (GroupDescription)

    a description of the group

    -

    Responses

    Request samples

    Content type
    application/json
    {
    • "cn": "uwclub1",
    • "description": "Club One"
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "add_user_to_ldap"}
    +

    Renew a user

    Add member or non-member terms to a user

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    username of the user to renew

    +
    Request Body schema: application/json
    One of
    terms
    Array of strings (Term)

    Terms for which this user will be a member

    +

    Responses

    Request samples

    Content type
    application/json
    {
    • "terms": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "terms_added": [
      ]
    }

    Reset a user's password

    Sets a user's password to a randomly generated string, and returns it. The user will be prompted to set a new password on their next login.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    username of the user whose password will be reset

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "EPGbJwLl1pmiWz8Wvu/MSs+v"
    }

    groups

    Operations on groups and clubs

    +

    Create a new group

    Creates a new Unix group for a club. A new Unix user account with the same name will also be created. A sudo role will be created allowing members of the group to become this user.

    +
    Authorizations:
    GSSAPIAuth
    Request Body schema: application/json
    cn
    string (GroupCN)

    the name of the group

    +
    description
    string (GroupDescription)

    a description of the group

    +

    Responses

    Request samples

    Content type
    application/json
    {
    • "cn": "uwclub1",
    • "description": "Club One"
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "add_user_to_ldap"}
     {"status": "in progress", "operation": "add_group_to_ldap"}
     {"status": "in progress", "operation": "add_sudo_role"}
     {"status": "in progress", "operation": "create_home_dir"}
     {"status": "completed", "result": {"cn": "uwclub1", "gid_number": 30001, "description": "Club One", "members": []}}
    -

    Get information about a group

    Returns information about a group

    -
    path Parameters
    group_name
    required
    string

    name of the group to return

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "cn": "uwclub1",
    • "description": "Club One",
    • "gid_number": 20001,
    • "members": [
      ]
    }

    Add a member to a group

    Adds a member to a group. The member will also be added to any auxiliary groups specified in ceod.conf. The member may also be added to auxiliary mailing lists.

    -
    Authorizations:
    path Parameters
    group_name
    required
    string

    name of the group to which the member will be added

    -
    username
    required
    string

    username of the member who will be added to the group

    -
    query Parameters
    subscribe_to_lists
    boolean
    Default: true

    whether the member should be subscribed to auxiliary mailing lists

    -

    Responses

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "add_user_to_group"}
    +

    Get information about a group

    Returns information about a group

    +
    path Parameters
    group_name
    required
    string

    name of the group to return

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "cn": "uwclub1",
    • "description": "Club One",
    • "gid_number": 20001,
    • "members": [
      ]
    }

    Add a member to a group

    Adds a member to a group. The member will also be added to any auxiliary groups specified in ceod.conf. The member may also be added to auxiliary mailing lists.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    group_name
    required
    string

    name of the group to which the member will be added

    +
    username
    required
    string

    username of the member who will be added to the group

    +
    query Parameters
    subscribe_to_lists
    boolean
    Default: true

    whether the member should be subscribed to auxiliary mailing lists

    +

    Responses

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "add_user_to_group"}
     {"status": "in progress", "operation": "add_user_to_auxiliary_groups"}
     {"status": "in progress", "operation": "subscribe_user_to_auxiliary_mailing_lists"}
     {"status": "completed", "result": {"added_to_groups": ["group2","group3"], "subscribed_to_lists": ["list1","list2"]}}
    -

    Remove a member from a group

    Removes a member from a group. The member will also be removed from any auxiliary groups specified in ceod.conf. The member may also be removed from auxiliary mailing lists.

    -
    Authorizations:
    path Parameters
    group_name
    required
    string

    name of the group from which the member will be removed

    -
    username
    required
    string

    username of the member who will be removed from the group

    -
    query Parameters
    unsubscribe_from_lists
    boolean
    Default: true

    whether the member should be unsubscribed from auxiliary mailing lists

    -

    Responses

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "remove_user_from_group"}
    +

    Remove a member from a group

    Removes a member from a group. The member will also be removed from any auxiliary groups specified in ceod.conf. The member may also be removed from auxiliary mailing lists.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    group_name
    required
    string

    name of the group from which the member will be removed

    +
    username
    required
    string

    username of the member who will be removed from the group

    +
    query Parameters
    unsubscribe_from_lists
    boolean
    Default: true

    whether the member should be unsubscribed from auxiliary mailing lists

    +

    Responses

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "remove_user_from_group"}
     {"status": "in progress", "operation": "remove_user_from_auxiliary_groups"}
     {"status": "in progress", "operation": "unsubscribe_user_from_auxiliary_mailing_lists"}
     {"status": "completed", "result": {"removed_from_groups": ["group2","group3"], "unsubscribed_from_lists": ["list1","list2"]}}
    -

    mailman

    Operations on mailing list subscriptions

    -

    subscribe a user to a mailing list

    Subscribes a user to a mailing list.

    -
    Authorizations:
    path Parameters
    mailing_list
    required
    string

    The name of the list to which the user will be subscribed. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to the list name.

    -
    username
    required
    string

    The user who will be subscribed to the list. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to he username; otherwise, the given email address will be subscribed.

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "result": "OK"
    }

    unsubscribe a user from a mailing list

    Unsubscribes a user from a mailing list.

    -
    Authorizations:
    path Parameters
    mailing_list
    required
    string

    The name of the list from which the user will be unsubscribed. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to the list name.

    -
    username
    required
    string

    The user who will be unsubscribed from the list. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to he username; otherwise, the given email address will be unsubscribed.

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "result": "OK"
    }

    uwldap

    Operations related to the UW LDAP directory

    -

    get UWLDAP information for a user

    Returns information about a user from the UW LDAP directory.

    -
    path Parameters
    username
    required
    string

    username of the user to return

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "uid": "ctdalek",
    • "cn": "Calum Dalek",
    • "given_name": "Calum",
    • "sn": "Dalek",
    • "mail_local_addresses": [
      ]
    }

    update CSC programs from UWLDAP

    Sync the 'program' attribute in the CSC LDAP with the UW LDAP. +

    mailman

    Operations on mailing list subscriptions

    +

    subscribe a user to a mailing list

    Subscribes a user to a mailing list.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    mailing_list
    required
    string

    The name of the list to which the user will be subscribed. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to the list name.

    +
    username
    required
    string

    The user who will be subscribed to the list. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to he username; otherwise, the given email address will be subscribed.

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "result": "OK"
    }

    unsubscribe a user from a mailing list

    Unsubscribes a user from a mailing list.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    mailing_list
    required
    string

    The name of the list from which the user will be unsubscribed. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to the list name.

    +
    username
    required
    string

    The user who will be unsubscribed from the list. If there is no '@' symbol, then '@csclub.uwaterloo.ca' will be appended to he username; otherwise, the given email address will be unsubscribed.

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "result": "OK"
    }

    uwldap

    Operations related to the UW LDAP directory

    +

    get UWLDAP information for a user

    Returns information about a user from the UW LDAP directory.

    +
    path Parameters
    username
    required
    string

    username of the user to return

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "uid": "ctdalek",
    • "cn": "Calum Dalek",
    • "given_name": "Calum",
    • "sn": "Dalek",
    • "mail_local_addresses": [
      ]
    }

    update CSC programs from UWLDAP

    Sync the 'program' attribute in the CSC LDAP with the UW LDAP. The JSON request body may be omitted.

    -
    Authorizations:
    query Parameters
    dry_run
    boolean
    Default: false

    Whether to perform a dry run or not. If true, a list of members who would have been changed is returned.

    -
    Request Body schema: application/json
    members
    Array of strings (UID)
    Default: []

    If non-empty, only these members will be synced with UWLDAP

    -

    Responses

    Request samples

    Content type
    application/json
    {
    • "members": [ ]
    }

    Response samples

    Content type
    application/json
    [
    • [
      ]
    ]

    database

    Operations related to databases

    -

    Create a MySQL database

    Create a MySQL database for the user

    -
    Authorizations:
    path Parameters
    username
    required
    string

    name of the user to create MySQL database for

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "7fUi5rQr/lcpeEj4M86ZBbwM"
    }

    Reset MySQL database password

    Reset the password for a user's MySQL database

    -
    Authorizations:
    path Parameters
    username
    required
    string

    name of the user to reset the MySQL database password for

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "kM90d3G/eofIUxr9O3CQHTlP"
    }

    Create a PostgreSQL database

    Create a PostgreSQL database for the user

    -
    Authorizations:
    path Parameters
    username
    required
    string

    name of the user to create PostgreSQL database for

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "iHxd62DC7Qt1HyYRj18P6ujS"
    }

    Reset PostgreSQL database password

    Reset the password for a user's PostgreSQL database

    -
    Authorizations:
    path Parameters
    username
    required
    string

    name of the user to reset the PostgreSQL database password for

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "CdPHT49iYAWzzKuhKTt2dNeu"
    }

    cloud

    Operations related to the CSC Cloud

    -

    Activate a cloud account

    Activate a cloud account for the calling user

    -
    Authorizations:

    Responses

    Response samples

    Content type
    application/json
    {
    • "status": "OK"
    }

    Purge expired accounts

    Delete the cloud accounts of expired members.

    +
    Authorizations:
    GSSAPIAuth
    query Parameters
    dry_run
    boolean
    Default: false

    Whether to perform a dry run or not. If true, a list of members who would have been changed is returned.

    +
    Request Body schema: application/json
    members
    Array of strings (UID)
    Default: []

    If non-empty, only these members will be synced with UWLDAP

    +

    Responses

    Request samples

    Content type
    application/json
    {
    • "members": [ ]
    }

    Response samples

    Content type
    application/json
    [
    • [
      ]
    ]

    database

    Operations related to databases

    +

    Create a MySQL database

    Create a MySQL database for the user

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    name of the user to create MySQL database for

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "7fUi5rQr/lcpeEj4M86ZBbwM"
    }

    Reset MySQL database password

    Reset the password for a user's MySQL database

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    name of the user to reset the MySQL database password for

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "kM90d3G/eofIUxr9O3CQHTlP"
    }

    Create a PostgreSQL database

    Create a PostgreSQL database for the user

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    name of the user to create PostgreSQL database for

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "iHxd62DC7Qt1HyYRj18P6ujS"
    }

    Reset PostgreSQL database password

    Reset the password for a user's PostgreSQL database

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    username
    required
    string

    name of the user to reset the PostgreSQL database password for

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "password": "CdPHT49iYAWzzKuhKTt2dNeu"
    }

    cloud

    Operations related to the CSC Cloud

    +

    Activate a cloud account

    Activate a cloud account for the calling user

    +
    Authorizations:
    GSSAPIAuth

    Responses

    Response samples

    Content type
    application/json
    {
    • "status": "OK"
    }

    Purge expired accounts

    Delete the cloud accounts of expired members.

    There is a one-month grace period after the expiration. After one month, expired members will be sent an email warning them that their account will be deleted. One week after that, if an expired member has still not renewed their membership, their account will be deleted.

    -
    Authorizations:

    Responses

    Response samples

    Content type
    application/json
    {
    • "accounts_to_be_deleted": [
      ],
    • "accounts_deleted": [
      ]
    }

    Create a vhost

    Add a new virtual host configuration.

    -
    Authorizations:
    path Parameters
    domain
    required
    string

    domain name of the virtual host

    -
    Request Body schema: application/json
    ip_address
    string

    IP address of the virtual host

    -

    Responses

    Request samples

    Content type
    application/json
    {
    • "ip_address": "172.19.134.11"
    }

    Response samples

    Content type
    application/json
    {
    • "status": "OK"
    }

    Delete a vhost

    Delete a virtual host configuration.

    -
    Authorizations:
    path Parameters
    domain
    required
    string

    domain name of the virtual host

    -

    Responses

    Response samples

    Content type
    application/json
    {
    • "status": "OK"
    }

    List all vhosts

    List all virtual host configurations for the calling user.

    -
    Authorizations:

    Responses

    Response samples

    Content type
    application/json
    {
    • "vhosts": [
      ]
    }

    Activate a Kubernetes account

    Create a Kubernetes namespace for the calling user. A new kubeconfig file will be returned. +

    Authorizations:
    GSSAPIAuth

    Responses

    Response samples

    Content type
    application/json
    {
    • "accounts_to_be_deleted": [
      ],
    • "accounts_deleted": [
      ]
    }

    Create a vhost

    Add a new virtual host configuration.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    domain
    required
    string

    domain name of the virtual host

    +
    Request Body schema: application/json
    ip_address
    string

    IP address of the virtual host

    +

    Responses

    Request samples

    Content type
    application/json
    {
    • "ip_address": "172.19.134.11"
    }

    Response samples

    Content type
    application/json
    {
    • "status": "OK"
    }

    Delete a vhost

    Delete a virtual host configuration.

    +
    Authorizations:
    GSSAPIAuth
    path Parameters
    domain
    required
    string

    domain name of the virtual host

    +

    Responses

    Response samples

    Content type
    application/json
    {
    • "status": "OK"
    }

    List all vhosts

    List all virtual host configurations for the calling user.

    +
    Authorizations:
    GSSAPIAuth

    Responses

    Response samples

    Content type
    application/json
    {
    • "vhosts": [
      ]
    }

    Activate a Kubernetes account

    Create a Kubernetes namespace for the calling user. A new kubeconfig file will be returned. If the namespace already exists, the certificate inside the kubeconfig will be renewed.

    -
    Authorizations:

    Responses

    Response samples

    Content type
    application/json
    {
    • "status": "OK",
    • "kubeconfig": "string"
    }

    positions

    Show current positions

    Shows the list of positions and members holding them.

    -
    Authorizations:

    Responses

    Response samples

    Content type
    application/json
    {
    • "president": "user0",
    • "vice-president": "user1",
    • "sysadmin": "user2",
    • "treasurer": null
    }

    Update positions

    Update members for each positions. Members not specified in the parameters will be removed from the position and unsubscribed from the exec's mailing list. New position holders will be subscribed to the mailing list.

    -
    Authorizations:
    Request Body schema: application/json

    New position holders

    -
    property name*
    string

    Responses

    Request samples

    Content type
    application/json
    {
    • "president": "user0",
    • "vice-president": "user1",
    • "sysadmin": "user2",
    • "treasurer": null
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "update_positions_ldap"}
    +
    Authorizations:
    GSSAPIAuth

    Responses

    Response samples

    Content type
    application/json
    {
    • "status": "OK",
    • "kubeconfig": "string"
    }

    positions

    Show current positions

    Shows the list of positions and members holding them.

    +
    Authorizations:
    GSSAPIAuth

    Responses

    Response samples

    Content type
    application/json
    {
    • "president": "user0",
    • "vice-president": "user1",
    • "sysadmin": "user2",
    • "treasurer": null
    }

    Update positions

    Update members for each positions. Members not specified in the parameters will be removed from the position and unsubscribed from the exec's mailing list. New position holders will be subscribed to the mailing list.

    +
    Authorizations:
    GSSAPIAuth
    Request Body schema: application/json

    New position holders

    +
    property name*
    additional property
    string

    Responses

    Request samples

    Content type
    application/json
    {
    • "president": "user0",
    • "vice-president": "user1",
    • "sysadmin": "user2",
    • "treasurer": null
    }

    Response samples

    Content type
    text/plain
    {"status": "in progress", "operation": "update_positions_ldap"}
     {"status": "in progress", "operation": "update_exec_group_ldap"}
     {"status": "in progress", "operation": "subscribe_to_mailing_list"}
     {"status": "completed", "result": "OK"}
    -
    +